1
use merc_aterm::ATerm;
2
use merc_aterm::ATermRead;
3
use merc_aterm::ATermStreamable;
4
use merc_aterm::ATermWrite;
5
use merc_aterm::Symbol;
6
use merc_utilities::MercError;
7

            
8
/// TODO: Not yet useful, but can be used to read the data specification from a binary stream.
9
#[derive(Default)]
10
pub struct DataSpecification {}
11

            
12
impl ATermStreamable for DataSpecification {
13
100
    fn write<W: ATermWrite>(&self, writer: &mut W) -> Result<(), MercError> {
14
100
        writer.write_aterm_iter((0..0).map(|_| ATerm::constant(&Symbol::new("unimportant", 0))))?;
15
100
        writer.write_aterm_iter((0..0).map(|_| ATerm::constant(&Symbol::new("unimportant", 0))))?;
16
100
        writer.write_aterm_iter((0..0).map(|_| ATerm::constant(&Symbol::new("unimportant", 0))))?;
17
100
        writer.write_aterm_iter((0..0).map(|_| ATerm::constant(&Symbol::new("unimportant", 0))))?;
18
100
        writer.write_aterm_iter((0..0).map(|_| ATerm::constant(&Symbol::new("unimportant", 0))))?;
19

            
20
100
        Ok(())
21
100
    }
22

            
23
102
    fn read<R: ATermRead>(reader: &mut R) -> Result<Self, MercError>
24
102
    where
25
102
        Self: Sized,
26
    {
27
102
        let _sorts: Result<Vec<ATerm>, MercError> = reader.read_aterm_iter()?.collect();
28
102
        let _aliases: Result<Vec<ATerm>, MercError> = reader.read_aterm_iter()?.collect();
29
102
        let _constructors: Result<Vec<ATerm>, MercError> = reader.read_aterm_iter()?.collect();
30
102
        let _user_defined_mappings: Result<Vec<ATerm>, MercError> = reader.read_aterm_iter()?.collect();
31
102
        let _user_defined_equations: Result<Vec<ATerm>, MercError> = reader.read_aterm_iter()?.collect();
32

            
33
        // Ignore results for now.
34
102
        Ok(DataSpecification {})
35
102
    }
36
}