summaryrefslogtreecommitdiff
path: root/Cython/Includes/libcpp/string.pxd
diff options
context:
space:
mode:
Diffstat (limited to 'Cython/Includes/libcpp/string.pxd')
-rw-r--r--Cython/Includes/libcpp/string.pxd126
1 files changed, 111 insertions, 15 deletions
diff --git a/Cython/Includes/libcpp/string.pxd b/Cython/Includes/libcpp/string.pxd
index a894144f1..23518806a 100644
--- a/Cython/Includes/libcpp/string.pxd
+++ b/Cython/Includes/libcpp/string.pxd
@@ -7,34 +7,116 @@ cdef extern from "<string>" namespace "std::string" nogil:
cdef extern from "<string>" namespace "std" nogil:
cdef cppclass string:
+ ctypedef char 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()
- char& operator*()
- iterator(iterator&)
+ iterator() except +
+ iterator(iterator&) except +
+ value_type& operator*()
iterator operator++()
iterator operator--()
+ iterator operator++(int)
+ iterator operator--(int)
+ iterator operator+(size_type)
+ iterator operator-(size_type)
+ difference_type operator-(iterator)
+ difference_type operator-(const_iterator)
bint operator==(iterator)
+ bint operator==(const_iterator)
bint operator!=(iterator)
-
+ bint operator!=(const_iterator)
+ bint operator<(iterator)
+ bint operator<(const_iterator)
+ bint operator>(iterator)
+ bint operator>(const_iterator)
+ 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)
+ const_iterator operator+(size_type)
+ const_iterator operator-(size_type)
+ difference_type operator-(iterator)
+ difference_type operator-(const_iterator)
+ bint operator==(iterator)
+ bint operator==(const_iterator)
+ bint operator!=(iterator)
+ bint operator!=(const_iterator)
+ bint operator<(iterator)
+ bint operator<(const_iterator)
+ bint operator>(iterator)
+ bint operator>(const_iterator)
+ bint operator<=(iterator)
+ bint operator<=(const_iterator)
+ bint operator>=(iterator)
+ bint operator>=(const_iterator)
+
+ cppclass const_reverse_iterator
cppclass reverse_iterator:
- char& operator*()
- iterator operator++()
- iterator operator--()
- iterator operator+(size_t)
- iterator operator-(size_t)
+ 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)
+ reverse_iterator operator+(size_type)
+ reverse_iterator operator-(size_type)
+ difference_type operator-(iterator)
+ difference_type operator-(const_iterator)
bint operator==(reverse_iterator)
+ bint operator==(const_reverse_iterator)
bint operator!=(reverse_iterator)
+ bint operator!=(const_reverse_iterator)
bint operator<(reverse_iterator)
+ bint operator<(const_reverse_iterator)
bint operator>(reverse_iterator)
+ bint operator>(const_reverse_iterator)
bint operator<=(reverse_iterator)
+ bint operator<=(const_reverse_iterator)
bint operator>=(reverse_iterator)
-
- cppclass const_iterator(iterator):
- pass
-
- cppclass const_reverse_iterator(reverse_iterator):
- pass
+ 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)
+ const_reverse_iterator operator+(size_type)
+ const_reverse_iterator operator-(size_type)
+ difference_type operator-(iterator)
+ difference_type operator-(const_iterator)
+ bint operator==(reverse_iterator)
+ bint operator==(const_reverse_iterator)
+ bint operator!=(reverse_iterator)
+ bint operator!=(const_reverse_iterator)
+ bint operator<(reverse_iterator)
+ bint operator<(const_reverse_iterator)
+ bint operator>(reverse_iterator)
+ bint operator>(const_reverse_iterator)
+ bint operator<=(reverse_iterator)
+ bint operator<=(const_reverse_iterator)
+ bint operator>=(reverse_iterator)
+ bint operator>=(const_reverse_iterator)
string() except +
string(const string& s) except +
@@ -47,12 +129,16 @@ cdef extern from "<string>" namespace "std" nogil:
iterator begin()
const_iterator const_begin "begin"()
+ const_iterator cbegin()
iterator end()
const_iterator const_end "end"()
+ const_iterator cend()
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()
const char* c_str()
const char* data()
@@ -62,6 +148,7 @@ cdef extern from "<string>" namespace "std" nogil:
void resize(size_t) except +
void resize(size_t, char) except +
void shrink_to_fit() except +
+ void swap(string& other)
size_t capacity()
void reserve(size_t) except +
void clear()
@@ -164,6 +251,15 @@ cdef extern from "<string>" namespace "std" nogil:
string substr(size_t pos) except +
string substr()
+ # C++20
+ bint starts_with(char c) except +
+ bint starts_with(const char* s)
+ bint ends_with(char c) except +
+ bint ends_with(const char* s)
+ # C++23
+ bint contains(char c) except +
+ bint contains(const char* s)
+
#string& operator= (const string&)
#string& operator= (const char*)
#string& operator= (char)