diff options
author | Kyle Gunger <kgunger12@gmail.com> | 2021-10-05 14:04:29 -0400 |
---|---|---|
committer | Kyle Gunger <kgunger12@gmail.com> | 2021-10-05 14:04:29 -0400 |
commit | d2772d77ce3b0908495bb298a0597a02bf300d1d (patch) | |
tree | 24524d91b375a02313ff0c2a25bedbd5434895d9 /libtnsl/src/reflect | |
parent | 3add402da9fc5b574f34e37e951779212ce28ed1 (diff) |
[Docs] FIP additions
Diffstat (limited to 'libtnsl/src/reflect')
-rw-r--r-- | libtnsl/src/reflect/type.tnsl | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/libtnsl/src/reflect/type.tnsl b/libtnsl/src/reflect/type.tnsl index 2ed0016..b36dfc5 100644 --- a/libtnsl/src/reflect/type.tnsl +++ b/libtnsl/src/reflect/type.tnsl @@ -19,25 +19,63 @@ EXPRESS OR IMPLIED #/ -; raw struct _type_header { - uint +/## tnsl.reflect._type + Header data which prefixes all non-raw structs. + Upper limits for classes and libs defined here: + - Max 2^32 libraries + - Max 2^16 classes per library + - Max 2^8 Generics per class +#/ +; raw struct _type(uint8 N) { + uint32 _lib_index, + uint16 _type_index, - ~{}_type_header + {N}_type _generic_list } -; raw struct _method { +/## tnsl.reflect._method + Metadata for methods (can be decoded from library + symbol tables). Limits for methods defined here: + - Max 2^8 inputs + - Max 2^8 outputs +#/ +; raw struct _method(uint8 I, O) { + ~{}charp + name, + + {I}_type + inputs, + {O}_type + outputs, + ~void address } -; raw struct _type { - ~{}int - _offsets, +/## tnsl.reflect._member + Metadata about struct members +#/ +; raw struct _member { + ~{}charp + name, + + uint + offset, + + _type + _member_type +} +/## tnsl.reflect._type_addresses + Metadata about where things are stored + in a class +#/ +; raw struct _type_addresses { ~{}uint + _offsets, _super_offsets, ~{}_type @@ -47,7 +85,7 @@ _methods } -/; method _type_header +/; method _type /; _is (_type_header base) ;/ |