#include "il2cpp-config.h" #include "icalls/mscorlib/System.Globalization/CultureInfoInternals.h" #include "icalls/mscorlib/System.Globalization/CultureInfoTables.h" #include "icalls/mscorlib/System.Globalization/RegionInfo.h" #include "utils/StringUtils.h" #include "vm/String.h" namespace il2cpp { namespace icalls { namespace mscorlib { namespace System { namespace Globalization { static bool ConstructRegion(Il2CppRegionInfo* regionInfo, const RegionInfoEntry* ri) { regionInfo->geo_id = ri->geo_id; IL2CPP_OBJECT_SETREF(regionInfo, iso2name, vm::String::New(idx2string(ri->iso2name))); IL2CPP_OBJECT_SETREF(regionInfo, iso3name, vm::String::New(idx2string(ri->iso3name))); IL2CPP_OBJECT_SETREF(regionInfo, win3name, vm::String::New(idx2string(ri->win3name))); IL2CPP_OBJECT_SETREF(regionInfo, english_name, vm::String::New(idx2string(ri->english_name))); IL2CPP_OBJECT_SETREF(regionInfo, native_name, vm::String::New(idx2string(ri->native_name))); IL2CPP_OBJECT_SETREF(regionInfo, currency_symbol, vm::String::New(idx2string(ri->currency_symbol))); IL2CPP_OBJECT_SETREF(regionInfo, iso_currency_symbol, vm::String::New(idx2string(ri->iso_currency_symbol))); IL2CPP_OBJECT_SETREF(regionInfo, currency_english_name, vm::String::New(idx2string(ri->currency_english_name))); IL2CPP_OBJECT_SETREF(regionInfo, currency_native_name, vm::String::New(idx2string(ri->currency_native_name))); return true; } static int RegionNameLocator(const void *a, const void *b) { const char* aa = (const char*)a; const RegionInfoNameEntry* bb = (const RegionInfoNameEntry*)b; return strcmp(aa, idx2string(bb->name)); } bool RegionInfo::construct_internal_region_from_name(Il2CppRegionInfo* regionInfo, Il2CppString* name) { std::string n = utils::StringUtils::Utf16ToUtf8(utils::StringUtils::GetChars(name)); RegionInfoNameEntry* nameEntry = (RegionInfoNameEntry*)bsearch(n.c_str(), region_name_entries, NUM_REGION_ENTRIES, sizeof(RegionInfoNameEntry), RegionNameLocator); if (nameEntry == NULL) return false; return ConstructRegion(regionInfo, ®ion_entries[nameEntry->region_entry_index]); } } /* namespace Globalization */ } /* namespace System */ } /* namespace mscorlib */ } /* namespace icalls */ } /* namespace il2cpp */