summaryrefslogtreecommitdiff
path: root/libtnsl/src/reflect/virtual.tnsl
diff options
context:
space:
mode:
Diffstat (limited to 'libtnsl/src/reflect/virtual.tnsl')
-rw-r--r--libtnsl/src/reflect/virtual.tnsl144
1 files changed, 0 insertions, 144 deletions
diff --git a/libtnsl/src/reflect/virtual.tnsl b/libtnsl/src/reflect/virtual.tnsl
deleted file mode 100644
index 8891905..0000000
--- a/libtnsl/src/reflect/virtual.tnsl
+++ /dev/null
@@ -1,144 +0,0 @@
-/##
- 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
-#/
-
-/## _LIB_TABLE
- The array of library export trees.
-
- Convention:
- - index 0 is always reserved for language-specific types + libtnsl
- - index 0 module 0 represents the fundimental in-built types like int
-#/
-: extern const {}~library _LIB_TABLE
-
-; raw struct library {
- # Version
- uint16
- major,
- minor,
- patch
-
- ~sym_node
- root_node
-}
-
-/## 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}charp
- name,
-
- {uint8}~_type
- inputs,
- outputs,
-
- ~void
- address
-}
-
-/## tnsl.reflect._member
- Metadata about struct members
-#/
-; raw struct _member {
- {uint8}charp
- name,
-
- _type
- member_type,
-
- uint
- byte_offset
-}
-
-/## tnsl.reflect.sym_node
- Represents a module in a symbol tree
-#/
-; raw struct sym_node {
- {uint8}charp
- name,
-
- uint16
- id,
-
- {}~sym_node
- sub_modules,
-
- {}~sym_type
- sub_types
-}
-
-/## tnsl.reflect.sym_type
- Represents a type in a symbol tree
-#/
-; raw struct sym_type {
- {uint8}charp
- name,
-
- {uint8}~sym_type
- super_types,
-
-}
-
-###############################
-# Traverse the Library Tree #
-###############################
-
-/; get_sym_node (~sym_node root, uint16 mod_id) [~sym_node]
- /;loop (root != null)
- /; loop (uint16 sub = 0; sub < len `root.sub_modules) [sub++]
- /; if (mod_id < `root.sub_modules{sub}.id)
- /; if (sub == 0)
- ; return null
- ;/
- ;root = `root.sub_modules{sub - 1}
- ; continue 1
- ;; else if (mod_id == `root.sub_modules{sub}.id)
- ; return `root.sub_modules{sub}
- ;/
- ;/
-
- ; break
- ;/
-
- ; return null
-;/
-
-/; get_sym_node (uint16 lib_id, mod_id) [~sym_node]
-
- ;~library lib = _LIB_TABLE{lib_id}
-
- ;return get_sym_node(`lib.root_node, mod_id)
-;/
-
-/; get_sym_type(uint16 lib_id, mod_id, typ_id) [~sym_type]
-
- ;~library lib = _LIB_TABLE{lib_id}
- ;~sym_node mod = get_sym_node(`lib.root_node, mod_id)
-
- ;return `mod.sub_types{typ_id}
-;/
-
-/; get_sym_type(`const {}charp path) [~sym_type]
-
-;/ \ No newline at end of file