From a95fcb445bbc9299eb1d974ce34db8cf24622c10 Mon Sep 17 00:00:00 2001 From: Julian Hurst Date: Wed, 15 Jun 2022 10:46:03 +0200 Subject: Externalize modules and add .gitignore --- set/set.ha | 85 -------------------------------------------------------------- 1 file changed, 85 deletions(-) delete mode 100644 set/set.ha (limited to 'set') diff --git a/set/set.ha b/set/set.ha deleted file mode 100644 index 504d716..0000000 --- a/set/set.ha +++ /dev/null @@ -1,85 +0,0 @@ -export type set = struct { - items: []size, -}; - -export type nosuchitem = !void; - -export fn add(s: *set, item: size) bool = { - for (let i = 0z; i < len(s.items); i += 1) { - if (s.items[i] == item) { - return false; - }; - }; - append(s.items, item); - return true; -}; - -export fn del(s: *set, item: size) bool = { - match (contains(*s, item)) { - case let i: size => - delete(s.items[i]); - return true; - case nosuchitem => - return false; - }; -}; - -export fn contains(s: set, item: size) (size | nosuchitem) = { - for (let i = 0z; i < len(s.items); i += 1) { - if (s.items[i] == item) { - return i; - }; - }; - return nosuchitem; -}; - -// Clears all items. -export fn clear(s: *set) void = { - delete(s.items[..]); -}; - -// Free the underlying slice. -export fn finish(s: *set) void = { - free(s.items); -}; - -@test fn add() void = { - let s = set {...}; - assert(add(&s, 1z)); - assert(len(s.items) == 1); - assert(!add(&s, 1z)); - assert(len(s.items) == 1); -}; - -@test fn del() void = { - let s = set {...}; - assert(add(&s, 1z)); - assert(len(s.items) == 1); - assert(del(&s, 1z)); - assert(len(s.items) == 0); - assert(!del(&s, 1z)); - assert(len(s.items) == 0); -}; - -@test fn contains() void = { - let s = set {...}; - assert(add(&s, 1z)); - assert(!add(&s, 1z)); - const c = contains(s, 1z); - assert(c is size); - assert(c as size == 0); - assert(add(&s, 2z)); - const c = contains(s, 2z); - assert(c is size); - assert(c as size == 1); -}; - -@test fn clear() void = { - let s = set {...}; - assert(add(&s, 1z)); - assert(len(s.items) == 1); - assert(!add(&s, 1z)); - assert(len(s.items) == 1); - clear(&s); - assert(len(s.items) == 0); -}; -- cgit v1.2.3