Cython 3.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Cython/Build/BuildExecutable.py +169 -0
- Cython/Build/Cache.py +199 -0
- Cython/Build/Cythonize.py +323 -0
- Cython/Build/Dependencies.py +1306 -0
- Cython/Build/Distutils.py +1 -0
- Cython/Build/Inline.py +463 -0
- Cython/Build/IpythonMagic.py +560 -0
- Cython/Build/SharedModule.py +76 -0
- Cython/Build/Tests/TestCyCache.py +194 -0
- Cython/Build/Tests/TestCythonizeArgsParser.py +481 -0
- Cython/Build/Tests/TestDependencies.py +133 -0
- Cython/Build/Tests/TestInline.py +177 -0
- Cython/Build/Tests/TestIpythonMagic.py +287 -0
- Cython/Build/Tests/TestRecythonize.py +212 -0
- Cython/Build/Tests/TestStripLiterals.py +155 -0
- Cython/Build/Tests/__init__.py +1 -0
- Cython/Build/__init__.py +8 -0
- Cython/CodeWriter.py +811 -0
- Cython/Compiler/AnalysedTreeTransforms.py +97 -0
- Cython/Compiler/Annotate.py +326 -0
- Cython/Compiler/AutoDocTransforms.py +320 -0
- Cython/Compiler/Buffer.py +680 -0
- Cython/Compiler/Builtin.py +934 -0
- Cython/Compiler/CmdLine.py +259 -0
- Cython/Compiler/Code.pxd +148 -0
- Cython/Compiler/Code.py +3375 -0
- Cython/Compiler/CodeGeneration.py +33 -0
- Cython/Compiler/CythonScope.py +187 -0
- Cython/Compiler/Dataclass.py +868 -0
- Cython/Compiler/DebugFlags.py +24 -0
- Cython/Compiler/Errors.py +295 -0
- Cython/Compiler/ExprNodes.py +15267 -0
- Cython/Compiler/FlowControl.pxd +97 -0
- Cython/Compiler/FlowControl.py +1455 -0
- Cython/Compiler/FusedNode.py +1002 -0
- Cython/Compiler/Future.py +16 -0
- Cython/Compiler/Interpreter.py +57 -0
- Cython/Compiler/Lexicon.py +340 -0
- Cython/Compiler/LineTable.py +114 -0
- Cython/Compiler/Main.py +853 -0
- Cython/Compiler/MatchCaseNodes.py +259 -0
- Cython/Compiler/MemoryView.py +922 -0
- Cython/Compiler/ModuleNode.py +4024 -0
- Cython/Compiler/Naming.py +374 -0
- Cython/Compiler/Nodes.py +10826 -0
- Cython/Compiler/Optimize.py +5256 -0
- Cython/Compiler/Options.py +835 -0
- Cython/Compiler/ParseTreeTransforms.pxd +77 -0
- Cython/Compiler/ParseTreeTransforms.py +4509 -0
- Cython/Compiler/Parsing.pxd +9 -0
- Cython/Compiler/Parsing.py +4789 -0
- Cython/Compiler/Pipeline.py +439 -0
- Cython/Compiler/PyrexTypes.py +5762 -0
- Cython/Compiler/Pythran.py +232 -0
- Cython/Compiler/Scanning.pxd +40 -0
- Cython/Compiler/Scanning.py +577 -0
- Cython/Compiler/StringEncoding.py +347 -0
- Cython/Compiler/Symtab.py +3080 -0
- Cython/Compiler/Tests/TestBuffer.py +105 -0
- Cython/Compiler/Tests/TestBuiltin.py +72 -0
- Cython/Compiler/Tests/TestCmdLine.py +586 -0
- Cython/Compiler/Tests/TestCode.py +86 -0
- Cython/Compiler/Tests/TestFlowControl.py +65 -0
- Cython/Compiler/Tests/TestGrammar.py +202 -0
- Cython/Compiler/Tests/TestMemView.py +71 -0
- Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
- Cython/Compiler/Tests/TestScanning.py +134 -0
- Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
- Cython/Compiler/Tests/TestStringEncoding.py +33 -0
- Cython/Compiler/Tests/TestTreeFragment.py +63 -0
- Cython/Compiler/Tests/TestTreePath.py +103 -0
- Cython/Compiler/Tests/TestTypes.py +75 -0
- Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
- Cython/Compiler/Tests/TestVisitor.py +61 -0
- Cython/Compiler/Tests/Utils.py +36 -0
- Cython/Compiler/Tests/__init__.py +1 -0
- Cython/Compiler/TreeFragment.py +278 -0
- Cython/Compiler/TreePath.py +303 -0
- Cython/Compiler/TypeInference.py +584 -0
- Cython/Compiler/TypeSlots.py +1181 -0
- Cython/Compiler/UFuncs.py +311 -0
- Cython/Compiler/UtilNodes.py +389 -0
- Cython/Compiler/UtilityCode.py +344 -0
- Cython/Compiler/Version.py +8 -0
- Cython/Compiler/Visitor.pxd +53 -0
- Cython/Compiler/Visitor.py +861 -0
- Cython/Compiler/__init__.py +1 -0
- Cython/Coverage.py +448 -0
- Cython/Debugger/Cygdb.py +175 -0
- Cython/Debugger/DebugWriter.py +82 -0
- Cython/Debugger/Tests/TestLibCython.py +275 -0
- Cython/Debugger/Tests/__init__.py +1 -0
- Cython/Debugger/Tests/cfuncs.c +8 -0
- Cython/Debugger/Tests/codefile +49 -0
- Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
- Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
- Cython/Debugger/__init__.py +1 -0
- Cython/Debugger/libcython.py +1548 -0
- Cython/Debugger/libpython.py +2821 -0
- Cython/Debugging.py +20 -0
- Cython/Distutils/__init__.py +2 -0
- Cython/Distutils/build_ext.py +139 -0
- Cython/Distutils/extension.py +96 -0
- Cython/Distutils/old_build_ext.py +351 -0
- Cython/Includes/cpython/__init__.pxd +173 -0
- Cython/Includes/cpython/array.pxd +174 -0
- Cython/Includes/cpython/bool.pxd +37 -0
- Cython/Includes/cpython/buffer.pxd +112 -0
- Cython/Includes/cpython/bytearray.pxd +33 -0
- Cython/Includes/cpython/bytes.pxd +200 -0
- Cython/Includes/cpython/cellobject.pxd +35 -0
- Cython/Includes/cpython/ceval.pxd +8 -0
- Cython/Includes/cpython/codecs.pxd +121 -0
- Cython/Includes/cpython/complex.pxd +60 -0
- Cython/Includes/cpython/contextvars.pxd +145 -0
- Cython/Includes/cpython/conversion.pxd +36 -0
- Cython/Includes/cpython/datetime.pxd +395 -0
- Cython/Includes/cpython/descr.pxd +26 -0
- Cython/Includes/cpython/dict.pxd +187 -0
- Cython/Includes/cpython/exc.pxd +263 -0
- Cython/Includes/cpython/fileobject.pxd +57 -0
- Cython/Includes/cpython/float.pxd +47 -0
- Cython/Includes/cpython/function.pxd +65 -0
- Cython/Includes/cpython/genobject.pxd +25 -0
- Cython/Includes/cpython/getargs.pxd +12 -0
- Cython/Includes/cpython/instance.pxd +25 -0
- Cython/Includes/cpython/iterator.pxd +36 -0
- Cython/Includes/cpython/iterobject.pxd +24 -0
- Cython/Includes/cpython/list.pxd +92 -0
- Cython/Includes/cpython/long.pxd +149 -0
- Cython/Includes/cpython/longintrepr.pxd +14 -0
- Cython/Includes/cpython/mapping.pxd +63 -0
- Cython/Includes/cpython/marshal.pxd +66 -0
- Cython/Includes/cpython/mem.pxd +120 -0
- Cython/Includes/cpython/memoryview.pxd +50 -0
- Cython/Includes/cpython/method.pxd +49 -0
- Cython/Includes/cpython/module.pxd +208 -0
- Cython/Includes/cpython/number.pxd +258 -0
- Cython/Includes/cpython/object.pxd +433 -0
- Cython/Includes/cpython/pycapsule.pxd +143 -0
- Cython/Includes/cpython/pylifecycle.pxd +68 -0
- Cython/Includes/cpython/pyport.pxd +8 -0
- Cython/Includes/cpython/pystate.pxd +95 -0
- Cython/Includes/cpython/pythread.pxd +53 -0
- Cython/Includes/cpython/ref.pxd +67 -0
- Cython/Includes/cpython/sequence.pxd +134 -0
- Cython/Includes/cpython/set.pxd +119 -0
- Cython/Includes/cpython/slice.pxd +70 -0
- Cython/Includes/cpython/time.pxd +129 -0
- Cython/Includes/cpython/tuple.pxd +72 -0
- Cython/Includes/cpython/type.pxd +53 -0
- Cython/Includes/cpython/unicode.pxd +639 -0
- Cython/Includes/cpython/version.pxd +32 -0
- Cython/Includes/cpython/weakref.pxd +78 -0
- Cython/Includes/libc/__init__.pxd +1 -0
- Cython/Includes/libc/complex.pxd +35 -0
- Cython/Includes/libc/errno.pxd +127 -0
- Cython/Includes/libc/float.pxd +43 -0
- Cython/Includes/libc/limits.pxd +28 -0
- Cython/Includes/libc/locale.pxd +46 -0
- Cython/Includes/libc/math.pxd +209 -0
- Cython/Includes/libc/setjmp.pxd +10 -0
- Cython/Includes/libc/signal.pxd +64 -0
- Cython/Includes/libc/stddef.pxd +9 -0
- Cython/Includes/libc/stdint.pxd +105 -0
- Cython/Includes/libc/stdio.pxd +80 -0
- Cython/Includes/libc/stdlib.pxd +72 -0
- Cython/Includes/libc/string.pxd +50 -0
- Cython/Includes/libc/threads.pxd +84 -0
- Cython/Includes/libc/time.pxd +51 -0
- Cython/Includes/libcpp/__init__.pxd +4 -0
- Cython/Includes/libcpp/algorithm.pxd +320 -0
- Cython/Includes/libcpp/any.pxd +16 -0
- Cython/Includes/libcpp/atomic.pxd +59 -0
- Cython/Includes/libcpp/barrier.pxd +22 -0
- Cython/Includes/libcpp/bit.pxd +29 -0
- Cython/Includes/libcpp/cast.pxd +12 -0
- Cython/Includes/libcpp/cmath.pxd +518 -0
- Cython/Includes/libcpp/complex.pxd +106 -0
- Cython/Includes/libcpp/deque.pxd +165 -0
- Cython/Includes/libcpp/exception.pxd +86 -0
- Cython/Includes/libcpp/execution.pxd +15 -0
- Cython/Includes/libcpp/forward_list.pxd +63 -0
- Cython/Includes/libcpp/functional.pxd +26 -0
- Cython/Includes/libcpp/future.pxd +103 -0
- Cython/Includes/libcpp/iterator.pxd +34 -0
- Cython/Includes/libcpp/latch.pxd +17 -0
- Cython/Includes/libcpp/limits.pxd +61 -0
- Cython/Includes/libcpp/list.pxd +117 -0
- Cython/Includes/libcpp/map.pxd +252 -0
- Cython/Includes/libcpp/memory.pxd +115 -0
- Cython/Includes/libcpp/mutex.pxd +130 -0
- Cython/Includes/libcpp/numbers.pxd +15 -0
- Cython/Includes/libcpp/numeric.pxd +131 -0
- Cython/Includes/libcpp/optional.pxd +34 -0
- Cython/Includes/libcpp/pair.pxd +1 -0
- Cython/Includes/libcpp/queue.pxd +25 -0
- Cython/Includes/libcpp/random.pxd +166 -0
- Cython/Includes/libcpp/semaphore.pxd +44 -0
- Cython/Includes/libcpp/set.pxd +228 -0
- Cython/Includes/libcpp/shared_mutex.pxd +72 -0
- Cython/Includes/libcpp/span.pxd +87 -0
- Cython/Includes/libcpp/stack.pxd +11 -0
- Cython/Includes/libcpp/stop_token.pxd +105 -0
- Cython/Includes/libcpp/string.pxd +355 -0
- Cython/Includes/libcpp/string_view.pxd +181 -0
- Cython/Includes/libcpp/typeindex.pxd +15 -0
- Cython/Includes/libcpp/typeinfo.pxd +10 -0
- Cython/Includes/libcpp/unordered_map.pxd +193 -0
- Cython/Includes/libcpp/unordered_set.pxd +152 -0
- Cython/Includes/libcpp/utility.pxd +30 -0
- Cython/Includes/libcpp/vector.pxd +186 -0
- Cython/Includes/openmp.pxd +50 -0
- Cython/Includes/posix/__init__.pxd +1 -0
- Cython/Includes/posix/dlfcn.pxd +14 -0
- Cython/Includes/posix/fcntl.pxd +86 -0
- Cython/Includes/posix/ioctl.pxd +4 -0
- Cython/Includes/posix/mman.pxd +101 -0
- Cython/Includes/posix/resource.pxd +57 -0
- Cython/Includes/posix/select.pxd +21 -0
- Cython/Includes/posix/signal.pxd +73 -0
- Cython/Includes/posix/stat.pxd +98 -0
- Cython/Includes/posix/stdio.pxd +37 -0
- Cython/Includes/posix/stdlib.pxd +29 -0
- Cython/Includes/posix/strings.pxd +9 -0
- Cython/Includes/posix/time.pxd +71 -0
- Cython/Includes/posix/types.pxd +30 -0
- Cython/Includes/posix/uio.pxd +26 -0
- Cython/Includes/posix/unistd.pxd +271 -0
- Cython/Includes/posix/wait.pxd +38 -0
- Cython/Plex/Actions.pxd +24 -0
- Cython/Plex/Actions.py +119 -0
- Cython/Plex/DFA.pxd +14 -0
- Cython/Plex/DFA.py +164 -0
- Cython/Plex/Errors.py +48 -0
- Cython/Plex/Lexicons.py +178 -0
- Cython/Plex/Machines.pxd +36 -0
- Cython/Plex/Machines.py +238 -0
- Cython/Plex/Regexps.py +539 -0
- Cython/Plex/Scanners.pxd +47 -0
- Cython/Plex/Scanners.py +360 -0
- Cython/Plex/Transitions.pxd +14 -0
- Cython/Plex/Transitions.py +239 -0
- Cython/Plex/__init__.py +34 -0
- Cython/Runtime/__init__.py +1 -0
- Cython/Runtime/refnanny.pyx +237 -0
- Cython/Shadow.py +690 -0
- Cython/Shadow.pyi +521 -0
- Cython/StringIOTree.py +170 -0
- Cython/Tempita/__init__.py +4 -0
- Cython/Tempita/_looper.py +154 -0
- Cython/Tempita/_tempita.py +1091 -0
- Cython/TestUtils.py +410 -0
- Cython/Tests/TestCodeWriter.py +128 -0
- Cython/Tests/TestCythonUtils.py +202 -0
- Cython/Tests/TestJediTyper.py +223 -0
- Cython/Tests/TestShadow.py +114 -0
- Cython/Tests/TestStringIOTree.py +67 -0
- Cython/Tests/TestTestUtils.py +90 -0
- Cython/Tests/__init__.py +1 -0
- Cython/Tests/xmlrunner.py +390 -0
- Cython/Utility/AsyncGen.c +1002 -0
- Cython/Utility/Buffer.c +875 -0
- Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
- Cython/Utility/Builtins.c +776 -0
- Cython/Utility/CConvert.pyx +134 -0
- Cython/Utility/CMath.c +104 -0
- Cython/Utility/CommonStructures.c +118 -0
- Cython/Utility/Complex.c +378 -0
- Cython/Utility/Coroutine.c +2206 -0
- Cython/Utility/CpdefEnums.pyx +103 -0
- Cython/Utility/CppConvert.pyx +279 -0
- Cython/Utility/CppSupport.cpp +143 -0
- Cython/Utility/CythonFunction.c +1794 -0
- Cython/Utility/Dataclasses.c +185 -0
- Cython/Utility/Dataclasses.py +112 -0
- Cython/Utility/Embed.c +125 -0
- Cython/Utility/Exceptions.c +1012 -0
- Cython/Utility/ExtensionTypes.c +809 -0
- Cython/Utility/FunctionArguments.c +965 -0
- Cython/Utility/ImportExport.c +987 -0
- Cython/Utility/Lock.c +136 -0
- Cython/Utility/MemoryView.pxd +187 -0
- Cython/Utility/MemoryView.pyx +1481 -0
- Cython/Utility/MemoryView_C.c +1046 -0
- Cython/Utility/ModuleSetupCode.c +3059 -0
- Cython/Utility/NumpyImportArray.c +46 -0
- Cython/Utility/ObjectHandling.c +3342 -0
- Cython/Utility/Optimize.c +1589 -0
- Cython/Utility/Overflow.c +404 -0
- Cython/Utility/Printing.c +86 -0
- Cython/Utility/Profile.c +709 -0
- Cython/Utility/StringTools.c +1259 -0
- Cython/Utility/TestCyUtilityLoader.pyx +8 -0
- Cython/Utility/TestCythonScope.pyx +75 -0
- Cython/Utility/TestUtilityLoader.c +12 -0
- Cython/Utility/TypeConversion.c +1284 -0
- Cython/Utility/UFuncs.pyx +50 -0
- Cython/Utility/UFuncs_C.c +89 -0
- Cython/Utility/__init__.py +28 -0
- Cython/Utility/arrayarray.h +148 -0
- Cython/Utils.py +687 -0
- Cython/__init__.py +10 -0
- Cython/__init__.pyi +7 -0
- Cython/py.typed +0 -0
- cython-3.1.0.dist-info/COPYING.txt +19 -0
- cython-3.1.0.dist-info/LICENSE.txt +176 -0
- cython-3.1.0.dist-info/METADATA +636 -0
- cython-3.1.0.dist-info/RECORD +316 -0
- cython-3.1.0.dist-info/WHEEL +5 -0
- cython-3.1.0.dist-info/entry_points.txt +4 -0
- cython-3.1.0.dist-info/top_level.txt +3 -0
- cython.py +29 -0
- pyximport/__init__.py +4 -0
- pyximport/pyxbuild.py +160 -0
- pyximport/pyximport.py +482 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
from libcpp.string cimport string
|
|
2
|
+
|
|
3
|
+
cdef extern from "<string_view>" namespace "std::string_view" nogil:
|
|
4
|
+
const size_t npos
|
|
5
|
+
|
|
6
|
+
cdef extern from "<string_view>" namespace "std" nogil:
|
|
7
|
+
|
|
8
|
+
cdef cppclass string_view:
|
|
9
|
+
ctypedef char value_type
|
|
10
|
+
ctypedef size_t size_type
|
|
11
|
+
ctypedef ptrdiff_t difference_type
|
|
12
|
+
|
|
13
|
+
bint operator==(string_view)
|
|
14
|
+
bint operator!= (string_view)
|
|
15
|
+
bint operator< (string_view)
|
|
16
|
+
bint operator> (string_view)
|
|
17
|
+
bint operator<= (string_view)
|
|
18
|
+
bint operator>= (string_view)
|
|
19
|
+
|
|
20
|
+
cppclass const_iterator:
|
|
21
|
+
const_iterator()
|
|
22
|
+
const_iterator(const_iterator&)
|
|
23
|
+
operator=(const_iterator&)
|
|
24
|
+
const value_type& operator*()
|
|
25
|
+
const_iterator operator++()
|
|
26
|
+
const_iterator operator--()
|
|
27
|
+
const_iterator operator++(int)
|
|
28
|
+
const_iterator operator--(int)
|
|
29
|
+
const_iterator operator+(size_type)
|
|
30
|
+
const_iterator operator-(size_type)
|
|
31
|
+
difference_type operator-(const_iterator)
|
|
32
|
+
bint operator==(const_iterator)
|
|
33
|
+
bint operator!=(const_iterator)
|
|
34
|
+
bint operator<(const_iterator)
|
|
35
|
+
bint operator>(const_iterator)
|
|
36
|
+
bint operator<=(const_iterator)
|
|
37
|
+
bint operator>=(const_iterator)
|
|
38
|
+
|
|
39
|
+
ctypedef const_iterator iterator
|
|
40
|
+
|
|
41
|
+
cppclass const_reverse_iterator:
|
|
42
|
+
const_reverse_iterator()
|
|
43
|
+
const_reverse_iterator(const_reverse_iterator&)
|
|
44
|
+
operator=(const_reverse_iterator&)
|
|
45
|
+
const value_type& operator*()
|
|
46
|
+
const_reverse_iterator operator++()
|
|
47
|
+
const_reverse_iterator operator--()
|
|
48
|
+
const_reverse_iterator operator++(int)
|
|
49
|
+
const_reverse_iterator operator--(int)
|
|
50
|
+
const_reverse_iterator operator+(size_type)
|
|
51
|
+
const_reverse_iterator operator-(size_type)
|
|
52
|
+
difference_type operator-(const_reverse_iterator)
|
|
53
|
+
bint operator==(const_reverse_iterator)
|
|
54
|
+
bint operator!=(const_reverse_iterator)
|
|
55
|
+
bint operator<(const_reverse_iterator)
|
|
56
|
+
bint operator>(const_reverse_iterator)
|
|
57
|
+
bint operator<=(const_reverse_iterator)
|
|
58
|
+
bint operator>=(const_reverse_iterator)
|
|
59
|
+
|
|
60
|
+
ctypedef const_reverse_iterator reverse_iterator
|
|
61
|
+
|
|
62
|
+
# Constructors
|
|
63
|
+
string_view() # (1)
|
|
64
|
+
string_view(string_view s) # (2)
|
|
65
|
+
string_view(const char* s, size_t n) # (3)
|
|
66
|
+
string_view(const char* s) # (4)
|
|
67
|
+
string_view& string_view[InputIt](InputIt, InputIt) # (5)
|
|
68
|
+
|
|
69
|
+
# This should be `operator string_view()` on std::string, but
|
|
70
|
+
# Cython doesn't yet allow declaring it.
|
|
71
|
+
string_view(const string&)
|
|
72
|
+
|
|
73
|
+
# Assignment
|
|
74
|
+
string_view& operator=(string_view)
|
|
75
|
+
|
|
76
|
+
# Iterators
|
|
77
|
+
const_iterator begin()
|
|
78
|
+
const_iterator end()
|
|
79
|
+
const_iterator cbegin()
|
|
80
|
+
const_iterator cend()
|
|
81
|
+
|
|
82
|
+
const_reverse_iterator rbegin()
|
|
83
|
+
const_reverse_iterator rend()
|
|
84
|
+
const_reverse_iterator crbegin()
|
|
85
|
+
const_reverse_iterator crend()
|
|
86
|
+
|
|
87
|
+
# Capacity
|
|
88
|
+
size_t size()
|
|
89
|
+
size_t length()
|
|
90
|
+
size_t max_size()
|
|
91
|
+
bint empty()
|
|
92
|
+
|
|
93
|
+
# Element access
|
|
94
|
+
const char& operator[](size_t pos)
|
|
95
|
+
const char& at(size_t pos) except +
|
|
96
|
+
const char& front()
|
|
97
|
+
const char& back()
|
|
98
|
+
|
|
99
|
+
const char* data()
|
|
100
|
+
|
|
101
|
+
# Modifiers
|
|
102
|
+
void remove_prefix(size_t n)
|
|
103
|
+
void remove_suffix(size_t n)
|
|
104
|
+
void swap(string_view& other)
|
|
105
|
+
|
|
106
|
+
# Operations
|
|
107
|
+
size_t copy(char* dest, size_t count, size_t pos)
|
|
108
|
+
size_t copy(char* dest, size_t count)
|
|
109
|
+
|
|
110
|
+
size_t find(string_view s, size_t pos)
|
|
111
|
+
size_t find(string_view s)
|
|
112
|
+
size_t find(const char* s, size_t pos, size_t n)
|
|
113
|
+
size_t find(const char* s, size_t pos)
|
|
114
|
+
size_t find(const char* s)
|
|
115
|
+
size_t find(char c, size_t pos)
|
|
116
|
+
size_t find(char c)
|
|
117
|
+
|
|
118
|
+
size_t rfind(string_view, size_t pos)
|
|
119
|
+
size_t rfind(string_view)
|
|
120
|
+
size_t rfind(const char* s, size_t pos, size_t n)
|
|
121
|
+
size_t rfind(const char* s, size_t pos)
|
|
122
|
+
size_t rfind(const char* s)
|
|
123
|
+
size_t rfind(char c, size_t pos)
|
|
124
|
+
size_t rfind(char c)
|
|
125
|
+
|
|
126
|
+
size_t find_first_of(string_view, size_t pos)
|
|
127
|
+
size_t find_first_of(string_view)
|
|
128
|
+
size_t find_first_of(const char* s, size_t pos, size_t n)
|
|
129
|
+
size_t find_first_of(const char* s, size_t pos)
|
|
130
|
+
size_t find_first_of(const char* s)
|
|
131
|
+
size_t find_first_of(char c, size_t pos)
|
|
132
|
+
size_t find_first_of(char c)
|
|
133
|
+
|
|
134
|
+
size_t find_first_not_of(string_view s, size_t pos)
|
|
135
|
+
size_t find_first_not_of(string_view s)
|
|
136
|
+
size_t find_first_not_of(const char* s, size_t pos, size_t n)
|
|
137
|
+
size_t find_first_not_of(const char* s, size_t pos)
|
|
138
|
+
size_t find_first_not_of(const char*)
|
|
139
|
+
size_t find_first_not_of(char c, size_t pos)
|
|
140
|
+
size_t find_first_not_of(char c)
|
|
141
|
+
|
|
142
|
+
size_t find_last_of(string_view s, size_t pos)
|
|
143
|
+
size_t find_last_of(string_view s)
|
|
144
|
+
size_t find_last_of(const char* s, size_t pos, size_t n)
|
|
145
|
+
size_t find_last_of(const char* s, size_t pos)
|
|
146
|
+
size_t find_last_of(const char* s)
|
|
147
|
+
size_t find_last_of(char c, size_t pos)
|
|
148
|
+
size_t find_last_of(char c)
|
|
149
|
+
|
|
150
|
+
size_t find_last_not_of(string_view s, size_t pos)
|
|
151
|
+
size_t find_last_not_of(string_view s)
|
|
152
|
+
size_t find_last_not_of(const char* s, size_t pos, size_t n)
|
|
153
|
+
size_t find_last_not_of(const char* s, size_t pos)
|
|
154
|
+
size_t find_last_not_of(const char* s)
|
|
155
|
+
size_t find_last_not_of(char c, size_t pos)
|
|
156
|
+
size_t find_last_not_of(char c)
|
|
157
|
+
|
|
158
|
+
string_view substr(size_t pos, size_t len) except +
|
|
159
|
+
string_view substr(size_t pos) except +
|
|
160
|
+
string_view substr()
|
|
161
|
+
|
|
162
|
+
int compare(string_view s)
|
|
163
|
+
int compare(size_t pos, size_t len, string_view s)
|
|
164
|
+
int compare(size_t pos, size_t len, string_view s, size_t subpos, size_t sublen)
|
|
165
|
+
int compare(const char* s)
|
|
166
|
+
int compare(size_t pos, size_t len, const char* s)
|
|
167
|
+
int compare(size_t pos, size_t len, const char* s , size_t n)
|
|
168
|
+
|
|
169
|
+
# C++20
|
|
170
|
+
bint starts_with(string_view s)
|
|
171
|
+
bint starts_with(char c)
|
|
172
|
+
bint starts_with(const char* s)
|
|
173
|
+
|
|
174
|
+
bint ends_with(string_view s)
|
|
175
|
+
bint ends_with(char c)
|
|
176
|
+
bint ends_with(const char* s)
|
|
177
|
+
|
|
178
|
+
# C++23
|
|
179
|
+
bint contains(string_view s)
|
|
180
|
+
bint contains(char c)
|
|
181
|
+
bint contains(const char* s)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from libcpp cimport bool
|
|
2
|
+
from .typeinfo cimport type_info
|
|
3
|
+
|
|
4
|
+
# This class is C++11-only
|
|
5
|
+
cdef extern from "<typeindex>" namespace "std" nogil:
|
|
6
|
+
cdef cppclass type_index:
|
|
7
|
+
type_index(const type_info &)
|
|
8
|
+
const char* name()
|
|
9
|
+
size_t hash_code()
|
|
10
|
+
bool operator==(const type_index &)
|
|
11
|
+
bool operator!=(const type_index &)
|
|
12
|
+
bool operator<(const type_index &)
|
|
13
|
+
bool operator<=(const type_index &)
|
|
14
|
+
bool operator>(const type_index &)
|
|
15
|
+
bool operator>=(const type_index &)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from libcpp cimport bool
|
|
2
|
+
|
|
3
|
+
cdef extern from "<typeinfo>" namespace "std" nogil:
|
|
4
|
+
cdef cppclass type_info:
|
|
5
|
+
const char* name()
|
|
6
|
+
int before(const type_info&)
|
|
7
|
+
bool operator==(const type_info&)
|
|
8
|
+
bool operator!=(const type_info&)
|
|
9
|
+
# C++11-only
|
|
10
|
+
size_t hash_code()
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
from .utility cimport pair
|
|
2
|
+
|
|
3
|
+
cdef extern from "<unordered_map>" namespace "std" nogil:
|
|
4
|
+
cdef cppclass unordered_map[T, U, HASH=*, PRED=*, ALLOCATOR=*]:
|
|
5
|
+
ctypedef T key_type
|
|
6
|
+
ctypedef U mapped_type
|
|
7
|
+
ctypedef pair[const T, U] value_type
|
|
8
|
+
ctypedef ALLOCATOR allocator_type
|
|
9
|
+
|
|
10
|
+
# these should really be allocator_type.size_type and
|
|
11
|
+
# allocator_type.difference_type to be true to the C++ definition
|
|
12
|
+
# but cython doesn't support deferred access on template arguments
|
|
13
|
+
ctypedef size_t size_type
|
|
14
|
+
ctypedef ptrdiff_t difference_type
|
|
15
|
+
|
|
16
|
+
cppclass iterator
|
|
17
|
+
cppclass iterator:
|
|
18
|
+
iterator() except +
|
|
19
|
+
iterator(iterator&) except +
|
|
20
|
+
# correct would be value_type& but this does not work
|
|
21
|
+
# well with cython's code gen
|
|
22
|
+
pair[T, U]& operator*()
|
|
23
|
+
iterator operator++()
|
|
24
|
+
iterator operator--()
|
|
25
|
+
iterator operator++(int)
|
|
26
|
+
iterator operator--(int)
|
|
27
|
+
bint operator==(iterator)
|
|
28
|
+
bint operator==(const_iterator)
|
|
29
|
+
bint operator!=(iterator)
|
|
30
|
+
bint operator!=(const_iterator)
|
|
31
|
+
cppclass const_iterator:
|
|
32
|
+
const_iterator() except +
|
|
33
|
+
const_iterator(iterator&) except +
|
|
34
|
+
operator=(iterator&) except +
|
|
35
|
+
# correct would be const value_type& but this does not work
|
|
36
|
+
# well with cython's code gen
|
|
37
|
+
const pair[T, U]& operator*()
|
|
38
|
+
const_iterator operator++()
|
|
39
|
+
const_iterator operator--()
|
|
40
|
+
const_iterator operator++(int)
|
|
41
|
+
const_iterator operator--(int)
|
|
42
|
+
bint operator==(iterator)
|
|
43
|
+
bint operator==(const_iterator)
|
|
44
|
+
bint operator!=(iterator)
|
|
45
|
+
bint operator!=(const_iterator)
|
|
46
|
+
|
|
47
|
+
unordered_map() except +
|
|
48
|
+
unordered_map(unordered_map&) except +
|
|
49
|
+
#unordered_map(key_compare&)
|
|
50
|
+
U& operator[](const T&)
|
|
51
|
+
#unordered_map& operator=(unordered_map&)
|
|
52
|
+
bint operator==(unordered_map&, unordered_map&)
|
|
53
|
+
bint operator!=(unordered_map&, unordered_map&)
|
|
54
|
+
bint operator<(unordered_map&, unordered_map&)
|
|
55
|
+
bint operator>(unordered_map&, unordered_map&)
|
|
56
|
+
bint operator<=(unordered_map&, unordered_map&)
|
|
57
|
+
bint operator>=(unordered_map&, unordered_map&)
|
|
58
|
+
U& at(const T&) except +
|
|
59
|
+
const U& const_at "at"(const T&) except +
|
|
60
|
+
iterator begin()
|
|
61
|
+
const_iterator const_begin "begin"()
|
|
62
|
+
const_iterator cbegin()
|
|
63
|
+
void clear()
|
|
64
|
+
size_t count(const T&)
|
|
65
|
+
bint empty()
|
|
66
|
+
iterator end()
|
|
67
|
+
const_iterator const_end "end"()
|
|
68
|
+
const_iterator cend()
|
|
69
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
70
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
71
|
+
iterator erase(iterator)
|
|
72
|
+
iterator const_erase "erase"(const_iterator)
|
|
73
|
+
iterator erase(const_iterator, const_iterator)
|
|
74
|
+
size_t erase(const T&)
|
|
75
|
+
iterator find(const T&)
|
|
76
|
+
const_iterator const_find "find"(const T&)
|
|
77
|
+
pair[iterator, bint] insert(const pair[T, U]&) except +
|
|
78
|
+
iterator insert(const_iterator, const pair[T, U]&) except +
|
|
79
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
80
|
+
#key_compare key_comp()
|
|
81
|
+
iterator lower_bound(const T&)
|
|
82
|
+
const_iterator const_lower_bound "lower_bound"(const T&)
|
|
83
|
+
size_t max_size()
|
|
84
|
+
size_t size()
|
|
85
|
+
void swap(unordered_map&)
|
|
86
|
+
iterator upper_bound(const T&)
|
|
87
|
+
const_iterator const_upper_bound "upper_bound"(const T&)
|
|
88
|
+
#value_compare value_comp()
|
|
89
|
+
void max_load_factor(float)
|
|
90
|
+
float max_load_factor()
|
|
91
|
+
float load_factor()
|
|
92
|
+
void rehash(size_t)
|
|
93
|
+
void reserve(size_t)
|
|
94
|
+
size_t bucket_count()
|
|
95
|
+
size_t max_bucket_count()
|
|
96
|
+
size_t bucket_size(size_t)
|
|
97
|
+
size_t bucket(const T&)
|
|
98
|
+
# C++20
|
|
99
|
+
bint contains(const T&)
|
|
100
|
+
|
|
101
|
+
cdef cppclass unordered_multimap[T, U, HASH=*, PRED=*, ALLOCATOR=*]:
|
|
102
|
+
ctypedef T key_type
|
|
103
|
+
ctypedef U mapped_type
|
|
104
|
+
ctypedef pair[const T, U] value_type
|
|
105
|
+
ctypedef ALLOCATOR allocator_type
|
|
106
|
+
|
|
107
|
+
# these should really be allocator_type.size_type and
|
|
108
|
+
# allocator_type.difference_type to be true to the C++ definition
|
|
109
|
+
# but cython doesn't support deferred access on template arguments
|
|
110
|
+
ctypedef size_t size_type
|
|
111
|
+
ctypedef ptrdiff_t difference_type
|
|
112
|
+
|
|
113
|
+
cppclass const_iterator
|
|
114
|
+
cppclass iterator:
|
|
115
|
+
iterator() except +
|
|
116
|
+
iterator(iterator&) except +
|
|
117
|
+
# correct would be value_type& but this does not work
|
|
118
|
+
# well with cython's code gen
|
|
119
|
+
pair[T, U]& operator*()
|
|
120
|
+
iterator operator++()
|
|
121
|
+
iterator operator++(int)
|
|
122
|
+
bint operator==(iterator)
|
|
123
|
+
bint operator==(const_iterator)
|
|
124
|
+
bint operator!=(iterator)
|
|
125
|
+
bint operator!=(const_iterator)
|
|
126
|
+
cppclass const_iterator:
|
|
127
|
+
const_iterator() except +
|
|
128
|
+
const_iterator(iterator&) except +
|
|
129
|
+
operator=(iterator&) except +
|
|
130
|
+
# correct would be const value_type& but this does not work
|
|
131
|
+
# well with cython's code gen
|
|
132
|
+
const pair[T, U]& operator*()
|
|
133
|
+
const_iterator operator++()
|
|
134
|
+
const_iterator operator++(int)
|
|
135
|
+
bint operator==(iterator)
|
|
136
|
+
bint operator==(const_iterator)
|
|
137
|
+
bint operator!=(iterator)
|
|
138
|
+
bint operator!=(const_iterator)
|
|
139
|
+
|
|
140
|
+
unordered_multimap() except +
|
|
141
|
+
unordered_multimap(const unordered_multimap&) except +
|
|
142
|
+
#unordered_multimap(key_compare&)
|
|
143
|
+
#unordered_map& operator=(unordered_multimap&)
|
|
144
|
+
bint operator==(const unordered_multimap&, const unordered_multimap&)
|
|
145
|
+
bint operator!=(const unordered_multimap&, const unordered_multimap&)
|
|
146
|
+
bint operator<(const unordered_multimap&, const unordered_multimap&)
|
|
147
|
+
bint operator>(const unordered_multimap&, const unordered_multimap&)
|
|
148
|
+
bint operator<=(const unordered_multimap&, const unordered_multimap&)
|
|
149
|
+
bint operator>=(const unordered_multimap&, const unordered_multimap&)
|
|
150
|
+
iterator begin()
|
|
151
|
+
const_iterator const_begin "begin"()
|
|
152
|
+
const_iterator cbegin()
|
|
153
|
+
#local_iterator begin(size_t)
|
|
154
|
+
#const_local_iterator const_begin "begin"(size_t)
|
|
155
|
+
void clear()
|
|
156
|
+
size_t count(const T&)
|
|
157
|
+
bint empty()
|
|
158
|
+
iterator end()
|
|
159
|
+
const_iterator const_end "end"()
|
|
160
|
+
const_iterator cend()
|
|
161
|
+
#local_iterator end(size_t)
|
|
162
|
+
#const_local_iterator const_end "end"(size_t)
|
|
163
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
164
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
165
|
+
iterator erase(iterator)
|
|
166
|
+
iterator const_erase "erase"(const_iterator)
|
|
167
|
+
iterator erase(const_iterator, const_iterator)
|
|
168
|
+
size_t erase(const T&)
|
|
169
|
+
iterator find(const T&)
|
|
170
|
+
const_iterator const_find "find"(const T&)
|
|
171
|
+
iterator insert(const pair[T, U]&) except +
|
|
172
|
+
iterator insert(const_iterator, const pair[T, U]&) except +
|
|
173
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
174
|
+
#key_compare key_comp()
|
|
175
|
+
iterator lower_bound(const T&)
|
|
176
|
+
const_iterator const_lower_bound "lower_bound"(const T&)
|
|
177
|
+
size_t max_size()
|
|
178
|
+
size_t size()
|
|
179
|
+
void swap(unordered_multimap&)
|
|
180
|
+
iterator upper_bound(const T&)
|
|
181
|
+
const_iterator const_upper_bound "upper_bound"(const T&)
|
|
182
|
+
#value_compare value_comp()
|
|
183
|
+
void max_load_factor(float)
|
|
184
|
+
float max_load_factor()
|
|
185
|
+
float load_factor()
|
|
186
|
+
void rehash(size_t)
|
|
187
|
+
void reserve(size_t)
|
|
188
|
+
size_t bucket_count()
|
|
189
|
+
size_t max_bucket_count()
|
|
190
|
+
size_t bucket_size(size_t)
|
|
191
|
+
size_t bucket(const T&)
|
|
192
|
+
# C++20
|
|
193
|
+
bint contains(const T&)
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
from .utility cimport pair
|
|
2
|
+
|
|
3
|
+
cdef extern from "<unordered_set>" namespace "std" nogil:
|
|
4
|
+
cdef cppclass unordered_set[T,HASH=*,PRED=*,ALLOCATOR=*]:
|
|
5
|
+
ctypedef T value_type
|
|
6
|
+
|
|
7
|
+
# these should really be allocator_type.size_type and
|
|
8
|
+
# allocator_type.difference_type to be true to the C++ definition
|
|
9
|
+
# but cython doesn't support deferred access on template arguments
|
|
10
|
+
ctypedef size_t size_type
|
|
11
|
+
ctypedef ptrdiff_t difference_type
|
|
12
|
+
|
|
13
|
+
cppclass const_iterator
|
|
14
|
+
cppclass iterator:
|
|
15
|
+
iterator() except +
|
|
16
|
+
iterator(iterator&) except +
|
|
17
|
+
value_type& operator*()
|
|
18
|
+
iterator operator++()
|
|
19
|
+
iterator operator--()
|
|
20
|
+
iterator operator++(int)
|
|
21
|
+
iterator operator--(int)
|
|
22
|
+
bint operator==(iterator)
|
|
23
|
+
bint operator==(const_iterator)
|
|
24
|
+
bint operator!=(iterator)
|
|
25
|
+
bint operator!=(const_iterator)
|
|
26
|
+
cppclass const_iterator:
|
|
27
|
+
const_iterator() except +
|
|
28
|
+
const_iterator(iterator&) except +
|
|
29
|
+
operator=(iterator&) except +
|
|
30
|
+
const value_type& operator*()
|
|
31
|
+
const_iterator operator++()
|
|
32
|
+
const_iterator operator--()
|
|
33
|
+
const_iterator operator++(int)
|
|
34
|
+
const_iterator operator--(int)
|
|
35
|
+
bint operator==(iterator)
|
|
36
|
+
bint operator==(const_iterator)
|
|
37
|
+
bint operator!=(iterator)
|
|
38
|
+
bint operator!=(const_iterator)
|
|
39
|
+
|
|
40
|
+
unordered_set() except +
|
|
41
|
+
unordered_set(unordered_set&) except +
|
|
42
|
+
#unordered_set& operator=(unordered_set&)
|
|
43
|
+
bint operator==(unordered_set&, unordered_set&)
|
|
44
|
+
bint operator!=(unordered_set&, unordered_set&)
|
|
45
|
+
iterator begin()
|
|
46
|
+
const_iterator const_begin "begin"()
|
|
47
|
+
const_iterator cbegin()
|
|
48
|
+
void clear()
|
|
49
|
+
size_t count(const T&)
|
|
50
|
+
bint empty()
|
|
51
|
+
iterator end()
|
|
52
|
+
const_iterator const_end "end"()
|
|
53
|
+
const_iterator cend()
|
|
54
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
55
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
56
|
+
iterator erase(iterator)
|
|
57
|
+
iterator const_erase "erase"(const_iterator)
|
|
58
|
+
iterator erase(const_iterator, const_iterator)
|
|
59
|
+
size_t erase(const T&)
|
|
60
|
+
iterator find(const T&)
|
|
61
|
+
const_iterator const_find "find"(const T&)
|
|
62
|
+
pair[iterator, bint] insert(const T&) except +
|
|
63
|
+
iterator insert(const_iterator, const T&) except +
|
|
64
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
65
|
+
size_t max_size()
|
|
66
|
+
size_t size()
|
|
67
|
+
void swap(unordered_set&)
|
|
68
|
+
#value_compare value_comp()
|
|
69
|
+
void max_load_factor(float)
|
|
70
|
+
float max_load_factor()
|
|
71
|
+
float load_factor()
|
|
72
|
+
void rehash(size_t)
|
|
73
|
+
void reserve(size_t)
|
|
74
|
+
size_t bucket_count()
|
|
75
|
+
size_t max_bucket_count()
|
|
76
|
+
size_t bucket_size(size_t)
|
|
77
|
+
size_t bucket(const T&)
|
|
78
|
+
# C++20
|
|
79
|
+
bint contains(const T&)
|
|
80
|
+
|
|
81
|
+
cdef cppclass unordered_multiset[T,HASH=*,PRED=*,ALLOCATOR=*]:
|
|
82
|
+
ctypedef T value_type
|
|
83
|
+
|
|
84
|
+
# these should really be allocator_type.size_type and
|
|
85
|
+
# allocator_type.difference_type to be true to the C++ definition
|
|
86
|
+
# but cython doesn't support deferred access on template arguments
|
|
87
|
+
ctypedef size_t size_type
|
|
88
|
+
ctypedef ptrdiff_t difference_type
|
|
89
|
+
|
|
90
|
+
cppclass const_iterator
|
|
91
|
+
cppclass iterator:
|
|
92
|
+
iterator() except +
|
|
93
|
+
iterator(iterator&) except +
|
|
94
|
+
value_type& operator*()
|
|
95
|
+
iterator operator++()
|
|
96
|
+
iterator operator++(int)
|
|
97
|
+
bint operator==(iterator)
|
|
98
|
+
bint operator==(const_iterator)
|
|
99
|
+
bint operator!=(iterator)
|
|
100
|
+
bint operator!=(const_iterator)
|
|
101
|
+
cppclass const_iterator:
|
|
102
|
+
const_iterator() except +
|
|
103
|
+
const_iterator(iterator&) except +
|
|
104
|
+
operator=(iterator&) except +
|
|
105
|
+
const value_type& operator*()
|
|
106
|
+
const_iterator operator++()
|
|
107
|
+
const_iterator operator++(int)
|
|
108
|
+
bint operator==(iterator)
|
|
109
|
+
bint operator==(const_iterator)
|
|
110
|
+
bint operator!=(iterator)
|
|
111
|
+
bint operator!=(const_iterator)
|
|
112
|
+
|
|
113
|
+
unordered_multiset() except +
|
|
114
|
+
unordered_multiset(unordered_multiset&) except +
|
|
115
|
+
#unordered_multiset& operator=(unordered_multiset&)
|
|
116
|
+
bint operator==(unordered_multiset&, unordered_multiset&)
|
|
117
|
+
bint operator!=(unordered_multiset&, unordered_multiset&)
|
|
118
|
+
iterator begin()
|
|
119
|
+
const_iterator const_begin "begin"()
|
|
120
|
+
const_iterator cbegin()
|
|
121
|
+
void clear()
|
|
122
|
+
size_t count(const T&)
|
|
123
|
+
bint empty()
|
|
124
|
+
iterator end()
|
|
125
|
+
const_iterator const_end "end"()
|
|
126
|
+
const_iterator cend()
|
|
127
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
128
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
129
|
+
iterator erase(iterator)
|
|
130
|
+
iterator const_erase "erase"(const_iterator)
|
|
131
|
+
iterator erase(const_iterator, const_iterator)
|
|
132
|
+
size_t erase(const T&)
|
|
133
|
+
iterator find(const T&)
|
|
134
|
+
const_iterator const_find "find"(const T&)
|
|
135
|
+
iterator insert(const T&) except +
|
|
136
|
+
iterator insert(const_iterator, const T&) except +
|
|
137
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
138
|
+
size_t max_size()
|
|
139
|
+
size_t size()
|
|
140
|
+
void swap(unordered_multiset&)
|
|
141
|
+
#value_compare value_comp()
|
|
142
|
+
void max_load_factor(float)
|
|
143
|
+
float max_load_factor()
|
|
144
|
+
float load_factor()
|
|
145
|
+
void rehash(size_t)
|
|
146
|
+
void reserve(size_t)
|
|
147
|
+
size_t bucket_count()
|
|
148
|
+
size_t max_bucket_count()
|
|
149
|
+
size_t bucket_size(size_t)
|
|
150
|
+
size_t bucket(const T&)
|
|
151
|
+
# C++20
|
|
152
|
+
bint contains(const T&)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
cdef extern from "<utility>" namespace "std" nogil:
|
|
2
|
+
cdef cppclass pair[T, U]:
|
|
3
|
+
ctypedef T first_type
|
|
4
|
+
ctypedef U second_type
|
|
5
|
+
T first
|
|
6
|
+
U second
|
|
7
|
+
pair() except +
|
|
8
|
+
pair(pair&) except +
|
|
9
|
+
pair(T&, U&) except +
|
|
10
|
+
bint operator==(pair&, pair&)
|
|
11
|
+
bint operator!=(pair&, pair&)
|
|
12
|
+
bint operator<(pair&, pair&)
|
|
13
|
+
bint operator>(pair&, pair&)
|
|
14
|
+
bint operator<=(pair&, pair&)
|
|
15
|
+
bint operator>=(pair&, pair&)
|
|
16
|
+
|
|
17
|
+
cdef extern from * namespace "cython_std" nogil:
|
|
18
|
+
"""
|
|
19
|
+
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
|
|
20
|
+
// move should be defined for these versions of MSVC, but __cplusplus isn't set usefully
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
|
|
23
|
+
namespace cython_std {
|
|
24
|
+
template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
|
|
25
|
+
template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#endif
|
|
29
|
+
"""
|
|
30
|
+
cdef T move[T](T)
|