Lines Matching refs:Reader

67 	minicbor_reader_t Reader[1];  member
71 ml_cbor_reader_t *Reader = new(ml_cbor_reader_t); in ml_cbor_reader_new() local
72 Reader->TagFnData = TagFnData; in ml_cbor_reader_new()
73 Reader->TagFn = TagFn; in ml_cbor_reader_new()
74 ml_cbor_reader_init(Reader->Reader); in ml_cbor_reader_new()
75 Reader->Reader->UserData = Reader; in ml_cbor_reader_new()
76 return Reader; in ml_cbor_reader_new()
79 void ml_cbor_reader_read(ml_cbor_reader_t *Reader, unsigned char *Bytes, int Size) { in ml_cbor_reader_read() argument
80 ml_cbor_read(Reader->Reader, Bytes, Size); in ml_cbor_reader_read()
83 ml_value_t *ml_cbor_reader_get(ml_cbor_reader_t *Reader) { in ml_cbor_reader_get() argument
84 if (!Reader->Value) return ml_error("CBORError", "CBOR not completely read"); in ml_cbor_reader_get()
85 return Reader->Value; in ml_cbor_reader_get()
88 int ml_cbor_reader_extra(ml_cbor_reader_t *Reader) { in ml_cbor_reader_extra() argument
89 return ml_cbor_reader_remaining(Reader->Reader); in ml_cbor_reader_extra()
96 static void value_handler(ml_cbor_reader_t *Reader, ml_value_t *Value) { in value_handler() argument
97 for (tag_t *Tag = Reader->Tags; Tag; Tag = Tag->Prev) { in value_handler()
100 Reader->Tags = 0; in value_handler()
101 collection_t *Collection = Reader->Collection; in value_handler()
103 Reader->Value = Value; in value_handler()
104 ml_cbor_reader_finish(Reader->Reader); in value_handler()
108 Reader->Collection = Collection->Prev; in value_handler()
109 Reader->Tags = Collection->Tags; in value_handler()
110 value_handler(Reader, Collection->Collection); in value_handler()
115 Reader->Collection = Collection->Prev; in value_handler()
116 Reader->Tags = Collection->Tags; in value_handler()
117 value_handler(Reader, Collection->Collection); in value_handler()
126 void ml_cbor_read_positive_fn(ml_cbor_reader_t *Reader, uint64_t Value) { in ml_cbor_read_positive_fn() argument
127 value_handler(Reader, ml_integer(Value)); in ml_cbor_read_positive_fn()
130 void ml_cbor_read_negative_fn(ml_cbor_reader_t *Reader, uint64_t Value) { in ml_cbor_read_negative_fn() argument
132 value_handler(Reader, ml_integer(~(int64_t)Value)); in ml_cbor_read_negative_fn()
134 value_handler(Reader, ml_integer(Value)); in ml_cbor_read_negative_fn()
145 void ml_cbor_read_bytes_fn(ml_cbor_reader_t *Reader, int Size) { in ml_cbor_read_bytes_fn() argument
148 Collection->Prev = Reader->Collection; in ml_cbor_read_bytes_fn()
149 Collection->Tags = Reader->Tags; in ml_cbor_read_bytes_fn()
150 Reader->Tags = 0; in ml_cbor_read_bytes_fn()
154 Reader->Collection = Collection; in ml_cbor_read_bytes_fn()
156 value_handler(Reader, ml_buffer(NULL, 0)); in ml_cbor_read_bytes_fn()
160 void ml_cbor_read_bytes_piece_fn(ml_cbor_reader_t *Reader, const void *Bytes, int Size, int Final) { in ml_cbor_read_bytes_piece_fn() argument
161 collection_t *Collection = Reader->Collection; in ml_cbor_read_bytes_piece_fn()
163 Reader->Collection = Collection->Prev; in ml_cbor_read_bytes_piece_fn()
164 Reader->Tags = Collection->Tags; in ml_cbor_read_bytes_piece_fn()
173 value_handler(Reader, ml_buffer(Buffer, Total)); in ml_cbor_read_bytes_piece_fn()
184 void ml_cbor_read_string_fn(ml_cbor_reader_t *Reader, int Size) { in ml_cbor_read_string_fn() argument
187 Collection->Prev = Reader->Collection; in ml_cbor_read_string_fn()
188 Collection->Tags = Reader->Tags; in ml_cbor_read_string_fn()
189 Reader->Tags = 0; in ml_cbor_read_string_fn()
193 Reader->Collection = Collection; in ml_cbor_read_string_fn()
195 value_handler(Reader, ml_cstring("")); in ml_cbor_read_string_fn()
199 void ml_cbor_read_string_piece_fn(ml_cbor_reader_t *Reader, const void *Bytes, int Size, int Final)… in ml_cbor_read_string_piece_fn() argument
200 collection_t *Collection = Reader->Collection; in ml_cbor_read_string_piece_fn()
202 Reader->Collection = Collection->Prev; in ml_cbor_read_string_piece_fn()
203 Reader->Tags = Collection->Tags; in ml_cbor_read_string_piece_fn()
212 value_handler(Reader, ml_string(Buffer, Total)); in ml_cbor_read_string_piece_fn()
223 void ml_cbor_read_array_fn(ml_cbor_reader_t *Reader, int Size) { in ml_cbor_read_array_fn() argument
226 Collection->Prev = Reader->Collection; in ml_cbor_read_array_fn()
227 Collection->Tags = Reader->Tags; in ml_cbor_read_array_fn()
228 Reader->Tags = 0; in ml_cbor_read_array_fn()
232 Reader->Collection = Collection; in ml_cbor_read_array_fn()
234 value_handler(Reader, ml_list()); in ml_cbor_read_array_fn()
238 void ml_cbor_read_map_fn(ml_cbor_reader_t *Reader, int Size) { in ml_cbor_read_map_fn() argument
241 Collection->Prev = Reader->Collection; in ml_cbor_read_map_fn()
242 Collection->Tags = Reader->Tags; in ml_cbor_read_map_fn()
243 Reader->Tags = 0; in ml_cbor_read_map_fn()
247 Reader->Collection = Collection; in ml_cbor_read_map_fn()
249 value_handler(Reader, ml_map()); in ml_cbor_read_map_fn()
253 void ml_cbor_read_tag_fn(ml_cbor_reader_t *Reader, uint64_t Tag) { in ml_cbor_read_tag_fn() argument
255 ml_tag_t Handler = Reader->TagFn(Tag, Reader->TagFnData, &Data); in ml_cbor_read_tag_fn()
258 Tag->Prev = Reader->Tags; in ml_cbor_read_tag_fn()
261 Reader->Tags = Tag; in ml_cbor_read_tag_fn()
265 void ml_cbor_read_float_fn(ml_cbor_reader_t *Reader, double Value) { in ml_cbor_read_float_fn() argument
266 value_handler(Reader, ml_real(Value)); in ml_cbor_read_float_fn()
269 void ml_cbor_read_simple_fn(ml_cbor_reader_t *Reader, int Value) { in ml_cbor_read_simple_fn() argument
272 value_handler(Reader, (ml_value_t *)MLFalse); in ml_cbor_read_simple_fn()
275 value_handler(Reader, (ml_value_t *)MLTrue); in ml_cbor_read_simple_fn()
278 value_handler(Reader, MLNil); in ml_cbor_read_simple_fn()
281 value_handler(Reader, MLNil); in ml_cbor_read_simple_fn()
286 void ml_cbor_read_break_fn(ml_cbor_reader_t *Reader) { in ml_cbor_read_break_fn() argument
287 collection_t *Collection = Reader->Collection; in ml_cbor_read_break_fn()
288 Reader->Collection = Collection->Prev; in ml_cbor_read_break_fn()
289 Reader->Tags = Collection->Tags; in ml_cbor_read_break_fn()
290 value_handler(Reader, Collection->Collection); in ml_cbor_read_break_fn()
293 void ml_cbor_read_error_fn(ml_cbor_reader_t *Reader, int Position, const char *Message) { in ml_cbor_read_error_fn() argument
294 value_handler(Reader, ml_error("CBORError", "Read error: %s at %d", Message, Position)); in ml_cbor_read_error_fn()
319 ml_cbor_reader_t Reader[1]; in ml_from_cbor() local
320 Reader->TagFnData = TagFnData ?: DefaultTagFn; in ml_from_cbor()
321 Reader->TagFn = TagFn ?: (void *)ml_value_tag_fn; in ml_from_cbor()
322 ml_cbor_reader_init(Reader->Reader); in ml_from_cbor()
323 Reader->Reader->UserData = Reader; in ml_from_cbor()
324 Reader->Collection = 0; in ml_from_cbor()
325 Reader->Tags = 0; in ml_from_cbor()
326 Reader->Value = 0; in ml_from_cbor()
327 ml_cbor_read(Reader->Reader, Cbor.Data, Cbor.Length); in ml_from_cbor()
328 int Extra = ml_cbor_reader_extra(Reader); in ml_from_cbor()
330 return ml_cbor_reader_get(Reader); in ml_from_cbor()
334 ml_cbor_reader_t Reader[1]; in ml_from_cbor_extra() local
335 Reader->TagFnData = TagFnData ?: DefaultTagFn; in ml_from_cbor_extra()
336 Reader->TagFn = TagFn ?: (void *)ml_value_tag_fn; in ml_from_cbor_extra()
337 ml_cbor_reader_init(Reader->Reader); in ml_from_cbor_extra()
338 Reader->Reader->UserData = Reader; in ml_from_cbor_extra()
339 Reader->Collection = 0; in ml_from_cbor_extra()
340 Reader->Tags = 0; in ml_from_cbor_extra()
341 Reader->Value = 0; in ml_from_cbor_extra()
342 ml_cbor_read(Reader->Reader, Cbor.Data, Cbor.Length); in ml_from_cbor_extra()
343 return (ml_cbor_result_t){ml_cbor_reader_get(Reader), ml_cbor_reader_extra(Reader)}; in ml_from_cbor_extra()