// Create a locale from a name. _STLP_EXP_DECLSPEC locale::locale(const char* name) : _M_impl(0) { if (!name) _M_throw_runtime_error(0); else if(strcmp(name,"")==0) name = _Locale_ctype_default(NULL); _Locale* impl = 0; _STLP_TRY { #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_) impl = new _Locale(get_locale_id_S_max(), name); # else impl = new _Locale(locale::id::_S_max, name); # endif // Insert categories one at a time. impl->insert_ctype_facets(name); impl->insert_numeric_facets(name); impl->insert_time_facets(name); impl->insert_collate_facets(name); impl->insert_monetary_facets(name); impl->insert_messages_facets(name); // reassign impl _M_impl = impl; } _STLP_UNWIND(delete impl); }
// Create a locale that's a copy of L, except that all of the facets // in category c are instead constructed by name. _STLP_EXP_DECLSPEC locale::locale(const locale& L, const char* name, locale::category c) : _M_impl(0) { if (name == 0 || strcmp(name, "*") == 0) _M_throw_runtime_error(name); _Locale* impl = 0; _STLP_TRY { impl = new _Locale(*L._M_impl); _Stl_loc_combine_names(impl, L._M_impl->name.c_str(), name, c); if (c & locale::ctype) impl->insert_ctype_facets(name); if (c & locale::numeric) impl->insert_numeric_facets(name); if (c & locale::time) impl->insert_time_facets(name); if (c & locale::collate) impl->insert_collate_facets(name); if (c & locale::monetary) impl->insert_monetary_facets(name); if (c & locale::messages) impl->insert_messages_facets(name); _M_impl = impl; } _STLP_UNWIND(delete impl) }
// Create a locale from a name. locale::locale(const char* name) : _M_impl(0) { if (!name) _M_throw_runtime_error(0); if (is_C_locale_name(name)) { _M_impl = _get_Locale_impl( locale::classic()._M_impl ); return; } _Locale_impl* impl = 0; _STLP_TRY { impl = new _Locale_impl(locale::id::_S_max, name); // Insert categories one at a time. impl->insert_ctype_facets(name); impl->insert_numeric_facets(name); impl->insert_time_facets(name); impl->insert_collate_facets(name); impl->insert_monetary_facets(name); impl->insert_messages_facets(name); // reassign impl _M_impl = _get_Locale_impl( impl ); } _STLP_UNWIND(delete impl); }