1515 "make_py" ,
1616)
1717
18+ _C_TYPES : Dict [type , Type ["ctypes._CData" ]] = {
19+ bytes : ctypes .c_char_p ,
20+ str : ctypes .c_wchar_p ,
21+ int : ctypes .c_int ,
22+ float : ctypes .c_float ,
23+ bool : ctypes .c_bool ,
24+ }
25+
26+ _PY_TYPES : Dict [Type ["ctypes._CData" ], type ] = {
27+ ctypes .c_bool : bool ,
28+ ctypes .c_char : bytes ,
29+ ctypes .c_wchar : str ,
30+ ctypes .c_ubyte : int ,
31+ ctypes .c_short : int ,
32+ ctypes .c_int : int ,
33+ ctypes .c_uint : int ,
34+ ctypes .c_long : int ,
35+ ctypes .c_ulong : int ,
36+ ctypes .c_longlong : int ,
37+ ctypes .c_ulonglong : int ,
38+ ctypes .c_size_t : int ,
39+ ctypes .c_ssize_t : int ,
40+ ctypes .c_float : float ,
41+ ctypes .c_double : float ,
42+ ctypes .c_longdouble : float ,
43+ ctypes .c_char_p : bytes ,
44+ ctypes .c_wchar_p : str ,
45+ ctypes .c_void_p : int ,
46+ }
47+
1848
1949def move_to_mem (
2050 ptr : "ctypes._PointerLike" ,
@@ -52,15 +82,7 @@ def map_type(data: Any) -> "ctypes._CData":
5282
5383def get_mapped (typ : Any ):
5484 """Get the C mapped value of the given type."""
55- types : Dict [type , Type ["ctypes._CData" ]] = {
56- bytes : ctypes .c_char_p ,
57- str : ctypes .c_wchar_p ,
58- int : ctypes .c_int ,
59- float : ctypes .c_float ,
60- bool : ctypes .c_bool ,
61- }
62-
63- res = types .get (typ )
85+ res = _C_TYPES .get (typ )
6486
6587 if not res :
6688 raise ValueError (f'"{ typ .__name__ } " is not mappable to a c type' )
@@ -86,30 +108,8 @@ def get_py(
86108 if data .__name__ .startswith ("LP_" ):
87109 return BaseCPointer
88110
89- types : Dict [Type ["ctypes._CData" ], type ] = {
90- ctypes .c_bool : bool ,
91- ctypes .c_char : bytes ,
92- ctypes .c_wchar : str ,
93- ctypes .c_ubyte : int ,
94- ctypes .c_short : int ,
95- ctypes .c_int : int ,
96- ctypes .c_uint : int ,
97- ctypes .c_long : int ,
98- ctypes .c_ulong : int ,
99- ctypes .c_longlong : int ,
100- ctypes .c_ulonglong : int ,
101- ctypes .c_size_t : int ,
102- ctypes .c_ssize_t : int ,
103- ctypes .c_float : float ,
104- ctypes .c_double : float ,
105- ctypes .c_longdouble : float ,
106- ctypes .c_char_p : bytes ,
107- ctypes .c_wchar_p : str ,
108- ctypes .c_void_p : int ,
109- }
110-
111111 try :
112- return types [data ]
112+ return _PY_TYPES [data ]
113113 except KeyError as e :
114114 raise ValueError (
115115 f"{ data } is not a valid ctypes type" ,
0 commit comments