diff options
Diffstat (limited to 'libtnsl/reflect/_type.tnsl')
-rw-r--r-- | libtnsl/reflect/_type.tnsl | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/libtnsl/reflect/_type.tnsl b/libtnsl/reflect/_type.tnsl new file mode 100644 index 0000000..7a19b7d --- /dev/null +++ b/libtnsl/reflect/_type.tnsl @@ -0,0 +1,71 @@ +/## + Copyright 2021 Kyle Gunger + + Dual licensed under the CDDL 1.0 and BSD 3-Clause licenses. + + This file may only be used in accordance with one of the two + licenses. You should have received a copy of each license with + the source code. In the event that you did not recieve a copy + of the licenses, they may be found at the following URLs: + + CDDL 1.0: + https://opensource.org/licenses/CDDL-1.0 + + BSD 3-Clause: + https://opensource.org/licenses/BSD-3-Clause + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED +#/ + +/## tnsl.reflect._type + Header data which non-raw structs point to. + Upper limits for classes and libs defined here: + - Max 2^16 libraries + - Max 2^16 modules/sub-modules per library + - Max 2^16 classes per module + - Max 2^8 Generics per class +#/ +; raw struct _type() { + uint16 + _library_id, + _module_id, + _type_id, + + {uint8}_type + _generics +} + +/## tnsl.reflect._type_addresses + Metadata about where things are stored + in a class +#/ +; raw struct _type_addresses { + ~{}_type + _supers, + + ~{}uint + _super_offsets, + + ~{}_method + _methods, + + ~{}_member + _members +} + +/; method _type + + /; _is (_type base) [bool] + ;/ + + /; inline _get (_type t, ~void s, _member m) [~void] + ;/ + + /; inline raw _call (_type t, ~void s, _method m, ~void p) + ;/ + + /; _offset (_type cast) [uint] + ;/ +;/
\ No newline at end of file |