@@ -92,8 +92,8 @@ t_ion_result_code ion_buffer_io_peek_kind(t_ion_buffer *self,
92
92
return RESULT_OK ;
93
93
}
94
94
95
- t_ion_result_code ion_buffer_io_check_kind (t_ion_buffer * self ,
96
- t_ion_object_kind expected ) {
95
+ t_ion_result_code ion_buffer_io_read_check_kind (t_ion_buffer * self ,
96
+ t_ion_object_kind expected ) {
97
97
t_ion_result_code result ;
98
98
t_ion_buffer_state * state ;
99
99
t_ion_buffer_state_io_entry * * entry_ptr ;
@@ -147,6 +147,61 @@ t_ion_result_code ion_buffer_io_check_kind(t_ion_buffer *self,
147
147
return RESULT_OK ;
148
148
}
149
149
150
+ t_ion_result_code ion_buffer_io_peek_check_kind (t_ion_buffer * self ,
151
+ t_ion_object_kind expected ) {
152
+ t_ion_result_code result ;
153
+ t_ion_buffer_state * state ;
154
+ t_ion_buffer_state_io_entry * * entry_ptr ;
155
+ t_ion_buffer_state_io_entry * entry ;
156
+ t_ion_object_kind value ;
157
+ uint8_t index ;
158
+ uint8_t flag ;
159
+
160
+ if (self == NULL )
161
+ return RESULT_ERROR ;
162
+
163
+ state = self -> state_p ;
164
+ if (state -> entry_level < 0 ) {
165
+ flag = true;
166
+ } else {
167
+ result =
168
+ vector_get (state -> entry_list , (void * * )& entry_ptr , state -> entry_level );
169
+ if (result != RESULT_OK ) {
170
+ return result ;
171
+ }
172
+
173
+ entry = * entry_ptr ;
174
+
175
+ switch (entry -> kind ) {
176
+ case ARR : {
177
+ flag = false;
178
+ break ;
179
+ }
180
+
181
+ default : {
182
+ flag = true;
183
+ break ;
184
+ }
185
+ }
186
+ }
187
+
188
+ if (!flag ) {
189
+ return RESULT_OK ;
190
+ }
191
+
192
+ result = ion_buffer_peek (self , & index , sizeof (index ));
193
+ if (result != RESULT_OK ) {
194
+ return result ;
195
+ }
196
+
197
+ value = ion_object_kind_from_index (index );
198
+ if (value != expected ) {
199
+ return RESULT_ERROR ;
200
+ }
201
+
202
+ return RESULT_OK ;
203
+ }
204
+
150
205
t_ion_result_code ion_buffer_io_read_data (t_ion_buffer * self ,
151
206
t_ion_object_kind kind , void * dst ) {
152
207
if (self == NULL )
@@ -317,7 +372,7 @@ t_ion_result_code ion_buffer_io_write_list_close(t_ion_buffer *self) {
317
372
t_ion_result_code ion_buffer_io_read_u0 (t_ion_buffer * self ) {
318
373
t_ion_result_code result ;
319
374
320
- result = ion_buffer_io_check_kind (self , U0 );
375
+ result = ion_buffer_io_read_check_kind (self , U0 );
321
376
if (result != RESULT_OK ) {
322
377
return result ;
323
378
}
@@ -333,7 +388,7 @@ t_ion_result_code ion_buffer_io_read_u0(t_ion_buffer *self) {
333
388
t_ion_result_code ion_buffer_io_read_u8 (t_ion_buffer * self , uint8_t * value ) {
334
389
t_ion_result_code result ;
335
390
336
- result = ion_buffer_io_check_kind (self , U8 );
391
+ result = ion_buffer_io_read_check_kind (self , U8 );
337
392
if (result != RESULT_OK ) {
338
393
return result ;
339
394
}
@@ -354,7 +409,7 @@ t_ion_result_code ion_buffer_io_read_u8(t_ion_buffer *self, uint8_t *value) {
354
409
t_ion_result_code ion_buffer_io_read_u16 (t_ion_buffer * self , uint16_t * value ) {
355
410
t_ion_result_code result ;
356
411
357
- result = ion_buffer_io_check_kind (self , U16 );
412
+ result = ion_buffer_io_read_check_kind (self , U16 );
358
413
if (result != RESULT_OK ) {
359
414
return result ;
360
415
}
@@ -375,7 +430,7 @@ t_ion_result_code ion_buffer_io_read_u16(t_ion_buffer *self, uint16_t *value) {
375
430
t_ion_result_code ion_buffer_io_read_u32 (t_ion_buffer * self , uint32_t * value ) {
376
431
t_ion_result_code result ;
377
432
378
- result = ion_buffer_io_check_kind (self , U32 );
433
+ result = ion_buffer_io_read_check_kind (self , U32 );
379
434
if (result != RESULT_OK ) {
380
435
return result ;
381
436
}
@@ -396,7 +451,7 @@ t_ion_result_code ion_buffer_io_read_u32(t_ion_buffer *self, uint32_t *value) {
396
451
t_ion_result_code ion_buffer_io_read_u64 (t_ion_buffer * self , uint64_t * value ) {
397
452
t_ion_result_code result ;
398
453
399
- result = ion_buffer_io_check_kind (self , U64 );
454
+ result = ion_buffer_io_read_check_kind (self , U64 );
400
455
if (result != RESULT_OK ) {
401
456
return result ;
402
457
}
@@ -488,7 +543,7 @@ t_ion_result_code ion_buffer_io_peek_data(t_ion_buffer *self,
488
543
t_ion_result_code ion_buffer_io_peek_u0 (t_ion_buffer * self ) {
489
544
t_ion_result_code result ;
490
545
491
- result = ion_buffer_io_check_kind (self , U0 );
546
+ result = ion_buffer_io_peek_check_kind (self , U0 );
492
547
if (result != RESULT_OK ) {
493
548
return result ;
494
549
}
@@ -504,7 +559,7 @@ t_ion_result_code ion_buffer_io_peek_u0(t_ion_buffer *self) {
504
559
t_ion_result_code ion_buffer_io_peek_u8 (t_ion_buffer * self , uint8_t * value ) {
505
560
t_ion_result_code result ;
506
561
507
- result = ion_buffer_io_check_kind (self , U8 );
562
+ result = ion_buffer_io_peek_check_kind (self , U8 );
508
563
if (result != RESULT_OK ) {
509
564
return result ;
510
565
}
@@ -525,7 +580,7 @@ t_ion_result_code ion_buffer_io_peek_u8(t_ion_buffer *self, uint8_t *value) {
525
580
t_ion_result_code ion_buffer_io_peek_u16 (t_ion_buffer * self , uint16_t * value ) {
526
581
t_ion_result_code result ;
527
582
528
- result = ion_buffer_io_check_kind (self , U16 );
583
+ result = ion_buffer_io_peek_check_kind (self , U16 );
529
584
if (result != RESULT_OK ) {
530
585
return result ;
531
586
}
@@ -546,7 +601,7 @@ t_ion_result_code ion_buffer_io_peek_u16(t_ion_buffer *self, uint16_t *value) {
546
601
t_ion_result_code ion_buffer_io_peek_u32 (t_ion_buffer * self , uint32_t * value ) {
547
602
t_ion_result_code result ;
548
603
549
- result = ion_buffer_io_check_kind (self , U32 );
604
+ result = ion_buffer_io_peek_check_kind (self , U32 );
550
605
if (result != RESULT_OK ) {
551
606
return result ;
552
607
}
@@ -567,7 +622,7 @@ t_ion_result_code ion_buffer_io_peek_u32(t_ion_buffer *self, uint32_t *value) {
567
622
t_ion_result_code ion_buffer_io_peek_u64 (t_ion_buffer * self , uint64_t * value ) {
568
623
t_ion_result_code result ;
569
624
570
- result = ion_buffer_io_check_kind (self , U64 );
625
+ result = ion_buffer_io_peek_check_kind (self , U64 );
571
626
if (result != RESULT_OK ) {
572
627
return result ;
573
628
}
0 commit comments