15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from pair cimport pair
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)cdef extern from "<set>" namespace "std":
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    cdef cppclass set[T]:
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        cppclass iterator:
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            T& operator*()
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)            T& 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)        set() nogil except +
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        set(set&) nogil except +
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #set(key_compare&)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #set& operator=(set&)
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator==(set&, set&) nogil
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator!=(set&, set&) nogil
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator<(set&, set&) nogil
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator>(set&, set&) nogil
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator<=(set&, set&) nogil
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint operator>=(set&, set&) nogil
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator begin() nogil
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator begin()
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void clear() nogil
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t count(T&) nogil
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        bint empty() nogil
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator end() nogil
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator end()
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        pair[iterator, iterator] equal_range(T&) nogil
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #pair[const_iterator, const_iterator] equal_range(T&)
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void erase(iterator) nogil
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void erase(iterator, iterator) nogil
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t erase(T&) nogil
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator find(T&) nogil
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator find(T&)
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        pair[iterator, bint] insert(T&) nogil
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator insert(iterator, T&) nogil
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #void insert(input_iterator, input_iterator)
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #key_compare key_comp()
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator lower_bound(T&) nogil
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator lower_bound(T&)
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t max_size() nogil
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        reverse_iterator rbegin() nogil
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_reverse_iterator rbegin()
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        reverse_iterator rend() nogil
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_reverse_iterator rend()
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        size_t size() nogil
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        void swap(set&) nogil
585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        iterator upper_bound(T&) nogil
595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #const_iterator upper_bound(T&)
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        #value_compare value_comp()
61