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,144 @@
1
+ from .object cimport PyObject
2
+
3
+ cdef extern from *:
4
+ # Backport PyList_GetItemRef, PyList_Extend and PyList_Clear
5
+ """
6
+ #if __PYX_LIMITED_VERSION_HEX < 0x030d0000
7
+ static CYTHON_INLINE PyObject *
8
+ __Pyx_CAPI_PyList_GetItemRef(PyObject *list, Py_ssize_t index)
9
+ {
10
+ PyObject *item = PyList_GetItem(list, index);
11
+ Py_XINCREF(item);
12
+ return item;
13
+ }
14
+ #else
15
+ #define __Pyx_CAPI_PyList_GetItemRef PyList_GetItemRef
16
+ #endif
17
+
18
+ #if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030d0000
19
+ static CYTHON_INLINE int
20
+ __Pyx_CAPI_PyList_Extend(PyObject *list, PyObject *iterable)
21
+ {
22
+ return PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable);
23
+ }
24
+
25
+ static CYTHON_INLINE int
26
+ __Pyx_CAPI_PyList_Clear(PyObject *list)
27
+ {
28
+ return PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL);
29
+ }
30
+ #else
31
+ #define __Pyx_CAPI_PyList_Extend PyList_Extend
32
+ #define __Pyx_CAPI_PyList_Clear PyList_Clear
33
+ #endif
34
+ """
35
+
36
+ cdef extern from "Python.h":
37
+
38
+ ############################################################################
39
+ # Lists
40
+ ############################################################################
41
+ list PyList_New(Py_ssize_t len)
42
+ # Return a new list of length len on success, or NULL on failure.
43
+ #
44
+ # Note: If length is greater than zero, the returned list object's
45
+ # items are set to NULL. Thus you cannot use abstract API
46
+ # functions such as PySequence_SetItem() or expose the object to
47
+ # Python code before setting all items to a real object with
48
+ # PyList_SetItem().
49
+
50
+ bint PyList_Check(object p)
51
+ # Return true if p is a list object or an instance of a subtype of
52
+ # the list type.
53
+
54
+ bint PyList_CheckExact(object p)
55
+ # Return true if p is a list object, but not an instance of a
56
+ # subtype of the list type.
57
+
58
+ Py_ssize_t PyList_Size(object list) except -1
59
+ # Return the length of the list object in list; this is equivalent
60
+ # to "len(list)" on a list object.
61
+
62
+ Py_ssize_t PyList_GET_SIZE(object list)
63
+ # Macro form of PyList_Size() without error checking.
64
+
65
+ object PyList_GetItemRef "__Pyx_CAPI_PyList_GetItemRef" (object list, Py_ssize_t index)
66
+ # Return value: New reference.
67
+ # Return the object at position index in the list pointed to by list.
68
+ # The position must be non-negative; indexing from the end of the
69
+ # list is not supported. If index is out of bounds (<0 or >=len(list)),
70
+ # return NULL and set an IndexError exception.
71
+
72
+ PyObject* PyList_GetItem(object list, Py_ssize_t index) except NULL
73
+ # Return value: Borrowed reference.
74
+ # Like PyList_GetItemRef(), but returns a borrowed reference instead of
75
+ # a strong reference.
76
+
77
+ PyObject* PyList_GET_ITEM(object list, Py_ssize_t i)
78
+ # Return value: Borrowed reference.
79
+ # Macro form of PyList_GetItem() without error checking.
80
+
81
+ int PyList_SetItem(object list, Py_ssize_t index, object item) except -1
82
+ # Set the item at index index in list to item. Return 0 on success
83
+ # or -1 on failure.
84
+ #
85
+ # WARNING: This function _steals_ a reference to item and discards a
86
+ # reference to an item already in the list at the affected position.
87
+
88
+ void PyList_SET_ITEM(object list, Py_ssize_t i, object o)
89
+ # Macro form of PyList_SetItem() without error checking. This is
90
+ # normally only used to fill in new lists where there is no
91
+ # previous content.
92
+ #
93
+ # WARNING: This function _steals_ a reference to item, and, unlike
94
+ # PyList_SetItem(), does not discard a reference to any item that
95
+ # it being replaced; any reference in list at position i will be *leaked*.
96
+
97
+ int PyList_Insert(object list, Py_ssize_t index, object item) except -1
98
+ # Insert the item item into list list in front of index
99
+ # index. Return 0 if successful; return -1 and set an exception if
100
+ # unsuccessful. Analogous to list.insert(index, item).
101
+
102
+ int PyList_Append(object list, object item) except -1
103
+ # Append the object item at the end of list list. Return 0 if
104
+ # successful; return -1 and set an exception if
105
+ # unsuccessful. Analogous to list.append(item).
106
+
107
+ list PyList_GetSlice(object list, Py_ssize_t low, Py_ssize_t high)
108
+ # Return value: New reference.
109
+ # Return a list of the objects in list containing the objects
110
+ # between low and high. Return NULL and set an exception if
111
+ # unsuccessful. Analogous to list[low:high].
112
+
113
+ int PyList_SetSlice(object list, Py_ssize_t low, Py_ssize_t high, object itemlist) except -1
114
+ # Set the slice of list between low and high to the contents of
115
+ # itemlist. Analogous to list[low:high] = itemlist. The itemlist
116
+ # may be NULL, indicating the assignment of an empty list (slice
117
+ # deletion). Return 0 on success, -1 on failure.
118
+
119
+ int PyList_Extend "__Pyx_CAPI_PyList_Extend" (object list, object iterable) except -1
120
+ # Extend list with the contents of iterable. This is the same as
121
+ # PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)
122
+ # and analogous to list.extend(iterable) or list += iterable.
123
+ # Raise an exception and return -1 if list is not a list object.
124
+ # Return 0 on success.
125
+
126
+ int PyList_Clear "__Pyx_CAPI_PyList_Clear" (object list) except -1
127
+ # Remove all items from list. This is the same as
128
+ # PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL) and analogous
129
+ # to list.clear() or del list[:].
130
+ # Raise an exception and return -1 if list is not a list object.
131
+ # Return 0 on success.
132
+
133
+ int PyList_Sort(object list) except -1
134
+ # Sort the items of list in place. Return 0 on success, -1 on
135
+ # failure. This is equivalent to "list.sort()".
136
+
137
+ int PyList_Reverse(object list) except -1
138
+ # Reverse the items of list in place. Return 0 on success, -1 on
139
+ # failure. This is the equivalent of "list.reverse()".
140
+
141
+ tuple PyList_AsTuple(object list)
142
+ # Return value: New reference.
143
+ # Return a new tuple object containing the contents of list;
144
+ # equivalent to "tuple(list)".
@@ -0,0 +1,180 @@
1
+ from libc.stdint cimport uint32_t, uint64_t, int32_t, int64_t
2
+
3
+ cdef extern from "Python.h":
4
+ ctypedef long long PY_LONG_LONG
5
+ ctypedef unsigned long long uPY_LONG_LONG "unsigned PY_LONG_LONG"
6
+
7
+ ############################################################################
8
+ # 7.2.3 Long Integer Objects
9
+ ############################################################################
10
+
11
+ # PyLongObject
12
+ #
13
+ # This subtype of PyObject represents a Python long integer object.
14
+
15
+ # PyTypeObject PyLong_Type
16
+ #
17
+ # This instance of PyTypeObject represents the Python long integer
18
+ # type. This is the same object as long and types.LongType.
19
+
20
+ cdef enum:
21
+ Py_ASNATIVEBYTES_DEFAULTS,
22
+ Py_ASNATIVEBYTES_BIG_ENDIAN,
23
+ Py_ASNATIVEBYTES_LITTLE_ENDIAN,
24
+ Py_ASNATIVEBYTES_NATIVE_ENDIAN,
25
+ Py_ASNATIVEBYTES_UNSIGNED_BUFFER,
26
+ Py_ASNATIVEBYTES_REJECT_NEGATIVE,
27
+ Py_ASNATIVEBYTES_ALLOW_INDEX
28
+
29
+ bint PyLong_Check(object p)
30
+ # Return true if its argument is a PyLongObject or a subtype of PyLongObject.
31
+
32
+ bint PyLong_CheckExact(object p)
33
+ # Return true if its argument is a PyLongObject, but not a subtype of PyLongObject.
34
+
35
+ object PyLong_FromLong(long v)
36
+ # Return value: New reference.
37
+ # Return a new PyLongObject object from v, or NULL on failure.
38
+
39
+ object PyLong_FromUnsignedLong(unsigned long v)
40
+ # Return value: New reference.
41
+ # Return a new PyLongObject object from a C unsigned long, or NULL on failure.
42
+
43
+ object PyLong_FromSsize_t(Py_ssize_t v)
44
+ # Return value: New reference.
45
+ # Return a new PyLongObject object from a C Py_ssize_t, or NULL on failure.)
46
+
47
+ object PyLong_FromSize_t(size_t v)
48
+ # Return value: New reference.
49
+ # Return a new PyLongObject object from a C size_t, or NULL on failure.
50
+
51
+ object PyLong_FromLongLong(PY_LONG_LONG v)
52
+ # Return value: New reference.
53
+ # Return a new PyLongObject object from a C long long, or NULL on failure.
54
+
55
+ object PyLong_FromUnsignedLongLong(uPY_LONG_LONG v)
56
+ # Return value: New reference.
57
+ # Return a new PyLongObject object from a C unsigned long long, or NULL on failure.
58
+
59
+ object PyLong_FromDouble(double v)
60
+ # Return value: New reference.
61
+ # Return a new PyLongObject object from the integer part of v, or NULL on failure.
62
+
63
+ object PyLong_FromString(char *str, char **pend, int base)
64
+ # Return value: New reference.
65
+ # Return a new PyLongObject based on the string value in str,
66
+ # which is interpreted according to the radix in base. If pend is
67
+ # non-NULL, *pend will point to the first character in str which
68
+ # follows the representation of the number. If base is 0, the
69
+ # radix will be determined based on the leading characters of str:
70
+ # if str starts with '0x' or '0X', radix 16 will be used; if str
71
+ # starts with '0', radix 8 will be used; otherwise radix 10 will
72
+ # be used. If base is not 0, it must be between 2 and 36,
73
+ # inclusive. Leading spaces are ignored. If there are no digits,
74
+ # ValueError will be raised.
75
+
76
+ object PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
77
+ # Return value: New reference.
78
+ # Convert a sequence of Unicode digits to a Python long integer
79
+ # value. The first parameter, u, points to the first character of
80
+ # the Unicode string, length gives the number of characters, and
81
+ # base is the radix for the conversion. The radix must be in the
82
+ # range [2, 36]; if it is out of range, ValueError will be
83
+ # raised.
84
+
85
+ # object PyLong_FromUnicodeObject(object u, int base)
86
+ # Convert a sequence of Unicode digits in the string u to a Python integer
87
+ # value. The Unicode string is first encoded to a byte string using
88
+ # PyUnicode_EncodeDecimal() and then converted using PyLong_FromString().
89
+ # New in version 3.3.
90
+
91
+ object PyLong_FromVoidPtr(void *p)
92
+ # Return value: New reference.
93
+ # Create a Python integer or long integer from the pointer p. The
94
+ # pointer value can be retrieved from the resulting value using
95
+ # PyLong_AsVoidPtr(). If the integer is larger than LONG_MAX, a
96
+ # positive long integer is returned.
97
+
98
+ long PyLong_AsLong(object pylong) except? -1
99
+ # Return a C long representation of the contents of pylong. If
100
+ # pylong is greater than LONG_MAX, an OverflowError is raised.
101
+
102
+ long PyLong_AsLongAndOverflow(object pylong, int *overflow) except? -1
103
+ # Return a C long representation of the contents of pylong. If pylong is
104
+ # greater than LONG_MAX or less than LONG_MIN, set *overflow to 1 or -1,
105
+ # respectively, and return -1; otherwise, set *overflow to 0. If any other
106
+ # exception occurs (for example a TypeError or MemoryError), then -1 will
107
+ # be returned and *overflow will be 0.
108
+ # New in version 2.7.
109
+
110
+ PY_LONG_LONG PyLong_AsLongLongAndOverflow(object pylong, int *overflow) except? -1
111
+ # Return a C long long representation of the contents of pylong. If pylong
112
+ # is greater than PY_LLONG_MAX or less than PY_LLONG_MIN, set *overflow to
113
+ # 1 or -1, respectively, and return -1; otherwise, set *overflow to 0. If
114
+ # any other exception occurs (for example a TypeError or MemoryError), then
115
+ # -1 will be returned and *overflow will be 0.
116
+ # New in version 2.7.
117
+
118
+ Py_ssize_t PyLong_AsSsize_t(object pylong) except? -1
119
+ # Return a C Py_ssize_t representation of the contents of pylong. If pylong
120
+ # is greater than PY_SSIZE_T_MAX, an OverflowError is raised and -1 will be
121
+ # returned.
122
+
123
+ unsigned long PyLong_AsUnsignedLong(object pylong) except? -1
124
+ # Return a C unsigned long representation of the contents of
125
+ # pylong. If pylong is greater than ULONG_MAX, an OverflowError is
126
+ # raised.
127
+
128
+ PY_LONG_LONG PyLong_AsLongLong(object pylong) except? -1
129
+ # Return a C long long from a Python long integer. If pylong
130
+ # cannot be represented as a long long, an OverflowError will be
131
+ # raised.
132
+
133
+ uPY_LONG_LONG PyLong_AsUnsignedLongLong(object pylong) except? -1
134
+ #unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(object pylong)
135
+ # Return a C unsigned long long from a Python long integer. If
136
+ # pylong cannot be represented as an unsigned long long, an
137
+ # OverflowError will be raised if the value is positive, or a
138
+ # TypeError will be raised if the value is negative.
139
+
140
+ unsigned long PyLong_AsUnsignedLongMask(object io) except? -1
141
+ # Return a C unsigned long from a Python long integer, without
142
+ # checking for overflow.
143
+
144
+ uPY_LONG_LONG PyLong_AsUnsignedLongLongMask(object io) except? -1
145
+ #unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(object io)
146
+ # Return a C unsigned long long from a Python long integer,
147
+ # without checking for overflow.
148
+
149
+ double PyLong_AsDouble(object pylong) except? -1.0
150
+ # Return a C double representation of the contents of pylong. If
151
+ # pylong cannot be approximately represented as a double, an
152
+ # OverflowError exception is raised and -1.0 will be returned.
153
+
154
+ void* PyLong_AsVoidPtr(object pylong) except? NULL
155
+ # Convert a Python integer or long integer pylong to a C void
156
+ # pointer. If pylong cannot be converted, an OverflowError will be
157
+ # raised. This is only assured to produce a usable void pointer
158
+ # for values created with PyLong_FromVoidPtr(). For values outside
159
+ # 0..LONG_MAX, both signed and unsigned integers are accepted.
160
+
161
+ object PyLong_FromNativeBytes(const void *buffer, size_t n_bytes, int flags)
162
+ # Create a Python integer from the value contained in the firstn_bytes
163
+ # of buffer, interpreted as a two’s-complement signed number.
164
+
165
+ object PyLong_FromUnsignedNativeBytes(const void *buffer, size_t n_bytes, int flags)
166
+ # Create a Python integer from the value contained in the first n_bytes of
167
+ # buffer, interpreted as an unsigned number.
168
+
169
+ Py_ssize_t PyLong_AsNativeBytes(object pylong, void *buffer, Py_ssize_t n_bytes, int flags) except -1
170
+ # Copy the Python integer value pylong to a native buffer of size n_bytes.
171
+ # The flags can be set to -1 to behave similarly to a C cast, or to values
172
+ # to control the behavior.
173
+
174
+ int PyLong_AsInt32(object obj, int32_t *value) except -1
175
+ int PyLong_AsInt64(object obj, int64_t *value) except -1
176
+ # Set *value to a signed C int32_t or int64_t representation of obj.
177
+
178
+ int PyLong_AsUInt32(object obj, uint32_t *value) except -1
179
+ int PyLong_AsUInt64(object obj, uint64_t *value) except -1
180
+ # Set *value to an unsigned C uint32_t or uint64_t representation of obj.
@@ -0,0 +1,14 @@
1
+ # Internals of the "int" type.
2
+
3
+ cdef extern from "Python.h":
4
+ ctypedef unsigned int digit
5
+ ctypedef int sdigit
6
+
7
+ ctypedef class __builtin__.py_long [object PyLongObject]:
8
+ cdef digit* ob_digit
9
+
10
+ cdef py_long _PyLong_New(Py_ssize_t s)
11
+
12
+ cdef long PyLong_SHIFT
13
+ cdef digit PyLong_BASE
14
+ cdef digit PyLong_MASK
@@ -0,0 +1,63 @@
1
+ cdef extern from "Python.h":
2
+
3
+ ############################################################################
4
+ # 6.4 Mapping Protocol
5
+ ############################################################################
6
+
7
+ bint PyMapping_Check(object o)
8
+ # Return 1 if the object provides mapping protocol, and 0
9
+ # otherwise. This function always succeeds.
10
+
11
+ Py_ssize_t PyMapping_Length(object o) except -1
12
+ # Returns the number of keys in object o on success, and -1 on
13
+ # failure. For objects that do not provide mapping protocol, this
14
+ # is equivalent to the Python expression "len(o)".
15
+
16
+ int PyMapping_DelItemString(object o, char *key) except -1
17
+ # Remove the mapping for object key from the object o. Return -1
18
+ # on failure. This is equivalent to the Python statement "del
19
+ # o[key]".
20
+
21
+ int PyMapping_DelItem(object o, object key) except -1
22
+ # Remove the mapping for object key from the object o. Return -1
23
+ # on failure. This is equivalent to the Python statement "del
24
+ # o[key]".
25
+
26
+ bint PyMapping_HasKeyString(object o, char *key)
27
+ # On success, return 1 if the mapping object has the key key and 0
28
+ # otherwise. This is equivalent to the Python expression
29
+ # "o.has_key(key)". This function always succeeds.
30
+
31
+ bint PyMapping_HasKey(object o, object key)
32
+ # Return 1 if the mapping object has the key key and 0
33
+ # otherwise. This is equivalent to the Python expression
34
+ # "o.has_key(key)". This function always succeeds.
35
+
36
+ object PyMapping_Keys(object o)
37
+ # Return value: New reference.
38
+ # On success, return a list of the keys in object o. On failure,
39
+ # return NULL. This is equivalent to the Python expression
40
+ # "o.keys()".
41
+
42
+ object PyMapping_Values(object o)
43
+ # Return value: New reference.
44
+ # On success, return a list of the values in object o. On failure,
45
+ # return NULL. This is equivalent to the Python expression
46
+ # "o.values()".
47
+
48
+ object PyMapping_Items(object o)
49
+ # Return value: New reference.
50
+ # On success, return a list of the items in object o, where each
51
+ # item is a tuple containing a key-value pair. On failure, return
52
+ # NULL. This is equivalent to the Python expression "o.items()".
53
+
54
+ object PyMapping_GetItemString(object o, char *key)
55
+ # Return value: New reference.
56
+ # Return element of o corresponding to the object key or NULL on
57
+ # failure. This is the equivalent of the Python expression
58
+ # "o[key]".
59
+
60
+ int PyMapping_SetItemString(object o, char *key, object v) except -1
61
+ # Map the object key to the value v in object o. Returns -1 on
62
+ # failure. This is the equivalent of the Python statement "o[key]
63
+ # = v".
@@ -0,0 +1,66 @@
1
+ from libc.stdio cimport FILE
2
+
3
+ cdef extern from "Python.h":
4
+
5
+ ###########################################################################
6
+ # Data marshalling support
7
+ ###########################################################################
8
+
9
+ const int Py_MARSHAL_VERSION
10
+
11
+ void PyMarshal_WriteLongToFile(long value, FILE *file, int version)
12
+ # Marshal a long integer, value, to file. This will only write the
13
+ # least-significant 32 bits of value, regardless of the size of the native
14
+ # long type. version indicates the file format.
15
+
16
+ void PyMarshal_WriteObjectToFile(object value, FILE *file, int version)
17
+ # Marshal a Python object, value, to file. version indicates the file
18
+ # format.
19
+
20
+ bytes PyMarshal_WriteObjectToString(object value, int version)
21
+ # Return value: New reference.
22
+ # Return a bytes object containing the marshalled representation of value.
23
+ # version indicates the file format.
24
+
25
+ long PyMarshal_ReadLongFromFile(FILE *file) except? -1
26
+ # Return a C long from the data stream in a FILE* opened for reading. Only
27
+ # a 32-bit value can be read in using this function, regardless of the
28
+ # native size of long.
29
+
30
+ # On error, sets the appropriate exception (EOFError) and returns -1.
31
+
32
+ int PyMarshal_ReadShortFromFile(FILE *file) except? -1
33
+ # Return a C short from the data stream in a FILE* opened for reading. Only
34
+ # a 16-bit value can be read in using this function, regardless of the
35
+ # native size of short.
36
+
37
+ # On error, sets the appropriate exception (EOFError) and returns -1.
38
+
39
+ object PyMarshal_ReadObjectFromFile(FILE *file)
40
+ # Return value: New reference.
41
+ # Return a Python object from the data stream in a FILE* opened for
42
+ # reading.
43
+
44
+ # On error, sets the appropriate exception (EOFError, ValueError or
45
+ # TypeError) and returns NULL.
46
+
47
+ object PyMarshal_ReadLastObjectFromFile(FILE *file)
48
+ # Return value: New reference.
49
+ # Return a Python object from the data stream in a FILE* opened for
50
+ # reading. Unlike PyMarshal_ReadObjectFromFile(), this function assumes
51
+ # that no further objects will be read from the file, allowing it to
52
+ # aggressively load file data into memory so that the de-serialization can
53
+ # operate from data in memory, rather than reading a byte at a time from the
54
+ # file. Only use these variant if you are certain that you won’t be reading
55
+ # anything else from the file.
56
+
57
+ # On error, sets the appropriate exception (EOFError, ValueError or
58
+ # TypeError) and returns NULL.
59
+
60
+ object PyMarshal_ReadObjectFromString(const char *data, Py_ssize_t len)
61
+ # Return value: New reference.
62
+ # Return a Python object from the data stream in a byte buffer containing
63
+ # len bytes pointed to by data.
64
+
65
+ # On error, sets the appropriate exception (EOFError, ValueError or
66
+ # TypeError) and returns NULL.
@@ -0,0 +1,120 @@
1
+ cdef extern from "Python.h":
2
+
3
+ #####################################################################
4
+ # 9.2 Memory Interface
5
+ #####################################################################
6
+ # You are definitely *supposed* to use these: "In most situations,
7
+ # however, it is recommended to allocate memory from the Python
8
+ # heap specifically because the latter is under control of the
9
+ # Python memory manager. For example, this is required when the
10
+ # interpreter is extended with new object types written in
11
+ # C. Another reason for using the Python heap is the desire to
12
+ # inform the Python memory manager about the memory needs of the
13
+ # extension module. Even when the requested memory is used
14
+ # exclusively for internal, highly-specific purposes, delegating
15
+ # all memory requests to the Python memory manager causes the
16
+ # interpreter to have a more accurate image of its memory
17
+ # footprint as a whole. Consequently, under certain circumstances,
18
+ # the Python memory manager may or may not trigger appropriate
19
+ # actions, like garbage collection, memory compaction or other
20
+ # preventive procedures. Note that by using the C library
21
+ # allocator as shown in the previous example, the allocated memory
22
+ # for the I/O buffer escapes completely the Python memory
23
+ # manager."
24
+
25
+ # The following function sets, modeled after the ANSI C standard,
26
+ # but specifying behavior when requesting zero bytes, are
27
+ # available for allocating and releasing memory from the Python
28
+ # heap:
29
+
30
+ void* PyMem_RawMalloc(size_t n) nogil
31
+ void* PyMem_Malloc(size_t n)
32
+ # Allocates n bytes and returns a pointer of type void* to the
33
+ # allocated memory, or NULL if the request fails. Requesting zero
34
+ # bytes returns a distinct non-NULL pointer if possible, as if
35
+ # PyMem_Malloc(1) had been called instead. The memory will not
36
+ # have been initialized in any way.
37
+
38
+ void* PyMem_RawCalloc(size_t nelem, size_t elsize) nogil
39
+ void* PyMem_Calloc(size_t nelem, size_t elsize)
40
+ # Allocates nelem elements each whose size in bytes is elsize and
41
+ # returns a pointer of type void* to the allocated memory, or NULL if
42
+ # the request fails. The memory is initialized to zeros. Requesting
43
+ # zero elements or elements of size zero bytes returns a distinct
44
+ # non-NULL pointer if possible, as if PyMem_Calloc(1, 1) had been
45
+ # called instead.
46
+
47
+ void* PyMem_RawRealloc(void *p, size_t n) nogil
48
+ void* PyMem_Realloc(void *p, size_t n)
49
+ # Resizes the memory block pointed to by p to n bytes. The
50
+ # contents will be unchanged to the minimum of the old and the new
51
+ # sizes. If p is NULL, the call is equivalent to PyMem_Malloc(n);
52
+ # else if n is equal to zero, the memory block is resized but is
53
+ # not freed, and the returned pointer is non-NULL. Unless p is
54
+ # NULL, it must have been returned by a previous call to
55
+ # PyMem_Malloc(), PyMem_Realloc(), or PyMem_Calloc().
56
+
57
+ void PyMem_RawFree(void *p) nogil
58
+ void PyMem_Free(void *p)
59
+ # Frees the memory block pointed to by p, which must have been
60
+ # returned by a previous call to PyMem_Malloc(), PyMem_Realloc(), or
61
+ # PyMem_Calloc(). Otherwise, or if PyMem_Free(p) has been called
62
+ # before, undefined behavior occurs. If p is NULL, no operation is
63
+ # performed.
64
+
65
+ # The following type-oriented macros are provided for
66
+ # convenience. Note that TYPE refers to any C type.
67
+
68
+ # TYPE* PyMem_New(TYPE, size_t n)
69
+ # Same as PyMem_Malloc(), but allocates (n * sizeof(TYPE)) bytes
70
+ # of memory. Returns a pointer cast to TYPE*. The memory will not
71
+ # have been initialized in any way.
72
+
73
+ # TYPE* PyMem_Resize(void *p, TYPE, size_t n)
74
+ # Same as PyMem_Realloc(), but the memory block is resized to (n *
75
+ # sizeof(TYPE)) bytes. Returns a pointer cast to TYPE*.
76
+
77
+ void PyMem_Del(void *p)
78
+ # Same as PyMem_Free().
79
+
80
+ # In addition, the following macro sets are provided for calling
81
+ # the Python memory allocator directly, without involving the C
82
+ # API functions listed above. However, note that their use does
83
+ # not preserve binary compatibility across Python versions and is
84
+ # therefore deprecated in extension modules.
85
+
86
+ # PyMem_MALLOC(), PyMem_REALLOC(), PyMem_FREE().
87
+ # PyMem_NEW(), PyMem_RESIZE(), PyMem_DEL().
88
+
89
+
90
+ #####################################################################
91
+ # Raw object memory interface
92
+ #####################################################################
93
+
94
+ # Functions to call the same malloc/realloc/free as used by Python's
95
+ # object allocator. If WITH_PYMALLOC is enabled, these may differ from
96
+ # the platform malloc/realloc/free. The Python object allocator is
97
+ # designed for fast, cache-conscious allocation of many "small" objects,
98
+ # and with low hidden memory overhead.
99
+ #
100
+ # PyObject_Malloc(0) returns a unique non-NULL pointer if possible.
101
+ #
102
+ # PyObject_Realloc(NULL, n) acts like PyObject_Malloc(n).
103
+ # PyObject_Realloc(p != NULL, 0) does not return NULL, or free the memory
104
+ # at p.
105
+ #
106
+ # Returned pointers must be checked for NULL explicitly; no action is
107
+ # performed on failure other than to return NULL (no warning it printed, no
108
+ # exception is set, etc).
109
+ #
110
+ # For allocating objects, use PyObject_{New, NewVar} instead whenever
111
+ # possible. The PyObject_{Malloc, Realloc, Free} family is exposed
112
+ # so that you can exploit Python's small-block allocator for non-object
113
+ # uses. If you must use these routines to allocate object memory, make sure
114
+ # the object gets initialized via PyObject_{Init, InitVar} after obtaining
115
+ # the raw memory.
116
+
117
+ void* PyObject_Malloc(size_t size)
118
+ void* PyObject_Calloc(size_t nelem, size_t elsize)
119
+ void* PyObject_Realloc(void *ptr, size_t new_size)
120
+ void PyObject_Free(void *ptr)
@@ -0,0 +1,50 @@
1
+ cdef extern from "Python.h":
2
+
3
+ ###########################################################################
4
+ # MemoryView Objects
5
+ ###########################################################################
6
+ # A memoryview object exposes the C level buffer interface as a Python
7
+ # object which can then be passed around like any other object
8
+
9
+ memoryview PyMemoryView_FromObject(object obj)
10
+ # Return value: New reference.
11
+ # Create a memoryview object from an object that provides the buffer
12
+ # interface. If obj supports writable buffer exports, the memoryview object
13
+ # will be read/write, otherwise it may be either read-only or read/write at
14
+ # the discretion of the exporter.
15
+
16
+ memoryview PyMemoryView_FromMemory(char *mem, Py_ssize_t size, int flags)
17
+ # Return value: New reference.
18
+ # Create a memoryview object using mem as the underlying buffer. flags can
19
+ # be one of PyBUF_READ or PyBUF_WRITE.
20
+ # New in version 3.3.
21
+
22
+ memoryview PyMemoryView_FromBuffer(Py_buffer *view)
23
+ # Return value: New reference.
24
+ # Create a memoryview object wrapping the given buffer structure view. For
25
+ # simple byte buffers, PyMemoryView_FromMemory() is the preferred function.
26
+
27
+ memoryview PyMemoryView_GetContiguous(object obj,
28
+ int buffertype,
29
+ char order)
30
+ # Return value: New reference.
31
+ # Create a memoryview object to a contiguous chunk of memory (in either ‘C’
32
+ # or ‘F’ortran order) from an object that defines the buffer interface. If
33
+ # memory is contiguous, the memoryview object points to the original
34
+ # memory. Otherwise, a copy is made and the memoryview points to a new
35
+ # bytes object.
36
+
37
+ bint PyMemoryView_Check(object obj)
38
+ # Return true if the object obj is a memoryview object. It is not currently
39
+ # allowed to create subclasses of memoryview.
40
+
41
+ Py_buffer *PyMemoryView_GET_BUFFER(object mview)
42
+ # Return a pointer to the memoryview’s private copy of the exporter’s
43
+ # buffer. mview must be a memoryview instance; this macro doesn’t check its
44
+ # type, you must do it yourself or you will risk crashes.
45
+
46
+ Py_buffer *PyMemoryView_GET_BASE(object mview)
47
+ # Return either a pointer to the exporting object that the memoryview is
48
+ # based on or NULL if the memoryview has been created by one of the
49
+ # functions PyMemoryView_FromMemory() or PyMemoryView_FromBuffer(). mview
50
+ # must be a memoryview instance.