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_MAp_
4 #define DLIB_HASH_MAp_
5 
6 #include "hash_map/hash_map_kernel_1.h"
7 #include "hash_map/hash_map_kernel_c.h"
8 
9 #include "hash_table.h"
10 #include "algs.h"
11 
12 #include "algs.h"
13 #include <functional>
14 
15 namespace dlib
16 {
17 
18     template <
19         typename domain,
20         typename range,
21         unsigned long expnum,
22         typename mem_manager = default_memory_manager,
23         typename compare = std::less<domain>
24         >
25     class hash_map
26     {
hash_map()27         hash_map() {}
28 
29         typedef typename hash_table<domain,range,mem_manager,compare>::kernel_1a
30                 hash_table_1;
31         typedef typename hash_table<domain,range,mem_manager,compare>::kernel_2a
32                 hash_table_2;
33         typedef typename hash_table<domain,range,mem_manager,compare>::kernel_2b
34                 hash_table_3;
35 
36     public:
37 
38         //----------- kernels ---------------
39 
40         // kernel_1a
41         typedef     hash_map_kernel_1<domain,range,expnum,hash_table_1,mem_manager>
42                     kernel_1a;
43         typedef     hash_map_kernel_c<kernel_1a>
44                     kernel_1a_c;
45 
46         // kernel_1b
47         typedef     hash_map_kernel_1<domain,range,expnum,hash_table_2,mem_manager>
48                     kernel_1b;
49         typedef     hash_map_kernel_c<kernel_1b>
50                     kernel_1b_c;
51 
52         // kernel_1c
53         typedef     hash_map_kernel_1<domain,range,expnum,hash_table_3,mem_manager>
54                     kernel_1c;
55         typedef     hash_map_kernel_c<kernel_1c>
56                     kernel_1c_c;
57 
58 
59     };
60 }
61 
62 #endif // DLIB_HASH_MAp_
63 
64