From 6f8c0f3abda585b3ee1d87e3b8e19c729b52b4a6 Mon Sep 17 00:00:00 2001 From: Andrew D. France Date: Mon, 14 Jul 2025 17:51:23 -0500 Subject: Added compat53 support and fixed bugged non-interactive mode --- .gitmodules | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .gitmodules (limited to '.gitmodules') diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..8e625f2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,7 @@ +[submodule "lib/compat53"] + path = lib/compat53 + url = https://github.com/lunarmodules/lua-compat-5.3.git +[submodule "lib/hashmap"] + path = lib/hashmap + url = https://github.com/tidwall/hashmap.c.git + -- cgit v1.2.3-59-g8ed1b From 49f3d153ac2dc17ff81ad44b204be3e360e529bd Mon Sep 17 00:00:00 2001 From: Andrew D. France Date: Wed, 23 Jul 2025 04:12:05 -0500 Subject: build: Remove broken submodule configuration --- .gitmodules | 1 - lib/compat53 | 1 + lib/hashmap | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) create mode 160000 lib/compat53 create mode 160000 lib/hashmap (limited to '.gitmodules') diff --git a/.gitmodules b/.gitmodules index 8e625f2..7b39498 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,4 +4,3 @@ [submodule "lib/hashmap"] path = lib/hashmap url = https://github.com/tidwall/hashmap.c.git - diff --git a/lib/compat53 b/lib/compat53 new file mode 160000 index 0000000..dfd83b4 --- /dev/null +++ b/lib/compat53 @@ -0,0 +1 @@ +Subproject commit dfd83b4930c8b85fd39d208523f7293cf469b205 diff --git a/lib/hashmap b/lib/hashmap new file mode 160000 index 0000000..1c13992 --- /dev/null +++ b/lib/hashmap @@ -0,0 +1 @@ +Subproject commit 1c139923fe08f36143ecc0ba37cd674684f87f9c -- cgit v1.2.3-59-g8ed1b From 4ac55835610f41c412d4abb1d8a113dcfe3140dd Mon Sep 17 00:00:00 2001 From: Andrew D. France Date: Wed, 23 Jul 2025 04:31:13 -0500 Subject: Revert to old hashmap: fixed gitmodule index --- .gitmodules | 3 --- lib/hashmap | 1 - lib/hashmap/hashmap.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ lib/hashmap/hashmap.h | 38 ++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+), 4 deletions(-) delete mode 160000 lib/hashmap create mode 100644 lib/hashmap/hashmap.c create mode 100644 lib/hashmap/hashmap.h (limited to '.gitmodules') diff --git a/.gitmodules b/.gitmodules index 7b39498..03c2dcd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "lib/compat53"] path = lib/compat53 url = https://github.com/lunarmodules/lua-compat-5.3.git -[submodule "lib/hashmap"] - path = lib/hashmap - url = https://github.com/tidwall/hashmap.c.git diff --git a/lib/hashmap b/lib/hashmap deleted file mode 160000 index 1c13992..0000000 --- a/lib/hashmap +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1c139923fe08f36143ecc0ba37cd674684f87f9c diff --git a/lib/hashmap/hashmap.c b/lib/hashmap/hashmap.c new file mode 100644 index 0000000..cfc112c --- /dev/null +++ b/lib/hashmap/hashmap.c @@ -0,0 +1,69 @@ +/* +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +*/ + +#include "hashmap.h" +#include +#include +#include + +hashmap_t *hm_new_hashmap() { + hashmap_t *this = malloc(sizeof(hashmap_t)); + this->cap = 8; + this->len = 0; + // null all pointers in list + this->list = calloc((this->cap), sizeof(map_pair_t *)); + return this; +} + +unsigned int hm_hashcode(hashmap_t *this, char *key) { + unsigned int code; + for (code = 0; *key != '\0'; key++) { + code = *key + 31 * code; + } + + return code % (this->cap); +} + +char *hm_get(hashmap_t *this, char *key) { + map_pair_t *current; + for (current = this->list[hm_hashcode(this, key)]; current; + current = current->next) { + if (strcmp(current->key, key) == 0) { + return current->val; + } + } + // the key is not found + return NULL; +} + +void hm_set(hashmap_t *this, char *key, char *val) { + unsigned int idx = hm_hashcode(this, key); + map_pair_t *current; + for (current = this->list[idx]; current; current = current->next) { + if (strcmp(current->key, key) == 0) { + current->val = val; + return; + } + } + + map_pair_t *p = malloc(sizeof(map_pair_t)); + p->key = key; + p->val = val; + p->next = this->list[idx]; + this->list[idx] = p; + this->len++; +} diff --git a/lib/hashmap/hashmap.h b/lib/hashmap/hashmap.h new file mode 100644 index 0000000..d5775c5 --- /dev/null +++ b/lib/hashmap/hashmap.h @@ -0,0 +1,38 @@ +/* +Copyright (c) 2024, Lance Borden +All rights reserved. + +This software is licensed under the BSD 3-Clause License. +You may obtain a copy of the license at: +https://opensource.org/licenses/BSD-3-Clause + +Redistribution and use in source and binary forms, with or without +modification, are permitted under the conditions stated in the BSD 3-Clause +License. + +THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +*/ + +#ifndef HASHMAP_H +#define HASHMAP_H + +typedef struct pair { + char *key; + char *val; + struct pair *next; +} map_pair_t; + +typedef struct { + map_pair_t **list; + unsigned int cap; + unsigned int len; +} hashmap_t; + +hashmap_t *hm_new_hashmap(); +unsigned int hm_hashcode(hashmap_t *this, char *key); +char *hm_get(hashmap_t *this, char *key); +void hm_set(hashmap_t *this, char *key, char *val); + +#endif // HASHMAP_H -- cgit v1.2.3-59-g8ed1b