public static void GiveArray(SizedDoubleArray array, double[] managedArray) { if (managedArray.Length == array.Size) { Marshal.Copy(managedArray, 0, array.Data, managedArray.Length); } else { throw new IndexOutOfRangeException("array size mismatch: managedArray.Length = " + managedArray.Length + ", array.Size = " + array.Size); } }
// Helpers public static double[] TakeArray(SizedDoubleArray array) { double[] managed_array = new double[array.Size]; Marshal.Copy(array.Data, managed_array, 0, (int)array.Size); return managed_array; }
public static extern void FreeArray(SizedDoubleArray array);