15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from utility cimport pair
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)cdef extern from "<map>" namespace "std":
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    cdef cppclass map[T, U]:
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        cppclass iterator:
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            pair[T, U]& operator*() nogil
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            iterator operator++() nogil
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            iterator operator--() nogil
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            bint operator==(iterator) nogil
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            bint operator!=(iterator) nogil
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        cppclass reverse_iterator:
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            pair[T, U]& operator*() nogil
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            iterator operator++() nogil
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            iterator operator--() nogil
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            bint operator==(reverse_iterator) nogil
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            bint operator!=(reverse_iterator) nogil
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #cppclass const_iterator(iterator):
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #    pass
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #cppclass const_reverse_iterator(reverse_iterator):
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #    pass
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        map() nogil except +
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        map(map&) nogil except +
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #map(key_compare&)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        U& operator[](T&) nogil
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #map& operator=(map&)
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator==(map&, map&) nogil
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator!=(map&, map&) nogil
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator<(map&, map&) nogil
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator>(map&, map&) nogil
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator<=(map&, map&) nogil
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator>=(map&, map&) nogil
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        U& at(T&) nogil
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator begin() nogil
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator begin()
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void clear() nogil
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t count(T&) nogil
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint empty() nogil
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator end() nogil
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator end()
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        pair[iterator, iterator] equal_range(T&) nogil
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #pair[const_iterator, const_iterator] equal_range(key_type&)
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void erase(iterator) nogil
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void erase(iterator, iterator) nogil
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t erase(T&) nogil
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator find(T&) nogil
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator find(key_type&)
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        pair[iterator, bint] insert(pair[T, U]) nogil # XXX pair[T,U]&
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator insert(iterator, pair[T, U]) nogil # XXX pair[T,U]&
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #void insert(input_iterator, input_iterator)
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #key_compare key_comp()
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator lower_bound(T&) nogil
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator lower_bound(key_type&)
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t max_size() nogil
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        reverse_iterator rbegin() nogil
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_reverse_iterator rbegin()
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        reverse_iterator rend() nogil
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_reverse_iterator rend()
585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t size() nogil
595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void swap(map&) nogil
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator upper_bound(T&) nogil
615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator upper_bound(key_type&)
625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #value_compare value_comp()
63