The DoubleArrayType class can handle a Python situation that has various forms such as array, numy array, list, tuple. This class defines a single
from_param () method. This method takes one parameter and narrows it down to a compatible ctypes object (in
ctypes.c_double a pointer to
In the code below, the parameter type name is extracted and used to send to a more specialized method. For example, if a list is passed, a name like — it is a list, and the
from_list () method is
from_list () . For lists and tuples, the
from_list() method converts to a ctypes array object.
Code # 1:
a: "__ main __. C_double_Array_3 object at 0x10069cd40" a : 1.0 a : 2.0 a : 3.0
from_array() method retrieves the base memory pointer and converts it into a ctypes pointer object for array objects.
Code # 2:
arr: array (’d’, [1.0, 2.0, 3.0]) ptr: 4298687200 "__ main__. LP_c_double object at 0x10069cd40"
from_ndarray() function shows the comparable conversion code for numeric arrays. By defining the class DoubleArrayType and using it in a signature like
avg () , the function can take various input, similar to arrays.
Code # 3:
Average of list: 2.0 Average of tuple: 2.0 Average of array: 2.0 Average of numpy array: 2.0
To work with a simple C structure, simply define a class that contains the appropriate fields and types, as shown in the code below. Once defined, you can use the class in type signatures, as well as in code that needs to instantiate and work with structs.
Code # 4:
pt1 x: 1.0 pt1 y: 2.0 Distance between pt1 and pt2: 4.242640687119285