Generating data types automatically

Steven Bethard steven.bethard at gmail.com
Sat Mar 12 19:26:05 CET 2005


Torsten Bronger wrote:
> Okay this works:
> 
> def generate_type_dublett(visa_type, ctypes_type):
>     return visa_type + "=" + ctypes_type + ";" + \
> 	"ViP" + visa_type[2:] + "=POINTER(" + visa_type + ")"
> 
> def generate_type_triplett(visa_type, ctypes_type):
>     return generate_type_dublett(visa_type, ctypes_type) + ";" + \
> 	"ViA" + visa_type[2:] + "=" + "ViP" + visa_type[2:]
> 
> exec generate_type_triplett("ViUInt32",  "c_ulong"  )
> ...

Exec is nasty.  Can you create a dict and use an update to globals instead?

py> def get_types(visa_type_name, ctypes_type):
...     pointer = ctypes.POINTER(ctypes_type)
...     return {'Vi%s' % visa_type_name:ctypes_type,
...             'ViP%s' % visa_type_name:pointer,
...             'ViA%s' % visa_type_name:pointer}
...
py> globals().update(get_types("UInt32", ctypes.c_ulong))
py> ViUInt32
<class 'ctypes.c_ulong'>
py> ViPUInt32
<class 'ctypes.LP_c_ulong'>
py> ViAUInt32
<class 'ctypes.LP_c_ulong'>

STeVe



More information about the Python-list mailing list