ctor_char32_t.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
11830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com//===----------------------------------------------------------------------===// 21830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// 31830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// ��������������������The LLVM Compiler Infrastructure 41830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// 51830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// This file is distributed under the University of Illinois Open Source 61830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// License. See LICENSE.TXT for details. 7bf0001d0472d727266762c5967ec0d919a6df083reed@google.com// 81830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com//===----------------------------------------------------------------------===// 91830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 101830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// <locale> 111830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 121830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// template <> class codecvt_byname<char32_t, char, mbstate_t> 131830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 141830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com// explicit codecvt_byname(const char* nm, size_t refs = 0); 15796763e0b2c06a7789185322561a1135e5484688djsollen@google.com// explicit codecvt_byname(const string& nm, size_t refs = 0); 161830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 171830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com#include <locale> 18770963f23f4fc313db0fa3bac18b1b8aafb55f17robertphillips@google.com#include <cassert> 191830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 201830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.comtypedef std::codecvt_byname<char32_t, char, std::mbstate_t> F; 211830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 221830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.comclass my_facet 231830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com : public F 241830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com{ 251830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.compublic: 261830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com static int count; 271830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 281830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com explicit my_facet(const char* nm, std::size_t refs = 0) 291830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com : F(nm, refs) {++count;} 30636d87a3f411507020a21c6b0641da795eb5d275reed@google.com explicit my_facet(const std::string& nm, std::size_t refs = 0) 311830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com : F(nm, refs) {++count;} 321830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com 331830c7aa3c4045af438fb24ee0bd22598f1bfca7reed@google.com ~my_facet() {--count;} 34bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org}; 35bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org 36bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.orgint my_facet::count = 0; 37bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org 38bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.orgint main() 399a65e2c22dc3f0d4823520ab3d561f57ff09198cfmalita@google.com{ 40bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org { 41bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org std::locale l(std::locale::classic(), new my_facet("en_US")); 42bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 43bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org } 44bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 0); 459a65e2c22dc3f0d4823520ab3d561f57ff09198cfmalita@google.com { 46bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org my_facet f("en_US", 1); 47bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 48bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org { 49bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org std::locale l(std::locale::classic(), &f); 50bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 51bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org } 52bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 53bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org } 54bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 0); 55bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org { 56bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org std::locale l(std::locale::classic(), new my_facet(std::string("en_US"))); 57bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 58bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org } 59bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 0); 60bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org { 61bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org my_facet f(std::string("en_US"), 1); 62bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org assert(my_facet::count == 1); 63bbe43a9ce0513d37cbd5dca583c391b7b1e39b3acommit-bot@chromium.org { 64c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org std::locale l(std::locale::classic(), &f); 65c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org assert(my_facet::count == 1); 66c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org } 67c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org assert(my_facet::count == 1); 68c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org } 69c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org assert(my_facet::count == 0); 70c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org} 71c22d1398089fdb95480fb3459b23e4931e4f5280commit-bot@chromium.org