dc6d66573c4f3c10bd355136dc493dab327941ca
[satune.git] / src / Collections / structs.h
1 #ifndef STRUCTS_H
2 #define STRUCTS_H
3 #include "vector.h"
4 #include "hashtable.h"
5 #include "hashset.h"
6 #include "classlist.h"
7 #include "array.h"
8
9 ArrayDef(Element, Element *);
10 ArrayDef(Boolean, Boolean *);
11 ArrayDef(Set, Set *);
12
13
14 VectorDef(Table, Table *, 4);
15 VectorDef(Set, Set *, 4);
16 VectorDef(Boolean, Boolean *, 4);
17 VectorDef(Constraint, Constraint *, 4);
18 VectorDef(Function, Function *, 4);
19 VectorDef(Predicate, Predicate *, 4);
20 VectorDef(Element, Element *, 4);
21 VectorDef(Order, Order *, 4);
22 VectorDef(TableEntry, TableEntry *, 4);
23 VectorDef(ASTNode, ASTNode *, 4);
24 VectorDef(FunctionEncoding, FunctionEncoding *, 4);
25 VectorDef(ElementEncoding, ElementEncoding *, 4);
26 VectorDef(Int, uint64_t, 4);
27
28
29 inline unsigned int Ptr_hash_function(void * hash) {
30         return (unsigned int)((uint64_t)hash >> 4);
31 }
32
33 inline bool Ptr_equals(void * key1, void * key2) {
34         return key1 == key2;
35 }
36
37 HashTableDef(Void, void *, void *, Ptr_hash_function, Ptr_equals);
38 HashTableDef(ElemToEncod, Element *, ElementEncoding *, Ptr_hash_function, Ptr_equals);
39 HashTableDef(VoidToFuncEncod, void *, FunctionEncoding *, Ptr_hash_function, Ptr_equals);
40
41 HashSetDef(Void, void *, Ptr_hash_function, Ptr_equals);
42
43
44 #endif