1d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//===----------------------------------------------------------------------===//
2d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//
3d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//                     The LLVM Compiler Infrastructure
4d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard 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.
7d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//
8d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//===----------------------------------------------------------------------===//
9d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant
10d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// <locale>
11d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant
12d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// wstring_convert<Codecvt, Elem, Wide_alloc, Byte_alloc>
13d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant
14d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// size_t converted() const;
15d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant
16d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <locale>
17d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <codecvt>
18d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <cassert>
19d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant
20d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnantint main()
21d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant{
22d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    typedef std::codecvt_utf8<wchar_t> Codecvt;
23d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    typedef std::wstring_convert<Codecvt> Myconv;
24d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    Myconv myconv;
25d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    assert(myconv.converted() == 0);
26d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    std::string bs = myconv.to_bytes(L"\x40003");
27d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    assert(myconv.converted() == 1);
28d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    bs = myconv.to_bytes(L"\x40003\x65");
29d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    assert(myconv.converted() == 2);
30d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    std::wstring ws = myconv.from_bytes("\xF1\x80\x80\x83");
31d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant    assert(myconv.converted() == 4);
32d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant}
33