+2007-07-05 Zoltan Varga <vargaz@gmail.com>
+
+ * pinvoke3.cs libtest.c: Add new test for returning unicode strings from a delegate.
+
2007-06-12 Zoltan Varga <vargaz@gmail.com>
* pinvoke2.cs: Add test for instance delegates.
return 0;
}
+typedef gunichar2* (STDCALL *UnicodeStringDelegate) (gunichar2 *message);
+
+STDCALL int
+mono_test_marshal_return_unicode_string_delegate (UnicodeStringDelegate del)
+{
+ const char m[] = "abcdef";
+ gunichar2 *s2, *res;
+ glong len;
+
+ s2 = g_utf8_to_utf16 (m, -1, NULL, &len, NULL);
+
+ res = del (s2);
+
+ marshal_free (res);
+}
+
STDCALL int
mono_test_marshal_out_string_array_delegate (char **arr, int len, ArrayDelegate del)
{
return mono_test_marshal_inout_byval_class_delegate (new InOutByvalClassDelegate (delegate_test_byval_class_inout));
}
+ /*
+ * Returning unicode strings
+ */
+ [return: MarshalAs(UnmanagedType.LPWStr)]
+ public delegate string ReturnUnicodeStringDelegate([MarshalAs(UnmanagedType.LPWStr)] string message);
+
+ [DllImport ("libtest", EntryPoint="mono_test_marshal_return_unicode_string_delegate")]
+ public static extern int mono_test_marshal_return_unicode_string_delegate (ReturnUnicodeStringDelegate d);
+
+ public static String return_unicode_string_delegate (string message) {
+ return message;
+ }
+
+ public static int test_0_marshal_return_unicode_string_delegate () {
+ return mono_test_marshal_return_unicode_string_delegate (new ReturnUnicodeStringDelegate (return_unicode_string_delegate));
+ }
+
/*
* Returning string arrays
*/