virtual std::locale install(std::locale const &base, locale_category_type category, character_facet_type type = nochar_facet) { prepare_data(); switch(category) { case convert_facet: return create_convert(base,lc_,type); case collation_facet: return create_collate(base,lc_,type); case formatting_facet: return create_formatting(base,lc_,type); case parsing_facet: return create_parsing(base,lc_,type); case codepage_facet: return create_codecvt(base,nl_langinfo_l(CODESET,*lc_),type); case calendar_facet: { util::locale_data inf; inf.parse(real_id_); return util::install_gregorian_calendar(base,inf.country); } case message_facet: { gnu_gettext::messages_info minf; util::locale_data inf; inf.parse(real_id_); minf.language = inf.language; minf.country = inf.country; minf.variant = inf.variant; minf.encoding = inf.encoding; std::copy(domains_.begin(),domains_.end(),std::back_inserter<gnu_gettext::messages_info::domains_type>(minf.domains)); minf.paths = paths_; switch(type) { case char_facet: return std::locale(base,gnu_gettext::create_messages_facet<char>(minf)); case wchar_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<wchar_t>(minf)); #ifdef BOOST_HAS_CHAR16_T case char16_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char16_t>(minf)); #endif #ifdef BOOST_HAS_CHAR32_T case char32_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char32_t>(minf)); #endif default: return base; } } case information_facet: return util::create_info(base,real_id_); default: return base; } }
virtual std::locale install(std::locale const &base, locale_category_type category, character_facet_type type = nochar_facet) { prepare_data(); switch(category) { case convert_facet: return create_convert(base,data_,type); case collation_facet: return create_collate(base,data_,type); case formatting_facet: return create_formatting(base,data_,type); case parsing_facet: return create_parsing(base,data_,type); case codepage_facet: return create_codecvt(base,data_.encoding,type); case message_facet: { gnu_gettext::messages_info minf; minf.language = language_; minf.country = country_; minf.variant = variant_; minf.encoding = data_.encoding; std::copy(domains_.begin(),domains_.end(),std::back_inserter<gnu_gettext::messages_info::domains_type>(minf.domains)); minf.paths = paths_; switch(type) { case char_facet: return std::locale(base,gnu_gettext::create_messages_facet<char>(minf)); case wchar_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<wchar_t>(minf)); #ifdef BOOST_LOCALE_ENABLE_CHAR16_T case char16_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char16_t>(minf)); #endif #ifdef BOOST_LOCALE_ENABLE_CHAR32_T case char32_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char32_t>(minf)); #endif default: return base; } } case boundary_facet: return create_boundary(base,data_,type); case calendar_facet: return create_calendar(base,data_); case information_facet: return util::create_info(base,real_id_); default: return base; } }
virtual std::locale install(std::locale const &base, locale_category_type category, character_facet_type type = nochar_facet) { prepare_data(); switch(category) { case convert_facet: return create_convert(base,name_,type,utf_mode_); case collation_facet: return create_collate(base,name_,type,utf_mode_); case formatting_facet: return create_formatting(base,name_,type,utf_mode_); case parsing_facet: return create_parsing(base,name_,type,utf_mode_); case codepage_facet: return create_codecvt(base,name_,type,utf_mode_); case calendar_facet: return util::install_gregorian_calendar(base,data_.country); case message_facet: { gnu_gettext::messages_info minf; minf.language = data_.language; minf.country = data_.country; minf.variant = data_.variant; minf.encoding = data_.encoding; minf.domains = domains_; minf.paths = paths_; switch(type) { case char_facet: return std::locale(base,gnu_gettext::create_messages_facet<char>(minf)); case wchar_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<wchar_t>(minf)); #ifdef BOOSTER_HAS_CHAR16_T case char16_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char16_t>(minf)); #endif #ifdef BOOSTER_HAS_CHAR32_T case char32_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<char32_t>(minf)); #endif default: return base; } } case information_facet: return util::create_info(base,in_use_id_); default: return base; } }
virtual std::locale install(std::locale const &base, locale_category_type category, character_facet_type type = nochar_facet) { prepare_data(); switch(category) { case convert_facet: return create_convert(base,lc_,type); case collation_facet: return create_collate(base,lc_,type); case formatting_facet: return create_formatting(base,lc_,type); case parsing_facet: return create_parsing(base,lc_,type); case calendar_facet: { util::locale_data inf; inf.parse(real_id_); return util::install_gregorian_calendar(base,inf.country); } case message_facet: { gnu_gettext::messages_info minf; std::locale tmp=util::create_info(std::locale::classic(),real_id_); boost::locale::info const &inf=std::use_facet<boost::locale::info>(tmp); minf.language = inf.language(); minf.country = inf.country(); minf.variant = inf.variant(); minf.encoding = inf.encoding(); std::copy(domains_.begin(),domains_.end(),std::back_inserter<gnu_gettext::messages_info::domains_type>(minf.domains)); minf.paths = paths_; switch(type) { case char_facet: return std::locale(base,gnu_gettext::create_messages_facet<char>(minf)); case wchar_t_facet: return std::locale(base,gnu_gettext::create_messages_facet<wchar_t>(minf)); default: return base; } } case information_facet: return util::create_info(base,real_id_); case codepage_facet: return util::create_utf8_codecvt(base,type); default: return base; } }