On 4/30/2012 16:17, mwil...@the-wire.com wrote:
Ben Finney wrote:
[ ... ] Even worse is the
penchant for ‘foo .bar()’, the space obscures the fact that this is
attribute access.
I like the style sometimes when it helps to break the significantly different
parts out of
boilerplate:
libbnem. BN_add .argtypes = [ctypes.POINTER (BignumType), ctypes.POINTER
(BignumType),
ctypes.POINTER (BignumType)]
libbnem. BN_add .restype = ctypes.c_int
libbnem. BN_add_word .argtypes = [ctypes.POINTER (BignumType),
ctypes.c_ulong]
libbnem. BN_add_word .restype = ctypes.c_int
libbnem. BN_sub .argtypes = [ctypes.POINTER (BignumType), ctypes.POINTER
(BignumType),
ctypes.POINTER (BignumType)]
libbnem. BN_sub .restype = ctypes.c_int
libbnem. BN_sub_word .argtypes = [ctypes.POINTER (BignumType),
ctypes.c_ulong]
libbnem. BN_sub_word .restype = ctypes.c_int
(there were a lot more in the original program where those came from.) Another
take-away
might be don't use boilerplate, but in the situation I didn't see a simple way
to avoid it.
Mel.
BignumTypePtr = ctypes.POINTER(BignumType)
for op, op_word in ((libbnem.BN_add, libbnem.BN_add_word),
(libbnem.BN_sub, libbnem.BN_sub_word)):
op.argtypes = [BignumTypePtr] * 3
op_word.argtypes = [BignumTypePtr, ctypes.c_ulong]
op.restype = op_word.restype = ctypes.c_int
Kiuhnm
--
http://mail.python.org/mailman/listinfo/python-list