[IronPython] Convert between python array and .NET Array

Marcel marcel.vandendungen at gmail.com
Wed Jun 16 06:51:36 CEST 2010


Ok, it's clear now. Thanks for the great support!

-- Marcel

On Jun 15, 9:21 pm, Dino Viehland <di... at microsoft.com> wrote:
> Marcel wrote:
> > Thanks Dino, the ctypes.memmove does work!
>
> > I wasn't aware that ctypes could be used in IronPython. Do they
> > marshal to unmanaged code under the hood?
>
> There's not really any unmanaged code on *our* side involved at all.  It
> all turns into .NET's support for interop.  So we'll generate calli calls
> w/ the correct signature.  And then all the memory access we do is through
> the Marshal APIs.  I actually didn't even need to flip the /unsafe compiler
> flag in order to implement it all :)  
>
>
>
> > Let me know if you want me to file a bug against the Marshal.Copy
> > overload behavior.
>
> I actually don't think this is a bug.  The problem here is that you either
> have a pointer (as an int but it could trivially be turned into an IntPtr) or
> an IronPython array object and then an IntPtr.  For the 2 IntPtr cases there's
> no overloads on Marshal and I don't believe anywhere in .NET.  For ctypes to
> implement memmove we had to P/Invoke.  And for the array case you don't have
> a .NET array.
>
> If we exposed the underlying .NET array then you could use Marshal.Copy.  But
> I'm reluctant to do that because we might want to switch to allocating
> unmanaged memory for the array in the future.  That'll work better w/ ctypes
> and calls to buffer_info() - currently need to pin the array for
> an unknown amount of time.  That's another reason to allocate the memory via
> ctypes.
>
> _______________________________________________
> Users mailing list
> Us... at lists.ironpython.comhttp://lists.ironpython.com/listinfo.cgi/users-ironpython.com



More information about the Ironpython-users mailing list