Example #1
0
 public static T[] CopyArray <T>(CallResultWrap r)
 {
     T[] ar = new T[r.element_count];
     for (int i = 0; i < r.element_count; i++)
     {
         IntPtr ins = new IntPtr(r.value.ToInt64() + i * r.element_size);
         ar[i] = Marshal.PtrToStructure <T>(ins);
     }
     return(ar);
 }
Example #2
0
                public static T[] CopyPointerArray <T>(CallResultWrap r)
                {
                    T[] ar = new T[r.element_count];

                    if (r.element_count == 0)
                    {
                        return(ar);
                    }

                    for (int i = 0; i < r.element_count; i++)
                    {
                        // memory :
                        //    T* data[]
                        //    T** p1 = &data[i];
                        //    p2 = *p1
                        IntPtr p1 = new IntPtr(r.value.ToInt64() + i * IntPtr.Size);//r.element_size);
                        IntPtr p2 = Marshal.PtrToStructure <IntPtr>(p1);
                        ar[i] = Marshal.PtrToStructure <T>(p2);
                    }
                    return(ar);
                }