diff options
Diffstat (limited to 'libtnsl')
-rw-r--r-- | libtnsl/README.md | 2 | ||||
-rw-r--r-- | libtnsl/src/algo/algo.tnsl (renamed from libtnsl/src/alg/alg.tnsl) | 8 | ||||
-rw-r--r-- | libtnsl/src/algo/math/math.tnsl (renamed from libtnsl/src/alg/math/math.tnsl) | 8 | ||||
-rw-r--r-- | libtnsl/src/libtnsl.tnsl | 10 | ||||
-rw-r--r-- | libtnsl/src/reflect/type.tnsl | 54 |
5 files changed, 69 insertions, 13 deletions
diff --git a/libtnsl/README.md b/libtnsl/README.md index 7fb8922..4206136 100644 --- a/libtnsl/README.md +++ b/libtnsl/README.md @@ -16,7 +16,7 @@ More information on these features can be found in the specification under libts ## Provided Sub-modules libtnsl provides the tnsl base module and the following sub-modules to address each feature: -* alg +* algo * Algorithms. Also contains the math sub-module for basic math operations. * box * Data containers (vector, map, etc.) diff --git a/libtnsl/src/alg/alg.tnsl b/libtnsl/src/algo/algo.tnsl index d346464..7ddd677 100644 --- a/libtnsl/src/alg/alg.tnsl +++ b/libtnsl/src/algo/algo.tnsl @@ -17,4 +17,10 @@ THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE EXPRESS OR IMPLIED -#/
\ No newline at end of file +#/ + +/; export module algo + /: include + "math" + :/ +;/
\ No newline at end of file diff --git a/libtnsl/src/alg/math/math.tnsl b/libtnsl/src/algo/math/math.tnsl index d346464..5676d09 100644 --- a/libtnsl/src/alg/math/math.tnsl +++ b/libtnsl/src/algo/math/math.tnsl @@ -17,4 +17,10 @@ THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO WARRANTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE EXPRESS OR IMPLIED -#/
\ No newline at end of file +#/ + +/; export module math + /; include + + ;/ +;/
\ No newline at end of file diff --git a/libtnsl/src/libtnsl.tnsl b/libtnsl/src/libtnsl.tnsl index 266c1fa..434e7a4 100644 --- a/libtnsl/src/libtnsl.tnsl +++ b/libtnsl/src/libtnsl.tnsl @@ -20,5 +20,11 @@ #/ /;export module tnsl - -;/ + /: import + "algo" + "box" + "io" + "reflect" + "time" + :/ +;/
\ No newline at end of file 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) ;/ |