2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @brief Custom pointer set
9 * @author Matthias Braun
11 * This implements a set of pointers which allows to specify custom callbacks
12 * for comparing and hashing its elements.
18 #define HashSet cpset_t
19 #define HashSetIterator cpset_iterator_t
20 #define HashSetEntry cpset_hashset_entry_t
21 #define ValueType void*
22 #define NullValue NULL
23 #define DeletedValue ((void*)-1)
24 #define Hash(this,key) this->hash_function(key)
25 #define KeysEqual(this,key1,key2) this->cmp_function(key1, key2)
27 #define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof(cpset_hashset_entry_t))
29 void cpset_init_(cpset_t *self);
30 #define hashset_init cpset_init_
31 void cpset_init_size_(cpset_t *self, size_t expected_elems);
32 #define hashset_init_size cpset_init_size_
33 #define hashset_destroy cpset_destroy
34 #define hashset_insert cpset_insert
35 #define hashset_remove cpset_remove
36 #define hashset_find cpset_find
37 #define hashset_size cpset_size
38 #define hashset_iterator_init cpset_iterator_init
39 #define hashset_iterator_next cpset_iterator_next
40 #define hashset_remove_iterator cpset_remove_iterator
42 #include "hashset.c.inl"
44 void cpset_init(cpset_t *this_, cpset_hash_function hash_function,
45 cpset_cmp_function cmp_function)
47 this_->hash_function = hash_function;
48 this_->cmp_function = cmp_function;
52 void cpset_init_size(cpset_t *this_, cpset_hash_function hash_function,
53 cpset_cmp_function cmp_function, size_t expected_elems)
55 this_->hash_function = hash_function;
56 this_->cmp_function = cmp_function;
57 cpset_init_size_(this_, expected_elems);