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

Reply via email to