Skip to content

Commit 59142c5

Browse files
committed
read other types
1 parent f60c79b commit 59142c5

2 files changed

Lines changed: 59 additions & 4 deletions

File tree

app/src/metadata_reader.c

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,12 @@ parser_error_t read_byte_display(parser_context_t *ctx, byte_display_t *display)
158158
printf("byte display decimal\n");
159159
break;
160160
case BYTE_DISPLAY_BECH32:
161-
printf("TODO:byte display bech32!!!!!!!!!!!!!!!! \n");
161+
printf("byte display bech32\n");
162+
CHECK_ERROR(read_hrp(ctx, &display->bech32.prefix));
162163
break;
163164
case BYTE_DISPLAY_BECH32M:
164-
CHECK_ERROR(read_hrp(ctx, &display->bech32.prefix));
165+
printf("byte display bech32m\n");
166+
CHECK_ERROR(read_hrp(ctx, &display->bech32m.prefix));
165167
break;
166168
case BYTE_DISPLAY_BASE58:
167169
printf("byte display base58\n");
@@ -529,7 +531,6 @@ parser_error_t metadata_read(parser_context_t *ctx, parser_tx_t *txObj) {
529531
return parser_too_many_schemes;
530532
}
531533

532-
// TODO: go through all schemes
533534
for (uint32_t i = 0; i < txObj->schema.types.qty; i++) {
534535
// read type
535536
CHECK_ERROR(read_u8(ctx, (uint8_t*)&txObj->schema.types.schemes[i].type));
@@ -554,6 +555,39 @@ parser_error_t metadata_read(parser_context_t *ctx, parser_tx_t *txObj) {
554555
CHECK_ERROR(read_link(ctx, &txObj->schema.types.schemes[i].option_type));
555556
print_string("READING OPTION DONE\n");
556557
break;
558+
case LINKING_SCHEME_INTEGER:
559+
print_string("READING INTEGER");
560+
CHECK_ERROR(read_primitive_integer(ctx, &txObj->schema.types.schemes[i].integer_type));
561+
print_string("READING INTEGER DONE\n");
562+
break;
563+
case LINKING_SCHEME_BYTE_ARRAY:
564+
print_string("READING BYTE ARRAY");
565+
CHECK_ERROR(read_primitive_byte_array(ctx, &txObj->schema.types.schemes[i].byte_array_type));
566+
print_string("READING BYTE ARRAY DONE\n");
567+
break;
568+
case LINKING_SCHEME_FLOAT32:
569+
print_string("READING FLOAT32");
570+
break;
571+
case LINKING_SCHEME_FLOAT64:
572+
print_string("READING FLOAT64");
573+
break;
574+
case LINKING_SCHEME_STRING:
575+
print_string("READING STRING");
576+
break;
577+
case LINKING_SCHEME_BOOLEAN:
578+
print_string("READING BOOLEAN");
579+
break;
580+
case LINKING_SCHEME_SKIP:
581+
print_string("READING SKIP");
582+
CHECK_ERROR(read_u64(ctx, (uint64_t*)&txObj->schema.types.schemes[i].skip_type));
583+
printf("skip_type: %llu\n", txObj->schema.types.schemes[i].skip_type);
584+
print_string("READING SKIP DONE\n");
585+
break;
586+
case LINKING_SCHEME_BYTE_VEC:
587+
print_string("READING BYTE VEC");
588+
CHECK_ERROR(read_byte_display(ctx, &txObj->schema.types.schemes[i].byte_vec_type));
589+
print_string("READING BYTE VEC DONE\n");
590+
break;
557591
case LINKING_SCHEME_ARRAY:
558592
print_string("READING ARRAY");
559593
CHECK_ERROR(read_array(ctx, &txObj->schema.types.schemes[i].array_type));
@@ -564,6 +598,12 @@ parser_error_t metadata_read(parser_context_t *ctx, parser_tx_t *txObj) {
564598
CHECK_ERROR(read_link(ctx, &txObj->schema.types.schemes[i].vec_type));
565599
print_string("READING VEC DONE\n");
566600
break;
601+
case LINKING_SCHEME_MAP:
602+
print_string("READING MAP");
603+
CHECK_ERROR(read_link(ctx, &txObj->schema.types.schemes[i].map_type.key));
604+
CHECK_ERROR(read_link(ctx, &txObj->schema.types.schemes[i].map_type.value));
605+
print_string("READING MAP DONE\n");
606+
break;
567607
default:
568608
printf("UNKNOWN TYPE: %d\n", txObj->schema.types.schemes[i].type);
569609
return parser_no_data;

app/src/parser_txdef.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,15 @@ typedef struct {
121121
hrp_t prefix;
122122
} byte_display_bech32_t;
123123

124+
typedef struct {
125+
hrp_t prefix;
126+
} byte_display_bech32m_t;
127+
124128
typedef struct {
125129
byte_display_type_t type;
126130
union {
127131
byte_display_bech32_t bech32;
132+
byte_display_bech32m_t bech32m;
128133
};
129134
} byte_display_t;
130135

@@ -236,15 +241,25 @@ typedef struct {
236241
link_t value;
237242
} schema_array_t;
238243

244+
typedef struct {
245+
link_t key;
246+
link_t value;
247+
} schema_map_t;
248+
239249
typedef struct {
240250
linking_scheme_type_t type;
241251
union {
242252
schema_enum_t enum_type;
243253
schema_struct_t struct_type;
244254
schema_tuple_t tuple_type;
245255
link_t option_type;
246-
link_t vec_type;
256+
primitive_integer_t integer_type;
257+
primitive_byte_array_t byte_array_type;
258+
uint64_t skip_type;
259+
byte_display_t byte_vec_type;
247260
schema_array_t array_type;
261+
link_t vec_type;
262+
schema_map_t map_type;
248263
};
249264
} linking_scheme_t;
250265

0 commit comments

Comments
 (0)