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