Adding Transformer and adding integerencoding to it + More OOP
[satune.git] / src / Collections / structs.h
1 #ifndef STRUCTS_H
2 #define STRUCTS_H
3 #include "cppvector.h"
4 #include "hashtable.h"
5 #include "hashset.h"
6 #include "classlist.h"
7 #include "array.h"
8
9 unsigned int table_entry_hash_function(TableEntry *This);
10 bool table_entry_equals(TableEntry *key1, TableEntry *key2);
11 unsigned int order_node_hash_function(OrderNode *This);
12 bool order_node_equals(OrderNode *key1, OrderNode *key2);
13 unsigned int order_edge_hash_function(OrderEdge *This);
14 bool order_edge_equals(OrderEdge *key1, OrderEdge *key2);
15 unsigned int order_element_hash_function(OrderElement *This);
16 bool order_element_equals(OrderElement *key1, OrderElement *key2);
17 unsigned int order_pair_hash_function(OrderPair *This);
18 bool order_pair_equals(OrderPair *key1, OrderPair *key2);
19 unsigned int order_hash_function(Order *This);
20 bool order_pair_equals(Order *key1, Order *key2);
21
22
23 typedef HashSet<Boolean *, uintptr_t, 4> HashSetBoolean;
24 typedef HashSet<TableEntry *, uintptr_t, 4, table_entry_hash_function, table_entry_equals> HashSetTableEntry;
25 typedef HashSet<OrderNode *, uintptr_t, 4, order_node_hash_function, order_node_equals> HashSetOrderNode;
26 typedef HashSet<OrderEdge *, uintptr_t, 4, order_edge_hash_function, order_edge_equals> HashSetOrderEdge;
27 typedef HashSet<OrderElement *, uintptr_t, 4, order_element_hash_function, order_element_equals> HashSetOrderElement;
28
29 typedef HashTable<OrderNode *, HashSetOrderNode *, uintptr_t, 4> HashTableNodeToNodeSet;
30 typedef HashTable<OrderPair *, OrderPair *, uintptr_t, 4, order_pair_hash_function, order_pair_equals> HashTableOrderPair;
31 typedef HashTable<void *, void *, uintptr_t, 4> CloneMap;
32 typedef HashTable<Order* , IntegerEncodingRecord*, uintptr_t, 4, order_hash_function, order_pair_equals> HashTableOrderIntEncoding; 
33
34 typedef HSIterator<TableEntry *, uintptr_t, 4, table_entry_hash_function, table_entry_equals> HSIteratorTableEntry;
35 typedef HSIterator<Boolean *, uintptr_t, 4> HSIteratorBoolean;
36 typedef HSIterator<OrderEdge *, uintptr_t, 4, order_edge_hash_function, order_edge_equals> HSIteratorOrderEdge;
37 typedef HSIterator<OrderNode *, uintptr_t, 4, order_node_hash_function, order_node_equals> HSIteratorOrderNode;
38 typedef HSIterator<OrderElement *, uintptr_t, 4, order_element_hash_function, order_element_equals> HSIteratorOrderElement;
39
40 #endif