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.
- Cython/Build/BuildExecutable.py +156 -0
- Cython/Build/Cache.py +199 -0
- Cython/Build/Cythonize.py +349 -0
- Cython/Build/Dependencies.py +1276 -0
- Cython/Build/Distutils.py +1 -0
- Cython/Build/Inline.py +467 -0
- Cython/Build/IpythonMagic.py +559 -0
- Cython/Build/SharedModule.py +84 -0
- Cython/Build/Tests/TestCyCache.py +195 -0
- Cython/Build/Tests/TestCythonizeArgsParser.py +480 -0
- Cython/Build/Tests/TestDependencies.py +133 -0
- Cython/Build/Tests/TestInline.py +177 -0
- Cython/Build/Tests/TestIpythonMagic.py +303 -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 +997 -0
- Cython/Compiler/CmdLine.py +263 -0
- Cython/Compiler/Code.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/Code.pxd +152 -0
- Cython/Compiler/Code.py +3907 -0
- Cython/Compiler/CodeGeneration.py +33 -0
- Cython/Compiler/CythonScope.py +194 -0
- Cython/Compiler/Dataclass.py +890 -0
- Cython/Compiler/DebugFlags.py +24 -0
- Cython/Compiler/Errors.py +310 -0
- Cython/Compiler/ExprNodes.py +15983 -0
- Cython/Compiler/FlowControl.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/FlowControl.pxd +99 -0
- Cython/Compiler/FlowControl.py +1571 -0
- Cython/Compiler/FusedNode.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/FusedNode.py +976 -0
- Cython/Compiler/Future.py +16 -0
- Cython/Compiler/Interpreter.py +57 -0
- Cython/Compiler/Lexicon.py +422 -0
- Cython/Compiler/LineTable.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/LineTable.py +114 -0
- Cython/Compiler/Main.py +856 -0
- Cython/Compiler/MatchCaseNodes.py +2197 -0
- Cython/Compiler/MemoryView.py +930 -0
- Cython/Compiler/ModuleNode.py +4517 -0
- Cython/Compiler/Naming.py +367 -0
- Cython/Compiler/Nodes.py +10941 -0
- Cython/Compiler/Optimize.py +5455 -0
- Cython/Compiler/Options.py +838 -0
- Cython/Compiler/ParseTreeTransforms.pxd +79 -0
- Cython/Compiler/ParseTreeTransforms.py +4744 -0
- Cython/Compiler/Parsing.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/Parsing.pxd +9 -0
- Cython/Compiler/Parsing.py +4792 -0
- Cython/Compiler/Pipeline.py +439 -0
- Cython/Compiler/PyrexTypes.py +6111 -0
- Cython/Compiler/Pythran.py +232 -0
- Cython/Compiler/Scanning.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/Scanning.pxd +70 -0
- Cython/Compiler/Scanning.py +720 -0
- Cython/Compiler/StringEncoding.py +297 -0
- Cython/Compiler/Symtab.py +3092 -0
- Cython/Compiler/Tests/TestBuffer.py +105 -0
- Cython/Compiler/Tests/TestBuiltin.py +117 -0
- Cython/Compiler/Tests/TestCmdLine.py +587 -0
- Cython/Compiler/Tests/TestCode.py +145 -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 +132 -0
- Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
- Cython/Compiler/Tests/TestStringEncoding.py +20 -0
- Cython/Compiler/Tests/TestTreeFragment.py +63 -0
- Cython/Compiler/Tests/TestTreePath.py +103 -0
- Cython/Compiler/Tests/TestTypes.py +118 -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 +611 -0
- Cython/Compiler/TypeSlots.py +1329 -0
- Cython/Compiler/UFuncs.py +311 -0
- Cython/Compiler/UtilNodes.py +413 -0
- Cython/Compiler/UtilityCode.py +348 -0
- Cython/Compiler/Version.py +8 -0
- Cython/Compiler/Visitor.cp315-win_amd64.pyd +0 -0
- Cython/Compiler/Visitor.pxd +53 -0
- Cython/Compiler/Visitor.py +864 -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 +280 -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 +580 -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 +152 -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 +268 -0
- Cython/Includes/cpython/exc.pxd +263 -0
- Cython/Includes/cpython/fileobject.pxd +57 -0
- Cython/Includes/cpython/float.pxd +56 -0
- Cython/Includes/cpython/frozendict.pxd +37 -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 +144 -0
- Cython/Includes/cpython/long.pxd +180 -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 +430 -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/sentinel.pxd +17 -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 +146 -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 +216 -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/LZSS.py +170 -0
- Cython/Plex/Actions.cp315-win_amd64.pyd +0 -0
- Cython/Plex/Actions.pxd +24 -0
- Cython/Plex/Actions.py +119 -0
- Cython/Plex/DFA.cp315-win_amd64.pyd +0 -0
- Cython/Plex/DFA.pxd +14 -0
- Cython/Plex/DFA.py +164 -0
- Cython/Plex/Errors.py +48 -0
- Cython/Plex/Lexicons.py +178 -0
- Cython/Plex/Machines.cp315-win_amd64.pyd +0 -0
- Cython/Plex/Machines.pxd +36 -0
- Cython/Plex/Machines.py +238 -0
- Cython/Plex/Regexps.py +535 -0
- Cython/Plex/Scanners.cp315-win_amd64.pyd +0 -0
- Cython/Plex/Scanners.pxd +45 -0
- Cython/Plex/Scanners.py +328 -0
- Cython/Plex/Transitions.cp315-win_amd64.pyd +0 -0
- Cython/Plex/Transitions.pxd +14 -0
- Cython/Plex/Transitions.py +239 -0
- Cython/Plex/__init__.py +34 -0
- Cython/Runtime/__init__.py +1 -0
- Cython/Runtime/refnanny.cp315-win_amd64.pyd +0 -0
- Cython/Runtime/refnanny.pyx +237 -0
- Cython/Shadow.py +1167 -0
- Cython/StringIOTree.cp315-win_amd64.pyd +0 -0
- Cython/StringIOTree.py +169 -0
- Cython/Tempita/__init__.py +4 -0
- Cython/Tempita/_looper.py +154 -0
- Cython/Tempita/_tempita.cp315-win_amd64.pyd +0 -0
- Cython/Tempita/_tempita.py +1087 -0
- Cython/TestUtils.py +464 -0
- Cython/Tests/TestCodeWriter.py +128 -0
- Cython/Tests/TestCythonUtils.py +202 -0
- Cython/Tests/TestJediTyper.py +223 -0
- Cython/Tests/TestShadow.py +110 -0
- Cython/Tests/TestStringIOTree.py +68 -0
- Cython/Tests/TestTestUtils.py +89 -0
- Cython/Tests/__init__.py +1 -0
- Cython/Tests/xmlrunner.py +390 -0
- Cython/Utility/AsyncGen.c +1073 -0
- Cython/Utility/Buffer.c +866 -0
- Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
- Cython/Utility/Builtins.c +933 -0
- Cython/Utility/CConvert.pyx +149 -0
- Cython/Utility/CMath.c +104 -0
- Cython/Utility/CommonStructures.c +244 -0
- Cython/Utility/Complex.c +378 -0
- Cython/Utility/Coroutine.c +2337 -0
- Cython/Utility/CpdefEnums.pyx +107 -0
- Cython/Utility/CppConvert.pyx +282 -0
- Cython/Utility/CppSupport.cpp +151 -0
- Cython/Utility/CythonFunction.c +2072 -0
- Cython/Utility/Dataclasses.c +101 -0
- Cython/Utility/Embed.c +129 -0
- Cython/Utility/Exceptions.c +1038 -0
- Cython/Utility/ExtensionTypes.c +1158 -0
- Cython/Utility/FunctionArguments.c +1045 -0
- Cython/Utility/FusedFunction.pyx +44 -0
- Cython/Utility/ImportExport.c +930 -0
- Cython/Utility/MatchCase.c +979 -0
- Cython/Utility/MatchCase_Cy.pyx +12 -0
- Cython/Utility/MemoryView.pxd +108 -0
- Cython/Utility/MemoryView.pyx +1499 -0
- Cython/Utility/MemoryView_C.c +1056 -0
- Cython/Utility/ModuleSetupCode.c +3352 -0
- Cython/Utility/NumpyImportArray.c +46 -0
- Cython/Utility/ObjectHandling.c +3372 -0
- Cython/Utility/Optimize.c +2563 -0
- Cython/Utility/Overflow.c +378 -0
- Cython/Utility/Profile.c +736 -0
- Cython/Utility/StringTools.c +1414 -0
- Cython/Utility/Synchronization.c +438 -0
- Cython/Utility/TString.c +369 -0
- Cython/Utility/TestCyUtilityLoader.pyx +8 -0
- Cython/Utility/TestCythonScope.pyx +75 -0
- Cython/Utility/TestUtilityLoader.c +12 -0
- Cython/Utility/TypeConversion.c +1556 -0
- Cython/Utility/UFuncs.pyx +50 -0
- Cython/Utility/UFuncs_C.c +89 -0
- Cython/Utility/__init__.py +28 -0
- Cython/Utility/arrayarray.h +172 -0
- Cython/Utils.cp315-win_amd64.pyd +0 -0
- Cython/Utils.py +677 -0
- Cython/__init__.py +12 -0
- Cython/py.typed +0 -0
- cython-3.3.0a1.dist-info/METADATA +394 -0
- cython-3.3.0a1.dist-info/RECORD +335 -0
- cython-3.3.0a1.dist-info/WHEEL +5 -0
- cython-3.3.0a1.dist-info/entry_points.txt +4 -0
- cython-3.3.0a1.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,29 @@
|
|
|
1
|
+
# POSIX additions to <stdlib.h>
|
|
2
|
+
# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdlib.h.html
|
|
3
|
+
|
|
4
|
+
cdef extern from "<stdlib.h>" nogil:
|
|
5
|
+
void _Exit(int)
|
|
6
|
+
double drand48()
|
|
7
|
+
double erand48(unsigned short *)
|
|
8
|
+
int getsubopt(char **, char *const *, char **)
|
|
9
|
+
void lcong48(unsigned short *)
|
|
10
|
+
long lrand()
|
|
11
|
+
char *mkdtemp(char *)
|
|
12
|
+
int mkstemp(char *)
|
|
13
|
+
long mrand()
|
|
14
|
+
long nrand48(unsigned short *)
|
|
15
|
+
int posix_memalign(void **, size_t, size_t)
|
|
16
|
+
int posix_openpt(int)
|
|
17
|
+
char *ptsname(int)
|
|
18
|
+
int putenv(char *)
|
|
19
|
+
int rand_r(unsigned *)
|
|
20
|
+
long random()
|
|
21
|
+
char *realpath(const char *, char *)
|
|
22
|
+
unsigned short *seed48(unsigned short *)
|
|
23
|
+
int setenv(const char *, const char *, int)
|
|
24
|
+
void setkey(const char *)
|
|
25
|
+
char *setstate(char *)
|
|
26
|
+
void srand48(long)
|
|
27
|
+
void srandom(unsigned)
|
|
28
|
+
int unlockpt(int)
|
|
29
|
+
int unsetenv(const char *)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
cdef extern from "<strings.h>" nogil:
|
|
2
|
+
int bcmp(const void *, const void *, size_t)
|
|
3
|
+
void bcopy(const void *, void *, size_t)
|
|
4
|
+
void bzero(void *, size_t)
|
|
5
|
+
int ffs(int)
|
|
6
|
+
char *index(const char *, int)
|
|
7
|
+
char *rindex(const char *, int)
|
|
8
|
+
int strcasecmp(const char *, const char *)
|
|
9
|
+
int strncasecmp(const char *, const char *, size_t)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# https://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/time.h.html
|
|
2
|
+
|
|
3
|
+
from posix.types cimport suseconds_t, time_t, clockid_t, timer_t
|
|
4
|
+
from posix.signal cimport sigevent
|
|
5
|
+
|
|
6
|
+
cdef extern from "<sys/time.h>" nogil:
|
|
7
|
+
enum: CLOCK_REALTIME
|
|
8
|
+
enum: TIMER_ABSTIME
|
|
9
|
+
enum: CLOCK_MONOTONIC
|
|
10
|
+
|
|
11
|
+
# FreeBSD-specific clocks
|
|
12
|
+
enum: CLOCK_UPTIME
|
|
13
|
+
enum: CLOCK_UPTIME_PRECISE
|
|
14
|
+
enum: CLOCK_UPTIME_FAST
|
|
15
|
+
enum: CLOCK_REALTIME_PRECISE
|
|
16
|
+
enum: CLOCK_REALTIME_FAST
|
|
17
|
+
enum: CLOCK_MONOTONIC_PRECISE
|
|
18
|
+
enum: CLOCK_MONOTONIC_FAST
|
|
19
|
+
enum: CLOCK_SECOND
|
|
20
|
+
|
|
21
|
+
# Linux-specific clocks
|
|
22
|
+
enum: CLOCK_PROCESS_CPUTIME_ID
|
|
23
|
+
enum: CLOCK_THREAD_CPUTIME_ID
|
|
24
|
+
enum: CLOCK_MONOTONIC_RAW
|
|
25
|
+
enum: CLOCK_REALTIME_COARSE
|
|
26
|
+
enum: CLOCK_MONOTONIC_COARSE
|
|
27
|
+
enum: CLOCK_BOOTTIME
|
|
28
|
+
enum: CLOCK_REALTIME_ALARM
|
|
29
|
+
enum: CLOCK_BOOTTIME_ALARM
|
|
30
|
+
|
|
31
|
+
enum: ITIMER_REAL
|
|
32
|
+
enum: ITIMER_VIRTUAL
|
|
33
|
+
enum: ITIMER_PROF
|
|
34
|
+
|
|
35
|
+
cdef struct timezone:
|
|
36
|
+
int tz_minuteswest
|
|
37
|
+
int dsttime
|
|
38
|
+
|
|
39
|
+
cdef struct timeval:
|
|
40
|
+
time_t tv_sec
|
|
41
|
+
suseconds_t tv_usec
|
|
42
|
+
|
|
43
|
+
cdef struct timespec:
|
|
44
|
+
time_t tv_sec
|
|
45
|
+
long tv_nsec
|
|
46
|
+
|
|
47
|
+
cdef struct itimerval:
|
|
48
|
+
timeval it_interval
|
|
49
|
+
timeval it_value
|
|
50
|
+
|
|
51
|
+
cdef struct itimerspec:
|
|
52
|
+
timespec it_interval
|
|
53
|
+
timespec it_value
|
|
54
|
+
|
|
55
|
+
int nanosleep(const timespec *, timespec *)
|
|
56
|
+
|
|
57
|
+
int getitimer(int, itimerval *)
|
|
58
|
+
int gettimeofday(timeval *tp, timezone *tzp)
|
|
59
|
+
int setitimer(int, const itimerval *, itimerval *)
|
|
60
|
+
|
|
61
|
+
int clock_getcpuclockid(pid_t, clockid_t *)
|
|
62
|
+
int clock_getres(clockid_t, timespec *)
|
|
63
|
+
int clock_gettime(clockid_t, timespec *)
|
|
64
|
+
int clock_nanosleep(clockid_t, int, const timespec *, timespec *)
|
|
65
|
+
int clock_settime(clockid_t, const timespec *)
|
|
66
|
+
|
|
67
|
+
int timer_create(clockid_t, sigevent *, timer_t *)
|
|
68
|
+
int timer_delete(timer_t)
|
|
69
|
+
int timer_gettime(timer_t, itimerspec *)
|
|
70
|
+
int timer_getoverrun(timer_t)
|
|
71
|
+
int timer_settime(timer_t, int, const itimerspec *, itimerspec *)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Note that the actual size of these types is system-dependent, and
|
|
2
|
+
# cannot be detected before C compile time. However, the generated C code
|
|
3
|
+
# will correctly use the actual size of these types *except* for
|
|
4
|
+
# determining promotion in binary arithmetic expressions involving
|
|
5
|
+
# mixed types. In this case, operands are promoted to the declared
|
|
6
|
+
# larger type, with a bias towards typedef types. Thus, with the
|
|
7
|
+
# declarations below, long + time_t will result in a time_t whereas
|
|
8
|
+
# long long + time_t will result in a long long which should be
|
|
9
|
+
# acceptable for either 32-bit or 64-bit signed time_t (though admittedly
|
|
10
|
+
# the POSIX standard doesn't even specify that time_t must be an integral
|
|
11
|
+
# type).
|
|
12
|
+
|
|
13
|
+
cdef extern from "<sys/types.h>":
|
|
14
|
+
ctypedef long blkcnt_t
|
|
15
|
+
ctypedef long blksize_t
|
|
16
|
+
ctypedef long clockid_t
|
|
17
|
+
ctypedef long dev_t
|
|
18
|
+
ctypedef long gid_t
|
|
19
|
+
ctypedef long id_t
|
|
20
|
+
ctypedef unsigned long ino_t
|
|
21
|
+
ctypedef long mode_t
|
|
22
|
+
ctypedef long nlink_t
|
|
23
|
+
ctypedef long off_t
|
|
24
|
+
ctypedef long pid_t
|
|
25
|
+
ctypedef struct sigset_t:
|
|
26
|
+
pass
|
|
27
|
+
ctypedef long suseconds_t
|
|
28
|
+
ctypedef long time_t
|
|
29
|
+
ctypedef long timer_t
|
|
30
|
+
ctypedef long uid_t
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_uio.h.html
|
|
2
|
+
|
|
3
|
+
from posix.types cimport off_t
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
cdef extern from "<sys/uio.h>" nogil:
|
|
7
|
+
|
|
8
|
+
cdef struct iovec:
|
|
9
|
+
void *iov_base
|
|
10
|
+
size_t iov_len
|
|
11
|
+
|
|
12
|
+
ssize_t readv (int fd, const iovec *iov, int iovcnt)
|
|
13
|
+
ssize_t writev(int fd, const iovec *iov, int iovcnt)
|
|
14
|
+
|
|
15
|
+
# Linux-specific, https://man7.org/linux/man-pages/man2/readv.2.html
|
|
16
|
+
ssize_t preadv (int fd, const iovec *iov, int iovcnt, off_t offset)
|
|
17
|
+
ssize_t pwritev(int fd, const iovec *iov, int iovcnt, off_t offset)
|
|
18
|
+
|
|
19
|
+
enum: RWF_DSYNC
|
|
20
|
+
enum: RWF_HIPRI
|
|
21
|
+
enum: RWF_SYNC
|
|
22
|
+
enum: RWF_NOWAIT
|
|
23
|
+
enum: RWF_APPEND
|
|
24
|
+
|
|
25
|
+
ssize_t preadv2 (int fd, const iovec *iov, int iovcnt, off_t offset, int flags)
|
|
26
|
+
ssize_t pwritev2(int fd, const iovec *iov, int iovcnt, off_t offset, int flags)
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
# http://www.opengroup.org/onlinepubs/009695399/basedefs/unistd.h.html
|
|
2
|
+
|
|
3
|
+
from posix.types cimport gid_t, pid_t, off_t, uid_t
|
|
4
|
+
|
|
5
|
+
cdef extern from "<unistd.h>" nogil:
|
|
6
|
+
|
|
7
|
+
#:NULL
|
|
8
|
+
|
|
9
|
+
enum: R_OK
|
|
10
|
+
enum: W_OK
|
|
11
|
+
enum: X_OK
|
|
12
|
+
enum: F_OK
|
|
13
|
+
|
|
14
|
+
enum: _CS_PATH
|
|
15
|
+
enum: _CS_POSIX_V6_ILP32_OFF32_CFLAGS
|
|
16
|
+
enum: _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
|
|
17
|
+
enum: _CS_POSIX_V6_ILP32_OFF32_LIBS
|
|
18
|
+
enum: _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
|
|
19
|
+
enum: _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
|
|
20
|
+
enum: _CS_POSIX_V6_ILP32_OFFBIG_LIBS
|
|
21
|
+
enum: _CS_POSIX_V6_LP64_OFF64_CFLAGS
|
|
22
|
+
enum: _CS_POSIX_V6_LP64_OFF64_LDFLAGS
|
|
23
|
+
enum: _CS_POSIX_V6_LP64_OFF64_LIBS
|
|
24
|
+
enum: _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
|
|
25
|
+
enum: _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
|
|
26
|
+
enum: _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
|
|
27
|
+
enum: _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
|
|
28
|
+
|
|
29
|
+
enum: SEEK_SET
|
|
30
|
+
enum: SEEK_CUR
|
|
31
|
+
enum: SEEK_END
|
|
32
|
+
|
|
33
|
+
enum: F_LOCK
|
|
34
|
+
enum: F_TEST
|
|
35
|
+
enum: F_TLOCK
|
|
36
|
+
enum: F_ULOCK
|
|
37
|
+
|
|
38
|
+
enum: _PC_2_SYMLINKS
|
|
39
|
+
enum: _PC_ALLOC_SIZE_MIN
|
|
40
|
+
enum: _PC_ASYNC_IO
|
|
41
|
+
enum: _PC_CHOWN_RESTRICTED
|
|
42
|
+
enum: _PC_FILESIZEBITS
|
|
43
|
+
enum: _PC_LINK_MAX
|
|
44
|
+
enum: _PC_MAX_CANON
|
|
45
|
+
enum: _PC_MAX_INPUT
|
|
46
|
+
enum: _PC_NAME_MAX
|
|
47
|
+
enum: _PC_NO_TRUNC
|
|
48
|
+
enum: _PC_PATH_MAX
|
|
49
|
+
enum: _PC_PIPE_BUF
|
|
50
|
+
enum: _PC_PRIO_IO
|
|
51
|
+
enum: _PC_REC_INCR_XFER_SIZE
|
|
52
|
+
enum: _PC_REC_MIN_XFER_SIZE
|
|
53
|
+
enum: _PC_REC_XFER_ALIGN
|
|
54
|
+
enum: _PC_SYMLINK_MAX
|
|
55
|
+
enum: _PC_SYNC_IO
|
|
56
|
+
enum: _PC_VDISABLE
|
|
57
|
+
|
|
58
|
+
enum: _SC_2_C_BIND
|
|
59
|
+
enum: _SC_2_C_DEV
|
|
60
|
+
enum: _SC_2_CHAR_TERM
|
|
61
|
+
enum: _SC_2_FORT_DEV
|
|
62
|
+
enum: _SC_2_FORT_RUN
|
|
63
|
+
enum: _SC_2_LOCALEDEF
|
|
64
|
+
enum: _SC_2_PBS
|
|
65
|
+
enum: _SC_2_PBS_ACCOUNTING
|
|
66
|
+
enum: _SC_2_PBS_CHECKPOINT
|
|
67
|
+
enum: _SC_2_PBS_LOCATE
|
|
68
|
+
enum: _SC_2_PBS_MESSAGE
|
|
69
|
+
enum: _SC_2_PBS_TRACK
|
|
70
|
+
enum: _SC_2_SW_DEV
|
|
71
|
+
enum: _SC_2_UPE
|
|
72
|
+
enum: _SC_2_VERSION
|
|
73
|
+
enum: _SC_ADVISORY_INFO
|
|
74
|
+
enum: _SC_AIO_LISTIO_MAX
|
|
75
|
+
enum: _SC_AIO_MAX
|
|
76
|
+
enum: _SC_AIO_PRIO_DELTA_MAX
|
|
77
|
+
enum: _SC_ARG_MAX
|
|
78
|
+
enum: _SC_ASYNCHRONOUS_IO
|
|
79
|
+
enum: _SC_ATEXIT_MAX
|
|
80
|
+
enum: _SC_BARRIERS
|
|
81
|
+
enum: _SC_BC_BASE_MAX
|
|
82
|
+
enum: _SC_BC_DIM_MAX
|
|
83
|
+
enum: _SC_BC_SCALE_MAX
|
|
84
|
+
enum: _SC_BC_STRING_MAX
|
|
85
|
+
enum: _SC_CHILD_MAX
|
|
86
|
+
enum: _SC_CLK_TCK
|
|
87
|
+
enum: _SC_CLOCK_SELECTION
|
|
88
|
+
enum: _SC_COLL_WEIGHTS_MAX
|
|
89
|
+
enum: _SC_CPUTIME
|
|
90
|
+
enum: _SC_DELAYTIMER_MAX
|
|
91
|
+
enum: _SC_EXPR_NEST_MAX
|
|
92
|
+
enum: _SC_FSYNC
|
|
93
|
+
enum: _SC_GETGR_R_SIZE_MAX
|
|
94
|
+
enum: _SC_GETPW_R_SIZE_MAX
|
|
95
|
+
enum: _SC_HOST_NAME_MAX
|
|
96
|
+
enum: _SC_IOV_MAX
|
|
97
|
+
enum: _SC_IPV6
|
|
98
|
+
enum: _SC_JOB_CONTROL
|
|
99
|
+
enum: _SC_LINE_MAX
|
|
100
|
+
enum: _SC_LOGIN_NAME_MAX
|
|
101
|
+
enum: _SC_MAPPED_FILES
|
|
102
|
+
enum: _SC_MEMLOCK
|
|
103
|
+
enum: _SC_MEMLOCK_RANGE
|
|
104
|
+
enum: _SC_MEMORY_PROTECTION
|
|
105
|
+
enum: _SC_MESSAGE_PASSING
|
|
106
|
+
enum: _SC_MONOTONIC_CLOCK
|
|
107
|
+
enum: _SC_MQ_OPEN_MAX
|
|
108
|
+
enum: _SC_MQ_PRIO_MAX
|
|
109
|
+
enum: _SC_NGROUPS_MAX
|
|
110
|
+
enum: _SC_OPEN_MAX
|
|
111
|
+
enum: _SC_PAGE_SIZE
|
|
112
|
+
enum: _SC_PAGESIZE
|
|
113
|
+
enum: _SC_PRIORITIZED_IO
|
|
114
|
+
enum: _SC_PRIORITY_SCHEDULING
|
|
115
|
+
enum: _SC_RAW_SOCKETS
|
|
116
|
+
enum: _SC_RE_DUP_MAX
|
|
117
|
+
enum: _SC_READER_WRITER_LOCKS
|
|
118
|
+
enum: _SC_REALTIME_SIGNALS
|
|
119
|
+
enum: _SC_REGEXP
|
|
120
|
+
enum: _SC_RTSIG_MAX
|
|
121
|
+
enum: _SC_SAVED_IDS
|
|
122
|
+
enum: _SC_SEM_NSEMS_MAX
|
|
123
|
+
enum: _SC_SEM_VALUE_MAX
|
|
124
|
+
enum: _SC_SEMAPHORES
|
|
125
|
+
enum: _SC_SHARED_MEMORY_OBJECTS
|
|
126
|
+
enum: _SC_SHELL
|
|
127
|
+
enum: _SC_SIGQUEUE_MAX
|
|
128
|
+
enum: _SC_SPAWN
|
|
129
|
+
enum: _SC_SPIN_LOCKS
|
|
130
|
+
enum: _SC_SPORADIC_SERVER
|
|
131
|
+
enum: _SC_SS_REPL_MAX
|
|
132
|
+
enum: _SC_STREAM_MAX
|
|
133
|
+
enum: _SC_SYMLOOP_MAX
|
|
134
|
+
enum: _SC_SYNCHRONIZED_IO
|
|
135
|
+
enum: _SC_THREAD_ATTR_STACKADDR
|
|
136
|
+
enum: _SC_THREAD_ATTR_STACKSIZE
|
|
137
|
+
enum: _SC_THREAD_CPUTIME
|
|
138
|
+
enum: _SC_THREAD_DESTRUCTOR_ITERATIONS
|
|
139
|
+
enum: _SC_THREAD_KEYS_MAX
|
|
140
|
+
enum: _SC_THREAD_PRIO_INHERIT
|
|
141
|
+
enum: _SC_THREAD_PRIO_PROTECT
|
|
142
|
+
enum: _SC_THREAD_PRIORITY_SCHEDULING
|
|
143
|
+
enum: _SC_THREAD_PROCESS_SHARED
|
|
144
|
+
enum: _SC_THREAD_SAFE_FUNCTIONS
|
|
145
|
+
enum: _SC_THREAD_SPORADIC_SERVER
|
|
146
|
+
enum: _SC_THREAD_STACK_MIN
|
|
147
|
+
enum: _SC_THREAD_THREADS_MAX
|
|
148
|
+
enum: _SC_THREADS
|
|
149
|
+
enum: _SC_TIMEOUTS
|
|
150
|
+
enum: _SC_TIMER_MAX
|
|
151
|
+
enum: _SC_TIMERS
|
|
152
|
+
enum: _SC_TRACE
|
|
153
|
+
enum: _SC_TRACE_EVENT_FILTER
|
|
154
|
+
enum: _SC_TRACE_EVENT_NAME_MAX
|
|
155
|
+
enum: _SC_TRACE_INHERIT
|
|
156
|
+
enum: _SC_TRACE_LOG
|
|
157
|
+
enum: _SC_TRACE_NAME_MAX
|
|
158
|
+
enum: _SC_TRACE_SYS_MAX
|
|
159
|
+
enum: _SC_TRACE_USER_EVENT_MAX
|
|
160
|
+
enum: _SC_TTY_NAME_MAX
|
|
161
|
+
enum: _SC_TYPED_MEMORY_OBJECTS
|
|
162
|
+
enum: _SC_TZNAME_MAX
|
|
163
|
+
enum: _SC_V6_ILP32_OFF32
|
|
164
|
+
enum: _SC_V6_ILP32_OFFBIG
|
|
165
|
+
enum: _SC_V6_LP64_OFF64
|
|
166
|
+
enum: _SC_V6_LPBIG_OFFBIG
|
|
167
|
+
enum: _SC_VERSION
|
|
168
|
+
enum: _SC_XBS5_ILP32_OFF32
|
|
169
|
+
enum: _SC_XBS5_ILP32_OFFBIG
|
|
170
|
+
enum: _SC_XBS5_LP64_OFF64
|
|
171
|
+
enum: _SC_XBS5_LPBIG_OFFBIG
|
|
172
|
+
enum: _SC_XOPEN_CRYPT
|
|
173
|
+
enum: _SC_XOPEN_ENH_I18N
|
|
174
|
+
enum: _SC_XOPEN_LEGACY
|
|
175
|
+
enum: _SC_XOPEN_REALTIME
|
|
176
|
+
enum: _SC_XOPEN_REALTIME_THREADS
|
|
177
|
+
enum: _SC_XOPEN_SHM
|
|
178
|
+
enum: _SC_XOPEN_STREAMS
|
|
179
|
+
enum: _SC_XOPEN_UNIX
|
|
180
|
+
enum: _SC_XOPEN_VERSION
|
|
181
|
+
|
|
182
|
+
enum: STDIN_FILENO #0
|
|
183
|
+
enum: STDOUT_FILENO #1
|
|
184
|
+
enum: STDERR_FILENO #2
|
|
185
|
+
|
|
186
|
+
ctypedef unsigned useconds_t
|
|
187
|
+
|
|
188
|
+
int access(const char *, int)
|
|
189
|
+
unsigned alarm(unsigned)
|
|
190
|
+
int chdir(const char *)
|
|
191
|
+
int chown(const char *, uid_t, gid_t)
|
|
192
|
+
int close(int)
|
|
193
|
+
size_t confstr(int, char *, size_t)
|
|
194
|
+
char *crypt(const char *, const char *)
|
|
195
|
+
char *ctermid(char *)
|
|
196
|
+
int dup(int)
|
|
197
|
+
int dup2(int, int)
|
|
198
|
+
void encrypt(char[64], int)
|
|
199
|
+
int execl(const char *, const char *, ...)
|
|
200
|
+
int execle(const char *, const char *, ...)
|
|
201
|
+
int execlp(const char *, const char *, ...)
|
|
202
|
+
int execv(const char *, char *[])
|
|
203
|
+
int execve(const char *, char *[], char *[])
|
|
204
|
+
int execvp(const char *, char *[])
|
|
205
|
+
void _exit(int)
|
|
206
|
+
int fchown(int, uid_t, gid_t)
|
|
207
|
+
int fchdir(int)
|
|
208
|
+
int fdatasync(int)
|
|
209
|
+
pid_t fork()
|
|
210
|
+
long fpathconf(int, int)
|
|
211
|
+
int fsync(int)
|
|
212
|
+
int ftruncate(int, off_t)
|
|
213
|
+
char *getcwd(char *, size_t)
|
|
214
|
+
gid_t getegid()
|
|
215
|
+
uid_t geteuid()
|
|
216
|
+
gid_t getgid()
|
|
217
|
+
int getgroups(int, gid_t [])
|
|
218
|
+
long gethostid()
|
|
219
|
+
int gethostname(char *, size_t)
|
|
220
|
+
char *getlogin()
|
|
221
|
+
int getlogin_r(char *, size_t)
|
|
222
|
+
int getopt(int, char * [], const char *)
|
|
223
|
+
pid_t getpgid(pid_t)
|
|
224
|
+
pid_t getpgrp()
|
|
225
|
+
pid_t getpid()
|
|
226
|
+
pid_t getppid()
|
|
227
|
+
pid_t getsid(pid_t)
|
|
228
|
+
uid_t getuid()
|
|
229
|
+
char *getwd(char *)
|
|
230
|
+
int isatty(int)
|
|
231
|
+
int lchown(const char *, uid_t, gid_t)
|
|
232
|
+
int link(const char *, const char *)
|
|
233
|
+
int lockf(int, int, off_t)
|
|
234
|
+
off_t lseek(int, off_t, int)
|
|
235
|
+
int nice(int)
|
|
236
|
+
long pathconf(char *, int)
|
|
237
|
+
int pause()
|
|
238
|
+
int pipe(int [2])
|
|
239
|
+
ssize_t pread(int, void *, size_t, off_t)
|
|
240
|
+
ssize_t pwrite(int, const void *, size_t, off_t)
|
|
241
|
+
ssize_t read(int, void *, size_t)
|
|
242
|
+
ssize_t readlink(const char *, char *, size_t)
|
|
243
|
+
int rmdir(const char *)
|
|
244
|
+
int setegid(gid_t)
|
|
245
|
+
int seteuid(uid_t)
|
|
246
|
+
int setgid(gid_t)
|
|
247
|
+
int setpgid(pid_t, pid_t)
|
|
248
|
+
pid_t setpgrp()
|
|
249
|
+
int setregid(gid_t, gid_t)
|
|
250
|
+
int setreuid(uid_t, uid_t)
|
|
251
|
+
pid_t setsid()
|
|
252
|
+
int setuid(uid_t)
|
|
253
|
+
unsigned sleep(unsigned)
|
|
254
|
+
void swab(const void *, void *, ssize_t)
|
|
255
|
+
int symlink(const char *, const char *)
|
|
256
|
+
void sync()
|
|
257
|
+
long sysconf(int)
|
|
258
|
+
pid_t tcgetpgrp(int)
|
|
259
|
+
int tcsetpgrp(int, pid_t)
|
|
260
|
+
int truncate(const char *, off_t)
|
|
261
|
+
char *ttyname(int)
|
|
262
|
+
int ttyname_r(int, char *, size_t)
|
|
263
|
+
useconds_t ualarm(useconds_t, useconds_t)
|
|
264
|
+
int unlink(const char *)
|
|
265
|
+
int usleep(useconds_t)
|
|
266
|
+
pid_t vfork()
|
|
267
|
+
ssize_t write(int, const void *, size_t)
|
|
268
|
+
char *optarg
|
|
269
|
+
int optind
|
|
270
|
+
int opterr
|
|
271
|
+
int optopt
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_wait.h.html
|
|
2
|
+
|
|
3
|
+
from posix.types cimport pid_t, id_t
|
|
4
|
+
from posix.signal cimport siginfo_t
|
|
5
|
+
from posix.resource cimport rusage
|
|
6
|
+
|
|
7
|
+
cdef extern from "<sys/wait.h>" nogil:
|
|
8
|
+
enum: WNOHANG
|
|
9
|
+
enum: WUNTRACED
|
|
10
|
+
enum: WCONTINUED
|
|
11
|
+
enum: WEXITED
|
|
12
|
+
enum: WSTOPPED
|
|
13
|
+
enum: WNOWAIT
|
|
14
|
+
|
|
15
|
+
int WEXITSTATUS(int status)
|
|
16
|
+
int WIFCONTINUED(int status)
|
|
17
|
+
int WIFEXITED(int status)
|
|
18
|
+
int WIFSIGNALED(int status)
|
|
19
|
+
int WIFSTOPPED(int status)
|
|
20
|
+
int WSTOPSIG(int status)
|
|
21
|
+
int WTERMSIG(int status)
|
|
22
|
+
|
|
23
|
+
ctypedef int idtype_t
|
|
24
|
+
enum: P_ALL # idtype_t values
|
|
25
|
+
enum: P_PID
|
|
26
|
+
enum: P_PGID
|
|
27
|
+
|
|
28
|
+
pid_t wait(int *stat_loc)
|
|
29
|
+
pid_t waitpid(pid_t pid, int *status, int options)
|
|
30
|
+
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
|
|
31
|
+
|
|
32
|
+
# wait3 was in POSIX until 2008 while wait4 was never standardized.
|
|
33
|
+
# Even so, these calls are in almost every Unix, always in sys/wait.h.
|
|
34
|
+
# Hence, posix.wait is the least surprising place to declare them for Cython.
|
|
35
|
+
# libc may require _XXX_SOURCE to be defined at C-compile time to provide them.
|
|
36
|
+
|
|
37
|
+
pid_t wait3(int *status, int options, rusage *rusage)
|
|
38
|
+
pid_t wait4(pid_t pid, int *status, int options, rusage *rusage)
|
Cython/LZSS.py
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"""
|
|
2
|
+
LZSS-like compressor.
|
|
3
|
+
|
|
4
|
+
See decompression function in StringTools.c, "DecompressString_LZSS".
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from collections import defaultdict
|
|
10
|
+
|
|
11
|
+
import cython
|
|
12
|
+
|
|
13
|
+
PRINT_STATS = False
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def lzss_compress(data: bytes) -> bytes:
|
|
17
|
+
"""
|
|
18
|
+
LZSS-like compressor.
|
|
19
|
+
|
|
20
|
+
Uses a byte triplet dict for fast match finding.
|
|
21
|
+
Outputs a bit stream with small overhead.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
data: Input bytes to compress
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
Compressed bytes (no header/metadata, decompressor must know output size)
|
|
28
|
+
"""
|
|
29
|
+
if not data:
|
|
30
|
+
return b''
|
|
31
|
+
|
|
32
|
+
input_size = len(data)
|
|
33
|
+
|
|
34
|
+
# Hash table: maps 3-byte sequences to a list of positions starting with that sequence.
|
|
35
|
+
hash_table = defaultdict(list)
|
|
36
|
+
|
|
37
|
+
def find_longest_match(pos: cython.Py_ssize_t) -> tuple[cython.Py_ssize_t, cython.Py_ssize_t]:
|
|
38
|
+
"""Find longest match in sliding window. Returns (offset, length)."""
|
|
39
|
+
if pos + 3 > input_size:
|
|
40
|
+
return (0, 0)
|
|
41
|
+
|
|
42
|
+
# 14-bit offset (max 16KiB lookback)
|
|
43
|
+
WINDOW_SIZE: cython.long = 1 << 14
|
|
44
|
+
# 8-bit length + 3, allowing up to 258 bytes.
|
|
45
|
+
MAX_MATCH: cython.long = min(255 + 3, input_size - pos)
|
|
46
|
+
|
|
47
|
+
best_len: cython.Py_ssize_t = 0
|
|
48
|
+
best_offset: cython.Py_ssize_t = 0
|
|
49
|
+
window_start: cython.Py_ssize_t = max(0, pos - WINDOW_SIZE - MAX_MATCH)
|
|
50
|
+
|
|
51
|
+
prev_pos: cython.Py_ssize_t
|
|
52
|
+
match_len: cython.long
|
|
53
|
+
max_len: cython.long
|
|
54
|
+
|
|
55
|
+
# Check all positions starting with the same 3-byte sequence.
|
|
56
|
+
key = data[pos:pos+3]
|
|
57
|
+
if key not in hash_table:
|
|
58
|
+
return (0, 0)
|
|
59
|
+
|
|
60
|
+
for prev_pos in hash_table[key]:
|
|
61
|
+
if prev_pos < window_start or prev_pos >= pos:
|
|
62
|
+
continue
|
|
63
|
+
|
|
64
|
+
# Extend match as far as possible.
|
|
65
|
+
match_len = 3
|
|
66
|
+
max_len = min(MAX_MATCH, pos - prev_pos)
|
|
67
|
+
while match_len < max_len and data[prev_pos + match_len] == data[pos + match_len]:
|
|
68
|
+
match_len += 1
|
|
69
|
+
|
|
70
|
+
# Prefer longer matches, break ties by preferring closer offsets.
|
|
71
|
+
if match_len > best_len:
|
|
72
|
+
best_len = match_len
|
|
73
|
+
best_offset = pos - prev_pos
|
|
74
|
+
|
|
75
|
+
# Lazy matching: check if next position has a better match.
|
|
76
|
+
next_key = data[pos + 1:pos + 4]
|
|
77
|
+
if 0 < best_len < MAX_MATCH and next_key in hash_table and pos + best_len + 1 < input_size:
|
|
78
|
+
next_best_len: cython.Py_ssize_t = 0
|
|
79
|
+
window_start = max(0, pos + 1 - WINDOW_SIZE - MAX_MATCH)
|
|
80
|
+
|
|
81
|
+
for prev_pos in hash_table[next_key]:
|
|
82
|
+
if prev_pos < window_start:
|
|
83
|
+
continue
|
|
84
|
+
|
|
85
|
+
match_len = 3
|
|
86
|
+
max_len = min(MAX_MATCH, pos - prev_pos, input_size - pos - 1)
|
|
87
|
+
while match_len < max_len and data[prev_pos + match_len] == data[pos + 1 + match_len]:
|
|
88
|
+
match_len += 1
|
|
89
|
+
|
|
90
|
+
if match_len > next_best_len:
|
|
91
|
+
next_best_len = match_len
|
|
92
|
+
|
|
93
|
+
# If the next position has a significantly better match, ignore this one.
|
|
94
|
+
if next_best_len > best_len + 1:
|
|
95
|
+
best_offset = best_len = 0
|
|
96
|
+
|
|
97
|
+
return (best_offset, best_len)
|
|
98
|
+
|
|
99
|
+
# Build output as bit stream.
|
|
100
|
+
output = bytearray(b'\0')
|
|
101
|
+
pos: cython.Py_ssize_t = 0
|
|
102
|
+
flags_pos: cython.Py_ssize_t = 0
|
|
103
|
+
flags: cython.int = 0xFF0000
|
|
104
|
+
|
|
105
|
+
stats = [0, 0, 0, 0]
|
|
106
|
+
|
|
107
|
+
while pos < input_size:
|
|
108
|
+
offset, length = find_longest_match(pos)
|
|
109
|
+
|
|
110
|
+
#if offset > 0:
|
|
111
|
+
# assert data[pos:pos+length] == data[pos-offset:pos-offset+length], (
|
|
112
|
+
# data[pos:pos+3], data[pos-offset:pos-offset+length])
|
|
113
|
+
|
|
114
|
+
# Update hash table for current position.
|
|
115
|
+
key = data[pos:pos+3]
|
|
116
|
+
hash_table[key].append(pos)
|
|
117
|
+
|
|
118
|
+
flag = 0
|
|
119
|
+
offset -= length # offset >= length if interesting, so remove redundancy.
|
|
120
|
+
|
|
121
|
+
# See if the match is worth it and store a single literal byte otherwise.
|
|
122
|
+
|
|
123
|
+
if length > 2 and 0 <= offset <= 0x7F:
|
|
124
|
+
# Store 7 bit offset and length as two bytes.
|
|
125
|
+
output.append(offset)
|
|
126
|
+
#assert output[-1] & 0x80 == 0
|
|
127
|
+
output.append(length - 3)
|
|
128
|
+
stats[1] += 1
|
|
129
|
+
elif length > 2 and length - 3 <= 0x1F and 0 <= offset <= 0x1FF:
|
|
130
|
+
# Store a longer 7+2 bit offset at the cost of a shorter 5 bit length.
|
|
131
|
+
output.append((offset & 0x7F) | 0x80)
|
|
132
|
+
output.append(((offset & 0x180) >> 2) | (length - 3))
|
|
133
|
+
#assert output[-1] & 0x80 == 0
|
|
134
|
+
stats[2] += 1
|
|
135
|
+
elif length > 3 and 0 <= offset < (1 << 14):
|
|
136
|
+
# Store a 7+7 bit offset with a separate 8 bit length.
|
|
137
|
+
output.append(offset & 0x7F | 0x80)
|
|
138
|
+
output.append((offset >> 7) & 0x7F | 0x80)
|
|
139
|
+
output.append(length - 3)
|
|
140
|
+
stats[3] += 1
|
|
141
|
+
else:
|
|
142
|
+
# Encode 8 bit literal + 1 bit flag.
|
|
143
|
+
flag = 1
|
|
144
|
+
length = 1
|
|
145
|
+
output.append(data[pos])
|
|
146
|
+
stats[0] += 1
|
|
147
|
+
|
|
148
|
+
pos += length
|
|
149
|
+
|
|
150
|
+
flags = (flag << 7) | (flags >> 1)
|
|
151
|
+
if flags < 0x10000:
|
|
152
|
+
output[flags_pos] = flags & 0xFF
|
|
153
|
+
flags_pos = len(output)
|
|
154
|
+
output.append(0) # next flags
|
|
155
|
+
flags = 0xFF0000
|
|
156
|
+
|
|
157
|
+
if flags_pos == len(output) - 1:
|
|
158
|
+
output.pop()
|
|
159
|
+
else:
|
|
160
|
+
# Pad flags with empty non-literals
|
|
161
|
+
# - decompressor must stop at the end of the output buffer !
|
|
162
|
+
while flags >= 0x10000:
|
|
163
|
+
flags >>= 1
|
|
164
|
+
output[flags_pos] = flags & 0xFF
|
|
165
|
+
|
|
166
|
+
if PRINT_STATS:
|
|
167
|
+
print("BYTES:", input_size, "->", len(output))
|
|
168
|
+
print("ENCODINGS:", stats)
|
|
169
|
+
|
|
170
|
+
return bytes(output)
|
|
Binary file
|
Cython/Plex/Actions.pxd
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
cdef class Action:
|
|
2
|
+
cdef perform(self, token_stream, text)
|
|
3
|
+
|
|
4
|
+
cdef class Return(Action):
|
|
5
|
+
cdef object value
|
|
6
|
+
cdef perform(self, token_stream, text)
|
|
7
|
+
|
|
8
|
+
cdef class Call(Action):
|
|
9
|
+
cdef object function
|
|
10
|
+
cdef perform(self, token_stream, text)
|
|
11
|
+
|
|
12
|
+
cdef class Method(Action):
|
|
13
|
+
cdef str name
|
|
14
|
+
cdef dict kwargs
|
|
15
|
+
|
|
16
|
+
cdef class Begin(Action):
|
|
17
|
+
cdef object state_name
|
|
18
|
+
cdef perform(self, token_stream, text)
|
|
19
|
+
|
|
20
|
+
cdef class Ignore(Action):
|
|
21
|
+
cdef perform(self, token_stream, text)
|
|
22
|
+
|
|
23
|
+
cdef class Text(Action):
|
|
24
|
+
cdef perform(self, token_stream, text)
|