move backend into libfirm
[libfirm] / ir / ir / irnodeset.c
1 /**
2  * @file
3  * @author    Matthias Braun
4  * @date      30.03.2007
5  * @brief     A nodeset. This should be prefered over a simple pset, because it
6               tries to guarantee deterministic behavior.
7  * @version   $Id$
8  */
9 #include "config.h"
10
11 #include "irnodeset.h"
12 #include "hashptr.h"
13
14 #define DO_REHASH
15 #define ID_HASH
16 #define HashSet                   ir_nodeset_t
17 #define HashSetIterator           ir_nodeset_iterator_t
18 #define ValueType                 ir_node*
19 #define NullValue                 NULL
20 #define DeletedValue              ((ir_node*)-1)
21 #ifdef FIRM_debug
22 #define Hash(this,value)          (value)->node_nr
23 #else
24 #define Hash(this,value)          HASH_PTR(value)
25 #endif
26 #define KeysEqual(this,key1,key2) (key1) == (key2)
27 #define SetRangeEmpty(ptr,size)   memset(ptr, 0, (size) * sizeof((ptr)[0]))
28
29 #define hashset_init            ir_nodeset_init
30 #define hashset_init_size       ir_nodeset_init_size
31 #define hashset_destroy         ir_nodeset_destroy
32 #define hashset_insert          ir_nodeset_insert
33 #define hashset_remove          ir_nodeset_remove
34 #define hashset_find            _ir_nodeset_find
35 #define hashset_size            ir_nodeset_size
36 #define hashset_iterator_init   ir_nodeset_iterator_init
37 #define hashset_iterator_next   ir_nodeset_iterator_next
38 #define hashset_remove_iterator ir_nodeset_remove_iterator
39
40 #include "hashset.c"
41
42 int ir_nodeset_contains(const ir_nodeset_t *this, const ir_node *node)
43 {
44         return _ir_nodeset_find(this, node) != NULL;
45 }