from libcpp.pair cimport pair cdef extern from "util/generic/hash.h" nogil: cdef cppclass THashMap[T, U]: cppclass iterator: pair[T, U]& operator*() iterator operator++() iterator operator--() bint operator==(iterator) bint operator!=(iterator) cppclass const_iterator(iterator): pass cppclass reverse_iterator: pair[T, U]& operator*() iterator operator++() iterator operator--() bint operator==(reverse_iterator) bint operator!=(reverse_iterator) cppclass const_reverse_iterator(reverse_iterator): pass THashMap() except + THashMap(THashMap&) except + U& operator[](T&) THashMap& operator=(THashMap&) bint operator==(THashMap&) bint operator!=(THashMap&) bint operator<(THashMap&) bint operator>(THashMap&) bint operator<=(THashMap&) bint operator>=(THashMap&) U& at(T&) except + iterator begin() const_iterator const_begin "begin"() void clear() size_t count(T&) bint empty() iterator end() const_iterator const_end "end"() pair[iterator, iterator] equal_range(T&) void erase(iterator) except + void erase(iterator, iterator) except + size_t erase(T&) iterator find(T&) bint contains(T&) const_iterator const_find "find"(T&) pair[iterator, bint] insert(pair[T, U]) # XXX pair[T,U]& iterator insert(iterator, pair[T, U]) # XXX pair[T,U]& size_t max_size() size_t size() void swap(THashMap&) iterator lower_bound(T&) const_iterator const_lower_bound "lower_bound"(T&) reverse_iterator rbegin() const_reverse_iterator const_rbegin "rbegin"() reverse_iterator rend() const_reverse_iterator const_rend "rend"() iterator upper_bound(T&) const_iterator const_upper_bound "upper_bound"(T&) void max_load_factor(float) float max_load_factor()