1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <locale> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// class moneypunct_byname<charT, International> 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// charT decimal_point() const; 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <locale> 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <limits> 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 2083e2c4d877fe2d7793868b1c6a5d9525a7c4d431Marshall Clow#include "platform_support.h" // locale name macros 21c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fnf 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public std::moneypunct_byname<char, false> 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic: 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant explicit Fnf(const std::string& nm, std::size_t refs = 0) 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : std::moneypunct_byname<char, false>(nm, refs) {} 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fnt 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public std::moneypunct_byname<char, true> 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic: 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant explicit Fnt(const std::string& nm, std::size_t refs = 0) 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : std::moneypunct_byname<char, true>(nm, refs) {} 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fwf 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public std::moneypunct_byname<wchar_t, false> 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic: 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant explicit Fwf(const std::string& nm, std::size_t refs = 0) 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : std::moneypunct_byname<wchar_t, false>(nm, refs) {} 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantclass Fwt 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : public std::moneypunct_byname<wchar_t, true> 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantpublic: 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant explicit Fwt(const std::string& nm, std::size_t refs = 0) 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant : std::moneypunct_byname<wchar_t, true>(nm, refs) {} 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}; 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant Fnf f("C", 1); 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == std::numeric_limits<char>::max()); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant Fnt f("C", 1); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == std::numeric_limits<char>::max()); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant Fwf f("C", 1); 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == std::numeric_limits<wchar_t>::max()); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant Fwt f("C", 1); 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == std::numeric_limits<wchar_t>::max()); 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 74c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnf f(LOCALE_en_US_UTF_8, 1); 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == '.'); 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 78c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnt f(LOCALE_en_US_UTF_8, 1); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == '.'); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 82c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwf f(LOCALE_en_US_UTF_8, 1); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L'.'); 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 86c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwt f(LOCALE_en_US_UTF_8, 1); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L'.'); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 91c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnf f(LOCALE_fr_FR_UTF_8, 1); 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == ','); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 95c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnt f(LOCALE_fr_FR_UTF_8, 1); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == ','); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 99c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwf f(LOCALE_fr_FR_UTF_8, 1); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L','); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 103c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwt f(LOCALE_fr_FR_UTF_8, 1); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L','); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 108c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnf f(LOCALE_ru_RU_UTF_8, 1); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == ','); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 112c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnt f(LOCALE_ru_RU_UTF_8, 1); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == ','); 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 116c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwf f(LOCALE_ru_RU_UTF_8, 1); 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L','); 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 120c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwt f(LOCALE_ru_RU_UTF_8, 1); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L','); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 125c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnf f(LOCALE_zh_CN_UTF_8, 1); 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == '.'); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 129c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fnt f(LOCALE_zh_CN_UTF_8, 1); 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == '.'); 131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 133c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwf f(LOCALE_zh_CN_UTF_8, 1); 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L'.'); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 137c0d0cbad9ed434267a7af9531bdeeae52eb6d706Howard Hinnant Fwt f(LOCALE_zh_CN_UTF_8, 1); 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(f.decimal_point() == L'.'); 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 141