43#define ARG_ENABLE_TRACE 0
44#define ARG_ENABLE_LOG 0
56 __pragma(warning(push)) __pragma(warning(disable : 4127)) do { \
57 if (ARG_ENABLE_TRACE) \
61 __pragma(warning(pop))
64 __pragma(warning(push)) __pragma(warning(disable : 4127)) do { \
69 __pragma(warning(pop))
73 if (ARG_ENABLE_TRACE) \
89#define xmalloc argtable3_xmalloc
90#define xcalloc argtable3_xcalloc
91#define xrealloc argtable3_xrealloc
92#define xfree argtable3_xfree
99extern void xfree(
void* ptr);
114 int (*
eqfn)(
const void* k1,
const void* k2);
144#define ARG_DEFINE_HASHTABLE_INSERT(fnname, keytype, valuetype) \
145 int fnname(arg_hashtable_t* h, keytype* k, valuetype* v) { return arg_hashtable_insert(h, k, v); }
156#define ARG_DEFINE_HASHTABLE_SEARCH(fnname, keytype, valuetype) \
157 valuetype* fnname(arg_hashtable_t* h, keytype* k) { return (valuetype*)(arg_hashtable_search(h, k)); }
167#define ARG_DEFINE_HASHTABLE_REMOVE(fnname, keytype, valuetype) \
168 void fnname(arg_hashtable_t* h, keytype* k) { arg_hashtable_remove(h, k); }
238#define ARG_DEFINE_HASHTABLE_ITERATOR_SEARCH(fnname, keytype) \
239 int fnname(arg_hashtable_itr_t* i, arg_hashtable_t* h, keytype* k) { return (arg_hashtable_iterator_search(i, h, k)); }
int arg_hashtable_itr_search(arg_hashtable_itr_t *itr, arg_hashtable_t *h, void *k)
Search and overwrite the supplied iterator, to point to the entry matching the supplied key.
Definition arg_hashtable.c:384
void arg_hashtable_destroy(arg_hashtable_t *h, int free_values)
Free the hash table and the memory allocated for each key-value pair.
Definition arg_hashtable.c:253
void arg_set_panic(arg_panicfn *proc)
Definition arg_utils.c:91
int arg_hashtable_change(arg_hashtable_t *h, void *k, void *v)
Definition arg_hashtable.c:410
#define xfree
Definition argtable3_private.h:92
#define xrealloc
Definition argtable3_private.h:91
struct arg_hashtable arg_hashtable_t
void * arg_hashtable_itr_value(arg_hashtable_itr_t *i)
Return the value of the (key,value) pair at the current position.
Definition arg_hashtable.c:314
int arg_hashtable_itr_remove(arg_hashtable_itr_t *itr)
Remove current element and advance the iterator to the next element.
Definition arg_hashtable.c:355
struct arg_hashtable_itr arg_hashtable_itr_t
#define xmalloc
Definition argtable3_private.h:89
int arg_hashtable_itr_advance(arg_hashtable_itr_t *itr)
Advance the iterator to the next element. Returns zero if advanced to end of table.
Definition arg_hashtable.c:318
@ ARG_ERR_BADINT
Definition argtable3_private.h:50
@ ARG_ERR_BADDOUBLE
Definition argtable3_private.h:50
@ ARG_ERR_BADDATE
Definition argtable3_private.h:50
@ ARG_ERR_OVERFLOW
Definition argtable3_private.h:50
@ ARG_ERR_MAXCOUNT
Definition argtable3_private.h:50
@ ARG_ERR_MINCOUNT
Definition argtable3_private.h:50
@ ARG_ERR_REGNOMATCH
Definition argtable3_private.h:50
void * arg_hashtable_itr_key(arg_hashtable_itr_t *i)
Return the value of the (key,value) pair at the current position.
Definition arg_hashtable.c:310
arg_hashtable_itr_t * arg_hashtable_itr_create(arg_hashtable_t *h)
Definition arg_hashtable.c:283
unsigned int arg_hashtable_count(arg_hashtable_t *h)
Return the number of keys in the hash table.
Definition arg_hashtable.c:179
arg_hashtable_t * arg_hashtable_create(unsigned int minsize, unsigned int(*hashfn)(const void *), int(*eqfn)(const void *, const void *))
Create a hash table.
Definition arg_hashtable.c:111
void arg_hashtable_itr_destroy(arg_hashtable_itr_t *itr)
Definition arg_hashtable.c:306
void arg_hashtable_remove(arg_hashtable_t *h, const void *k)
Remove the specified key from the hash table.
Definition arg_hashtable.c:223
void() arg_panicfn(const char *fmt,...)
Definition argtable3_private.h:52
void dbg_printf(const char *fmt,...)
Definition arg_utils.c:52
#define xcalloc
Definition argtable3_private.h:90
void * arg_hashtable_search(arg_hashtable_t *h, const void *k)
Search the specified key in the hash table.
Definition arg_hashtable.c:206
void arg_hashtable_insert(arg_hashtable_t *h, void *k, void *v)
This function will cause the table to expand if the insertion would take the ratio of entries to tabl...
Definition arg_hashtable.c:183
Definition argtable3_private.h:101
void * k
Definition argtable3_private.h:102
unsigned int h
Definition argtable3_private.h:103
void * v
Definition argtable3_private.h:102
struct arg_hashtable_entry * next
Definition argtable3_private.h:104
Definition argtable3_private.h:200
unsigned int index
Definition argtable3_private.h:204
struct arg_hashtable_entry * e
Definition argtable3_private.h:202
struct arg_hashtable_entry * parent
Definition argtable3_private.h:203
arg_hashtable_t * h
Definition argtable3_private.h:201
Definition argtable3_private.h:107
unsigned int loadlimit
Definition argtable3_private.h:111
int(* eqfn)(const void *k1, const void *k2)
Definition argtable3_private.h:114
unsigned int tablelength
Definition argtable3_private.h:108
unsigned int entrycount
Definition argtable3_private.h:110
unsigned int primeindex
Definition argtable3_private.h:112
struct arg_hashtable_entry ** table
Definition argtable3_private.h:109
unsigned int(* hashfn)(const void *k)
Definition argtable3_private.h:113
uint32_t size
Definition vsf_memfs.h:50