3 #include "cliffc_hashtable.h"
9 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
10 slot* const cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::MATCH_ANY = new slot(false, NULL);
12 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
13 slot* const cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::NO_MATCH_OLD = new slot(false, NULL);
15 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
16 slot* const cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::TOMBPRIME = new slot(true, NULL);
18 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
19 slot* const cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::TOMBSTONE = new slot(false, NULL);
21 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
22 Hash cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::hashFunc;
24 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
25 KeyEqualsTo cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::keyEqualsTo;
27 template<typename TypeK, typename TypeV, class Hash, class KeyEqualsTo, class ValEqualsTo>
28 ValEqualsTo cliffc_hashtable<TypeK, TypeV, Hash, KeyEqualsTo, ValEqualsTo>::valEqualsTo;
32 int operator()(const int &val) const {
39 bool operator()(const int &val1, const int &val2) const {
44 int *k1, *k2, *v1, *v2;
45 cliffc_hashtable<int, int, HashInt, EqualsToInt, EqualsToInt> *table;
47 void threadA(void *arg) {
49 int *r1 = table->get(*k2);
51 printf("r1=%d\n", *r1);
57 void threadB(void *arg) {
59 int *r2 = table->get(*k1);
61 printf("r2=%d\n", *r2);
69 int main(int argc, char *argv[]) {
70 table = new cliffc_hashtable<int, int, HashInt, EqualsToInt, EqualsToInt>();
78 int *r1 = table->get(*k2);
80 printf("r1=%d\n", *r1);
88 int user_main(int argc, char *argv[]) {
89 table = new cliffc_hashtable<int, int, HashInt, EqualsToInt, EqualsToInt>();
96 thrd_create(&A, &threadA, NULL);
97 thrd_create(&B, &threadB, NULL);