Cython 3.2.0__cp39-abi3-win32.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 +350 -0
- Cython/Build/Dependencies.py +1314 -0
- Cython/Build/Distutils.py +1 -0
- Cython/Build/Inline.py +463 -0
- Cython/Build/IpythonMagic.py +560 -0
- Cython/Build/SharedModule.py +94 -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 +11 -0
- Cython/CodeWriter.py +815 -0
- Cython/Compiler/AnalysedTreeTransforms.py +97 -0
- Cython/Compiler/Annotate.py +328 -0
- Cython/Compiler/AutoDocTransforms.py +320 -0
- Cython/Compiler/Buffer.py +680 -0
- Cython/Compiler/Builtin.py +984 -0
- Cython/Compiler/CmdLine.py +263 -0
- Cython/Compiler/Code.pxd +149 -0
- Cython/Compiler/Code.py +3746 -0
- Cython/Compiler/Code.pyd +0 -0
- Cython/Compiler/CodeGeneration.py +33 -0
- Cython/Compiler/CythonScope.py +191 -0
- Cython/Compiler/Dataclass.py +864 -0
- Cython/Compiler/DebugFlags.py +24 -0
- Cython/Compiler/Errors.py +297 -0
- Cython/Compiler/ExprNodes.py +15562 -0
- Cython/Compiler/FlowControl.pxd +97 -0
- Cython/Compiler/FlowControl.py +1451 -0
- Cython/Compiler/FlowControl.pyd +0 -0
- Cython/Compiler/FusedNode.py +971 -0
- Cython/Compiler/FusedNode.pyd +0 -0
- Cython/Compiler/Future.py +16 -0
- Cython/Compiler/Interpreter.py +57 -0
- Cython/Compiler/Lexicon.py +421 -0
- Cython/Compiler/LineTable.py +114 -0
- Cython/Compiler/LineTable.pyd +0 -0
- Cython/Compiler/Main.py +857 -0
- Cython/Compiler/MatchCaseNodes.py +259 -0
- Cython/Compiler/MemoryView.py +905 -0
- Cython/Compiler/ModuleNode.py +4235 -0
- Cython/Compiler/Naming.py +363 -0
- Cython/Compiler/Nodes.py +10831 -0
- Cython/Compiler/Optimize.py +5288 -0
- Cython/Compiler/Options.py +843 -0
- Cython/Compiler/ParseTreeTransforms.pxd +78 -0
- Cython/Compiler/ParseTreeTransforms.py +4638 -0
- Cython/Compiler/Parsing.pxd +9 -0
- Cython/Compiler/Parsing.py +4775 -0
- Cython/Compiler/Parsing.pyd +0 -0
- Cython/Compiler/Pipeline.py +439 -0
- Cython/Compiler/PyrexTypes.py +5870 -0
- Cython/Compiler/Pythran.py +232 -0
- Cython/Compiler/Scanning.pxd +48 -0
- Cython/Compiler/Scanning.py +701 -0
- Cython/Compiler/Scanning.pyd +0 -0
- Cython/Compiler/StringEncoding.py +298 -0
- Cython/Compiler/Symtab.py +3073 -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 +144 -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 +21 -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 +591 -0
- Cython/Compiler/TypeSlots.py +1174 -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/Visitor.pyd +0 -0
- Cython/Compiler/__init__.py +1 -0
- Cython/Coverage.py +448 -0
- Cython/Debugger/Cygdb.py +177 -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 +178 -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 +141 -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 +234 -0
- Cython/Includes/libc/time.pxd +52 -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/condition_variable.pxd +322 -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 +387 -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 +43 -0
- Cython/Includes/libcpp/set.pxd +228 -0
- Cython/Includes/libcpp/shared_mutex.pxd +96 -0
- Cython/Includes/libcpp/span.pxd +87 -0
- Cython/Includes/libcpp/stack.pxd +11 -0
- Cython/Includes/libcpp/stop_token.pxd +117 -0
- Cython/Includes/libcpp/string.pxd +355 -0
- Cython/Includes/libcpp/string_view.pxd +183 -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/numpy/math.pxd +150 -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/Actions.pyd +0 -0
- Cython/Plex/DFA.pxd +14 -0
- Cython/Plex/DFA.py +164 -0
- Cython/Plex/DFA.pyd +0 -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/Machines.pyd +0 -0
- Cython/Plex/Regexps.py +535 -0
- Cython/Plex/Scanners.pxd +45 -0
- Cython/Plex/Scanners.py +328 -0
- Cython/Plex/Scanners.pyd +0 -0
- Cython/Plex/Transitions.pxd +14 -0
- Cython/Plex/Transitions.py +239 -0
- Cython/Plex/Transitions.pyd +0 -0
- Cython/Plex/__init__.py +34 -0
- Cython/Runtime/__init__.py +1 -0
- Cython/Runtime/refnanny.pyd +0 -0
- Cython/Runtime/refnanny.pyx +237 -0
- Cython/Shadow.py +690 -0
- Cython/Shadow.pyi +521 -0
- Cython/StringIOTree.py +170 -0
- Cython/StringIOTree.pyd +0 -0
- Cython/Tempita/__init__.py +4 -0
- Cython/Tempita/_looper.py +154 -0
- Cython/Tempita/_tempita.py +1091 -0
- Cython/Tempita/_tempita.pyd +0 -0
- Cython/TestUtils.py +422 -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 +1031 -0
- Cython/Utility/Buffer.c +865 -0
- Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
- Cython/Utility/Builtins.c +810 -0
- Cython/Utility/CConvert.pyx +134 -0
- Cython/Utility/CMath.c +104 -0
- Cython/Utility/CommonStructures.c +226 -0
- Cython/Utility/Complex.c +378 -0
- Cython/Utility/Coroutine.c +2300 -0
- Cython/Utility/CpdefEnums.pyx +103 -0
- Cython/Utility/CppConvert.pyx +282 -0
- Cython/Utility/CppSupport.cpp +151 -0
- Cython/Utility/CythonFunction.c +1832 -0
- Cython/Utility/Dataclasses.c +101 -0
- Cython/Utility/Embed.c +121 -0
- Cython/Utility/Exceptions.c +1016 -0
- Cython/Utility/ExtensionTypes.c +996 -0
- Cython/Utility/FunctionArguments.c +1043 -0
- Cython/Utility/FusedFunction.pyx +44 -0
- Cython/Utility/ImportExport.c +907 -0
- Cython/Utility/MemoryView.pxd +188 -0
- Cython/Utility/MemoryView.pyx +1482 -0
- Cython/Utility/MemoryView_C.c +927 -0
- Cython/Utility/ModuleSetupCode.c +3203 -0
- Cython/Utility/NumpyImportArray.c +46 -0
- Cython/Utility/ObjectHandling.c +3273 -0
- Cython/Utility/Optimize.c +1603 -0
- Cython/Utility/Overflow.c +384 -0
- Cython/Utility/Printing.c +86 -0
- Cython/Utility/Profile.c +732 -0
- Cython/Utility/StringTools.c +1379 -0
- Cython/Utility/Synchronization.c +399 -0
- Cython/Utility/TString.c +356 -0
- Cython/Utility/TestCyUtilityLoader.pyx +8 -0
- Cython/Utility/TestCythonScope.pyx +75 -0
- Cython/Utility/TestUtilityLoader.c +12 -0
- Cython/Utility/TypeConversion.c +1385 -0
- Cython/Utility/UFuncs.pyx +50 -0
- Cython/Utility/UFuncs_C.c +89 -0
- Cython/Utility/__init__.py +28 -0
- Cython/Utility/arrayarray.h +167 -0
- Cython/Utils.py +687 -0
- Cython/Utils.pyd +0 -0
- Cython/__init__.py +10 -0
- Cython/__init__.pyi +7 -0
- Cython/py.typed +0 -0
- cython-3.2.0.dist-info/METADATA +85 -0
- cython-3.2.0.dist-info/RECORD +333 -0
- cython-3.2.0.dist-info/WHEEL +5 -0
- cython-3.2.0.dist-info/entry_points.txt +4 -0
- cython-3.2.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,25 @@
|
|
|
1
|
+
cdef extern from "<queue>" namespace "std" nogil:
|
|
2
|
+
cdef cppclass queue[T]:
|
|
3
|
+
queue() except +
|
|
4
|
+
queue(queue&) except +
|
|
5
|
+
#queue(Container&)
|
|
6
|
+
T& back()
|
|
7
|
+
bint empty()
|
|
8
|
+
T& front()
|
|
9
|
+
void pop()
|
|
10
|
+
void push(T&)
|
|
11
|
+
size_t size()
|
|
12
|
+
# C++11 methods
|
|
13
|
+
void swap(queue&)
|
|
14
|
+
|
|
15
|
+
cdef cppclass priority_queue[T]:
|
|
16
|
+
priority_queue() except +
|
|
17
|
+
priority_queue(priority_queue&) except +
|
|
18
|
+
#priority_queue(Container&)
|
|
19
|
+
bint empty()
|
|
20
|
+
void pop()
|
|
21
|
+
void push(T&)
|
|
22
|
+
size_t size()
|
|
23
|
+
T& top()
|
|
24
|
+
# C++11 methods
|
|
25
|
+
void swap(priority_queue&)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
from libc.stdint cimport uint_fast32_t, uint_fast64_t
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
cdef extern from "<random>" namespace "std" nogil:
|
|
5
|
+
cdef cppclass random_device:
|
|
6
|
+
ctypedef uint_fast32_t result_type
|
|
7
|
+
random_device() except +
|
|
8
|
+
result_type operator()() except +
|
|
9
|
+
|
|
10
|
+
cdef cppclass mt19937:
|
|
11
|
+
ctypedef uint_fast32_t result_type
|
|
12
|
+
mt19937() except +
|
|
13
|
+
mt19937(result_type seed) except +
|
|
14
|
+
result_type operator()() except +
|
|
15
|
+
result_type min() except +
|
|
16
|
+
result_type max() except +
|
|
17
|
+
void discard(size_t z) except +
|
|
18
|
+
void seed(result_type seed) except +
|
|
19
|
+
|
|
20
|
+
cdef cppclass mt19937_64:
|
|
21
|
+
ctypedef uint_fast64_t result_type
|
|
22
|
+
|
|
23
|
+
mt19937_64() except +
|
|
24
|
+
mt19937_64(result_type seed) except +
|
|
25
|
+
result_type operator()() except +
|
|
26
|
+
result_type min() except +
|
|
27
|
+
result_type max() except +
|
|
28
|
+
void discard(size_t z) except +
|
|
29
|
+
void seed(result_type seed) except +
|
|
30
|
+
|
|
31
|
+
cdef cppclass uniform_int_distribution[T]:
|
|
32
|
+
ctypedef T result_type
|
|
33
|
+
uniform_int_distribution() except +
|
|
34
|
+
uniform_int_distribution(T, T) except +
|
|
35
|
+
result_type operator()[Generator](Generator&) except +
|
|
36
|
+
result_type min() except +
|
|
37
|
+
result_type max() except +
|
|
38
|
+
|
|
39
|
+
cdef cppclass uniform_real_distribution[T]:
|
|
40
|
+
ctypedef T result_type
|
|
41
|
+
uniform_real_distribution() except +
|
|
42
|
+
uniform_real_distribution(T, T) except +
|
|
43
|
+
result_type operator()[Generator](Generator&) except +
|
|
44
|
+
result_type min() except +
|
|
45
|
+
result_type max() except +
|
|
46
|
+
|
|
47
|
+
cdef cppclass bernoulli_distribution:
|
|
48
|
+
ctypedef bint result_type
|
|
49
|
+
bernoulli_distribution() except +
|
|
50
|
+
bernoulli_distribution(double) except +
|
|
51
|
+
result_type operator()[Generator](Generator&) except +
|
|
52
|
+
result_type min() except +
|
|
53
|
+
result_type max() except +
|
|
54
|
+
|
|
55
|
+
cdef cppclass binomial_distribution[T]:
|
|
56
|
+
ctypedef T result_type
|
|
57
|
+
binomial_distribution() except +
|
|
58
|
+
binomial_distribution(T, double) except +
|
|
59
|
+
result_type operator()[Generator](Generator&) except +
|
|
60
|
+
result_type min() except +
|
|
61
|
+
result_type max() except +
|
|
62
|
+
|
|
63
|
+
cdef cppclass geometric_distribution[T]:
|
|
64
|
+
ctypedef T result_type
|
|
65
|
+
geometric_distribution() except +
|
|
66
|
+
geometric_distribution(double) except +
|
|
67
|
+
result_type operator()[Generator](Generator&) except +
|
|
68
|
+
result_type min() except +
|
|
69
|
+
result_type max() except +
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
cdef cppclass negative_binomial_distribution[T]:
|
|
73
|
+
ctypedef T result_type
|
|
74
|
+
negative_binomial_distribution() except +
|
|
75
|
+
negative_binomial_distribution(T, double) except +
|
|
76
|
+
result_type operator()[Generator](Generator&) except +
|
|
77
|
+
result_type min() except +
|
|
78
|
+
result_type max() except +
|
|
79
|
+
|
|
80
|
+
cdef cppclass poisson_distribution[T]:
|
|
81
|
+
ctypedef T result_type
|
|
82
|
+
poisson_distribution() except +
|
|
83
|
+
poisson_distribution(double) except +
|
|
84
|
+
result_type operator()[Generator](Generator&) except +
|
|
85
|
+
result_type min() except +
|
|
86
|
+
result_type max() except +
|
|
87
|
+
|
|
88
|
+
cdef cppclass exponential_distribution[T]:
|
|
89
|
+
ctypedef T result_type
|
|
90
|
+
exponential_distribution() except +
|
|
91
|
+
exponential_distribution(result_type) except +
|
|
92
|
+
result_type operator()[Generator](Generator&) except +
|
|
93
|
+
result_type min() except +
|
|
94
|
+
result_type max() except +
|
|
95
|
+
|
|
96
|
+
cdef cppclass gamma_distribution[T]:
|
|
97
|
+
ctypedef T result_type
|
|
98
|
+
gamma_distribution() except +
|
|
99
|
+
gamma_distribution(result_type, result_type) except +
|
|
100
|
+
result_type operator()[Generator](Generator&) except +
|
|
101
|
+
result_type min() except +
|
|
102
|
+
result_type max() except +
|
|
103
|
+
|
|
104
|
+
cdef cppclass weibull_distribution[T]:
|
|
105
|
+
ctypedef T result_type
|
|
106
|
+
weibull_distribution() except +
|
|
107
|
+
weibull_distribution(result_type, result_type) except +
|
|
108
|
+
result_type operator()[Generator](Generator&) except +
|
|
109
|
+
result_type min() except +
|
|
110
|
+
result_type max() except +
|
|
111
|
+
|
|
112
|
+
cdef cppclass extreme_value_distribution[T]:
|
|
113
|
+
ctypedef T result_type
|
|
114
|
+
extreme_value_distribution() except +
|
|
115
|
+
extreme_value_distribution(result_type, result_type) except +
|
|
116
|
+
result_type operator()[Generator](Generator&) except +
|
|
117
|
+
result_type min() except +
|
|
118
|
+
result_type max() except +
|
|
119
|
+
|
|
120
|
+
cdef cppclass normal_distribution[T]:
|
|
121
|
+
ctypedef T result_type
|
|
122
|
+
normal_distribution() except +
|
|
123
|
+
normal_distribution(result_type, result_type) except +
|
|
124
|
+
result_type operator()[Generator](Generator&) except +
|
|
125
|
+
result_type min() except +
|
|
126
|
+
result_type max() except +
|
|
127
|
+
|
|
128
|
+
cdef cppclass lognormal_distribution[T]:
|
|
129
|
+
ctypedef T result_type
|
|
130
|
+
lognormal_distribution() except +
|
|
131
|
+
lognormal_distribution(result_type, result_type) except +
|
|
132
|
+
result_type operator()[Generator](Generator&) except +
|
|
133
|
+
result_type min() except +
|
|
134
|
+
result_type max() except +
|
|
135
|
+
|
|
136
|
+
cdef cppclass chi_squared_distribution[T]:
|
|
137
|
+
ctypedef T result_type
|
|
138
|
+
chi_squared_distribution() except +
|
|
139
|
+
chi_squared_distribution(result_type) except +
|
|
140
|
+
result_type operator()[Generator](Generator&) except +
|
|
141
|
+
result_type min() except +
|
|
142
|
+
result_type max() except +
|
|
143
|
+
|
|
144
|
+
cdef cppclass cauchy_distribution[T]:
|
|
145
|
+
ctypedef T result_type
|
|
146
|
+
cauchy_distribution() except +
|
|
147
|
+
cauchy_distribution(result_type, result_type) except +
|
|
148
|
+
result_type operator()[Generator](Generator&) except +
|
|
149
|
+
result_type min() except +
|
|
150
|
+
result_type max() except +
|
|
151
|
+
|
|
152
|
+
cdef cppclass fisher_f_distribution[T]:
|
|
153
|
+
ctypedef T result_type
|
|
154
|
+
fisher_f_distribution() except +
|
|
155
|
+
fisher_f_distribution(result_type, result_type) except +
|
|
156
|
+
result_type operator()[Generator](Generator&) except +
|
|
157
|
+
result_type min() except +
|
|
158
|
+
result_type max() except +
|
|
159
|
+
|
|
160
|
+
cdef cppclass student_t_distribution[T]:
|
|
161
|
+
ctypedef T result_type
|
|
162
|
+
student_t_distribution() except +
|
|
163
|
+
student_t_distribution(result_type) except +
|
|
164
|
+
result_type operator()[Generator](Generator&) except +
|
|
165
|
+
result_type min() except +
|
|
166
|
+
result_type max() except +
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from libcpp cimport bool
|
|
2
|
+
|
|
3
|
+
cdef extern from "<semaphore>" namespace "std" nogil:
|
|
4
|
+
# Notes on templating:
|
|
5
|
+
# Cython doesn't currently support non-class template types so it's
|
|
6
|
+
# declared here as a class template.
|
|
7
|
+
# counting_semaphore has a default max value anyway, so you typically
|
|
8
|
+
# don't need to use the templates. If you do though, then there's a
|
|
9
|
+
# few tricks - e.g. you can define a class with a cname of "3" for
|
|
10
|
+
# example.
|
|
11
|
+
|
|
12
|
+
# Note on thread-safety:
|
|
13
|
+
# You should use these classes without the GIL. It's very easy
|
|
14
|
+
# to deadlock with the GIL, and we're assuming that anyone going
|
|
15
|
+
# low enough level to be using semaphores doesn't want the overhead
|
|
16
|
+
# of Cython handling GIL safety.
|
|
17
|
+
cdef cppclass counting_semaphore[LeastMaxValue=*]:
|
|
18
|
+
counting_semaphore(ptrdiff_t desired)
|
|
19
|
+
|
|
20
|
+
void release() except+
|
|
21
|
+
void release(ptrdiff_t update) except+
|
|
22
|
+
void acquire() except+
|
|
23
|
+
bool try_acquire()
|
|
24
|
+
|
|
25
|
+
# unfortunately, we don't currently define chrono types
|
|
26
|
+
bool try_acquire_for[T](T duration) except+
|
|
27
|
+
bool try_acquire_until[T](T timepoint) except+
|
|
28
|
+
|
|
29
|
+
ptrdiff_t max()
|
|
30
|
+
|
|
31
|
+
cdef cppclass binary_semaphore:
|
|
32
|
+
binary_semaphore(ptrdiff_t desired)
|
|
33
|
+
|
|
34
|
+
void release() except+
|
|
35
|
+
void release(ptrdiff_t update) except+
|
|
36
|
+
void acquire() except+
|
|
37
|
+
bool try_acquire()
|
|
38
|
+
|
|
39
|
+
# unfortunately, we don't currently define chrono types
|
|
40
|
+
bool try_acquire_for[T](T timepoint) except+
|
|
41
|
+
bool try_acquire_until[T](T duration) except+
|
|
42
|
+
|
|
43
|
+
ptrdiff_t max()
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
from .utility cimport pair
|
|
2
|
+
|
|
3
|
+
cdef extern from "<set>" namespace "std" nogil:
|
|
4
|
+
cdef cppclass set[T]:
|
|
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
|
+
const_iterator(const_iterator&) except +
|
|
30
|
+
operator=(iterator&) except +
|
|
31
|
+
const value_type& operator*()
|
|
32
|
+
const_iterator operator++()
|
|
33
|
+
const_iterator operator--()
|
|
34
|
+
const_iterator operator++(int)
|
|
35
|
+
const_iterator operator--(int)
|
|
36
|
+
bint operator==(iterator)
|
|
37
|
+
bint operator==(const_iterator)
|
|
38
|
+
bint operator!=(iterator)
|
|
39
|
+
bint operator!=(const_iterator)
|
|
40
|
+
|
|
41
|
+
cppclass const_reverse_iterator
|
|
42
|
+
cppclass reverse_iterator:
|
|
43
|
+
reverse_iterator() except +
|
|
44
|
+
reverse_iterator(reverse_iterator&) except +
|
|
45
|
+
value_type& operator*()
|
|
46
|
+
reverse_iterator operator++()
|
|
47
|
+
reverse_iterator operator--()
|
|
48
|
+
reverse_iterator operator++(int)
|
|
49
|
+
reverse_iterator operator--(int)
|
|
50
|
+
bint operator==(reverse_iterator)
|
|
51
|
+
bint operator==(const_reverse_iterator)
|
|
52
|
+
bint operator!=(reverse_iterator)
|
|
53
|
+
bint operator!=(const_reverse_iterator)
|
|
54
|
+
cppclass const_reverse_iterator:
|
|
55
|
+
const_reverse_iterator() except +
|
|
56
|
+
const_reverse_iterator(reverse_iterator&) except +
|
|
57
|
+
operator=(reverse_iterator&) except +
|
|
58
|
+
const value_type& operator*()
|
|
59
|
+
const_reverse_iterator operator++()
|
|
60
|
+
const_reverse_iterator operator--()
|
|
61
|
+
const_reverse_iterator operator++(int)
|
|
62
|
+
const_reverse_iterator operator--(int)
|
|
63
|
+
bint operator==(reverse_iterator)
|
|
64
|
+
bint operator==(const_reverse_iterator)
|
|
65
|
+
bint operator!=(reverse_iterator)
|
|
66
|
+
bint operator!=(const_reverse_iterator)
|
|
67
|
+
|
|
68
|
+
set() except +
|
|
69
|
+
set(set&) except +
|
|
70
|
+
#set(key_compare&)
|
|
71
|
+
#set& operator=(set&)
|
|
72
|
+
bint operator==(set&, set&)
|
|
73
|
+
bint operator!=(set&, set&)
|
|
74
|
+
bint operator<(set&, set&)
|
|
75
|
+
bint operator>(set&, set&)
|
|
76
|
+
bint operator<=(set&, set&)
|
|
77
|
+
bint operator>=(set&, set&)
|
|
78
|
+
iterator begin()
|
|
79
|
+
const_iterator const_begin "begin"()
|
|
80
|
+
const_iterator cbegin()
|
|
81
|
+
void clear()
|
|
82
|
+
size_t count(const T&)
|
|
83
|
+
bint empty()
|
|
84
|
+
iterator end()
|
|
85
|
+
const_iterator const_end "end"()
|
|
86
|
+
const_iterator cend()
|
|
87
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
88
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
89
|
+
iterator erase(iterator)
|
|
90
|
+
iterator const_erase "erase"(const_iterator)
|
|
91
|
+
iterator erase(const_iterator, const_iterator)
|
|
92
|
+
size_t erase(const T&)
|
|
93
|
+
iterator find(const T&)
|
|
94
|
+
const_iterator const_find "find"(const T&)
|
|
95
|
+
pair[iterator, bint] insert(const T&) except +
|
|
96
|
+
iterator insert(iterator, const T&) except +
|
|
97
|
+
iterator insert(const_iterator, const T&) except +
|
|
98
|
+
iterator const_insert "insert"(const_iterator, const T&) except +
|
|
99
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
100
|
+
#key_compare key_comp()
|
|
101
|
+
iterator lower_bound(const T&)
|
|
102
|
+
const_iterator const_lower_bound "lower_bound"(const T&)
|
|
103
|
+
size_t max_size()
|
|
104
|
+
reverse_iterator rbegin()
|
|
105
|
+
const_reverse_iterator const_rbegin "rbegin"()
|
|
106
|
+
const_reverse_iterator crbegin()
|
|
107
|
+
reverse_iterator rend()
|
|
108
|
+
const_reverse_iterator const_rend "rend"()
|
|
109
|
+
const_reverse_iterator crend()
|
|
110
|
+
size_t size()
|
|
111
|
+
void swap(set&)
|
|
112
|
+
iterator upper_bound(const T&)
|
|
113
|
+
const_iterator const_upper_bound "upper_bound"(const T&)
|
|
114
|
+
#value_compare value_comp()
|
|
115
|
+
# C++20
|
|
116
|
+
bint contains(const T&)
|
|
117
|
+
|
|
118
|
+
cdef cppclass multiset[T]:
|
|
119
|
+
ctypedef T value_type
|
|
120
|
+
|
|
121
|
+
# these should really be allocator_type.size_type and
|
|
122
|
+
# allocator_type.difference_type to be true to the C++ definition
|
|
123
|
+
# but cython doesn't support deferred access on template arguments
|
|
124
|
+
ctypedef size_t size_type
|
|
125
|
+
ctypedef ptrdiff_t difference_type
|
|
126
|
+
|
|
127
|
+
cppclass const_iterator
|
|
128
|
+
cppclass iterator:
|
|
129
|
+
iterator() except +
|
|
130
|
+
iterator(iterator&) except +
|
|
131
|
+
value_type& operator*()
|
|
132
|
+
iterator operator++()
|
|
133
|
+
iterator operator--()
|
|
134
|
+
iterator operator++(int)
|
|
135
|
+
iterator operator--(int)
|
|
136
|
+
bint operator==(iterator)
|
|
137
|
+
bint operator==(const_iterator)
|
|
138
|
+
bint operator!=(iterator)
|
|
139
|
+
bint operator!=(const_iterator)
|
|
140
|
+
cppclass const_iterator:
|
|
141
|
+
const_iterator() except +
|
|
142
|
+
const_iterator(iterator&) except +
|
|
143
|
+
const_iterator(const_iterator&) except +
|
|
144
|
+
operator=(iterator&) except +
|
|
145
|
+
const value_type& operator*()
|
|
146
|
+
const_iterator operator++()
|
|
147
|
+
const_iterator operator--()
|
|
148
|
+
const_iterator operator++(int)
|
|
149
|
+
const_iterator operator--(int)
|
|
150
|
+
bint operator==(iterator)
|
|
151
|
+
bint operator==(const_iterator)
|
|
152
|
+
bint operator!=(iterator)
|
|
153
|
+
bint operator!=(const_iterator)
|
|
154
|
+
|
|
155
|
+
cppclass const_reverse_iterator
|
|
156
|
+
cppclass reverse_iterator:
|
|
157
|
+
reverse_iterator() except +
|
|
158
|
+
reverse_iterator(reverse_iterator&) except +
|
|
159
|
+
value_type& operator*()
|
|
160
|
+
reverse_iterator operator++()
|
|
161
|
+
reverse_iterator operator--()
|
|
162
|
+
reverse_iterator operator++(int)
|
|
163
|
+
reverse_iterator operator--(int)
|
|
164
|
+
bint operator==(reverse_iterator)
|
|
165
|
+
bint operator==(const_reverse_iterator)
|
|
166
|
+
bint operator!=(reverse_iterator)
|
|
167
|
+
bint operator!=(const_reverse_iterator)
|
|
168
|
+
cppclass const_reverse_iterator:
|
|
169
|
+
const_reverse_iterator() except +
|
|
170
|
+
const_reverse_iterator(reverse_iterator&) except +
|
|
171
|
+
operator=(reverse_iterator&) except +
|
|
172
|
+
const value_type& operator*()
|
|
173
|
+
const_reverse_iterator operator++()
|
|
174
|
+
const_reverse_iterator operator--()
|
|
175
|
+
const_reverse_iterator operator++(int)
|
|
176
|
+
const_reverse_iterator operator--(int)
|
|
177
|
+
bint operator==(reverse_iterator)
|
|
178
|
+
bint operator==(const_reverse_iterator)
|
|
179
|
+
bint operator!=(reverse_iterator)
|
|
180
|
+
bint operator!=(const_reverse_iterator)
|
|
181
|
+
|
|
182
|
+
multiset() except +
|
|
183
|
+
multiset(multiset&) except +
|
|
184
|
+
#multiset(key_compare&)
|
|
185
|
+
#multiset& operator=(multiset&)
|
|
186
|
+
bint operator==(multiset&, multiset&)
|
|
187
|
+
bint operator!=(multiset&, multiset&)
|
|
188
|
+
bint operator<(multiset&, multiset&)
|
|
189
|
+
bint operator>(multiset&, multiset&)
|
|
190
|
+
bint operator<=(multiset&, multiset&)
|
|
191
|
+
bint operator>=(multiset&, multiset&)
|
|
192
|
+
iterator begin()
|
|
193
|
+
const_iterator const_begin "begin"()
|
|
194
|
+
const_iterator cbegin()
|
|
195
|
+
void clear()
|
|
196
|
+
size_t count(const T&)
|
|
197
|
+
bint empty()
|
|
198
|
+
iterator end()
|
|
199
|
+
const_iterator const_end "end"()
|
|
200
|
+
const_iterator cend()
|
|
201
|
+
pair[iterator, iterator] equal_range(const T&)
|
|
202
|
+
pair[const_iterator, const_iterator] const_equal_range "equal_range"(const T&)
|
|
203
|
+
iterator erase(iterator)
|
|
204
|
+
iterator const_erase "erase"(const_iterator)
|
|
205
|
+
iterator erase(const_iterator, const_iterator)
|
|
206
|
+
size_t erase(const T&)
|
|
207
|
+
iterator find(const T&)
|
|
208
|
+
const_iterator const_find "find"(const T&)
|
|
209
|
+
iterator insert(const T&) except +
|
|
210
|
+
iterator insert(iterator, const T&) except +
|
|
211
|
+
iterator const_insert "insert"(const_iterator, const T&) except +
|
|
212
|
+
void insert[InputIt](InputIt, InputIt) except +
|
|
213
|
+
#key_compare key_comp()
|
|
214
|
+
iterator lower_bound(const T&)
|
|
215
|
+
const_iterator const_lower_bound "lower_bound"(const T&)
|
|
216
|
+
size_t max_size()
|
|
217
|
+
reverse_iterator rbegin()
|
|
218
|
+
const_reverse_iterator const_rbegin "rbegin"()
|
|
219
|
+
const_reverse_iterator crbegin()
|
|
220
|
+
reverse_iterator rend()
|
|
221
|
+
const_reverse_iterator const_rend "rend"()
|
|
222
|
+
const_reverse_iterator crend()
|
|
223
|
+
size_t size()
|
|
224
|
+
void swap(multiset&)
|
|
225
|
+
iterator upper_bound(const T&)
|
|
226
|
+
const_iterator const_upper_bound "upper_bound"(const T&)
|
|
227
|
+
# C++20
|
|
228
|
+
bint contains(const T&)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
from libcpp cimport bool
|
|
2
|
+
from libcpp.mutex cimport defer_lock_t, defer_lock, try_to_lock_t, try_to_lock, adopt_lock_t, adopt_lock
|
|
3
|
+
|
|
4
|
+
cdef extern from "<shared_mutex>" namespace "std" nogil:
|
|
5
|
+
cppclass shared_mutex:
|
|
6
|
+
# may not be present, and we know nothing about it
|
|
7
|
+
cppclass native_handle_type:
|
|
8
|
+
pass
|
|
9
|
+
|
|
10
|
+
# We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
|
|
11
|
+
void lock() except+
|
|
12
|
+
bool try_lock()
|
|
13
|
+
void unlock()
|
|
14
|
+
|
|
15
|
+
# We strongly recommend not calling lock_shared with the GIL held (to avoid deadlocks)
|
|
16
|
+
void lock_shared() except+
|
|
17
|
+
bool try_lock_shared()
|
|
18
|
+
void unlock_shared()
|
|
19
|
+
|
|
20
|
+
native_handle_type native_handle() except+
|
|
21
|
+
|
|
22
|
+
cppclass shared_timed_mutex:
|
|
23
|
+
# may not be present, and we know nothing about it.
|
|
24
|
+
# For shared_timed_mutex cppreference doesn't mention this
|
|
25
|
+
cppclass native_handle_type:
|
|
26
|
+
pass
|
|
27
|
+
|
|
28
|
+
# We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
|
|
29
|
+
# and moderately recommend not calling the timed lock functions with the GIL either.
|
|
30
|
+
void lock() except+
|
|
31
|
+
bool try_lock()
|
|
32
|
+
bool try_lock_for[T](const T& duration) except+
|
|
33
|
+
bool try_lock_until[T](const T& time_point) except+
|
|
34
|
+
void unlock()
|
|
35
|
+
|
|
36
|
+
# We strongly recommend not calling lock_shared with the GIL held (to avoid deadlocks)
|
|
37
|
+
# and moderately recommend not calling the timed lock functions with the GIL either.
|
|
38
|
+
void lock_shared() except+
|
|
39
|
+
bool try_lock_shared()
|
|
40
|
+
bool try_lock_shared_for[T](const T& duration) except+
|
|
41
|
+
bool try_lock_shared_until[T](const T& time_point) except+
|
|
42
|
+
void unlock_shared()
|
|
43
|
+
|
|
44
|
+
native_handle_type native_handle() except+
|
|
45
|
+
|
|
46
|
+
# We strongly recommend not attempting to acquire a lock via a shared_lock while holding
|
|
47
|
+
# the GIL. Use py_safe_construct_shared_lock instead.
|
|
48
|
+
cppclass shared_lock[T]:
|
|
49
|
+
ctypedef T mutex_type
|
|
50
|
+
# This covers both the plain regular constructor, the 3 versions with tags
|
|
51
|
+
# and two std::chrono constructors. The two templated chrono versions stop
|
|
52
|
+
# us from declaring the overloads explicitly.
|
|
53
|
+
shared_lock()
|
|
54
|
+
shared_lock(mutex_type&, ...) except+
|
|
55
|
+
#shared_lock(mutex_type&, defer_lock_t)
|
|
56
|
+
#shared_lock(mutex_type&, try_to_lock_t) except+
|
|
57
|
+
## this feels like it should be noexcept, but cppreference implies it isn't
|
|
58
|
+
#shared_lock(mutex_type&, adopt_lock_t) except+
|
|
59
|
+
|
|
60
|
+
# We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
|
|
61
|
+
void lock() except+
|
|
62
|
+
bool try_lock() except+
|
|
63
|
+
bool try_lock_for[T](const T& duration) except+
|
|
64
|
+
bool try_lock_until[T](const T& time_point) except+
|
|
65
|
+
void unlock() except+
|
|
66
|
+
|
|
67
|
+
# We strongly recommend not calling lock_shared with the GIL held (to avoid deadlocks)
|
|
68
|
+
void swap(shared_lock& other)
|
|
69
|
+
# "release" is definitely not the same as unlock. Noted here because
|
|
70
|
+
# DW always makes this mistake and regrets it and wants to save you
|
|
71
|
+
# from the same fate.
|
|
72
|
+
mutex_type* release()
|
|
73
|
+
|
|
74
|
+
mutex_type* mutex()
|
|
75
|
+
bool owns_lock()
|
|
76
|
+
bool operator bool()
|
|
77
|
+
|
|
78
|
+
# Just to get our GIL-safe utility code
|
|
79
|
+
cimport libcpp.mutex as _cpp_mutex
|
|
80
|
+
|
|
81
|
+
cdef extern from *:
|
|
82
|
+
"""
|
|
83
|
+
namespace {
|
|
84
|
+
template <typename... LockTs>
|
|
85
|
+
void __pyx_py_safe_std_lock(LockTs& ...locks);
|
|
86
|
+
|
|
87
|
+
template <typename MutexT>
|
|
88
|
+
std::shared_lock<MutexT> __pyx_py_safe_construct_shared_lock(MutexT &m) {
|
|
89
|
+
std::shared_lock<MutexT> l(m, std::defer_lock);
|
|
90
|
+
__pyx_py_safe_std_lock(l); // in mutex.pxd
|
|
91
|
+
return l;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
"""
|
|
95
|
+
# Construct a shared_lock while holding the GIL, without deadlock on the GIL
|
|
96
|
+
shared_lock[MutexT] py_safe_construct_shared_lock "__pyx_py_safe_construct_shared_lock" [MutexT](MutexT& m) except+ nogil
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from libcpp.vector cimport vector
|
|
2
|
+
|
|
3
|
+
cdef extern from "<span>" namespace "std" nogil:
|
|
4
|
+
# Only Extent = std::dynamic_extent is supported until Cython can also
|
|
5
|
+
# support integer templates. See https://github.com/cython/cython/pull/426
|
|
6
|
+
cdef cppclass span[T]:
|
|
7
|
+
ctypedef T value_type
|
|
8
|
+
ctypedef size_t size_type
|
|
9
|
+
ctypedef ptrdiff_t difference_type
|
|
10
|
+
|
|
11
|
+
size_t extent
|
|
12
|
+
|
|
13
|
+
cppclass iterator:
|
|
14
|
+
iterator() except +
|
|
15
|
+
iterator(iterator&) except +
|
|
16
|
+
T& operator*()
|
|
17
|
+
iterator operator++()
|
|
18
|
+
iterator operator--()
|
|
19
|
+
iterator operator++(int)
|
|
20
|
+
iterator operator--(int)
|
|
21
|
+
iterator operator+(size_type)
|
|
22
|
+
iterator operator-(size_type)
|
|
23
|
+
difference_type operator-(iterator)
|
|
24
|
+
difference_type operator-(const_iterator)
|
|
25
|
+
bint operator==(iterator)
|
|
26
|
+
bint operator==(const_iterator)
|
|
27
|
+
bint operator!=(iterator)
|
|
28
|
+
bint operator!=(const_iterator)
|
|
29
|
+
bint operator<(iterator)
|
|
30
|
+
bint operator<(const_iterator)
|
|
31
|
+
bint operator>(iterator)
|
|
32
|
+
bint operator>(const_iterator)
|
|
33
|
+
bint operator<=(iterator)
|
|
34
|
+
bint operator<=(const_iterator)
|
|
35
|
+
bint operator>=(iterator)
|
|
36
|
+
bint operator>=(const_iterator)
|
|
37
|
+
|
|
38
|
+
cppclass reverse_iterator:
|
|
39
|
+
reverse_iterator() except +
|
|
40
|
+
reverse_iterator(reverse_iterator&) except +
|
|
41
|
+
T& operator*()
|
|
42
|
+
reverse_iterator operator++()
|
|
43
|
+
reverse_iterator operator--()
|
|
44
|
+
reverse_iterator operator++(int)
|
|
45
|
+
reverse_iterator operator--(int)
|
|
46
|
+
reverse_iterator operator+(size_type)
|
|
47
|
+
reverse_iterator operator-(size_type)
|
|
48
|
+
difference_type operator-(iterator)
|
|
49
|
+
difference_type operator-(const_iterator)
|
|
50
|
+
bint operator==(reverse_iterator)
|
|
51
|
+
bint operator==(const_reverse_iterator)
|
|
52
|
+
bint operator!=(reverse_iterator)
|
|
53
|
+
bint operator!=(const_reverse_iterator)
|
|
54
|
+
bint operator<(reverse_iterator)
|
|
55
|
+
bint operator<(const_reverse_iterator)
|
|
56
|
+
bint operator>(reverse_iterator)
|
|
57
|
+
bint operator>(const_reverse_iterator)
|
|
58
|
+
bint operator<=(reverse_iterator)
|
|
59
|
+
bint operator<=(const_reverse_iterator)
|
|
60
|
+
bint operator>=(reverse_iterator)
|
|
61
|
+
bint operator>=(const_reverse_iterator)
|
|
62
|
+
|
|
63
|
+
# const_iterator was added in C++23, so leaving it out for now
|
|
64
|
+
|
|
65
|
+
span()
|
|
66
|
+
span(T*, size_type) except + # span[It](It, size_type)
|
|
67
|
+
span(T*, T*) except + # span[It, End](It, End)
|
|
68
|
+
span(vector&) # span[U, N](array[T, N]& arr)
|
|
69
|
+
span(span&)
|
|
70
|
+
|
|
71
|
+
T& operator[](ssize_t)
|
|
72
|
+
|
|
73
|
+
T& back()
|
|
74
|
+
iterator begin()
|
|
75
|
+
T* data()
|
|
76
|
+
bint empty()
|
|
77
|
+
iterator end()
|
|
78
|
+
span[T] first(size_type)
|
|
79
|
+
T& front()
|
|
80
|
+
span[T] last(size_type)
|
|
81
|
+
reverse_iterator rbegin()
|
|
82
|
+
reverse_iterator rend()
|
|
83
|
+
size_type size()
|
|
84
|
+
span[T] subspan(size_type)
|
|
85
|
+
span[T] subspan(size_type, size_type)
|
|
86
|
+
|
|
87
|
+
cdef size_t dynamic_extent
|