[Python-Dev] PEP: Adding data-type objects to Python
Jim Jewett
jimjjewett at gmail.com
Wed Nov 1 19:17:42 CET 2006
I'm still not sure exactly what is missing from ctypes. To make this concrete:
You have an array of 500 elements meeting
struct {
int simple;
struct nested {
char name[30];
char addr[45];
int amount;
}
ctypes can describe this as
class nested(Structure):
_fields_ = [("name", c_char*30),
("addr", c_char*45),
("amount", c_long)]
class struct(Structure):
_fields_ = [("simple", c_int), ("nested", nested)]
desc = struct * 500
You have said that creating whole classes is too much overhead, and
the description should only be an instance. To me, that particular
class (arrays of 500 structs) still looks pretty lightweight. So
please clarify when it starts to be a problem.
(1) For simple types -- mapping
char name[30]; ==> ("name", c_char*30)
Do you object to using the c_char type?
Do you object to the array-of-length-30 class, instead of just having
a repeat or shape attribute?
Do you object to naming the field?
(2) For the complex types, nested and struct
Do you object to creating these two classes even once? For example,
are you expecting to need different classes for each buffer, and to
have many buffers created quickly?
Is creating that new class a royal pain, but frequent (and slow)
enough that you can't just make a call into python (or ctypes)?
(3) Given that you will describe X, is X*500 (==> a type describing
an array of 500 Xs) a royal pain in C? If so, are you expecting to
have to do it dynamically for many sizes, and quickly enough that you
can't just let ctypes do it for you?
-jJ
More information about the Python-Dev
mailing list