Пример #1
0
const char* _Locale_numeric_default(char* buf) {
  char fullname[_Locale_MAX_COMPOSITE_NAME];
  if (get_default_locale(fullname) == NULL)
    return NULL;
  else
    return _Locale_extract_numeric_name(fullname, buf, 0);
}
Пример #2
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;
  }
}
Пример #3
0
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);
}