summaryrefslogtreecommitdiff
path: root/tnslc/compile/struct.tnsl
diff options
context:
space:
mode:
authorCircleShift <kgunger12@gmail.com>2025-03-05 07:26:58 -0500
committerCircleShift <kgunger12@gmail.com>2025-03-05 07:26:58 -0500
commitd4fe9e6e27f2013a6e1f6be94daba91ec53fa5c3 (patch)
treebc30806a177f62c15e991d9ebcd5d2034a786183 /tnslc/compile/struct.tnsl
parent61e1e5ce377719c8e9e437e5ba79ba06fc1de4ba (diff)
[tnslc] Rework compile layout
Diffstat (limited to 'tnslc/compile/struct.tnsl')
-rw-r--r--tnslc/compile/struct.tnsl46
1 files changed, 46 insertions, 0 deletions
diff --git a/tnslc/compile/struct.tnsl b/tnslc/compile/struct.tnsl
new file mode 100644
index 0000000..d175aef
--- /dev/null
+++ b/tnslc/compile/struct.tnsl
@@ -0,0 +1,46 @@
+
+struct Struct {
+ ~uint8 name,
+ ~Module methods,
+ utils.Vector members,
+ int size
+}
+
+/; method Struct
+
+ /; init (~uint8 name)
+ self.name = name
+ Var v
+ self.members.init(len v)
+ ;/
+
+ /; add_member(~Var v)
+ self.members.push(v)
+ ;/
+
+ /; get_member(~uint8 name) [~Var]
+ ~Var out = NULL
+
+ ~Var v
+ /; loop (int i = 0; i < self.members.count) [i++]
+ v = self.members.get(i)
+ /; if (utils.strcmp(v`.name, name) == true)
+ return v
+ ;/
+ ;/
+
+ return out
+ ;/
+
+ /; end
+ _delete(self.name)
+ ~Var v
+ /; loop (int i = 0; i < self.members.count) [i++]
+ v = self.members.get(i)
+ v`.end()
+ ;/
+ self.members.end()
+ ;/
+
+;/
+