1from utility cimport pair
2
3cdef extern from "<map>" namespace "std":
4    cdef cppclass map[T, U]:
5        cppclass iterator:
6            pair[T, U]& operator*() nogil
7            iterator operator++() nogil
8            iterator operator--() nogil
9            bint operator==(iterator) nogil
10            bint operator!=(iterator) nogil
11        cppclass reverse_iterator:
12            pair[T, U]& operator*() nogil
13            iterator operator++() nogil
14            iterator operator--() nogil
15            bint operator==(reverse_iterator) nogil
16            bint operator!=(reverse_iterator) nogil
17        #cppclass const_iterator(iterator):
18        #    pass
19        #cppclass const_reverse_iterator(reverse_iterator):
20        #    pass
21        map() nogil except +
22        map(map&) nogil except +
23        #map(key_compare&)
24        U& operator[](T&) nogil
25        #map& operator=(map&)
26        bint operator==(map&, map&) nogil
27        bint operator!=(map&, map&) nogil
28        bint operator<(map&, map&) nogil
29        bint operator>(map&, map&) nogil
30        bint operator<=(map&, map&) nogil
31        bint operator>=(map&, map&) nogil
32        U& at(T&) nogil
33        iterator begin() nogil
34        #const_iterator begin()
35        void clear() nogil
36        size_t count(T&) nogil
37        bint empty() nogil
38        iterator end() nogil
39        #const_iterator end()
40        pair[iterator, iterator] equal_range(T&) nogil
41        #pair[const_iterator, const_iterator] equal_range(key_type&)
42        void erase(iterator) nogil
43        void erase(iterator, iterator) nogil
44        size_t erase(T&) nogil
45        iterator find(T&) nogil
46        #const_iterator find(key_type&)
47        pair[iterator, bint] insert(pair[T, U]) nogil # XXX pair[T,U]&
48        iterator insert(iterator, pair[T, U]) nogil # XXX pair[T,U]&
49        #void insert(input_iterator, input_iterator)
50        #key_compare key_comp()
51        iterator lower_bound(T&) nogil
52        #const_iterator lower_bound(key_type&)
53        size_t max_size() nogil
54        reverse_iterator rbegin() nogil
55        #const_reverse_iterator rbegin()
56        reverse_iterator rend() nogil
57        #const_reverse_iterator rend()
58        size_t size() nogil
59        void swap(map&) nogil
60        iterator upper_bound(T&) nogil
61        #const_iterator upper_bound(key_type&)
62        #value_compare value_comp()
63