summaryrefslogtreecommitdiff
path: root/tnslc/vector.tnsl
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc/vector.tnsl')
-rw-r--r--tnslc/vector.tnsl166
1 files changed, 0 insertions, 166 deletions
diff --git a/tnslc/vector.tnsl b/tnslc/vector.tnsl
deleted file mode 100644
index af0a665..0000000
--- a/tnslc/vector.tnsl
+++ /dev/null
@@ -1,166 +0,0 @@
-struct Vector {
- ~void data,
- uint
- count,
- size,
- _elsz
-}
-
-uint VECTOR_MIN_ELEMENTS = 4
-uint VECTOR_MAX_GROW = 256
-~void NULL = 0
-
-~uint8 NUM_STR = "Num %d\n\0"
-
-/; method Vector
-
- /; init (uint elsz)
- self._elsz = elsz
- self.size = VECTOR_MIN_ELEMENTS
- self.count = 0
- self.data = _alloc(self.size * self._elsz)
- ;/
-
- /; from_cstr(~uint8 cstr)
- self.init(1)
- self.push_cstr(cstr)
- ;/
-
- /; _grow (uint i)
- self.size = self.size + i
- self.data = _realloc(self.data, self.size * self._elsz)
- ;/
-
- /; get (uint index) [~void]
- /; if (index !< self.count)
- return NULL
- ;/
-
- return self.data + index * self._elsz
- ;/
-
- /; push (~void el)
- /; if (self.size == self.count + 1)
- /; if (self.size < VECTOR_MAX_GROW)
- self._grow(self.size)
- ;; else
- self._grow(VECTOR_MAX_GROW)
- ;/
- ;/
-
- ~void start = self.data + self.count * self._elsz
- /; loop (int i = 0; i < self._elsz) [i++]
- ~uint8 to = start + i
- ~uint8 from = el + i
- to` = from`
- ;/
- self.count++
- ;/
-
- /; push_char (uint8 ch)
- self.push(~ch)
- ;/
-
- /; push_cstr(~uint8 ch)
- /; loop (ch` !== 0) [ch++]
- self.push(ch)
- ;/
- ;/
-
- /; as_cstr [~uint8]
- ~uint8 z = self.data + self.count
- z` = 0
- return self.data
- ;/
-
- /; end
- self.count = 0
- self.size = 0
- self._elsz = 0
- _delete(self.data)
- ;/
-;/
-
-
-# Artifacts
-
-struct Artifact {
- ~~uint8 strings,
- uint
- size,
- count
-}
-
-/; method Artifact
-
- /; init
- self.size = VECTOR_MIN_ELEMENTS
- self.count = 0
- self.strings = _alloc(len self.strings * self.size)
- ;/
-
- /; split_cstr (~uint8 str, uint8 split)
- Vector track
- track.init(1)
-
- /; loop (str` !== 0) [str++]
- /; if (str` == split)
- self.push(track.as_cstr())
- track.init(1)
- ;; else
- track.push(str)
- ;/
- ;/
-
- self.push(track.as_cstr())
- _print_num(NUM_STR, self.count)
- ;/
-
- /; _grow (uint i)
- self.size = self.size + i
- self.strings = _realloc(self.strings, len self.strings * self.size)
- ;/
-
- /; push (~uint8 str)
- /; if (self.size == self.count + 1)
- /; if (self.size < VECTOR_MAX_GROW)
- self._grow(self.size)
- ;; else
- self._grow(VECTOR_MAX_GROW)
- ;/
- ;/
-
- self.strings{self.count} = str
- self.count++
- ;/
-
- /; get (uint index) [~uint8]
- /; if (index !< self.count)
- return NULL
- ;/
-
- return self.strings{index}
- ;/
-
- /; to_cstr (uint8 join) [~uint8]
- Vector out
- out.init(1)
-
- /; loop (int i = 0; i < self.count) [i++]
- out.push_cstr(self.get(i))
- /; if (i < self.count - 1)
- out.push(~join)
- ;/
- ;/
-
- return out.as_cstr()
- ;/
-
- /; end
- /; loop (int i = 0; i < self.count) [i++]
- _delete(self.get(i))
- ;/
- _delete(self.strings)
- ;/
-;/
-