poser
A C framework for POsix SERvices
Loading...
Searching...
No Matches
hashtable.h
Go to the documentation of this file.
1#ifndef POSER_CORE_HASHTABLE_H
2#define POSER_CORE_HASHTABLE_H
3
8#include <poser/decl.h>
9
10#include <stddef.h>
11#include <stdint.h>
12
16C_CLASS_DECL(PSC_HashTable);
17
21C_CLASS_DECL(PSC_HashTableIterator);
22
29DECLEXPORT PSC_HashTable *
31 ATTR_RETNONNULL;
32
42DECLEXPORT void
43PSC_HashTable_set(PSC_HashTable *self, const char *key,
44 void *obj, void (*deleter)(void *))
45 CMETHOD ATTR_NONNULL((2)) ATTR_NONNULL((3));
46
54DECLEXPORT int
55PSC_HashTable_delete(PSC_HashTable *self, const char *key)
56 CMETHOD ATTR_NONNULL((2));
57
68DECLEXPORT int
69PSC_HashTable_deleteAll(PSC_HashTable *self,
70 int (*matcher)(const char *, void *, const void *), const void *arg)
71 CMETHOD ATTR_NONNULL((1));
72
78DECLEXPORT size_t
79PSC_HashTable_count(const PSC_HashTable *self)
80 CMETHOD ATTR_PURE;
81
88DECLEXPORT void *
89PSC_HashTable_get(const PSC_HashTable *self, const char *key)
90 CMETHOD ATTR_NONNULL((2));
91
100DECLEXPORT PSC_HashTableIterator *
101PSC_HashTable_iterator(const PSC_HashTable *self)
102 CMETHOD ATTR_RETNONNULL;
103
109DECLEXPORT void
110PSC_HashTable_destroy(PSC_HashTable *self);
111
119DECLEXPORT int
120PSC_HashTableIterator_moveNext(PSC_HashTableIterator *self)
121 CMETHOD;
122
128DECLEXPORT const char *
129PSC_HashTableIterator_key(const PSC_HashTableIterator *self)
130 CMETHOD ATTR_PURE;
131
137DECLEXPORT void *
138PSC_HashTableIterator_current(const PSC_HashTableIterator *self)
139 CMETHOD ATTR_PURE;
140
145DECLEXPORT void
146PSC_HashTableIterator_destroy(PSC_HashTableIterator *self);
147
148#endif
A hash table storing any data objects using string keys.
void PSC_HashTable_set(PSC_HashTable *self, const char *key, void *obj, void(*deleter)(void *))
Set a new object for a key.
PSC_HashTable * PSC_HashTable_create(uint8_t bits)
PSC_HashTable default constructor.
An iterator over the contents of a PSC_HashTable.