summaryrefslogtreecommitdiff
path: root/tnslc
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc')
-rwxr-xr-xtnslc/build.sh2
-rw-r--r--tnslc/main.tnsl13
-rw-r--r--tnslc/vector.tnsl32
3 files changed, 38 insertions, 9 deletions
diff --git a/tnslc/build.sh b/tnslc/build.sh
index b492dcd..798e77d 100755
--- a/tnslc/build.sh
+++ b/tnslc/build.sh
@@ -3,5 +3,5 @@
../ctc main.tnsl tnslc.asm
nasm -f elf64 -o tnslc.o tnslc.asm
gcc -o tnslc tnslc.o
-rm tnslc.asm tnslc.o
+# rm tnslc.asm tnslc.o
diff --git a/tnslc/main.tnsl b/tnslc/main.tnsl
index 1abedb3..ac56836 100644
--- a/tnslc/main.tnsl
+++ b/tnslc/main.tnsl
@@ -1,14 +1,11 @@
:import "c_wrap_linux.tnsl"
+:import "vector.tnsl"
-~uint8 str_a = "Hello World\n\0"
-~uint8 str_b = "!\n\0"
+/; main [int]
-/; main (int argc, ~~uint8 argv) [int]
- _printf(str_a)
+ Vector a
+ a.init(1)
- /; if (argc > 2)
- _printf(str_b)
- ;/
-
return 0
;/
+
diff --git a/tnslc/vector.tnsl b/tnslc/vector.tnsl
new file mode 100644
index 0000000..1377938
--- /dev/null
+++ b/tnslc/vector.tnsl
@@ -0,0 +1,32 @@
+struct Vector {
+ ~void data,
+ int
+ size,
+ count,
+ _elsz
+}
+
+int VECT_DEFAULT_SIZE = 4
+
+/; method Vector
+
+ /; init (int elsz)
+ self._elsz = elsz
+ self.size = VECT_DEFAULT_SIZE
+ self.data = _alloc(elsz * self.size)
+ self.count = 0
+ ;/
+
+ /; get (int index) [~void]
+ return self.data
+ ;/
+
+ /; end
+ _delete(self.data)
+ self.size = 0
+ self._elsz = 0
+ self.count = 0
+ ;/
+
+;/
+