bearch: Disallow passing Projs to get_irn_ops().
[libfirm] / ir / adt / cpset.c
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @brief   Custom pointer set
9  * @author  Matthias Braun
10  *
11  * This implements a set of pointers which allows to specify custom callbacks
12  * for comparing and hashing its elements.
13  */
14 #include "config.h"
15
16 #include "cpset.h"
17
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)
26 #define SCALAR_RETURN
27 #define SetRangeEmpty(ptr,size)   memset(ptr, 0, (size) * sizeof(cpset_hashset_entry_t))
28
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
41
42 #include "hashset.c.inl"
43
44 void cpset_init(cpset_t *this_, cpset_hash_function hash_function,
45                 cpset_cmp_function cmp_function)
46 {
47         this_->hash_function = hash_function;
48         this_->cmp_function = cmp_function;
49         cpset_init_(this_);
50 }
51
52 void cpset_init_size(cpset_t *this_, cpset_hash_function hash_function,
53                      cpset_cmp_function cmp_function, size_t expected_elems)
54 {
55         this_->hash_function = hash_function;
56         this_->cmp_function = cmp_function;
57         cpset_init_size_(this_, expected_elems);
58 }