const char* _Locale_monetary_default(char* buf) { char fullname[_Locale_MAX_COMPOSITE_NAME]; if (get_default_locale(fullname) == NULL) return NULL; else return _Locale_extract_monetary_name(fullname, buf, 0); }
// Give L a name where all facets except those in category c // are taken from name1, and those in category c are taken from name2. void _Stl_loc_combine_names(_Locale_impl* L, const char* name1, const char* name2, locale::category c) { if ((c & locale::all) == 0 || strcmp(name1, name2) == 0) L->name = name1; else if ((c & locale::all) == locale::all) L->name = name2; else { // Decompose the names. char ctype_buf[_Locale_MAX_SIMPLE_NAME]; char numeric_buf[_Locale_MAX_SIMPLE_NAME]; char time_buf[_Locale_MAX_SIMPLE_NAME]; char collate_buf[_Locale_MAX_SIMPLE_NAME]; char monetary_buf[_Locale_MAX_SIMPLE_NAME]; char messages_buf[_Locale_MAX_SIMPLE_NAME]; _Locale_extract_ctype_name((c & locale::ctype) ? name2 : name1, ctype_buf); _Locale_extract_numeric_name((c & locale::numeric) ? name2 : name1, numeric_buf); _Locale_extract_time_name((c & locale::time) ? name2 : name1, time_buf); _Locale_extract_collate_name((c & locale::collate) ? name2 : name1, collate_buf); _Locale_extract_monetary_name((c & locale::monetary) ? name2 : name1, monetary_buf); _Locale_extract_messages_name((c & locale::messages) ? name2 : name1, messages_buf); // Construct a new composite name. char composite_buf[_Locale_MAX_COMPOSITE_NAME]; _Locale_compose_name(composite_buf, ctype_buf, numeric_buf, time_buf, collate_buf, monetary_buf, messages_buf, name1); L->name = composite_buf; } }
static void _Stl_loc_combine_names_aux(_Locale_impl* L, const char* name, const char* ctype_name, const char* time_name, const char* numeric_name, const char* collate_name, const char* monetary_name, const char* messages_name, locale::category c) { // This function is only called when names has been validated so using _Locale_extract_*_name // can't fail. int __err_code; char buf[_Locale_MAX_SIMPLE_NAME]; L->name = string("LC_CTYPE=") + _Locale_extract_ctype_name((c & locale::ctype) ? ctype_name : name, buf, 0, &__err_code) + ";"; L->name += string("LC_TIME=") + _Locale_extract_time_name((c & locale::time) ? time_name : name, buf, 0, &__err_code) + ";"; L->name += string("LC_NUMERIC=") + _Locale_extract_numeric_name((c & locale::numeric) ? numeric_name : name, buf, 0, &__err_code) + ";"; L->name += string("LC_COLLATE=") + _Locale_extract_collate_name((c & locale::collate) ? collate_name : name, buf, 0, &__err_code) + ";"; L->name += string("LC_MONETARY=") + _Locale_extract_monetary_name((c & locale::monetary) ? monetary_name : name, buf, 0, &__err_code) + ";"; L->name += string("LC_MESSAGES=") + _Locale_extract_messages_name((c & locale::messages) ? messages_name : name, buf, 0, &__err_code); }