blob: af526194fc7173d32245fbc09937da8d121645ea (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
from libcpp.vector cimport vector
cdef extern from "<span>" namespace "std" nogil:
# Only Extent = std::dynamic_extent is supported until Cython can also
# support integer templates. See https://github.com/cython/cython/pull/426
cdef cppclass span[T]:
ctypedef T value_type
ctypedef size_t size_type
ctypedef ptrdiff_t difference_type
size_t extent
cppclass iterator:
iterator() except +
iterator(iterator&) except +
T& 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 reverse_iterator:
reverse_iterator() except +
reverse_iterator(reverse_iterator&) except +
T& 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)
bint operator>=(const_reverse_iterator)
# const_iterator was added in C++23, so leaving it out for now
span()
span(T*, size_type) except + # span[It](It, size_type)
span(T*, T*) except + # span[It, End](It, End)
span(vector&) # span[U, N](array[T, N]& arr)
span(span&)
T& operator[](ssize_t)
T& back()
iterator begin()
T* data()
bint empty()
iterator end()
span[T] first(size_type)
T& front()
span[T] last(size_type)
reverse_iterator rbegin()
reverse_iterator rend()
size_type size()
span[T] subspan(size_type)
span[T] subspan(size_type, size_type)
cdef size_t dynamic_extent
|