diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-08-18 20:28:16 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-08-18 20:28:39 -0400 |
| commit | d804b09b02b9c4a6ea6b16ae85524a704796cbc1 (patch) | |
| tree | 3379d64b028a80825a892c87176b6bb6d6cc3484 /types.c | |
| parent | c338c3f08c6a13242e975dd344bad63a3cec9eee (diff) | |
Added a .length field to arrays/sets/tables, added a .max_size field to
channels, and updated the API
Diffstat (limited to 'types.c')
| -rw-r--r-- | types.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -595,14 +595,16 @@ type_t *get_field_type(type_t *t, const char *field_name) return NULL; } case SetType: { - if (streq(field_name, "items")) + if (streq(field_name, "length")) + return INT_TYPE; + else if (streq(field_name, "items")) return Type(ArrayType, .item_type=Match(t, SetType)->item_type); - else if (streq(field_name, "fallback")) - return Type(PointerType, .pointed=t, .is_readonly=true, .is_optional=true); return NULL; } case TableType: { - if (streq(field_name, "keys")) + if (streq(field_name, "length")) + return INT_TYPE; + else if (streq(field_name, "keys")) return Type(ArrayType, Match(t, TableType)->key_type); else if (streq(field_name, "values")) return Type(ArrayType, Match(t, TableType)->value_type); @@ -612,6 +614,14 @@ type_t *get_field_type(type_t *t, const char *field_name) return Type(PointerType, .pointed=t, .is_readonly=true, .is_optional=true); return NULL; } + case ArrayType: { + if (streq(field_name, "length")) return INT_TYPE; + return NULL; + } + case ChannelType: { + if (streq(field_name, "max_size")) return INT_TYPE; + return NULL; + } default: return NULL; } } |
