/*
* symtable.h -- part of ZilUtils/ZilAsm
*
- * Copyright (C) 2016 Jason Self <j@jxself.org>
+ * Copyright (C) 2016, 2019 Jason Self <j@jxself.org>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
#ifndef ZILASM_SYMTABLE
#define ZILASM_SYMTABLE 1
-typedef struct {
- unsigned elems_count;
- unsigned name_size;
- unsigned elem_size;
- char contents[1];
+
+typedef struct
+{
+ char *name;
+ void *value;
+
+} SymtableElem;
+
+typedef struct
+{
+ unsigned elems_count;
+ unsigned name_size;
+ unsigned elem_size;
+ //char* contents;
+ SymtableElem *contents; // table of elements
} Symtable;
-Symtable* symtable_create (unsigned elems_count, unsigned name_size, unsigned elem_size);
-void* symtable_lookup (const Symtable*, const char *name);
-void* symtable_lookup2(const Symtable*, const char *name, unsigned namelen);
-void* symtable_add (Symtable*, const char *name, void *contents);
-void* symtable_add2 (Symtable*, const char *name, unsigned namelen, void *contents);
-void symtable_sort (Symtable*);
-void symtable_destroy(Symtable*);
+Symtable *symtable_create (unsigned elems_count, unsigned name_size,
+ unsigned elem_size);
+void *symtable_lookup (const Symtable *, const char *name);
+void *symtable_lookup2 (const Symtable *, const char *name, unsigned namelen);
+void *symtable_add (Symtable *, const char *name, void *contents);
+void *symtable_add2 (Symtable *, const char *name, unsigned namelen,
+ void *contents);
+void symtable_sort (Symtable *);
+void symtable_destroy (Symtable *);
-#endif /* ifndef ZILASM_SYMTABLE */
+#endif /* ifndef ZILASM_SYMTABLE */