MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfo *this_obj, MonoString *name) { MonoError error; const CultureInfoNameEntry *ne; char *n; n = mono_string_to_utf8_checked (name, &error); if (mono_error_set_pending_exception (&error)) return FALSE; ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoNameEntry), culture_name_locator); if (ne == NULL) { /*g_print ("ne (%s) is null\n", n);*/ g_free (n); return FALSE; } g_free (n); if (!construct_culture (this_obj, &culture_entries [ne->culture_entry_index], &error)) { mono_error_set_pending_exception (&error); return FALSE; } return TRUE; }
MonoArray* ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean neutral, MonoBoolean specific, MonoBoolean installed) { MonoArray *ret; MonoClass *klass; MonoCultureInfo *culture; MonoDomain *domain; const CultureInfoEntry *ci; gint i, len; gboolean is_neutral; domain = mono_domain_get (); len = 0; for (i = 0; i < NUM_CULTURE_ENTRIES; i++) { ci = &culture_entries [i]; is_neutral = ci->territory == 0; if ((neutral && is_neutral) || (specific && !is_neutral)) len++; } klass = mono_class_from_name (mono_get_corlib (), "System.Globalization", "CultureInfo"); /* The InvariantCulture is not in culture_entries */ /* We reserve the first slot in the array for it */ if (neutral) len++; ret = mono_array_new (domain, klass, len); if (len == 0) return ret; len = 0; if (neutral) mono_array_setref (ret, len++, NULL); for (i = 0; i < NUM_CULTURE_ENTRIES; i++) { ci = &culture_entries [i]; is_neutral = ci->territory == 0; if ((neutral && is_neutral) || (specific && !is_neutral)) { culture = (MonoCultureInfo *) mono_object_new (domain, klass); mono_runtime_object_init ((MonoObject *) culture); construct_culture (culture, ci); culture->use_user_override = TRUE; mono_array_setref (ret, len++, culture); } } return ret; }
MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfo *this_obj, gint lcid) { const CultureInfoEntry *ci; ci = culture_info_entry_from_lcid (lcid); if(ci == NULL) return FALSE; return construct_culture (this_obj, ci); }
MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_lcid (MonoCultureInfo *this_obj, gint lcid) { MonoError error; const CultureInfoEntry *ci; ci = culture_info_entry_from_lcid (lcid); if(ci == NULL) return FALSE; if (!construct_culture (this_obj, ci, &error)) { mono_error_set_pending_exception (&error); return FALSE; } return TRUE; }
MonoBoolean ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (MonoCultureInfo *this_obj, MonoString *name) { const CultureInfoNameEntry *ne; char *n; n = mono_string_to_utf8 (name); ne = (const CultureInfoNameEntry *)mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoNameEntry), culture_name_locator); if (ne == NULL) { /*g_print ("ne (%s) is null\n", n);*/ g_free (n); return FALSE; } g_free (n); return construct_culture (this_obj, &culture_entries [ne->culture_entry_index]); }
MonoArray* ves_icall_System_Globalization_CultureInfo_internal_get_cultures (MonoBoolean neutral, MonoBoolean specific, MonoBoolean installed) { MonoError error; MonoArray *ret; MonoClass *klass; MonoCultureInfo *culture; MonoDomain *domain; const CultureInfoEntry *ci; gint i, len; gboolean is_neutral; domain = mono_domain_get (); len = 0; for (i = 0; i < NUM_CULTURE_ENTRIES; i++) { ci = &culture_entries [i]; is_neutral = ci->territory == 0; if ((neutral && is_neutral) || (specific && !is_neutral)) len++; } klass = mono_class_get_culture_info_class (); /* The InvariantCulture is not in culture_entries */ /* We reserve the first slot in the array for it */ if (neutral) len++; ret = mono_array_new_checked (domain, klass, len, &error); if (!is_ok (&error)) goto fail; if (len == 0) return ret; len = 0; if (neutral) mono_array_setref (ret, len++, NULL); for (i = 0; i < NUM_CULTURE_ENTRIES; i++) { ci = &culture_entries [i]; is_neutral = ci->territory == 0; if ((neutral && is_neutral) || (specific && !is_neutral)) { culture = (MonoCultureInfo *) mono_object_new_checked (domain, klass, &error); if (!is_ok (&error)) goto fail; mono_runtime_object_init_checked ((MonoObject *) culture, &error); if (!is_ok (&error)) goto fail; if (!construct_culture (culture, ci, &error)) goto fail; culture->use_user_override = TRUE; mono_array_setref (ret, len++, culture); } } return ret; fail: mono_error_set_pending_exception (&error); return ret; }