Cython 3.3.0a1__cp315-cp315-win_amd64.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.
Files changed (335) hide show
  1. Cython/Build/BuildExecutable.py +156 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +349 -0
  4. Cython/Build/Dependencies.py +1276 -0
  5. Cython/Build/Distutils.py +1 -0
  6. Cython/Build/Inline.py +467 -0
  7. Cython/Build/IpythonMagic.py +559 -0
  8. Cython/Build/SharedModule.py +84 -0
  9. Cython/Build/Tests/TestCyCache.py +195 -0
  10. Cython/Build/Tests/TestCythonizeArgsParser.py +480 -0
  11. Cython/Build/Tests/TestDependencies.py +133 -0
  12. Cython/Build/Tests/TestInline.py +177 -0
  13. Cython/Build/Tests/TestIpythonMagic.py +303 -0
  14. Cython/Build/Tests/TestRecythonize.py +212 -0
  15. Cython/Build/Tests/TestStripLiterals.py +155 -0
  16. Cython/Build/Tests/__init__.py +1 -0
  17. Cython/Build/__init__.py +11 -0
  18. Cython/CodeWriter.py +815 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +328 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +680 -0
  23. Cython/Compiler/Builtin.py +997 -0
  24. Cython/Compiler/CmdLine.py +263 -0
  25. Cython/Compiler/Code.cp315-win_amd64.pyd +0 -0
  26. Cython/Compiler/Code.pxd +152 -0
  27. Cython/Compiler/Code.py +3907 -0
  28. Cython/Compiler/CodeGeneration.py +33 -0
  29. Cython/Compiler/CythonScope.py +194 -0
  30. Cython/Compiler/Dataclass.py +890 -0
  31. Cython/Compiler/DebugFlags.py +24 -0
  32. Cython/Compiler/Errors.py +310 -0
  33. Cython/Compiler/ExprNodes.py +15983 -0
  34. Cython/Compiler/FlowControl.cp315-win_amd64.pyd +0 -0
  35. Cython/Compiler/FlowControl.pxd +99 -0
  36. Cython/Compiler/FlowControl.py +1571 -0
  37. Cython/Compiler/FusedNode.cp315-win_amd64.pyd +0 -0
  38. Cython/Compiler/FusedNode.py +976 -0
  39. Cython/Compiler/Future.py +16 -0
  40. Cython/Compiler/Interpreter.py +57 -0
  41. Cython/Compiler/Lexicon.py +422 -0
  42. Cython/Compiler/LineTable.cp315-win_amd64.pyd +0 -0
  43. Cython/Compiler/LineTable.py +114 -0
  44. Cython/Compiler/Main.py +856 -0
  45. Cython/Compiler/MatchCaseNodes.py +2197 -0
  46. Cython/Compiler/MemoryView.py +930 -0
  47. Cython/Compiler/ModuleNode.py +4517 -0
  48. Cython/Compiler/Naming.py +367 -0
  49. Cython/Compiler/Nodes.py +10941 -0
  50. Cython/Compiler/Optimize.py +5455 -0
  51. Cython/Compiler/Options.py +838 -0
  52. Cython/Compiler/ParseTreeTransforms.pxd +79 -0
  53. Cython/Compiler/ParseTreeTransforms.py +4744 -0
  54. Cython/Compiler/Parsing.cp315-win_amd64.pyd +0 -0
  55. Cython/Compiler/Parsing.pxd +9 -0
  56. Cython/Compiler/Parsing.py +4792 -0
  57. Cython/Compiler/Pipeline.py +439 -0
  58. Cython/Compiler/PyrexTypes.py +6111 -0
  59. Cython/Compiler/Pythran.py +232 -0
  60. Cython/Compiler/Scanning.cp315-win_amd64.pyd +0 -0
  61. Cython/Compiler/Scanning.pxd +70 -0
  62. Cython/Compiler/Scanning.py +720 -0
  63. Cython/Compiler/StringEncoding.py +297 -0
  64. Cython/Compiler/Symtab.py +3092 -0
  65. Cython/Compiler/Tests/TestBuffer.py +105 -0
  66. Cython/Compiler/Tests/TestBuiltin.py +117 -0
  67. Cython/Compiler/Tests/TestCmdLine.py +587 -0
  68. Cython/Compiler/Tests/TestCode.py +145 -0
  69. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  70. Cython/Compiler/Tests/TestGrammar.py +202 -0
  71. Cython/Compiler/Tests/TestMemView.py +71 -0
  72. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  73. Cython/Compiler/Tests/TestScanning.py +132 -0
  74. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  75. Cython/Compiler/Tests/TestStringEncoding.py +20 -0
  76. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  77. Cython/Compiler/Tests/TestTreePath.py +103 -0
  78. Cython/Compiler/Tests/TestTypes.py +118 -0
  79. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  80. Cython/Compiler/Tests/TestVisitor.py +61 -0
  81. Cython/Compiler/Tests/Utils.py +36 -0
  82. Cython/Compiler/Tests/__init__.py +1 -0
  83. Cython/Compiler/TreeFragment.py +278 -0
  84. Cython/Compiler/TreePath.py +303 -0
  85. Cython/Compiler/TypeInference.py +611 -0
  86. Cython/Compiler/TypeSlots.py +1329 -0
  87. Cython/Compiler/UFuncs.py +311 -0
  88. Cython/Compiler/UtilNodes.py +413 -0
  89. Cython/Compiler/UtilityCode.py +348 -0
  90. Cython/Compiler/Version.py +8 -0
  91. Cython/Compiler/Visitor.cp315-win_amd64.pyd +0 -0
  92. Cython/Compiler/Visitor.pxd +53 -0
  93. Cython/Compiler/Visitor.py +864 -0
  94. Cython/Compiler/__init__.py +1 -0
  95. Cython/Coverage.py +448 -0
  96. Cython/Debugger/Cygdb.py +177 -0
  97. Cython/Debugger/DebugWriter.py +82 -0
  98. Cython/Debugger/Tests/TestLibCython.py +280 -0
  99. Cython/Debugger/Tests/__init__.py +1 -0
  100. Cython/Debugger/Tests/cfuncs.c +8 -0
  101. Cython/Debugger/Tests/codefile +49 -0
  102. Cython/Debugger/Tests/test_libcython_in_gdb.py +580 -0
  103. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  104. Cython/Debugger/__init__.py +1 -0
  105. Cython/Debugger/libcython.py +1548 -0
  106. Cython/Debugger/libpython.py +2821 -0
  107. Cython/Debugging.py +20 -0
  108. Cython/Distutils/__init__.py +2 -0
  109. Cython/Distutils/build_ext.py +139 -0
  110. Cython/Distutils/extension.py +96 -0
  111. Cython/Distutils/old_build_ext.py +351 -0
  112. Cython/Includes/cpython/__init__.pxd +173 -0
  113. Cython/Includes/cpython/array.pxd +152 -0
  114. Cython/Includes/cpython/bool.pxd +37 -0
  115. Cython/Includes/cpython/buffer.pxd +112 -0
  116. Cython/Includes/cpython/bytearray.pxd +33 -0
  117. Cython/Includes/cpython/bytes.pxd +200 -0
  118. Cython/Includes/cpython/cellobject.pxd +35 -0
  119. Cython/Includes/cpython/ceval.pxd +8 -0
  120. Cython/Includes/cpython/codecs.pxd +121 -0
  121. Cython/Includes/cpython/complex.pxd +60 -0
  122. Cython/Includes/cpython/contextvars.pxd +145 -0
  123. Cython/Includes/cpython/conversion.pxd +36 -0
  124. Cython/Includes/cpython/datetime.pxd +395 -0
  125. Cython/Includes/cpython/descr.pxd +26 -0
  126. Cython/Includes/cpython/dict.pxd +268 -0
  127. Cython/Includes/cpython/exc.pxd +263 -0
  128. Cython/Includes/cpython/fileobject.pxd +57 -0
  129. Cython/Includes/cpython/float.pxd +56 -0
  130. Cython/Includes/cpython/frozendict.pxd +37 -0
  131. Cython/Includes/cpython/function.pxd +65 -0
  132. Cython/Includes/cpython/genobject.pxd +25 -0
  133. Cython/Includes/cpython/getargs.pxd +12 -0
  134. Cython/Includes/cpython/instance.pxd +25 -0
  135. Cython/Includes/cpython/iterator.pxd +36 -0
  136. Cython/Includes/cpython/iterobject.pxd +24 -0
  137. Cython/Includes/cpython/list.pxd +144 -0
  138. Cython/Includes/cpython/long.pxd +180 -0
  139. Cython/Includes/cpython/longintrepr.pxd +14 -0
  140. Cython/Includes/cpython/mapping.pxd +63 -0
  141. Cython/Includes/cpython/marshal.pxd +66 -0
  142. Cython/Includes/cpython/mem.pxd +120 -0
  143. Cython/Includes/cpython/memoryview.pxd +50 -0
  144. Cython/Includes/cpython/method.pxd +49 -0
  145. Cython/Includes/cpython/module.pxd +208 -0
  146. Cython/Includes/cpython/number.pxd +258 -0
  147. Cython/Includes/cpython/object.pxd +430 -0
  148. Cython/Includes/cpython/pycapsule.pxd +143 -0
  149. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  150. Cython/Includes/cpython/pyport.pxd +8 -0
  151. Cython/Includes/cpython/pystate.pxd +95 -0
  152. Cython/Includes/cpython/pythread.pxd +53 -0
  153. Cython/Includes/cpython/ref.pxd +141 -0
  154. Cython/Includes/cpython/sentinel.pxd +17 -0
  155. Cython/Includes/cpython/sequence.pxd +134 -0
  156. Cython/Includes/cpython/set.pxd +119 -0
  157. Cython/Includes/cpython/slice.pxd +70 -0
  158. Cython/Includes/cpython/time.pxd +129 -0
  159. Cython/Includes/cpython/tuple.pxd +72 -0
  160. Cython/Includes/cpython/type.pxd +146 -0
  161. Cython/Includes/cpython/unicode.pxd +639 -0
  162. Cython/Includes/cpython/version.pxd +32 -0
  163. Cython/Includes/cpython/weakref.pxd +78 -0
  164. Cython/Includes/libc/__init__.pxd +1 -0
  165. Cython/Includes/libc/complex.pxd +35 -0
  166. Cython/Includes/libc/errno.pxd +127 -0
  167. Cython/Includes/libc/float.pxd +43 -0
  168. Cython/Includes/libc/limits.pxd +28 -0
  169. Cython/Includes/libc/locale.pxd +46 -0
  170. Cython/Includes/libc/math.pxd +209 -0
  171. Cython/Includes/libc/setjmp.pxd +10 -0
  172. Cython/Includes/libc/signal.pxd +64 -0
  173. Cython/Includes/libc/stddef.pxd +9 -0
  174. Cython/Includes/libc/stdint.pxd +105 -0
  175. Cython/Includes/libc/stdio.pxd +80 -0
  176. Cython/Includes/libc/stdlib.pxd +72 -0
  177. Cython/Includes/libc/string.pxd +50 -0
  178. Cython/Includes/libc/threads.pxd +234 -0
  179. Cython/Includes/libc/time.pxd +52 -0
  180. Cython/Includes/libcpp/__init__.pxd +4 -0
  181. Cython/Includes/libcpp/algorithm.pxd +320 -0
  182. Cython/Includes/libcpp/any.pxd +16 -0
  183. Cython/Includes/libcpp/atomic.pxd +59 -0
  184. Cython/Includes/libcpp/barrier.pxd +22 -0
  185. Cython/Includes/libcpp/bit.pxd +29 -0
  186. Cython/Includes/libcpp/cast.pxd +12 -0
  187. Cython/Includes/libcpp/cmath.pxd +518 -0
  188. Cython/Includes/libcpp/complex.pxd +106 -0
  189. Cython/Includes/libcpp/condition_variable.pxd +322 -0
  190. Cython/Includes/libcpp/deque.pxd +165 -0
  191. Cython/Includes/libcpp/exception.pxd +216 -0
  192. Cython/Includes/libcpp/execution.pxd +15 -0
  193. Cython/Includes/libcpp/forward_list.pxd +63 -0
  194. Cython/Includes/libcpp/functional.pxd +26 -0
  195. Cython/Includes/libcpp/future.pxd +103 -0
  196. Cython/Includes/libcpp/iterator.pxd +34 -0
  197. Cython/Includes/libcpp/latch.pxd +17 -0
  198. Cython/Includes/libcpp/limits.pxd +61 -0
  199. Cython/Includes/libcpp/list.pxd +117 -0
  200. Cython/Includes/libcpp/map.pxd +252 -0
  201. Cython/Includes/libcpp/memory.pxd +115 -0
  202. Cython/Includes/libcpp/mutex.pxd +387 -0
  203. Cython/Includes/libcpp/numbers.pxd +15 -0
  204. Cython/Includes/libcpp/numeric.pxd +131 -0
  205. Cython/Includes/libcpp/optional.pxd +34 -0
  206. Cython/Includes/libcpp/pair.pxd +1 -0
  207. Cython/Includes/libcpp/queue.pxd +25 -0
  208. Cython/Includes/libcpp/random.pxd +166 -0
  209. Cython/Includes/libcpp/semaphore.pxd +43 -0
  210. Cython/Includes/libcpp/set.pxd +228 -0
  211. Cython/Includes/libcpp/shared_mutex.pxd +96 -0
  212. Cython/Includes/libcpp/span.pxd +87 -0
  213. Cython/Includes/libcpp/stack.pxd +11 -0
  214. Cython/Includes/libcpp/stop_token.pxd +117 -0
  215. Cython/Includes/libcpp/string.pxd +355 -0
  216. Cython/Includes/libcpp/string_view.pxd +183 -0
  217. Cython/Includes/libcpp/typeindex.pxd +15 -0
  218. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  219. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  220. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  221. Cython/Includes/libcpp/utility.pxd +30 -0
  222. Cython/Includes/libcpp/vector.pxd +186 -0
  223. Cython/Includes/numpy/math.pxd +150 -0
  224. Cython/Includes/openmp.pxd +50 -0
  225. Cython/Includes/posix/__init__.pxd +1 -0
  226. Cython/Includes/posix/dlfcn.pxd +14 -0
  227. Cython/Includes/posix/fcntl.pxd +86 -0
  228. Cython/Includes/posix/ioctl.pxd +4 -0
  229. Cython/Includes/posix/mman.pxd +101 -0
  230. Cython/Includes/posix/resource.pxd +57 -0
  231. Cython/Includes/posix/select.pxd +21 -0
  232. Cython/Includes/posix/signal.pxd +73 -0
  233. Cython/Includes/posix/stat.pxd +98 -0
  234. Cython/Includes/posix/stdio.pxd +37 -0
  235. Cython/Includes/posix/stdlib.pxd +29 -0
  236. Cython/Includes/posix/strings.pxd +9 -0
  237. Cython/Includes/posix/time.pxd +71 -0
  238. Cython/Includes/posix/types.pxd +30 -0
  239. Cython/Includes/posix/uio.pxd +26 -0
  240. Cython/Includes/posix/unistd.pxd +271 -0
  241. Cython/Includes/posix/wait.pxd +38 -0
  242. Cython/LZSS.py +170 -0
  243. Cython/Plex/Actions.cp315-win_amd64.pyd +0 -0
  244. Cython/Plex/Actions.pxd +24 -0
  245. Cython/Plex/Actions.py +119 -0
  246. Cython/Plex/DFA.cp315-win_amd64.pyd +0 -0
  247. Cython/Plex/DFA.pxd +14 -0
  248. Cython/Plex/DFA.py +164 -0
  249. Cython/Plex/Errors.py +48 -0
  250. Cython/Plex/Lexicons.py +178 -0
  251. Cython/Plex/Machines.cp315-win_amd64.pyd +0 -0
  252. Cython/Plex/Machines.pxd +36 -0
  253. Cython/Plex/Machines.py +238 -0
  254. Cython/Plex/Regexps.py +535 -0
  255. Cython/Plex/Scanners.cp315-win_amd64.pyd +0 -0
  256. Cython/Plex/Scanners.pxd +45 -0
  257. Cython/Plex/Scanners.py +328 -0
  258. Cython/Plex/Transitions.cp315-win_amd64.pyd +0 -0
  259. Cython/Plex/Transitions.pxd +14 -0
  260. Cython/Plex/Transitions.py +239 -0
  261. Cython/Plex/__init__.py +34 -0
  262. Cython/Runtime/__init__.py +1 -0
  263. Cython/Runtime/refnanny.cp315-win_amd64.pyd +0 -0
  264. Cython/Runtime/refnanny.pyx +237 -0
  265. Cython/Shadow.py +1167 -0
  266. Cython/StringIOTree.cp315-win_amd64.pyd +0 -0
  267. Cython/StringIOTree.py +169 -0
  268. Cython/Tempita/__init__.py +4 -0
  269. Cython/Tempita/_looper.py +154 -0
  270. Cython/Tempita/_tempita.cp315-win_amd64.pyd +0 -0
  271. Cython/Tempita/_tempita.py +1087 -0
  272. Cython/TestUtils.py +464 -0
  273. Cython/Tests/TestCodeWriter.py +128 -0
  274. Cython/Tests/TestCythonUtils.py +202 -0
  275. Cython/Tests/TestJediTyper.py +223 -0
  276. Cython/Tests/TestShadow.py +110 -0
  277. Cython/Tests/TestStringIOTree.py +68 -0
  278. Cython/Tests/TestTestUtils.py +89 -0
  279. Cython/Tests/__init__.py +1 -0
  280. Cython/Tests/xmlrunner.py +390 -0
  281. Cython/Utility/AsyncGen.c +1073 -0
  282. Cython/Utility/Buffer.c +866 -0
  283. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  284. Cython/Utility/Builtins.c +933 -0
  285. Cython/Utility/CConvert.pyx +149 -0
  286. Cython/Utility/CMath.c +104 -0
  287. Cython/Utility/CommonStructures.c +244 -0
  288. Cython/Utility/Complex.c +378 -0
  289. Cython/Utility/Coroutine.c +2337 -0
  290. Cython/Utility/CpdefEnums.pyx +107 -0
  291. Cython/Utility/CppConvert.pyx +282 -0
  292. Cython/Utility/CppSupport.cpp +151 -0
  293. Cython/Utility/CythonFunction.c +2072 -0
  294. Cython/Utility/Dataclasses.c +101 -0
  295. Cython/Utility/Embed.c +129 -0
  296. Cython/Utility/Exceptions.c +1038 -0
  297. Cython/Utility/ExtensionTypes.c +1158 -0
  298. Cython/Utility/FunctionArguments.c +1045 -0
  299. Cython/Utility/FusedFunction.pyx +44 -0
  300. Cython/Utility/ImportExport.c +930 -0
  301. Cython/Utility/MatchCase.c +979 -0
  302. Cython/Utility/MatchCase_Cy.pyx +12 -0
  303. Cython/Utility/MemoryView.pxd +108 -0
  304. Cython/Utility/MemoryView.pyx +1499 -0
  305. Cython/Utility/MemoryView_C.c +1056 -0
  306. Cython/Utility/ModuleSetupCode.c +3352 -0
  307. Cython/Utility/NumpyImportArray.c +46 -0
  308. Cython/Utility/ObjectHandling.c +3372 -0
  309. Cython/Utility/Optimize.c +2563 -0
  310. Cython/Utility/Overflow.c +378 -0
  311. Cython/Utility/Profile.c +736 -0
  312. Cython/Utility/StringTools.c +1414 -0
  313. Cython/Utility/Synchronization.c +438 -0
  314. Cython/Utility/TString.c +369 -0
  315. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  316. Cython/Utility/TestCythonScope.pyx +75 -0
  317. Cython/Utility/TestUtilityLoader.c +12 -0
  318. Cython/Utility/TypeConversion.c +1556 -0
  319. Cython/Utility/UFuncs.pyx +50 -0
  320. Cython/Utility/UFuncs_C.c +89 -0
  321. Cython/Utility/__init__.py +28 -0
  322. Cython/Utility/arrayarray.h +172 -0
  323. Cython/Utils.cp315-win_amd64.pyd +0 -0
  324. Cython/Utils.py +677 -0
  325. Cython/__init__.py +12 -0
  326. Cython/py.typed +0 -0
  327. cython-3.3.0a1.dist-info/METADATA +394 -0
  328. cython-3.3.0a1.dist-info/RECORD +335 -0
  329. cython-3.3.0a1.dist-info/WHEEL +5 -0
  330. cython-3.3.0a1.dist-info/entry_points.txt +4 -0
  331. cython-3.3.0a1.dist-info/top_level.txt +3 -0
  332. cython.py +29 -0
  333. pyximport/__init__.py +4 -0
  334. pyximport/pyxbuild.py +160 -0
  335. pyximport/pyximport.py +482 -0
@@ -0,0 +1,117 @@
1
+ from libcpp cimport bool
2
+
3
+ cdef extern from * nogil:
4
+ """
5
+ // <thread> is defined in C++ and may define __cpp_lib_jthread
6
+ // Including it in this way lets us cimport it in the C++11 condition_variable wrappings
7
+ #include <thread>
8
+ #if defined(__cpp_lib_jthread)
9
+ #include <stop_token>
10
+ #endif
11
+ """
12
+
13
+ cdef extern from * namespace "std" nogil:
14
+ cdef cppclass stop_token:
15
+ bool stop_requested() noexcept
16
+ bool stop_possible() noexcept
17
+
18
+ cdef cppclass nostopstate_t:
19
+ pass
20
+
21
+ nostopstate_t nostopstate
22
+
23
+ cdef cppclass stop_source:
24
+ stop_source() except+
25
+ stop_source(nostopstate_t) noexcept
26
+
27
+ bool request_stop() noexcept
28
+ void swap(stop_source& other) noexcept
29
+
30
+ stop_token get_token() noexcept
31
+ bool stop_requested() noexcept
32
+ bool stop_possible() noexcept
33
+
34
+ # stop_callback is not copyable or moveable which currently means it must
35
+ # be heap-allocated in Cython (although use with cpp_locals should eventually be supported too)
36
+ cdef cppclass stop_callback[Callback]:
37
+ # in principle the second argument is a template argument with a "std::constructable_from" constraint,
38
+ # but for Cython's purposes it probably makes sense to assume no conversion
39
+ stop_callback(stop_token st, Callback cb) noexcept
40
+
41
+ cdef extern from *:
42
+ """
43
+ #if defined(__cpp_lib_jthread)
44
+ #include <optional>
45
+ #include <utility>
46
+
47
+ namespace {
48
+ using __pyx_func_ptr_stop_callback = std::stop_callback<void (*)()>;
49
+
50
+ class __pyx_python_stop_callback_holder {
51
+ class callable_py_object_holder {
52
+ PyObject *o;
53
+
54
+ public:
55
+ explicit callable_py_object_holder(PyObject *o)
56
+ : o(o)
57
+ {
58
+ Py_INCREF(o);
59
+ }
60
+
61
+ callable_py_object_holder(callable_py_object_holder&& rhs)
62
+ : o(std::exchange(rhs.o, nullptr))
63
+ {
64
+ }
65
+
66
+ ~callable_py_object_holder() {
67
+ if (o) {
68
+ PyGILState_STATE state = PyGILState_Ensure();
69
+ Py_DECREF(o);
70
+ PyGILState_Release(state);
71
+ }
72
+ }
73
+
74
+ callable_py_object_holder(const callable_py_object_holder&) = delete;
75
+ callable_py_object_holder& operator=(const callable_py_object_holder&) = delete;
76
+
77
+ void operator()() const {
78
+ PyGILState_STATE state = PyGILState_Ensure();
79
+ PyObject *result = PyObject_CallObject(o, NULL);
80
+ if (!result) {
81
+ PyObject *s = PyUnicode_FromString("python_stop_callback_holder callback");
82
+ PyErr_WriteUnraisable(s);
83
+ Py_XDECREF(s);
84
+ } else {
85
+ Py_DECREF(result);
86
+ }
87
+ PyGILState_Release(state);
88
+ }
89
+ };
90
+
91
+ std::optional<std::stop_callback<callable_py_object_holder>> callback;
92
+
93
+ public:
94
+ __pyx_python_stop_callback_holder() = default;
95
+ __pyx_python_stop_callback_holder(std::stop_token token, PyObject *callable) {
96
+ initialize(std::move(token), callable);
97
+ }
98
+ __pyx_python_stop_callback_holder(const __pyx_python_stop_callback_holder&) = delete;
99
+
100
+ __pyx_python_stop_callback_holder& operator=(const __pyx_python_stop_callback_holder&) = delete;
101
+
102
+ void initialize(std::stop_token token, PyObject *callable) {
103
+ callback.emplace(std::move(token), callable_py_object_holder(callable));
104
+ }
105
+ };
106
+ }
107
+ #endif // defined(__cpp_lib_jthread)
108
+ """
109
+ # This is provided as a convenience mainly as a reminder to use nogil functions!
110
+ ctypedef stop_callback[void (*)() noexcept nogil] func_ptr_stop_callback "__pyx_func_ptr_stop_callback"
111
+
112
+ # A fairly thin wrapper to let you create a stop callback with a Python object.
113
+ # For most uses, it should be created empty and then filled with "initialize"
114
+ cdef cppclass python_stop_callback_holder "__pyx_python_stop_callback_holder":
115
+ python_stop_callback_holder()
116
+ python_stop_callback_holder(stop_token token, object callable)
117
+ void initialize(stop_token token, object callable)
@@ -0,0 +1,355 @@
1
+
2
+ # deprecated cimport for backwards compatibility:
3
+ from libc.string cimport const_char
4
+
5
+ from libcpp.string_view cimport string_view
6
+
7
+ cdef extern from "<string>" namespace "std::string" nogil:
8
+ const size_t npos
9
+
10
+ cdef extern from "<string>" namespace "std" nogil:
11
+ # 21.3.4, numeric conversions
12
+ int stoi(const string& s, size_t* idx, int base) except +
13
+ long stol(const string& s, size_t* idx, int base) except +
14
+ unsigned long stoul(const string& s, size_t* idx, int base) except +
15
+ long long stoll(const string& s, size_t* idx, int base) except +
16
+ unsigned long long stoull(const string& s, size_t* idx, int base) except +
17
+ float stof(const string& s, size_t* idx) except +
18
+ double stod(const string& s, size_t* idx) except +
19
+ long double stold(const string& s, size_t* idx) except +
20
+
21
+ # Duplicate declarations are necessary, because extern functions cannot have default arguments values
22
+ int stoi(const string& s, size_t* idx) except +
23
+ long stol(const string& s, size_t* idx) except +
24
+ unsigned long stoul(const string& s, size_t* idx) except +
25
+ long long stoll(const string& s, size_t* idx) except +
26
+ unsigned long long stoull(const string& s, size_t* idx) except +
27
+
28
+ int stoi(const string& s) except +
29
+ long stol(const string& s) except +
30
+ unsigned long stoul(const string& s) except +
31
+ long long stoll(const string& s) except +
32
+ unsigned long long stoull(const string& s) except +
33
+ float stof(const string& s) except +
34
+ double stod(const string& s) except +
35
+ long double stold(const string& s) except +
36
+
37
+ string to_string(int val) except +
38
+ string to_string(unsigned val) except +
39
+ string to_string(long val) except +
40
+ string to_string(unsigned long val) except +
41
+ string to_string(long long val) except +
42
+ string to_string(unsigned long long val) except +
43
+ string to_string(float val) except +
44
+ string to_string(double val) except +
45
+ string to_string(long double val) except +
46
+
47
+ # Cython doesn't know which size type is equivalent to s/size_t on a given platform
48
+ string to_string(size_t val) except +
49
+ string to_string(ssize_t val) except +
50
+
51
+ cdef cppclass string:
52
+ ctypedef char value_type
53
+
54
+ # these should really be allocator_type.size_type and
55
+ # allocator_type.difference_type to be true to the C++ definition
56
+ # but cython doesn't support deferred access on template arguments
57
+ ctypedef size_t size_type
58
+ ctypedef ptrdiff_t difference_type
59
+
60
+ bint operator==(const string&)
61
+ bint operator==(const char*)
62
+ bint operator!= (const string&)
63
+ bint operator!= (const char*)
64
+ bint operator< (const string&)
65
+ bint operator< (const char*)
66
+ bint operator> (const string&)
67
+ bint operator> (const char*)
68
+ bint operator<= (const string&)
69
+ bint operator<= (const char*)
70
+ bint operator>= (const string&)
71
+ bint operator>= (const char*)
72
+
73
+ string operator+ (const string&) except +
74
+ string operator+ (const char*) except +
75
+
76
+ cppclass const_iterator
77
+ cppclass iterator:
78
+ iterator() except +
79
+ iterator(iterator&) except +
80
+ value_type& operator*()
81
+ iterator operator++()
82
+ iterator operator--()
83
+ iterator operator++(int)
84
+ iterator operator--(int)
85
+ iterator operator+(size_type)
86
+ iterator operator-(size_type)
87
+ difference_type operator-(iterator)
88
+ difference_type operator-(const_iterator)
89
+ bint operator==(iterator)
90
+ bint operator==(const_iterator)
91
+ bint operator!=(iterator)
92
+ bint operator!=(const_iterator)
93
+ bint operator<(iterator)
94
+ bint operator<(const_iterator)
95
+ bint operator>(iterator)
96
+ bint operator>(const_iterator)
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
+ const_iterator(const_iterator&) except +
105
+ operator=(iterator&) except +
106
+ const value_type& operator*()
107
+ const_iterator operator++()
108
+ const_iterator operator--()
109
+ const_iterator operator++(int)
110
+ const_iterator operator--(int)
111
+ const_iterator operator+(size_type)
112
+ const_iterator operator-(size_type)
113
+ difference_type operator-(iterator)
114
+ difference_type operator-(const_iterator)
115
+ bint operator==(iterator)
116
+ bint operator==(const_iterator)
117
+ bint operator!=(iterator)
118
+ bint operator!=(const_iterator)
119
+ bint operator<(iterator)
120
+ bint operator<(const_iterator)
121
+ bint operator>(iterator)
122
+ bint operator>(const_iterator)
123
+ bint operator<=(iterator)
124
+ bint operator<=(const_iterator)
125
+ bint operator>=(iterator)
126
+ bint operator>=(const_iterator)
127
+
128
+ cppclass const_reverse_iterator
129
+ cppclass reverse_iterator:
130
+ reverse_iterator() except +
131
+ reverse_iterator(reverse_iterator&) except +
132
+ value_type& operator*()
133
+ reverse_iterator operator++()
134
+ reverse_iterator operator--()
135
+ reverse_iterator operator++(int)
136
+ reverse_iterator operator--(int)
137
+ reverse_iterator operator+(size_type)
138
+ reverse_iterator operator-(size_type)
139
+ difference_type operator-(iterator)
140
+ difference_type operator-(const_iterator)
141
+ bint operator==(reverse_iterator)
142
+ bint operator==(const_reverse_iterator)
143
+ bint operator!=(reverse_iterator)
144
+ bint operator!=(const_reverse_iterator)
145
+ bint operator<(reverse_iterator)
146
+ bint operator<(const_reverse_iterator)
147
+ bint operator>(reverse_iterator)
148
+ bint operator>(const_reverse_iterator)
149
+ bint operator<=(reverse_iterator)
150
+ bint operator<=(const_reverse_iterator)
151
+ bint operator>=(reverse_iterator)
152
+ bint operator>=(const_reverse_iterator)
153
+ cppclass const_reverse_iterator:
154
+ const_reverse_iterator() except +
155
+ const_reverse_iterator(reverse_iterator&) except +
156
+ operator=(reverse_iterator&) except +
157
+ const value_type& operator*()
158
+ const_reverse_iterator operator++()
159
+ const_reverse_iterator operator--()
160
+ const_reverse_iterator operator++(int)
161
+ const_reverse_iterator operator--(int)
162
+ const_reverse_iterator operator+(size_type)
163
+ const_reverse_iterator operator-(size_type)
164
+ difference_type operator-(iterator)
165
+ difference_type operator-(const_iterator)
166
+ bint operator==(reverse_iterator)
167
+ bint operator==(const_reverse_iterator)
168
+ bint operator!=(reverse_iterator)
169
+ bint operator!=(const_reverse_iterator)
170
+ bint operator<(reverse_iterator)
171
+ bint operator<(const_reverse_iterator)
172
+ bint operator>(reverse_iterator)
173
+ bint operator>(const_reverse_iterator)
174
+ bint operator<=(reverse_iterator)
175
+ bint operator<=(const_reverse_iterator)
176
+ bint operator>=(reverse_iterator)
177
+ bint operator>=(const_reverse_iterator)
178
+
179
+ # 21.3.2.2, construct/copy/destroy
180
+ string() except + # (1)
181
+ string(const string& s) except + # (3)
182
+ string(const string& s, size_t pos) except + # (5)
183
+ string(const string& s, size_t pos, size_t len) except + # (6)
184
+ string(const char* s, size_t n) except + # (9)
185
+ string(const char* s) except + # (10)
186
+ string(size_t n, char c) except + # (11)
187
+ string(const string_view& sv) except +
188
+ # type (string&) is needed here so that Cython can compile templated definition
189
+ string& string[InputIt](InputIt, InputIt) except + # (12)
190
+
191
+ #string& operator= (const string&)
192
+ #string& operator= (const char*)
193
+ #string& operator= (char)
194
+
195
+ # 21.3.2.3, iterators
196
+ iterator begin()
197
+ const_iterator const_begin "begin"()
198
+ iterator end()
199
+ const_iterator const_end "end"()
200
+
201
+ reverse_iterator rbegin()
202
+ const_reverse_iterator const_rbegin "rbegin"()
203
+ reverse_iterator rend()
204
+ const_reverse_iterator const_rend "rend"()
205
+
206
+ const_iterator cbegin()
207
+ const_iterator cend()
208
+ const_reverse_iterator crbegin()
209
+ const_reverse_iterator crend()
210
+
211
+ # 21.3.2.4, capacity
212
+ size_t size()
213
+ size_t length()
214
+ size_t max_size()
215
+ void resize(size_t, char) except +
216
+ void resize(size_t) except +
217
+ size_t capacity()
218
+ void reserve(size_t) except +
219
+ void shrink_to_fit() except +
220
+ void clear()
221
+ bint empty()
222
+
223
+ # 21.3.2.5, element access
224
+ char& operator[](size_t pos)
225
+ char& at(size_t pos) except +
226
+
227
+ char& front()
228
+ char& back()
229
+
230
+ # 21.3.2.6, modifiers
231
+ string& append(const string& s) except + # (1)
232
+ string& append(const string& s, size_t subpos, size_t sublen) except + # (2)
233
+ string& append(const char* s) except + # (5)
234
+ string& append(const char* s, size_t n) except + # (6)
235
+ string& append(size_t n, char c) except + # (7)
236
+ string& append[InputIt](InputIt, InputIt) except + # (8)
237
+
238
+ void push_back(char c) except +
239
+
240
+ string& assign(const string& s) except + # (1)
241
+ string& assign(const string& s, size_t subpos, size_t sublen) except + # (3)
242
+ string& assign(const char* s, size_t n) except + # (6)
243
+ string& assign(const char* s) except + # (7)
244
+ string& assign(size_t n, char c) except + # (8)
245
+ string& assign[InputIt](InputIt, InputIt) except + # (9)
246
+
247
+ string& insert(size_t pos, const string& s) except + # (1)
248
+ string& insert(size_t pos, const string& s, size_t subpos, size_t sublen) except + # (2)
249
+ string& insert(size_t pos, const char* s, size_t n) except + # (5)
250
+ string& insert(size_t pos, const char* s) except + # (6)
251
+ string& insert(size_t pos, size_t n, char c) except + # (7)
252
+ iterator insert(iterator p, char c) except + # (8)
253
+ iterator insert(iterator p, size_t n, char c) except + # (9)
254
+ # This method should be templated in InputIt arguments, but then it is not resolved by Cython
255
+ iterator insert(iterator, iterator, iterator) except + # (10)
256
+
257
+ string& erase(size_t pos, size_t len) except + # (1)
258
+ string& erase(size_t pos) except + # (1)
259
+ string& erase() except + # (1)
260
+ iterator erase(iterator p) except + # (2)
261
+ iterator erase(const_iterator p) except +
262
+ iterator erase(iterator first, iterator last) except + # (3)
263
+ iterator erase(const_iterator first, const_iterator last) except +
264
+
265
+ void pop_back()
266
+
267
+ string& replace(size_t pos, size_t len, const string& str) except + # (1)
268
+ string& replace(size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) except + # (2)
269
+ string& replace(size_t pos, size_t len, const char* s, size_t n) except + # (5)
270
+ string& replace(size_t pos, size_t len, const char* s) except + # (6)
271
+ string& replace(size_t pos, size_t len, size_t n, char c) except + # (7)
272
+ string& replace(iterator i1, iterator i2, const string& str) except + # (8)
273
+ string& replace(iterator i1, iterator i2, const char* s, size_t n) except + # (10)
274
+ string& replace(iterator i1, iterator i2, const char* s) except + # (11)
275
+ string& replace(iterator i1, iterator i2, size_t n, char c) except + # (12)
276
+ string& replace(iterator i1, iterator i2, iterator j1, iterator j2) except + # (13)
277
+
278
+ size_t copy(char* s, size_t len, size_t pos) except +
279
+ size_t copy(char* s, size_t len) except +
280
+
281
+ void swap(string& other)
282
+
283
+ # 21.3.2.7, string operations
284
+ const char* c_str()
285
+ const char* data()
286
+
287
+ size_t find(const string& s, size_t pos)
288
+ size_t find(const string& s)
289
+ size_t find(const char* s, size_t pos, size_t n)
290
+ size_t find(const char* s, size_t pos)
291
+ size_t find(const char* s)
292
+ size_t find(char c, size_t pos)
293
+ size_t find(char c)
294
+
295
+ size_t rfind(const string&, size_t pos)
296
+ size_t rfind(const string&)
297
+ size_t rfind(const char* s, size_t pos, size_t n)
298
+ size_t rfind(const char* s, size_t pos)
299
+ size_t rfind(const char* s)
300
+ size_t rfind(char c, size_t pos)
301
+ size_t rfind(char c)
302
+
303
+ size_t find_first_of(const string&, size_t pos)
304
+ size_t find_first_of(const string&)
305
+ size_t find_first_of(const char* s, size_t pos, size_t n)
306
+ size_t find_first_of(const char* s, size_t pos)
307
+ size_t find_first_of(const char* s)
308
+ size_t find_first_of(char c, size_t pos)
309
+ size_t find_first_of(char c)
310
+
311
+ size_t find_first_not_of(const string& s, size_t pos)
312
+ size_t find_first_not_of(const string& s)
313
+ size_t find_first_not_of(const char* s, size_t pos, size_t n)
314
+ size_t find_first_not_of(const char* s, size_t pos)
315
+ size_t find_first_not_of(const char*)
316
+ size_t find_first_not_of(char c, size_t pos)
317
+ size_t find_first_not_of(char c)
318
+
319
+ size_t find_last_of(const string& s, size_t pos)
320
+ size_t find_last_of(const string& s)
321
+ size_t find_last_of(const char* s, size_t pos, size_t n)
322
+ size_t find_last_of(const char* s, size_t pos)
323
+ size_t find_last_of(const char* s)
324
+ size_t find_last_of(char c, size_t pos)
325
+ size_t find_last_of(char c)
326
+
327
+ size_t find_last_not_of(const string& s, size_t pos)
328
+ size_t find_last_not_of(const string& s)
329
+ size_t find_last_not_of(const char* s, size_t pos, size_t n)
330
+ size_t find_last_not_of(const char* s, size_t pos)
331
+ size_t find_last_not_of(const char* s)
332
+ size_t find_last_not_of(char c, size_t pos)
333
+ size_t find_last_not_of(char c)
334
+
335
+ string substr(size_t pos, size_t len) except +
336
+ string substr(size_t pos) except +
337
+ string substr()
338
+
339
+ int compare(const string& s)
340
+ int compare(size_t pos, size_t len, const string& s) except +
341
+ int compare(size_t pos, size_t len, const string& s, size_t subpos, size_t sublen) except +
342
+ int compare(const char* s) except +
343
+ int compare(size_t pos, size_t len, const char* s) except +
344
+ int compare(size_t pos, size_t len, const char* s , size_t n) except +
345
+
346
+ # C++20
347
+ bint starts_with(char c) except +
348
+ bint starts_with(const char* s)
349
+
350
+ bint ends_with(char c) except +
351
+ bint ends_with(const char* s)
352
+
353
+ # C++23
354
+ bint contains(char c) except +
355
+ bint contains(const char* s)
@@ -0,0 +1,183 @@
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
+ # Not strictly operator= but work by implicit conversion
76
+ string_view& operator=(const string& s)
77
+
78
+ # Iterators
79
+ const_iterator begin()
80
+ const_iterator end()
81
+ const_iterator cbegin()
82
+ const_iterator cend()
83
+
84
+ const_reverse_iterator rbegin()
85
+ const_reverse_iterator rend()
86
+ const_reverse_iterator crbegin()
87
+ const_reverse_iterator crend()
88
+
89
+ # Capacity
90
+ size_t size()
91
+ size_t length()
92
+ size_t max_size()
93
+ bint empty()
94
+
95
+ # Element access
96
+ const char& operator[](size_t pos)
97
+ const char& at(size_t pos) except +
98
+ const char& front()
99
+ const char& back()
100
+
101
+ const char* data()
102
+
103
+ # Modifiers
104
+ void remove_prefix(size_t n)
105
+ void remove_suffix(size_t n)
106
+ void swap(string_view& other)
107
+
108
+ # Operations
109
+ size_t copy(char* dest, size_t count, size_t pos)
110
+ size_t copy(char* dest, size_t count)
111
+
112
+ size_t find(string_view s, size_t pos)
113
+ size_t find(string_view s)
114
+ size_t find(const char* s, size_t pos, size_t n)
115
+ size_t find(const char* s, size_t pos)
116
+ size_t find(const char* s)
117
+ size_t find(char c, size_t pos)
118
+ size_t find(char c)
119
+
120
+ size_t rfind(string_view, size_t pos)
121
+ size_t rfind(string_view)
122
+ size_t rfind(const char* s, size_t pos, size_t n)
123
+ size_t rfind(const char* s, size_t pos)
124
+ size_t rfind(const char* s)
125
+ size_t rfind(char c, size_t pos)
126
+ size_t rfind(char c)
127
+
128
+ size_t find_first_of(string_view, size_t pos)
129
+ size_t find_first_of(string_view)
130
+ size_t find_first_of(const char* s, size_t pos, size_t n)
131
+ size_t find_first_of(const char* s, size_t pos)
132
+ size_t find_first_of(const char* s)
133
+ size_t find_first_of(char c, size_t pos)
134
+ size_t find_first_of(char c)
135
+
136
+ size_t find_first_not_of(string_view s, size_t pos)
137
+ size_t find_first_not_of(string_view s)
138
+ size_t find_first_not_of(const char* s, size_t pos, size_t n)
139
+ size_t find_first_not_of(const char* s, size_t pos)
140
+ size_t find_first_not_of(const char*)
141
+ size_t find_first_not_of(char c, size_t pos)
142
+ size_t find_first_not_of(char c)
143
+
144
+ size_t find_last_of(string_view s, size_t pos)
145
+ size_t find_last_of(string_view s)
146
+ size_t find_last_of(const char* s, size_t pos, size_t n)
147
+ size_t find_last_of(const char* s, size_t pos)
148
+ size_t find_last_of(const char* s)
149
+ size_t find_last_of(char c, size_t pos)
150
+ size_t find_last_of(char c)
151
+
152
+ size_t find_last_not_of(string_view s, size_t pos)
153
+ size_t find_last_not_of(string_view s)
154
+ size_t find_last_not_of(const char* s, size_t pos, size_t n)
155
+ size_t find_last_not_of(const char* s, size_t pos)
156
+ size_t find_last_not_of(const char* s)
157
+ size_t find_last_not_of(char c, size_t pos)
158
+ size_t find_last_not_of(char c)
159
+
160
+ string_view substr(size_t pos, size_t len) except +
161
+ string_view substr(size_t pos) except +
162
+ string_view substr()
163
+
164
+ int compare(string_view s)
165
+ int compare(size_t pos, size_t len, string_view s)
166
+ int compare(size_t pos, size_t len, string_view s, size_t subpos, size_t sublen)
167
+ int compare(const char* s)
168
+ int compare(size_t pos, size_t len, const char* s)
169
+ int compare(size_t pos, size_t len, const char* s , size_t n)
170
+
171
+ # C++20
172
+ bint starts_with(string_view s)
173
+ bint starts_with(char c)
174
+ bint starts_with(const char* s)
175
+
176
+ bint ends_with(string_view s)
177
+ bint ends_with(char c)
178
+ bint ends_with(const char* s)
179
+
180
+ # C++23
181
+ bint contains(string_view s)
182
+ bint contains(char c)
183
+ 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()