diff options
-rw-r--r-- | include/grecs/list.h | 31 | ||||
-rw-r--r-- | include/grecs/node.h | 2 | ||||
-rw-r--r-- | include/grecs/symtab.h | 21 | ||||
-rw-r--r-- | include/grecs/value.h | 2 |
4 files changed, 28 insertions, 28 deletions
diff --git a/include/grecs/list.h b/include/grecs/list.h index efccd56..a5840db 100644 --- a/include/grecs/list.h +++ b/include/grecs/list.h @@ -8,48 +8,47 @@ Grecs 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 General Public License for more details. You should have received a copy of the GNU General Public License along with Grecs. If not, see <http://www.gnu.org/licenses/>. */ #ifndef _GRECS_LIST_H #define _GRECS_LIST_H -typedef struct grecs_list_entry *grecs_list_entry_t; -typedef struct grecs_list *grecs_list_t; +typedef struct grecs_list_entry *grecs_list_entry_ptr_t; +typedef struct grecs_list *grecs_list_ptr_t; struct grecs_list_entry { struct grecs_list_entry *next, *prev; void *data; }; struct grecs_list { struct grecs_list_entry *head, *tail; size_t count; int (*cmp)(const void *, const void *); void (*free_entry)(void *); }; -grecs_list_t grecs_list_create(void); -size_t grecs_list_size(grecs_list_t); -void grecs_list_append(grecs_list_t, void *); -void grecs_list_push(grecs_list_t, void *); -void *grecs_list_pop(grecs_list_t); -void *grecs_list_locate(grecs_list_t, void *); -void *grecs_list_index(grecs_list_t, size_t); -void *grecs_list_remove_tail(grecs_list_t); -void grecs_list_remove_entry(grecs_list_t, grecs_list_entry_t); -void grecs_list_clear(grecs_list_t); -void grecs_list_free(grecs_list_t); -void grecs_list_add(grecs_list_t, grecs_list_t); +grecs_list_ptr_t grecs_list_create(void); +size_t grecs_list_size(grecs_list_ptr_t); +void grecs_list_append(grecs_list_ptr_t, void *); +void grecs_list_push(grecs_list_ptr_t, void *); +void *grecs_list_pop(grecs_list_ptr_t); +void *grecs_list_locate(grecs_list_ptr_t, void *); +void *grecs_list_index(grecs_list_ptr_t, size_t); +void *grecs_list_remove_tail(grecs_list_ptr_t); +void grecs_list_remove_entry(grecs_list_ptr_t, grecs_list_entry_ptr_t); +void grecs_list_clear(grecs_list_ptr_t); +void grecs_list_free(grecs_list_ptr_t); +void grecs_list_add(grecs_list_ptr_t, grecs_list_ptr_t); +int grecs_list_compare(grecs_list_ptr_t, grecs_list_ptr_t); /* FIXME */ struct grecs_list *_grecs_simple_list_create(int dispose); struct grecs_list *grecs_value_list_create(void); - - #endif diff --git a/include/grecs/node.h b/include/grecs/node.h index 5bbe9dc..2d879ad 100644 --- a/include/grecs/node.h +++ b/include/grecs/node.h @@ -29,25 +29,25 @@ enum grecs_node_type { typedef struct grecs_node { enum grecs_node_type type; grecs_locus_t locus; struct grecs_node *up; struct grecs_node *down; struct grecs_node *next; struct grecs_node *prev; char *ident; grecs_locus_t idloc; union { grecs_value_t *value; - grecs_symtab_t texttab; + grecs_symtab_ptr_t texttab; } v; } grecs_node_t; void grecs_node_free(struct grecs_node *node); struct grecs_node *grecs_node_create(enum grecs_node_type type, grecs_locus_t *loc); struct grecs_node *grecs_node_create_points(enum grecs_node_type type, struct grecs_locus_point beg, struct grecs_locus_point end); void grecs_node_bind(struct grecs_node *master, struct grecs_node *node, int dn); int grecs_node_eq(struct grecs_node *a, struct grecs_node *b); diff --git a/include/grecs/symtab.h b/include/grecs/symtab.h index a4a7106..3008b17 100644 --- a/include/grecs/symtab.h +++ b/include/grecs/symtab.h @@ -8,45 +8,46 @@ Grecs 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 General Public License for more details. You should have received a copy of the GNU General Public License along with Grecs. If not, see <http://www.gnu.org/licenses/>. */ #ifndef _GRECS_SYMTAB_H #define _GRECS_SYMTAB_H -typedef struct grecs_symtab *grecs_symtab_t; +typedef struct grecs_symtab *grecs_symtab_ptr_t; +typedef struct grecs_syment *grecs_syment_ptr_t; struct grecs_syment { char *name; }; typedef int (*grecs_symtab_enumerator_t)(void *sym, void *data); const char *grecs_symtab_strerror(int rc); -void *grecs_symtab_lookup_or_install(grecs_symtab_t st, +void *grecs_symtab_lookup_or_install(grecs_symtab_ptr_t st, void *key, int *install); -void grecs_symtab_clear(grecs_symtab_t st); -grecs_symtab_t grecs_symtab_create(size_t elsize, +void grecs_symtab_clear(grecs_symtab_ptr_t st); +grecs_symtab_ptr_t grecs_symtab_create(size_t elsize, unsigned (*hash_fun)(void *, unsigned long), int (*cmp_fun)(const void *, const void *), int (*copy_fun)(void *, void *), void *(*alloc_fun)(size_t), void (*free_fun)(void *)); -grecs_symtab_t grecs_symtab_create_default(size_t elsize); +grecs_symtab_ptr_t grecs_symtab_create_default(size_t elsize); -void grecs_symtab_free(grecs_symtab_t pst); -int grecs_symtab_remove(grecs_symtab_t st, void *elt); -int grecs_symtab_replace(grecs_symtab_t st, void *ent, void **old_ent); -int grecs_symtab_enumerate(grecs_symtab_t st, +void grecs_symtab_free(grecs_symtab_ptr_t pst); +int grecs_symtab_remove(grecs_symtab_ptr_t st, void *elt); +int grecs_symtab_replace(grecs_symtab_ptr_t st, void *ent, void **old_ent); +int grecs_symtab_enumerate(grecs_symtab_ptr_t st, grecs_symtab_enumerator_t fun, void *data); -size_t grecs_symtab_count_entries(grecs_symtab_t st); +size_t grecs_symtab_count_entries(grecs_symtab_ptr_t st); unsigned grecs_hash_string(const char *name, unsigned long hashsize); unsigned grecs_hash_string_ci(const char *name, unsigned long hashsize); #endif diff --git a/include/grecs/value.h b/include/grecs/value.h index 73f979c..8cd2800 100644 --- a/include/grecs/value.h +++ b/include/grecs/value.h @@ -19,25 +19,25 @@ #include <grecs/locus.h> #include <grecs/list.h> #define GRECS_TYPE_STRING 0 #define GRECS_TYPE_LIST 1 #define GRECS_TYPE_ARRAY 2 typedef struct grecs_value { int type; grecs_locus_t locus; union { - grecs_list_t list; + grecs_list_ptr_t list; char *string; struct { size_t c; struct grecs_value **v; } arg; } v; } grecs_value_t; #define GRECS_VALUE_EMPTY_P(val) \ (!(val) || \ ((val)->type == GRECS_TYPE_STRING && (val)->v.string == NULL)) |