X-Git-Url: https://jxself.org/git/?p=zilutils.git;a=blobdiff_plain;f=zilasm%2Fsymtable.h;fp=zilasm%2Fsymtable.h;h=aa72b0ed4296657c84ab6180eec1212314e22e52;hp=0000000000000000000000000000000000000000;hb=fd453701e368225dd15e9df2e5b1752aebe454e8;hpb=093225c7cb864aaa31567969301eb5f36bd9a5f4 diff --git a/zilasm/symtable.h b/zilasm/symtable.h new file mode 100644 index 0000000..aa72b0e --- /dev/null +++ b/zilasm/symtable.h @@ -0,0 +1,38 @@ +/* + * symtable.h -- part of ZilUtils/ZilAsm + * + * Copyright (C) 2016 Jason Self + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + */ + +#ifndef ZILASM_SYMTABLE +#define ZILASM_SYMTABLE 1 + +typedef struct { + unsigned elems_count; + unsigned name_size; + unsigned elem_size; + char contents[1]; +} 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 */