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