1 // Copyright (C) 2003 Davis E. King (davis@dlib.net) 2 // License: Boost Software License See LICENSE.txt for the full license. 3 #ifndef DLIB_HASH_TABLe_ 4 #define DLIB_HASH_TABLe_ 5 6 7 #include "hash_table/hash_table_kernel_1.h" 8 #include "hash_table/hash_table_kernel_2.h" 9 #include "hash_table/hash_table_kernel_c.h" 10 #include "algs.h" 11 12 #include "binary_search_tree.h" 13 #include <functional> 14 15 16 namespace dlib 17 { 18 19 template < 20 typename domain, 21 typename range, 22 typename mem_manager = default_memory_manager, 23 typename compare = std::less<domain> 24 > 25 class hash_table 26 { hash_table()27 hash_table() {} 28 29 typedef typename binary_search_tree<domain,range,mem_manager,compare>::kernel_1a 30 bst_1; 31 typedef typename binary_search_tree<domain,range,mem_manager,compare>::kernel_2a 32 bst_2; 33 34 public: 35 36 //----------- kernels --------------- 37 38 // kernel_1a 39 typedef hash_table_kernel_1<domain,range,mem_manager,compare> 40 kernel_1a; 41 typedef hash_table_kernel_c<kernel_1a> 42 kernel_1a_c; 43 44 45 // kernel_2a 46 typedef hash_table_kernel_2<domain,range,bst_1,mem_manager,compare> 47 kernel_2a; 48 typedef hash_table_kernel_c<kernel_2a> 49 kernel_2a_c; 50 51 // kernel_2b 52 typedef hash_table_kernel_2<domain,range,bst_2,mem_manager,compare> 53 kernel_2b; 54 typedef hash_table_kernel_c<kernel_2b> 55 kernel_2b_c; 56 }; 57 } 58 59 #endif // DLIB_HASH_TABLe_ 60 61