1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <locale> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// explicit locale(const string& std_name); 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <locale> 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <new> 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <cassert> 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include "platform_support.h" // locale name macros 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint new_called = 0; 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnervoid* operator new(std::size_t s) throw(std::bad_alloc) 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner ++new_called; 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner return std::malloc(s); 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnervoid operator delete(void* p) throw() 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner --new_called; 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::free(p); 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnervoid check(const std::locale& loc) 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::has_facet<std::collate<char> >(loc)); 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::has_facet<std::collate<wchar_t> >(loc)); 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::has_facet<std::ctype<char> >(loc)); 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(std::has_facet<std::ctype<wchar_t> >(loc)); 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::codecvt<char, char, std::mbstate_t> >(loc))); 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::codecvt<char16_t, char, std::mbstate_t> >(loc))); 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::codecvt<char32_t, char, std::mbstate_t> >(loc))); 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(loc))); 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::moneypunct<char> >(loc))); 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::moneypunct<wchar_t> >(loc))); 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::money_get<char> >(loc))); 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::money_get<wchar_t> >(loc))); 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::money_put<char> >(loc))); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::money_put<wchar_t> >(loc))); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::numpunct<char> >(loc))); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::numpunct<wchar_t> >(loc))); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::num_get<char> >(loc))); 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::num_get<wchar_t> >(loc))); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::num_put<char> >(loc))); 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::num_put<wchar_t> >(loc))); 59b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 60b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::time_get<char> >(loc))); 61b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::time_get<wchar_t> >(loc))); 62b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::time_put<char> >(loc))); 63b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::time_put<wchar_t> >(loc))); 64b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 65b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::messages<char> >(loc))); 66b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert((std::has_facet<std::messages<wchar_t> >(loc))); 67b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 68b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 69b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 70b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 71b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 72b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::locale loc(std::string(LOCALE_ru_RU_UTF_8)); 73b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner check(loc); 74b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::locale loc2(std::string(LOCALE_ru_RU_UTF_8)); 75b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner check(loc2); 76b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(loc == loc2); 77b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner std::locale loc3(std::string(LOCALE_zh_CN_UTF_8)); 78b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner check(loc3); 79b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(!(loc == loc3)); 80b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(loc != loc3); 81b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 82b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner assert(new_called == 0); 83b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 84