core/sm_trie.cpp
changeset 1965 63d5a5f6935f
parent 1952 b7aa2b626807
child 2289 44045ead61cd
     1.1 --- a/core/sm_trie.cpp	Sat Apr 05 00:06:27 2008 +0000
     1.2 +++ b/core/sm_trie.cpp	Sun Apr 06 06:56:45 2008 +0000
     1.3 @@ -90,3 +90,32 @@
     1.4  {
     1.5  	return trie->k.mem_usage();
     1.6  }
     1.7 +
     1.8 +struct trie_iter_data
     1.9 +{
    1.10 +	SM_TRIE_BAD_ITERATOR iter;
    1.11 +	void *ptr;
    1.12 +	Trie *pTrie;
    1.13 +};
    1.14 +
    1.15 +void our_trie_iterator(KTrie<void *> *pTrie, const char *name, void *& obj, void *data)
    1.16 +{
    1.17 +	trie_iter_data *our_iter;
    1.18 +
    1.19 +	our_iter = (trie_iter_data *)data;
    1.20 +	our_iter->iter(our_iter->pTrie, name, &obj, our_iter->ptr);
    1.21 +}
    1.22 +
    1.23 +void sm_trie_bad_iterator(Trie *trie,
    1.24 +						  char *buffer,
    1.25 +						  size_t maxlength,
    1.26 +						  SM_TRIE_BAD_ITERATOR iter,
    1.27 +						  void *data)
    1.28 +{
    1.29 +	trie_iter_data our_iter;
    1.30 +
    1.31 +	our_iter.iter = iter;
    1.32 +	our_iter.ptr = data;
    1.33 +	our_iter.pTrie = trie;
    1.34 +	trie->k.bad_iterator(buffer, maxlength, &our_iter, our_trie_iterator);
    1.35 +}