public static void MarshalIn(System.IntPtr ptr, string[] arg) { Array_String_Struct obj = new Array_String_Struct(); obj._owner = 0x972f3813; obj.length = arg.Length; { obj.ptr = ptr + Array_String_Helper.NativeSize; System.IntPtr[] vector = new System.IntPtr[arg.Length]; for (int i = 0; i < arg.Length; i++) { vector[i] = XobotOS.Runtime.MarshalGlue.String_Helper.ManagedToNative(arg[i]); } Marshal.Copy(vector, 0, obj.ptr, arg.Length); } Marshal.StructureToPtr(obj, ptr, false); }
public static void FreeManagedPtr_inner(System.IntPtr ptr) { Array_String_Struct obj = (Array_String_Struct)Marshal.PtrToStructure(ptr, typeof( Array_String_Struct)); if (obj._owner != 0x972f3813) { throw new System.InvalidOperationException(); } { System.IntPtr[] vector = new System.IntPtr[obj.length]; Marshal.Copy(obj.ptr, vector, 0, obj.length); for (int i = 0; i < obj.length; i++) { XobotOS.Runtime.MarshalGlue.String_Helper.FreeManagedPtr(vector[i]); } } }
public static void MarshalOut(System.IntPtr ptr, string[] arg) { Array_String_Struct obj = (Array_String_Struct)Marshal.PtrToStructure(ptr, typeof( Array_String_Struct)); if (obj.length != arg.Length) { throw new System.InvalidOperationException(); } { System.IntPtr addr = obj.ptr; for (int i = 0; i < obj.length; i++, addr += XobotOS.Runtime.MarshalGlue.String_Helper .NativeSize) { XobotOS.Runtime.MarshalGlue.String_Helper.MarshalOut(addr, arg[i]); } } }
public static string[] NativeToManaged(System.IntPtr ptr) { if (ptr == System.IntPtr.Zero) { return(null); } Array_String_Struct obj = (Array_String_Struct)Marshal.PtrToStructure(ptr, typeof( Array_String_Struct)); string[] arg = new string[obj.length]; if (obj.length != arg.Length) { throw new System.InvalidOperationException(); } { System.IntPtr[] vector = new System.IntPtr[obj.length]; Marshal.Copy(obj.ptr, vector, 0, obj.length); for (int i = 0; i < obj.length; i++) { arg[i] = XobotOS.Runtime.MarshalGlue.String_Helper.NativeToManaged(vector[i]); } } return(arg); }