@@ -73,39 +73,40 @@ fn read_unicode_string<R: io::Read>(reader: &mut R, size: usize) -> Result<Strin
73
73
}
74
74
75
75
/// Read an arbitrary number of contiguous marshal objects
76
- fn read_objects < R : io:: Read > ( reader : & mut R , references : & mut Vec < Object > , size : usize ) -> Result < Vec < Object > , UnmarshalError > {
76
+ fn read_tmp_objects < R : io:: Read > ( reader : & mut R , references : & mut Vec < Object > , size : usize ) -> Result < Vec < Object > , UnmarshalError > {
77
77
let mut vector = Vec :: < Object > :: new ( ) ;
78
78
vector. reserve ( size) ;
79
79
for _ in 0 ..size {
80
- let object = try!( read_object ( reader, references) ) ;
80
+ let object = try!( read_tmp_object ( reader, references) ) ;
81
81
vector. push ( object) ;
82
82
} ;
83
83
Ok ( vector)
84
84
}
85
85
86
- /// Read objects and build an other object containing them.
86
+ /// Read temporary marshal objects and build an other object containing them.
87
87
/// If the flag is true, add this object to the vector of objects before reading its content
88
88
/// (required, as the order of objects matter for references).
89
89
macro_rules! build_container {
90
90
( $reader: expr, $references: ident, $container: expr, $size: expr, $flag: expr) => { {
91
91
if $flag {
92
92
let index = $references. len( ) as u32 ; // TODO: overflow check
93
93
$references. push( Object :: Hole ) ;
94
- let objects = try!( read_objects ( $reader, $references, $size) ) ;
94
+ let objects = try!( read_tmp_objects ( $reader, $references, $size) ) ;
95
95
$references[ index as usize ] = $container( objects) ; // TODO: overflow check
96
96
( false , Object :: Ref ( index) )
97
97
}
98
98
else {
99
- let objects = try!( read_objects ( $reader, $references, $size) ) ;
99
+ let objects = try!( read_tmp_objects ( $reader, $references, $size) ) ;
100
100
( false , $container( objects) )
101
101
}
102
102
} }
103
103
}
104
104
105
- /// Read an object, whose type is known from the first byte. If it is a container, read its content too.
105
+ /// Read an tmporary marshal object, whose type is known from the first byte.
106
+ /// If it is a container, read its content too.
106
107
/// If the first bit is 1 and the marshal protocol allows the type to be referenced,
107
108
/// add it to the list of references too.
108
- pub fn read_object < R : io:: Read > ( reader : & mut R , references : & mut Vec < Object > ) -> Result < Object , UnmarshalError > {
109
+ pub fn read_tmp_object < R : io:: Read > ( reader : & mut R , references : & mut Vec < Object > ) -> Result < Object , UnmarshalError > {
109
110
let byte = read_byte ! ( reader) ;
110
111
let flag = byte & 0b10000000 != 0 ;
111
112
let opcode = byte & 0b01111111 ;
@@ -164,16 +165,16 @@ pub fn read_object<R: io::Read>(reader: &mut R, references: &mut Vec<Object>) ->
164
165
nlocals : try!( read_long ( reader) ) ,
165
166
stacksize : try!( read_long ( reader) ) ,
166
167
flags : try!( read_long ( reader) ) ,
167
- code : try!( read_object ( reader, references) ) ,
168
- consts : try!( read_object ( reader, references) ) ,
169
- names : try!( read_object ( reader, references) ) ,
170
- varnames : try!( read_object ( reader, references) ) ,
171
- freevars : try!( read_object ( reader, references) ) ,
172
- cellvars : try!( read_object ( reader, references) ) ,
173
- filename : try!( read_object ( reader, references) ) ,
174
- name : try!( read_object ( reader, references) ) ,
168
+ code : try!( read_tmp_object ( reader, references) ) ,
169
+ consts : try!( read_tmp_object ( reader, references) ) ,
170
+ names : try!( read_tmp_object ( reader, references) ) ,
171
+ varnames : try!( read_tmp_object ( reader, references) ) ,
172
+ freevars : try!( read_tmp_object ( reader, references) ) ,
173
+ cellvars : try!( read_tmp_object ( reader, references) ) ,
174
+ filename : try!( read_tmp_object ( reader, references) ) ,
175
+ name : try!( read_tmp_object ( reader, references) ) ,
175
176
firstlineno : try!( read_long ( reader) ) ,
176
- lnotab : try!( read_object ( reader, references) ) , // TODO: decode this
177
+ lnotab : try!( read_tmp_object ( reader, references) ) , // TODO: decode this
177
178
} ;
178
179
179
180
let object = Object :: Code ( Box :: new ( code) ) ;
@@ -195,13 +196,13 @@ macro_rules! assert_unmarshal {
195
196
( $expected_obj: expr, $bytecode: expr) => { {
196
197
let mut reader: & [ u8 ] = $bytecode;
197
198
let mut refs = Vec :: new( ) ;
198
- let obj = read_object ( & mut reader, & mut refs) . unwrap( ) ;
199
+ let obj = read_tmp_object ( & mut reader, & mut refs) . unwrap( ) ;
199
200
assert_eq!( $expected_obj, obj) ;
200
201
} } ;
201
202
( $expected_obj: expr, $expected_refs: expr, $bytecode: expr) => { {
202
203
let mut reader: & [ u8 ] = $bytecode;
203
204
let mut refs = Vec :: new( ) ;
204
- let obj = read_object ( & mut reader, & mut refs) . unwrap( ) ;
205
+ let obj = read_tmp_object ( & mut reader, & mut refs) . unwrap( ) ;
205
206
assert_eq!( $expected_obj, obj) ;
206
207
assert_eq!( $expected_refs, refs) ;
207
208
} } ;
0 commit comments