Updating CVS with partially ported benchmark. Sequencer.java's run() function is...
[IRC.git] / Robust / src / Benchmarks / SingleTM / genome / table.h
1 /* =============================================================================
2  *
3  * table.h
4  * -- Fixed-size hash table
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 TABLE_H
74 #define TABLE_H 1
75
76
77 #include "list.h"
78 #include "types.h"
79
80
81 typedef struct table {
82     list_t** buckets;
83     long numBucket;
84 } table_t;
85
86
87 /* =============================================================================
88  * table_alloc
89  * -- Returns NULL on failure
90  * =============================================================================
91  */
92 table_t*
93 table_alloc (long numBucket, long (*compare)(const void*, const void*));
94
95
96 /* =============================================================================
97  * table_insert
98  * -- Returns TRUE if successful, else FALSE
99  * =============================================================================
100  */
101 bool_t
102 table_insert (table_t* tablePtr, ulong_t hash, void* dataPtr);
103
104
105 /* =============================================================================
106  * TMtable_insert
107  * -- Returns TRUE if successful, else FALSE
108  * =============================================================================
109  */
110 bool_t
111 TMtable_insert (TM_ARGDECL  table_t* tablePtr, ulong_t hash, void* dataPtr);
112
113
114 /* =============================================================================
115  * table_remove
116  * -- Returns TRUE if successful, else FALSE
117  * =============================================================================
118  */
119 bool_t
120 table_remove (table_t* tablePtr, ulong_t hash, void* dataPtr);
121
122
123 /* =============================================================================
124  * table_free
125  * =============================================================================
126  */
127 void
128 table_free (table_t* tablePtr);
129
130
131 #define TMTABLE_INSERT(t, h, d)         TMtable_insert(TM_ARG  t, h, d)
132
133
134 #endif /* TABLE_H */
135
136
137 /* =============================================================================
138  *
139  * End of table.h
140  *
141  * =============================================================================
142  */