Skip to content

Commit ef1dac6

Browse files
committed
more fixes and change of C library detection
1 parent 8f0c8a2 commit ef1dac6

File tree

12 files changed

+192
-249
lines changed

12 files changed

+192
-249
lines changed

gen.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,7 @@ def main():
400400
print("No argtypes...", func.__name__)
401401
continue
402402

403-
fparams = [
404-
f"{param}: {map_type(typ)}" for param, typ in zip(*zip_params)]
403+
fparams = [f"{param}: {map_type(typ)}" for param, typ in zip(*zip_params)]
405404
restype: type["ctypes._CData"] = func.restype # type: ignore
406405

407406
name_split = k.split("_")

src/pointers/__init__.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,37 @@
77
from ._utils import force_set_attr
88
from .api_bindings import *
99
from .base_pointers import (
10-
BaseAllocatedPointer, BaseCPointer, BaseObjectPointer, BasePointer,
11-
BasicPointer, Dereferencable, IterDereferencable, Sized, Typed
10+
BaseAllocatedPointer,
11+
BaseCPointer,
12+
BaseObjectPointer,
13+
BasePointer,
14+
BasicPointer,
15+
Dereferencable,
16+
IterDereferencable,
17+
Sized,
18+
Typed,
1219
)
1320
from .bindings import *
1421
from .c_pointer import (
15-
TypedCPointer, VoidPointer, array, cast, to_c_ptr, to_struct_ptr, to_voidp
22+
TypedCPointer,
23+
VoidPointer,
24+
array,
25+
cast,
26+
to_c_ptr,
27+
to_struct_ptr,
28+
to_voidp,
1629
)
1730
from .calloc import AllocatedArrayPointer, calloc
1831
from .custom_binding import binding, binds
1932
from .decay import decay, decay_annotated, decay_wrapped
2033
from .exceptions import (
21-
AllocationError, DereferenceError, FreedMemoryError,
22-
InvalidBindingParameter, InvalidSizeError, NullPointerError,
23-
SegmentViolation
34+
AllocationError,
35+
DereferenceError,
36+
FreedMemoryError,
37+
InvalidBindingParameter,
38+
InvalidSizeError,
39+
NullPointerError,
40+
SegmentViolation,
2441
)
2542
from .magic import _
2643
from .malloc import AllocatedPointer, free, malloc, realloc

src/pointers/_cstd.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import ctypes
22
from ctypes.util import find_library
3-
from platform import system
4-
5-
platforms = {
6-
"linux": "libc.so.6",
7-
"darwin": "libc.dylib",
8-
"windows": "msvcrt",
9-
}
3+
from sys import platform
104

115
__all__ = (
126
"c_malloc",
@@ -20,7 +14,16 @@
2014
"ldiv_t",
2115
)
2216

23-
dll = ctypes.CDLL(platforms.get(system().lower()) or find_library("c"))
17+
_c_library_name: str
18+
19+
if platform in ("win32", "cygwin"):
20+
_c_library_name = "msvcrt"
21+
elif platform == "darwin":
22+
_c_library_name = "libc.dylib"
23+
else:
24+
_c_library_name = find_library("c") or "libc.so.6"
25+
26+
dll = ctypes.CDLL(_c_library_name)
2427

2528

2629
class tm(ctypes.Structure):

src/pointers/_pyapi.py

Lines changed: 25 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,7 @@ class PyCodeObject(ctypes.Structure):
399399
),
400400
)
401401
# PyObject* PyCodec_BackslashReplaceErrors(PyObject* exc)
402-
_register("PyCodec_BackslashReplaceErrors",
403-
ctypes.py_object, (ctypes.py_object,))
402+
_register("PyCodec_BackslashReplaceErrors", ctypes.py_object, (ctypes.py_object,))
404403
# PyObject* PyCodec_Decode(PyObject* object, const char* encoding, const char* errors)
405404
_register(
406405
"PyCodec_Decode",
@@ -499,8 +498,7 @@ class PyCodeObject(ctypes.Structure):
499498
minver="3.10",
500499
)
501500
# PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject* exc)
502-
_register("PyCodec_XMLCharRefReplaceErrors",
503-
ctypes.py_object, (ctypes.py_object,))
501+
_register("PyCodec_XMLCharRefReplaceErrors", ctypes.py_object, (ctypes.py_object,))
504502
# PyObject* PyComplex_FromDoubles(double real, double imag)
505503
_register(
506504
"PyComplex_FromDoubles",
@@ -515,17 +513,13 @@ class PyCodeObject(ctypes.Structure):
515513
# double PyComplex_RealAsDouble(PyObject* op)
516514
_register("PyComplex_RealAsDouble", ctypes.c_double, (ctypes.py_object,))
517515
# PyObject* PyDescr_NewClassMethod(PyTypeObject* type, PyMethodDef* method)
518-
_register("PyDescr_NewClassMethod", ctypes.py_object,
519-
(ctypes.POINTER(PyTypeObject),))
516+
_register("PyDescr_NewClassMethod", ctypes.py_object, (ctypes.POINTER(PyTypeObject),))
520517
# PyObject* PyDescr_NewGetSet(PyTypeObject* type, struct PyGetSetDef* getset)
521-
_register("PyDescr_NewGetSet", ctypes.py_object,
522-
(ctypes.POINTER(PyTypeObject),))
518+
_register("PyDescr_NewGetSet", ctypes.py_object, (ctypes.POINTER(PyTypeObject),))
523519
# PyObject* PyDescr_NewMember(PyTypeObject* type, struct PyMemberDef* meth)
524-
_register("PyDescr_NewMember", ctypes.py_object,
525-
(ctypes.POINTER(PyTypeObject),))
520+
_register("PyDescr_NewMember", ctypes.py_object, (ctypes.POINTER(PyTypeObject),))
526521
# PyObject* PyDescr_NewMethod(PyTypeObject* type, struct PyMethodDef* meth)
527-
_register("PyDescr_NewMethod", ctypes.py_object,
528-
(ctypes.POINTER(PyTypeObject),))
522+
_register("PyDescr_NewMethod", ctypes.py_object, (ctypes.POINTER(PyTypeObject),))
529523
# PyObject* PyDictProxy_New(PyObject* mapping)
530524
_register("PyDictProxy_New", ctypes.py_object, (ctypes.py_object,))
531525
# void PyDict_Clear(PyObject* p)
@@ -1009,8 +1003,7 @@ class PyCodeObject(ctypes.Structure):
10091003
),
10101004
)
10111005
# PyObject* PyEval_EvalFrame(PyFrameObject* f)
1012-
_register("PyEval_EvalFrame", ctypes.py_object,
1013-
(ctypes.POINTER(PyFrameObject),))
1006+
_register("PyEval_EvalFrame", ctypes.py_object, (ctypes.POINTER(PyFrameObject),))
10141007
# PyObject* PyEval_EvalFrameEx(PyFrameObject* f, int throwflag)
10151008
_register(
10161009
"PyEval_EvalFrameEx",
@@ -1140,8 +1133,7 @@ class PyCodeObject(ctypes.Structure):
11401133
minver="3.9",
11411134
)
11421135
# int PyFrame_GetLineNumber(PyFrameObject* frame)
1143-
_register("PyFrame_GetLineNumber", ctypes.c_int,
1144-
(ctypes.POINTER(PyFrameObject),))
1136+
_register("PyFrame_GetLineNumber", ctypes.c_int, (ctypes.POINTER(PyFrameObject),))
11451137
# PyObject* PyFrozenSet_New(PyObject* iterable)
11461138
_register("PyFrozenSet_New", ctypes.py_object, (ctypes.py_object,))
11471139
# Py_ssize_t PyGC_Collect(void)
@@ -1288,11 +1280,9 @@ class PyCodeObject(ctypes.Structure):
12881280
# int PyIndex_Check(PyObject* o)
12891281
_register("PyIndex_Check", ctypes.c_int, (ctypes.py_object,))
12901282
# void PyInterpreterState_Clear(PyInterpreterState* interp)
1291-
_register("PyInterpreterState_Clear", None,
1292-
(ctypes.POINTER(PyInterpreterState),))
1283+
_register("PyInterpreterState_Clear", None, (ctypes.POINTER(PyInterpreterState),))
12931284
# void PyInterpreterState_Delete(PyInterpreterState* interp)
1294-
_register("PyInterpreterState_Delete", None,
1295-
(ctypes.POINTER(PyInterpreterState),))
1285+
_register("PyInterpreterState_Delete", None, (ctypes.POINTER(PyInterpreterState),))
12961286
# PyInterpreterState* PyInterpreterState_Get(void)
12971287
_register(
12981288
"PyInterpreterState_Get",
@@ -1423,8 +1413,7 @@ class PyCodeObject(ctypes.Structure):
14231413
# unsigned long long PyLong_AsUnsignedLongLong(PyObject* pylong)
14241414
_register("PyLong_AsUnsignedLongLong", ctypes.c_ulonglong, (ctypes.py_object,))
14251415
# unsigned long long PyLong_AsUnsignedLongLongMask(PyObject* obj)
1426-
_register("PyLong_AsUnsignedLongLongMask",
1427-
ctypes.c_ulonglong, (ctypes.py_object,))
1416+
_register("PyLong_AsUnsignedLongLongMask", ctypes.c_ulonglong, (ctypes.py_object,))
14281417
# unsigned long PyLong_AsUnsignedLongMask(PyObject* obj)
14291418
_register("PyLong_AsUnsignedLongMask", ctypes.c_ulong, (ctypes.py_object,))
14301419
# void* PyLong_AsVoidPtr(PyObject* pylong)
@@ -1452,8 +1441,7 @@ class PyCodeObject(ctypes.Structure):
14521441
# PyObject* PyLong_FromUnsignedLong(unsigned long v)
14531442
_register("PyLong_FromUnsignedLong", ctypes.py_object, (ctypes.c_ulong,))
14541443
# PyObject* PyLong_FromUnsignedLongLong(unsigned long long v)
1455-
_register("PyLong_FromUnsignedLongLong",
1456-
ctypes.py_object, (ctypes.c_ulonglong,))
1444+
_register("PyLong_FromUnsignedLongLong", ctypes.py_object, (ctypes.c_ulonglong,))
14571445
# PyObject* PyLong_FromVoidPtr(void* p)
14581446
_register("PyLong_FromVoidPtr", ctypes.py_object, (ctypes.c_void_p,))
14591447
# int PyMapping_Check(PyObject* o)
@@ -1529,8 +1517,7 @@ class PyCodeObject(ctypes.Structure):
15291517
),
15301518
)
15311519
# PyObject* PyMemoryView_FromBuffer(const Py_buffer* view)
1532-
_register("PyMemoryView_FromBuffer", ctypes.py_object,
1533-
(ctypes.POINTER(Py_buffer),))
1520+
_register("PyMemoryView_FromBuffer", ctypes.py_object, (ctypes.POINTER(Py_buffer),))
15341521
# PyObject* PyMemoryView_FromMemory(char* mem, Py_ssize_t size, int flags)
15351522
_register(
15361523
"PyMemoryView_FromMemory",
@@ -2647,8 +2634,7 @@ class PyCodeObject(ctypes.Structure):
26472634
minver="3.3",
26482635
)
26492636
# PyObject* PyState_FindModule(PyModuleDef* def)
2650-
_register("PyState_FindModule", ctypes.py_object,
2651-
(ctypes.POINTER(PyModuleDef),))
2637+
_register("PyState_FindModule", ctypes.py_object, (ctypes.POINTER(PyModuleDef),))
26522638
# int PyState_RemoveModule(PyModuleDef* def)
26532639
_register(
26542640
"PyState_RemoveModule",
@@ -2666,8 +2652,7 @@ class PyCodeObject(ctypes.Structure):
26662652
),
26672653
)
26682654
# PyObject* PyStructSequence_New(PyTypeObject* type)
2669-
_register("PyStructSequence_New", ctypes.py_object,
2670-
(ctypes.POINTER(PyTypeObject),))
2655+
_register("PyStructSequence_New", ctypes.py_object, (ctypes.POINTER(PyTypeObject),))
26712656
# PyTypeObject* PyStructSequence_NewType(PyStructSequence_Desc* desc)
26722657
_register("PyStructSequence_NewType", ctypes.POINTER(PyTypeObject), ())
26732658
# void PyStructSequence_SetItem(PyObject* p, Py_ssize_t pos, PyObject* o)
@@ -2990,8 +2975,7 @@ class PyCodeObject(ctypes.Structure):
29902975
),
29912976
)
29922977
# PyObject* PyUnicodeDecodeError_GetEncoding(PyObject* exc)
2993-
_register("PyUnicodeDecodeError_GetEncoding",
2994-
ctypes.py_object, (ctypes.py_object,))
2978+
_register("PyUnicodeDecodeError_GetEncoding", ctypes.py_object, (ctypes.py_object,))
29952979
# int PyUnicodeDecodeError_GetEnd(PyObject* exc, Py_ssize_t* end)
29962980
_register(
29972981
"PyUnicodeDecodeError_GetEnd",
@@ -3002,11 +2986,9 @@ class PyCodeObject(ctypes.Structure):
30022986
),
30032987
)
30042988
# PyObject* PyUnicodeDecodeError_GetObject(PyObject* exc)
3005-
_register("PyUnicodeDecodeError_GetObject",
3006-
ctypes.py_object, (ctypes.py_object,))
2989+
_register("PyUnicodeDecodeError_GetObject", ctypes.py_object, (ctypes.py_object,))
30072990
# PyObject* PyUnicodeDecodeError_GetReason(PyObject* exc)
3008-
_register("PyUnicodeDecodeError_GetReason",
3009-
ctypes.py_object, (ctypes.py_object,))
2991+
_register("PyUnicodeDecodeError_GetReason", ctypes.py_object, (ctypes.py_object,))
30102992
# int PyUnicodeDecodeError_GetStart(PyObject* exc, Py_ssize_t* start)
30112993
_register(
30122994
"PyUnicodeDecodeError_GetStart",
@@ -3044,8 +3026,7 @@ class PyCodeObject(ctypes.Structure):
30443026
),
30453027
)
30463028
# PyObject* PyUnicodeEncodeError_GetEncoding(PyObject* exc)
3047-
_register("PyUnicodeEncodeError_GetEncoding",
3048-
ctypes.py_object, (ctypes.py_object,))
3029+
_register("PyUnicodeEncodeError_GetEncoding", ctypes.py_object, (ctypes.py_object,))
30493030
# int PyUnicodeEncodeError_GetEnd(PyObject* exc, Py_ssize_t* end)
30503031
_register(
30513032
"PyUnicodeEncodeError_GetEnd",
@@ -3056,11 +3037,9 @@ class PyCodeObject(ctypes.Structure):
30563037
),
30573038
)
30583039
# PyObject* PyUnicodeEncodeError_GetObject(PyObject* exc)
3059-
_register("PyUnicodeEncodeError_GetObject",
3060-
ctypes.py_object, (ctypes.py_object,))
3040+
_register("PyUnicodeEncodeError_GetObject", ctypes.py_object, (ctypes.py_object,))
30613041
# PyObject* PyUnicodeEncodeError_GetReason(PyObject* exc)
3062-
_register("PyUnicodeEncodeError_GetReason",
3063-
ctypes.py_object, (ctypes.py_object,))
3042+
_register("PyUnicodeEncodeError_GetReason", ctypes.py_object, (ctypes.py_object,))
30643043
# int PyUnicodeEncodeError_GetStart(PyObject* exc, Py_ssize_t* start)
30653044
_register(
30663045
"PyUnicodeEncodeError_GetStart",
@@ -3107,11 +3086,9 @@ class PyCodeObject(ctypes.Structure):
31073086
),
31083087
)
31093088
# PyObject* PyUnicodeTranslateError_GetObject(PyObject* exc)
3110-
_register("PyUnicodeTranslateError_GetObject",
3111-
ctypes.py_object, (ctypes.py_object,))
3089+
_register("PyUnicodeTranslateError_GetObject", ctypes.py_object, (ctypes.py_object,))
31123090
# PyObject* PyUnicodeTranslateError_GetReason(PyObject* exc)
3113-
_register("PyUnicodeTranslateError_GetReason",
3114-
ctypes.py_object, (ctypes.py_object,))
3091+
_register("PyUnicodeTranslateError_GetReason", ctypes.py_object, (ctypes.py_object,))
31153092
# int PyUnicodeTranslateError_GetStart(PyObject* exc, Py_ssize_t* start)
31163093
_register(
31173094
"PyUnicodeTranslateError_GetStart",
@@ -3174,8 +3151,7 @@ class PyCodeObject(ctypes.Structure):
31743151
# PyObject* PyUnicode_AsMBCSString(PyObject* unicode)
31753152
_register("PyUnicode_AsMBCSString", ctypes.py_object, (ctypes.py_object,))
31763153
# PyObject* PyUnicode_AsRawUnicodeEscapeString(PyObject* unicode)
3177-
_register("PyUnicode_AsRawUnicodeEscapeString",
3178-
ctypes.py_object, (ctypes.py_object,))
3154+
_register("PyUnicode_AsRawUnicodeEscapeString", ctypes.py_object, (ctypes.py_object,))
31793155
# Py_UCS4* PyUnicode_AsUCS4(PyObject* u, Py_UCS4* buffer, Py_ssize_t buflen, int copy_null)
31803156
_register(
31813157
"PyUnicode_AsUCS4",
@@ -3212,8 +3188,7 @@ class PyCodeObject(ctypes.Structure):
32123188
# PyObject* PyUnicode_AsUTF8String(PyObject* unicode)
32133189
_register("PyUnicode_AsUTF8String", ctypes.py_object, (ctypes.py_object,))
32143190
# PyObject* PyUnicode_AsUnicodeEscapeString(PyObject* unicode)
3215-
_register("PyUnicode_AsUnicodeEscapeString",
3216-
ctypes.py_object, (ctypes.py_object,))
3191+
_register("PyUnicode_AsUnicodeEscapeString", ctypes.py_object, (ctypes.py_object,))
32173192
# Py_ssize_t PyUnicode_AsWideChar(PyObject* unicode, wchar_t* w, Py_ssize_t size)
32183193
_register(
32193194
"PyUnicode_AsWideChar",

0 commit comments

Comments
 (0)