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,149 @@
|
|
|
1
|
+
|
|
2
|
+
cdef extern from "Python.h":
|
|
3
|
+
ctypedef long long PY_LONG_LONG
|
|
4
|
+
ctypedef unsigned long long uPY_LONG_LONG "unsigned PY_LONG_LONG"
|
|
5
|
+
|
|
6
|
+
############################################################################
|
|
7
|
+
# 7.2.3 Long Integer Objects
|
|
8
|
+
############################################################################
|
|
9
|
+
|
|
10
|
+
# PyLongObject
|
|
11
|
+
#
|
|
12
|
+
# This subtype of PyObject represents a Python long integer object.
|
|
13
|
+
|
|
14
|
+
# PyTypeObject PyLong_Type
|
|
15
|
+
#
|
|
16
|
+
# This instance of PyTypeObject represents the Python long integer
|
|
17
|
+
# type. This is the same object as long and types.LongType.
|
|
18
|
+
|
|
19
|
+
bint PyLong_Check(object p)
|
|
20
|
+
# Return true if its argument is a PyLongObject or a subtype of PyLongObject.
|
|
21
|
+
|
|
22
|
+
bint PyLong_CheckExact(object p)
|
|
23
|
+
# Return true if its argument is a PyLongObject, but not a subtype of PyLongObject.
|
|
24
|
+
|
|
25
|
+
object PyLong_FromLong(long v)
|
|
26
|
+
# Return value: New reference.
|
|
27
|
+
# Return a new PyLongObject object from v, or NULL on failure.
|
|
28
|
+
|
|
29
|
+
object PyLong_FromUnsignedLong(unsigned long v)
|
|
30
|
+
# Return value: New reference.
|
|
31
|
+
# Return a new PyLongObject object from a C unsigned long, or NULL on failure.
|
|
32
|
+
|
|
33
|
+
object PyLong_FromSsize_t(Py_ssize_t v)
|
|
34
|
+
# Return value: New reference.
|
|
35
|
+
# Return a new PyLongObject object from a C Py_ssize_t, or NULL on failure.)
|
|
36
|
+
|
|
37
|
+
object PyLong_FromSize_t(size_t v)
|
|
38
|
+
# Return value: New reference.
|
|
39
|
+
# Return a new PyLongObject object from a C size_t, or NULL on failure.
|
|
40
|
+
|
|
41
|
+
object PyLong_FromLongLong(PY_LONG_LONG v)
|
|
42
|
+
# Return value: New reference.
|
|
43
|
+
# Return a new PyLongObject object from a C long long, or NULL on failure.
|
|
44
|
+
|
|
45
|
+
object PyLong_FromUnsignedLongLong(uPY_LONG_LONG v)
|
|
46
|
+
# Return value: New reference.
|
|
47
|
+
# Return a new PyLongObject object from a C unsigned long long, or NULL on failure.
|
|
48
|
+
|
|
49
|
+
object PyLong_FromDouble(double v)
|
|
50
|
+
# Return value: New reference.
|
|
51
|
+
# Return a new PyLongObject object from the integer part of v, or NULL on failure.
|
|
52
|
+
|
|
53
|
+
object PyLong_FromString(char *str, char **pend, int base)
|
|
54
|
+
# Return value: New reference.
|
|
55
|
+
# Return a new PyLongObject based on the string value in str,
|
|
56
|
+
# which is interpreted according to the radix in base. If pend is
|
|
57
|
+
# non-NULL, *pend will point to the first character in str which
|
|
58
|
+
# follows the representation of the number. If base is 0, the
|
|
59
|
+
# radix will be determined based on the leading characters of str:
|
|
60
|
+
# if str starts with '0x' or '0X', radix 16 will be used; if str
|
|
61
|
+
# starts with '0', radix 8 will be used; otherwise radix 10 will
|
|
62
|
+
# be used. If base is not 0, it must be between 2 and 36,
|
|
63
|
+
# inclusive. Leading spaces are ignored. If there are no digits,
|
|
64
|
+
# ValueError will be raised.
|
|
65
|
+
|
|
66
|
+
object PyLong_FromUnicode(Py_UNICODE *u, Py_ssize_t length, int base)
|
|
67
|
+
# Return value: New reference.
|
|
68
|
+
# Convert a sequence of Unicode digits to a Python long integer
|
|
69
|
+
# value. The first parameter, u, points to the first character of
|
|
70
|
+
# the Unicode string, length gives the number of characters, and
|
|
71
|
+
# base is the radix for the conversion. The radix must be in the
|
|
72
|
+
# range [2, 36]; if it is out of range, ValueError will be
|
|
73
|
+
# raised.
|
|
74
|
+
|
|
75
|
+
# object PyLong_FromUnicodeObject(object u, int base)
|
|
76
|
+
# Convert a sequence of Unicode digits in the string u to a Python integer
|
|
77
|
+
# value. The Unicode string is first encoded to a byte string using
|
|
78
|
+
# PyUnicode_EncodeDecimal() and then converted using PyLong_FromString().
|
|
79
|
+
# New in version 3.3.
|
|
80
|
+
|
|
81
|
+
object PyLong_FromVoidPtr(void *p)
|
|
82
|
+
# Return value: New reference.
|
|
83
|
+
# Create a Python integer or long integer from the pointer p. The
|
|
84
|
+
# pointer value can be retrieved from the resulting value using
|
|
85
|
+
# PyLong_AsVoidPtr(). If the integer is larger than LONG_MAX, a
|
|
86
|
+
# positive long integer is returned.
|
|
87
|
+
|
|
88
|
+
long PyLong_AsLong(object pylong) except? -1
|
|
89
|
+
# Return a C long representation of the contents of pylong. If
|
|
90
|
+
# pylong is greater than LONG_MAX, an OverflowError is raised.
|
|
91
|
+
|
|
92
|
+
long PyLong_AsLongAndOverflow(object pylong, int *overflow) except? -1
|
|
93
|
+
# Return a C long representation of the contents of pylong. If pylong is
|
|
94
|
+
# greater than LONG_MAX or less than LONG_MIN, set *overflow to 1 or -1,
|
|
95
|
+
# respectively, and return -1; otherwise, set *overflow to 0. If any other
|
|
96
|
+
# exception occurs (for example a TypeError or MemoryError), then -1 will
|
|
97
|
+
# be returned and *overflow will be 0.
|
|
98
|
+
# New in version 2.7.
|
|
99
|
+
|
|
100
|
+
PY_LONG_LONG PyLong_AsLongLongAndOverflow(object pylong, int *overflow) except? -1
|
|
101
|
+
# Return a C long long representation of the contents of pylong. If pylong
|
|
102
|
+
# is greater than PY_LLONG_MAX or less than PY_LLONG_MIN, set *overflow to
|
|
103
|
+
# 1 or -1, respectively, and return -1; otherwise, set *overflow to 0. If
|
|
104
|
+
# any other exception occurs (for example a TypeError or MemoryError), then
|
|
105
|
+
# -1 will be returned and *overflow will be 0.
|
|
106
|
+
# New in version 2.7.
|
|
107
|
+
|
|
108
|
+
Py_ssize_t PyLong_AsSsize_t(object pylong) except? -1
|
|
109
|
+
# Return a C Py_ssize_t representation of the contents of pylong. If pylong
|
|
110
|
+
# is greater than PY_SSIZE_T_MAX, an OverflowError is raised and -1 will be
|
|
111
|
+
# returned.
|
|
112
|
+
|
|
113
|
+
unsigned long PyLong_AsUnsignedLong(object pylong) except? -1
|
|
114
|
+
# Return a C unsigned long representation of the contents of
|
|
115
|
+
# pylong. If pylong is greater than ULONG_MAX, an OverflowError is
|
|
116
|
+
# raised.
|
|
117
|
+
|
|
118
|
+
PY_LONG_LONG PyLong_AsLongLong(object pylong) except? -1
|
|
119
|
+
# Return a C long long from a Python long integer. If pylong
|
|
120
|
+
# cannot be represented as a long long, an OverflowError will be
|
|
121
|
+
# raised.
|
|
122
|
+
|
|
123
|
+
uPY_LONG_LONG PyLong_AsUnsignedLongLong(object pylong) except? -1
|
|
124
|
+
#unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(object pylong)
|
|
125
|
+
# Return a C unsigned long long from a Python long integer. If
|
|
126
|
+
# pylong cannot be represented as an unsigned long long, an
|
|
127
|
+
# OverflowError will be raised if the value is positive, or a
|
|
128
|
+
# TypeError will be raised if the value is negative.
|
|
129
|
+
|
|
130
|
+
unsigned long PyLong_AsUnsignedLongMask(object io) except? -1
|
|
131
|
+
# Return a C unsigned long from a Python long integer, without
|
|
132
|
+
# checking for overflow.
|
|
133
|
+
|
|
134
|
+
uPY_LONG_LONG PyLong_AsUnsignedLongLongMask(object io) except? -1
|
|
135
|
+
#unsigned PY_LONG_LONG PyLong_AsUnsignedLongLongMask(object io)
|
|
136
|
+
# Return a C unsigned long long from a Python long integer,
|
|
137
|
+
# without checking for overflow.
|
|
138
|
+
|
|
139
|
+
double PyLong_AsDouble(object pylong) except? -1.0
|
|
140
|
+
# Return a C double representation of the contents of pylong. If
|
|
141
|
+
# pylong cannot be approximately represented as a double, an
|
|
142
|
+
# OverflowError exception is raised and -1.0 will be returned.
|
|
143
|
+
|
|
144
|
+
void* PyLong_AsVoidPtr(object pylong) except? NULL
|
|
145
|
+
# Convert a Python integer or long integer pylong to a C void
|
|
146
|
+
# pointer. If pylong cannot be converted, an OverflowError will be
|
|
147
|
+
# raised. This is only assured to produce a usable void pointer
|
|
148
|
+
# for values created with PyLong_FromVoidPtr(). For values outside
|
|
149
|
+
# 0..LONG_MAX, both signed and unsigned integers are accepted.
|
|
@@ -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.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from .object cimport PyObject
|
|
2
|
+
|
|
3
|
+
cdef extern from "Python.h":
|
|
4
|
+
############################################################################
|
|
5
|
+
# 7.5.4 Method Objects
|
|
6
|
+
############################################################################
|
|
7
|
+
|
|
8
|
+
# There are some useful functions that are useful for working with method objects.
|
|
9
|
+
# PyTypeObject PyMethod_Type
|
|
10
|
+
# This instance of PyTypeObject represents the Python method type. This is exposed to Python programs as types.MethodType.
|
|
11
|
+
|
|
12
|
+
bint PyMethod_Check(object o)
|
|
13
|
+
# Return true if o is a method object (has type
|
|
14
|
+
# PyMethod_Type). The parameter must not be NULL.
|
|
15
|
+
|
|
16
|
+
object PyMethod_New(object func, object self, object cls)
|
|
17
|
+
# Return value: New reference.
|
|
18
|
+
# Return a new method object, with func being any callable object;
|
|
19
|
+
# this is the function that will be called when the method is
|
|
20
|
+
# called. If this method should be bound to an instance, self
|
|
21
|
+
# should be the instance and class should be the class of self,
|
|
22
|
+
# otherwise self should be NULL and class should be the class
|
|
23
|
+
# which provides the unbound method..
|
|
24
|
+
|
|
25
|
+
PyObject* PyMethod_Class(object meth) except NULL
|
|
26
|
+
# Return value: Borrowed reference.
|
|
27
|
+
# Return the class object from which the method meth was created;
|
|
28
|
+
# if this was created from an instance, it will be the class of
|
|
29
|
+
# the instance.
|
|
30
|
+
|
|
31
|
+
PyObject* PyMethod_GET_CLASS(object meth)
|
|
32
|
+
# Return value: Borrowed reference.
|
|
33
|
+
# Macro version of PyMethod_Class() which avoids error checking.
|
|
34
|
+
|
|
35
|
+
PyObject* PyMethod_Function(object meth) except NULL
|
|
36
|
+
# Return value: Borrowed reference.
|
|
37
|
+
# Return the function object associated with the method meth.
|
|
38
|
+
|
|
39
|
+
PyObject* PyMethod_GET_FUNCTION(object meth)
|
|
40
|
+
# Return value: Borrowed reference.
|
|
41
|
+
# Macro version of PyMethod_Function() which avoids error checking.
|
|
42
|
+
|
|
43
|
+
PyObject* PyMethod_Self(object meth) except? NULL
|
|
44
|
+
# Return value: Borrowed reference.
|
|
45
|
+
# Return the instance associated with the method meth if it is bound, otherwise return NULL.
|
|
46
|
+
|
|
47
|
+
PyObject* PyMethod_GET_SELF(object meth)
|
|
48
|
+
# Return value: Borrowed reference.
|
|
49
|
+
# Macro version of PyMethod_Self() which avoids error checking.
|