2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @author Matthias Braun
10 * @brief A nodeset. This should be preferred over a simple pset, because it
11 tries to guarantee deterministic behavior.
15 #include "irnodeset.h"
21 #define HashSet ir_nodeset_t
22 #define HashSetIterator ir_nodeset_iterator_t
23 #define ValueType ir_node*
24 #define NullValue NULL
25 #define DeletedValue ((ir_node*)-1)
26 #define Hash(this,key) ((unsigned)((key)->node_nr))
27 #define KeysEqual(this,key1,key2) (key1) == (key2)
28 #define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof((ptr)[0]))
30 void ir_nodeset_init_(ir_nodeset_t *self);
31 #define hashset_init ir_nodeset_init_
32 #define hashset_init_size ir_nodeset_init_size
33 #define hashset_destroy ir_nodeset_destroy
34 #define hashset_insert ir_nodeset_insert
35 #define hashset_remove ir_nodeset_remove
36 #define hashset_find ir_nodeset_contains
37 #define hashset_size ir_nodeset_size
38 #define hashset_iterator_init ir_nodeset_iterator_init
39 #define hashset_iterator_next ir_nodeset_iterator_next
40 #define hashset_remove_iterator ir_nodeset_remove_iterator
42 #include "hashset.c.inl"
44 void ir_nodeset_init(ir_nodeset_t *nodeset)
46 ir_nodeset_init_size(nodeset, 16);