Re: ctypes details was: Re: syntax for code blocks

2012-04-30 Thread Kiuhnm

On 4/30/2012 17:42, mwil...@the-wire.com wrote:

On 4/30/2012 17:02, Kiuhnm wrote:

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


On second thought, BignumPtrType is probably the right name.


(Way off the original topic, aren't we?)  I haven't looked inside ctypes,
and don't know what kind of thing ctypes.POINTER actually constructs.  I was
worried about falling into a [[a]]*3 kind of error -- unwittingly sharing a
mutable object.  I guess I really should look.


Better off topic than uninterestingly in topic, IMHO.

Regarding ctypes, try this to convince yourself that there's no problem 
in reusing BignumPtrType:

from ctypes import POINTER, c_int
assert POINTER(c_int) is POINTER(c_int)

Kiuhnm
--
http://mail.python.org/mailman/listinfo/python-list


Re: ctypes details was: Re: syntax for code blocks

2012-04-30 Thread mwilson
Kiuhnm wrote:
 Regarding ctypes, try this to convince yourself that there's no problem
 in reusing BignumPtrType:
  from ctypes import POINTER, c_int
  assert POINTER(c_int) is POINTER(c_int)

print ('POINTERs are shareable:', ctypes.POINTER (BignumType) is ctypes.POINTER 
(BignumType))
[ ... ]
('POINTERs are shareable:', True)

Thanks.
Mel.

-- 
http://mail.python.org/mailman/listinfo/python-list