It really works! Thanks!<br><br><div class="gmail_quote">On Thu, Jan 8, 2009 at 5:01 PM, John Arbash Meinel <span dir="ltr"><<a href="mailto:john@arbash-meinel.com">john@arbash-meinel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<div><div></div><div class="Wj3C7c"><br>
Anand Patil wrote:<br>
> Hi all,<br>
><br>
> I'd like to make an int* pointer stored in one Pyrex object available to<br>
> another:<br>
><br>
> cdef class NumberHolder:<br>
> cdef int number<br>
> def __init__(self):<br>
> self.number = 0<br>
><br>
> cdef class PointerHolder:<br>
> cdef int* my_pointer<br>
> def __init__(self, number_holder):<br>
> my_pointer = number_holder.number<br>
><br>
> If I try it this way, of course, I get errors like 'NumberHolder' object<br>
> has no attribute 'number'. I'm currently creating a NumPy array in<br>
> NumberHolder and using PyArray_DATA from PointerHolder, but it seems<br>
> excessive and possibly dangerous, since PointerHolder may change<br>
> *my_pointer later. What's the best way to do this?<br>
><br>
> Thanks,<br>
> Anand<br>
><br>
<br>
</div></div>I believe you can do:<br>
<div class="Ih2E3d"><br>
<br>
cdef class PointerHolder:<br>
cdef int* my_pointer<br>
def __init__(self, number_holder):<br>
</div> cdef NumberHolder real_holder<br>
real_holder = number_holder<br>
self.my_pointer = &real_holder.number<br>
<br>
You need to indicate to pyrex that number_holder is really a<br>
NumberHolder object, and not just a generic python object. Further, I'm<br>
pretty sure the & is necessary, since you want to point to the int, and<br>
not point at whatever the int points at.<br>
<br>
John<br>
=:-><br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v1.4.9 (Cygwin)<br>
Comment: Using GnuPG with Mozilla - <a href="http://enigmail.mozdev.org" target="_blank">http://enigmail.mozdev.org</a><br>
<br>
iEYEARECAAYFAklmMXUACgkQJdeBCYSNAAO2ygCfSsARbUIzUJODVy3moKdFCCJ2<br>
638AoKAyWfJ8vMo2l1oRUUgV1x8hbQEM<br>
=owSx<br>
-----END PGP SIGNATURE-----<br>
</blockquote></div><br>