* Mono Project (http://www.mono-project.com)
*
* Copyright (C) 2005-2008 Novell, Inc. (http://www.novell.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#include <string.h>
MonoMethodDesc *result;
char *class_name, *class_nspace, *method_name, *use_args, *end;
int use_namespace;
+ int generic_delim_stack;
class_nspace = g_strdup (name);
use_args = strchr (class_nspace, '(');
end = use_args;
if (*end)
result->num_args = 1;
+ generic_delim_stack = 0;
while (*end) {
- if (*end == ',')
+ if (*end == '<')
+ generic_delim_stack++;
+ else if (*end == '>')
+ generic_delim_stack--;
+
+ if (*end == ',' && generic_delim_stack == 0)
result->num_args++;
++end;
}
gboolean name_match;
name_match = strcmp (desc->name, method->name) == 0;
-#ifndef _EGLIB_MAJOR
- if (!name_match && desc->name_glob)
- name_match = g_pattern_match_simple (desc->name, method->name);
-#endif
if (!name_match)
return FALSE;
if (!desc->args)
void
mono_object_describe (MonoObject *obj)
{
+ MonoError error;
MonoClass* klass;
const char* sep;
if (!obj) {
}
klass = mono_object_class (obj);
if (klass == mono_defaults.string_class) {
- char *utf8 = mono_string_to_utf8 ((MonoString*)obj);
- if (strlen (utf8) > 60) {
+ char *utf8 = mono_string_to_utf8_checked ((MonoString*)obj, &error);
+ mono_error_cleanup (&error); /* FIXME don't swallow the error */
+ if (utf8 && strlen (utf8) > 60) {
utf8 [57] = '.';
utf8 [58] = '.';
utf8 [59] = '.';
utf8 [60] = 0;
}
- g_print ("String at %p, length: %d, '%s'\n", obj, mono_string_length ((MonoString*) obj), utf8);
+ if (utf8) {
+ g_print ("String at %p, length: %d, '%s'\n", obj, mono_string_length ((MonoString*) obj), utf8);
+ } else {
+ g_print ("String at %p, length: %d, unable to decode UTF16\n", obj, mono_string_length ((MonoString*) obj));
+ }
g_free (utf8);
} else if (klass->rank) {
MonoArray *array = (MonoArray*)obj;