1from .utility cimport pair
2
3cdef extern from "<unordered_map>" namespace "std" nogil:
4    cdef cppclass unordered_map[T, U, HASH=*, PRED=*, ALLOCATOR=*]:
5        ctypedef T key_type
6        ctypedef U mapped_type
7        ctypedef pair[const T, U] value_type
8        cppclass iterator:
9            pair[T, U]& operator*()
10            iterator operator++()
11            iterator operator--()
12            bint operator==(iterator)
13            bint operator!=(iterator)
14        cppclass reverse_iterator:
15            pair[T, U]& operator*()
16            iterator operator++()
17            iterator operator--()
18            bint operator==(reverse_iterator)
19            bint operator!=(reverse_iterator)
20        cppclass const_iterator(iterator):
21            pass
22        cppclass const_reverse_iterator(reverse_iterator):
23            pass
24        unordered_map() except +
25        unordered_map(unordered_map&) except +
26        #unordered_map(key_compare&)
27        U& operator[](T&)
28        #unordered_map& operator=(unordered_map&)
29        bint operator==(unordered_map&, unordered_map&)
30        bint operator!=(unordered_map&, unordered_map&)
31        bint operator<(unordered_map&, unordered_map&)
32        bint operator>(unordered_map&, unordered_map&)
33        bint operator<=(unordered_map&, unordered_map&)
34        bint operator>=(unordered_map&, unordered_map&)
35        U& at(const T&)
36        const U& const_at "at"(const T&)
37        iterator begin()
38        const_iterator const_begin "begin"()
39        void clear()
40        size_t count(T&)
41        bint empty()
42        iterator end()
43        const_iterator const_end "end"()
44        pair[iterator, iterator] equal_range(T&)
45        pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
46        iterator erase(iterator)
47        iterator erase(iterator, iterator)
48        size_t erase(T&)
49        iterator find(T&)
50        const_iterator const_find "find"(T&)
51        pair[iterator, bint] insert(pair[T, U]) # XXX pair[T,U]&
52        iterator insert(iterator, pair[T, U]) # XXX pair[T,U]&
53        iterator insert(iterator, iterator)
54        #key_compare key_comp()
55        iterator lower_bound(T&)
56        const_iterator const_lower_bound "lower_bound"(T&)
57        size_t max_size()
58        reverse_iterator rbegin()
59        const_reverse_iterator const_rbegin "rbegin"()
60        reverse_iterator rend()
61        const_reverse_iterator const_rend "rend"()
62        size_t size()
63        void swap(unordered_map&)
64        iterator upper_bound(T&)
65        const_iterator const_upper_bound "upper_bound"(T&)
66        #value_compare value_comp()
67        void max_load_factor(float)
68        float max_load_factor()
69        void rehash(size_t)
70        void reserve(size_t)
71        size_t bucket_count()
72        size_t max_bucket_count()
73        size_t bucket_size(size_t)
74        size_t bucket(const T&)
75