added bad trie iteration
--HG-- branch : sourcemod-1.0.1 extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/branches/sourcemod-1.0.1%401963
This commit is contained in:
@@ -90,3 +90,32 @@ size_t sm_trie_mem_usage(Trie *trie)
|
||||
{
|
||||
return trie->k.mem_usage();
|
||||
}
|
||||
|
||||
struct trie_iter_data
|
||||
{
|
||||
SM_TRIE_BAD_ITERATOR iter;
|
||||
void *ptr;
|
||||
Trie *pTrie;
|
||||
};
|
||||
|
||||
void our_trie_iterator(KTrie<void *> *pTrie, const char *name, void *& obj, void *data)
|
||||
{
|
||||
trie_iter_data *our_iter;
|
||||
|
||||
our_iter = (trie_iter_data *)data;
|
||||
our_iter->iter(our_iter->pTrie, name, &obj, our_iter->ptr);
|
||||
}
|
||||
|
||||
void sm_trie_bad_iterator(Trie *trie,
|
||||
char *buffer,
|
||||
size_t maxlength,
|
||||
SM_TRIE_BAD_ITERATOR iter,
|
||||
void *data)
|
||||
{
|
||||
trie_iter_data our_iter;
|
||||
|
||||
our_iter.iter = iter;
|
||||
our_iter.ptr = data;
|
||||
our_iter.pTrie = trie;
|
||||
trie->k.bad_iterator(buffer, maxlength, &our_iter, our_trie_iterator);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
struct Trie;
|
||||
|
||||
typedef void (*SM_TRIE_BAD_ITERATOR)(Trie *pTrie, const char *key, void **value, void *data);
|
||||
|
||||
Trie *sm_trie_create();
|
||||
void sm_trie_destroy(Trie *trie);
|
||||
bool sm_trie_insert(Trie *trie, const char *key, void *value);
|
||||
@@ -42,5 +44,10 @@ bool sm_trie_retrieve(Trie *trie, const char *key, void **value);
|
||||
bool sm_trie_delete(Trie *trie, const char *key);
|
||||
void sm_trie_clear(Trie *trie);
|
||||
size_t sm_trie_mem_usage(Trie *trie);
|
||||
void sm_trie_bad_iterator(Trie *trie,
|
||||
char *buffer,
|
||||
size_t maxlength,
|
||||
SM_TRIE_BAD_ITERATOR iter,
|
||||
void *data);
|
||||
|
||||
#endif //_INCLUDE_SOURCEMOD_SIMPLE_TRIE_H_
|
||||
|
||||
Reference in New Issue
Block a user