from .utility cimport pair cdef extern from "" namespace "std" nogil: cdef cppclass set[T]: ctypedef T value_type # these should really be allocator_type.size_type and # allocator_type.difference_type to be true to the C++ definition # but cython doesn't support deferred access on template arguments ctypedef size_t size_type ctypedef ptrdiff_t difference_type cppclass const_iterator cppclass iterator: iterator() except + iterator(iterator&) except + value_type& operator*() iterator operator++() iterator operator--() iterator operator++(int) iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_iterator: const_iterator() except + const_iterator(iterator&) except + const_iterator(const_iterator&) except + operator=(iterator&) except + const value_type& operator*() const_iterator operator++() const_iterator operator--() const_iterator operator++(int) const_iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_reverse_iterator cppclass reverse_iterator: reverse_iterator() except + reverse_iterator(reverse_iterator&) except + value_type& operator*() reverse_iterator operator++() reverse_iterator operator--() reverse_iterator operator++(int) reverse_iterator operator--(int) bint operator==(reverse_iterator) bint operator==(const_reverse_iterator) bint operator!=(reverse_iterator) bint operator!=(const_reverse_iterator) cppclass const_reverse_iterator: const_reverse_iterator() except + const_reverse_iterator(reverse_iterator&) except + operator=(reverse_iterator&) except + const value_type& operator*() const_reverse_iterator operator++() const_reverse_iterator operator--() const_reverse_iterator operator++(int) const_reverse_iterator operator--(int) bint operator==(reverse_iterator) bint operator==(const_reverse_iterator) bint operator!=(reverse_iterator) bint operator!=(const_reverse_iterator) set() except + set(set&) except + #set(key_compare&) #set& operator=(set&) bint operator==(set&, set&) bint operator!=(set&, set&) bint operator<(set&, set&) bint operator>(set&, set&) bint operator<=(set&, set&) bint operator>=(set&, set&) iterator begin() const_iterator const_begin "begin"() const_iterator cbegin() void clear() size_t count(const T&) bint empty() iterator end() const_iterator const_end "end"() const_iterator cend() pair[iterator, iterator] equal_range(const T&) pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&) iterator erase(iterator) iterator const_erase "erase"(const_iterator) iterator erase(const_iterator, const_iterator) size_t erase(const T&) iterator find(const T&) const_iterator const_find "find"(const T&) pair[iterator, bint] insert(const T&) except + iterator insert(iterator, const T&) except + iterator insert(const_iterator, const T&) except + iterator const_insert "insert"(const_iterator, const T&) except + void insert[InputIt](InputIt, InputIt) except + #key_compare key_comp() iterator lower_bound(const T&) const_iterator const_lower_bound "lower_bound"(const T&) size_t max_size() reverse_iterator rbegin() const_reverse_iterator const_rbegin "rbegin"() const_reverse_iterator crbegin() reverse_iterator rend() const_reverse_iterator const_rend "rend"() const_reverse_iterator crend() size_t size() void swap(set&) iterator upper_bound(const T&) const_iterator const_upper_bound "upper_bound"(const T&) #value_compare value_comp() # C++20 bint contains(const T&) cdef cppclass multiset[T]: ctypedef T value_type # these should really be allocator_type.size_type and # allocator_type.difference_type to be true to the C++ definition # but cython doesn't support deferred access on template arguments ctypedef size_t size_type ctypedef ptrdiff_t difference_type cppclass const_iterator cppclass iterator: iterator() except + iterator(iterator&) except + value_type& operator*() iterator operator++() iterator operator--() iterator operator++(int) iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_iterator: const_iterator() except + const_iterator(iterator&) except + const_iterator(const_iterator&) except + operator=(iterator&) except + const value_type& operator*() const_iterator operator++() const_iterator operator--() const_iterator operator++(int) const_iterator operator--(int) bint operator==(iterator) bint operator==(const_iterator) bint operator!=(iterator) bint operator!=(const_iterator) cppclass const_reverse_iterator cppclass reverse_iterator: reverse_iterator() except + reverse_iterator(reverse_iterator&) except + value_type& operator*() reverse_iterator operator++() reverse_iterator operator--() reverse_iterator operator++(int) reverse_iterator operator--(int) bint operator==(reverse_iterator) bint operator==(const_reverse_iterator) bint operator!=(reverse_iterator) bint operator!=(const_reverse_iterator) cppclass const_reverse_iterator: const_reverse_iterator() except + const_reverse_iterator(reverse_iterator&) except + operator=(reverse_iterator&) except + const value_type& operator*() const_reverse_iterator operator++() const_reverse_iterator operator--() const_reverse_iterator operator++(int) const_reverse_iterator operator--(int) bint operator==(reverse_iterator) bint operator==(const_reverse_iterator) bint operator!=(reverse_iterator) bint operator!=(const_reverse_iterator) multiset() except + multiset(multiset&) except + #multiset(key_compare&) #multiset& operator=(multiset&) bint operator==(multiset&, multiset&) bint operator!=(multiset&, multiset&) bint operator<(multiset&, multiset&) bint operator>(multiset&, multiset&) bint operator<=(multiset&, multiset&) bint operator>=(multiset&, multiset&) iterator begin() const_iterator const_begin "begin"() const_iterator cbegin() void clear() size_t count(const T&) bint empty() iterator end() const_iterator const_end "end"() const_iterator cend() pair[iterator, iterator] equal_range(const T&) pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&) iterator erase(iterator) iterator const_erase "erase"(const_iterator) iterator erase(const_iterator, const_iterator) size_t erase(const T&) iterator find(const T&) const_iterator const_find "find"(const T&) iterator insert(const T&) except + iterator insert(iterator, const T&) except + iterator const_insert "insert"(const_iterator, const T&) except + void insert[InputIt](InputIt, InputIt) except + #key_compare key_comp() iterator lower_bound(const T&) const_iterator const_lower_bound "lower_bound"(const T&) size_t max_size() reverse_iterator rbegin() const_reverse_iterator const_rbegin "rbegin"() const_reverse_iterator crbegin() reverse_iterator rend() const_reverse_iterator const_rend "rend"() const_reverse_iterator crend() size_t size() void swap(multiset&) iterator upper_bound(const T&) const_iterator const_upper_bound "upper_bound"(const T&) # C++20 bint contains(const T&)