tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
set.h
Go to the documentation of this file.
1 /* =============================================================================
2  *
3  * set.h
4  * -- Utility defines to use various data structures as set
5  *
6  * =============================================================================
7  *
8  * Copyright (C) Stanford University, 2006. All Rights Reserved.
9  * Author: Chi Cao Minh
10  *
11  * =============================================================================
12  *
13  * For the license of bayes/sort.h and bayes/sort.c, please see the header
14  * of the files.
15  *
16  * ------------------------------------------------------------------------
17  *
18  * For the license of kmeans, please see kmeans/LICENSE.kmeans
19  *
20  * ------------------------------------------------------------------------
21  *
22  * For the license of ssca2, please see ssca2/COPYRIGHT
23  *
24  * ------------------------------------------------------------------------
25  *
26  * For the license of lib/mt19937ar.c and lib/mt19937ar.h, please see the
27  * header of the files.
28  *
29  * ------------------------------------------------------------------------
30  *
31  * For the license of lib/rbtree.h and lib/rbtree.c, please see
32  * lib/LEGALNOTICE.rbtree and lib/LICENSE.rbtree
33  *
34  * ------------------------------------------------------------------------
35  *
36  * Unless otherwise noted, the following license applies to STAMP files:
37  *
38  * Copyright (c) 2007, Stanford University
39  * All rights reserved.
40  *
41  * Redistribution and use in source and binary forms, with or without
42  * modification, are permitted provided that the following conditions are
43  * met:
44  *
45  * * Redistributions of source code must retain the above copyright
46  * notice, this list of conditions and the following disclaimer.
47  *
48  * * Redistributions in binary form must reproduce the above copyright
49  * notice, this list of conditions and the following disclaimer in
50  * the documentation and/or other materials provided with the
51  * distribution.
52  *
53  * * Neither the name of Stanford University nor the names of its
54  * contributors may be used to endorse or promote products derived
55  * from this software without specific prior written permission.
56  *
57  * THIS SOFTWARE IS PROVIDED BY STANFORD UNIVERSITY ``AS IS'' AND ANY
58  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
59  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
60  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL STANFORD UNIVERSITY BE LIABLE
61  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
62  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
63  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
64  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
65  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
66  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
67  * THE POSSIBILITY OF SUCH DAMAGE.
68  *
69  * =============================================================================
70  */
71 
72 
73 #ifndef SET_H
74 #define SET_H 1
75 
76 
77 #include <stdlib.h>
78 #include "tm.h"
79 #include "types.h"
80 
81 
82 #if defined(SET_USE_RBTREE)
83 
84 # include "rbtree.h"
85 
86 # define SET_T rbtree_t
87 # define SET_ALLOC(hash, cmp) rbtree_alloc(cmp)
88 # define SET_FREE(map) rbtree_free(map)
89 # define TMSET_ALLOC(hash, cmp) TMrbtree_alloc(TM_ARG cmp)
90 # define TMSET_FREE(map) TMrbtree_free(map)
91 
92 # define SET_CONTAINS(map, key) rbtree_contains(map, (void*)(key))
93 # define SET_INSERT(map, key) rbtree_insert(map, (void*)(key), NULL)
94 # define SET_REMOVE(map, key) rbtree_delete(map, (void*)(key))
95 
96 # define TMSET_CONTAINS(map, key) TMRBTREE_CONTAINS(map, (void*)(key))
97 # define TMSET_INSERT(map, key) TMRBTREE_INSERT(map, (void*)(key), NULL)
98 # define TMSET_REMOVE(map, key) TMRBTREE_DELETE(map, (void*)(key))
99 
100 #else
101 
102 # error "SET type is not specified"
103 
104 #endif
105 
106 
107 #endif /* SET_H */
108 
109 
110 /* =============================================================================
111  *
112  * End of set.h
113  *
114  * =============================================================================
115  */