1from pair cimport pair
2
3cdef extern from "<deque>" namespace "std":
4    cdef cppclass deque[T]:
5        cppclass iterator:
6            T& 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            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        deque() nogil except +
22        deque(deque&) nogil except +
23        deque(size_t) nogil except +
24        deque(size_t, T&) nogil except +
25        #deque[input_iterator](input_iterator, input_iterator)
26        T& operator[](size_t) nogil
27        #deque& operator=(deque&)
28        bint operator==(deque&, deque&) nogil
29        bint operator!=(deque&, deque&) nogil
30        bint operator<(deque&, deque&) nogil
31        bint operator>(deque&, deque&) nogil
32        bint operator<=(deque&, deque&) nogil
33        bint operator>=(deque&, deque&) nogil
34        void assign(size_t, T&) nogil
35        void assign(input_iterator, input_iterator) nogil
36        T& at(size_t) nogil
37        T& back() nogil
38        iterator begin() nogil
39        #const_iterator begin()
40        void clear() nogil
41        bint empty() nogil
42        iterator end() nogil
43        #const_iterator end()
44        iterator erase(iterator) nogil
45        iterator erase(iterator, iterator) nogil
46        T& front() nogil
47        iterator insert(iterator, T&) nogil
48        void insert(iterator, size_t, T&) nogil
49        void insert(iterator, input_iterator, input_iterator) nogil
50        size_t max_size() nogil
51        void pop_back() nogil
52        void pop_front() nogil
53        void push_back(T&) nogil
54        void push_front(T&) nogil
55        reverse_iterator rbegin() nogil
56        #const_reverse_iterator rbegin()
57        reverse_iterator rend() nogil
58        #const_reverse_iterator rend()
59        void resize(size_t) nogil
60        void resize(size_t, T&) nogil
61        size_t size() nogil
62        void swap(deque&) nogil
63