char16_t_length.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project//===----------------------------------------------------------------------===//
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project//
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// ��������������������The LLVM Compiler Infrastructure
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project//
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// This file is distributed under the University of Illinois Open Source
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// License. See LICENSE.TXT for details.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project//
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project//===----------------------------------------------------------------------===//
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// <locale>
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// template <> class codecvt<char16_t, char, mbstate_t>
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// int length(stateT& state, const externT* from, const externT* from_end, size_t max) const;
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <locale>
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <cassert>
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef std::codecvt<char16_t, char, std::mbstate_t> F;
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectint main()
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    std::locale l = std::locale::classic();
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    const F& f = std::use_facet<F>(l);
255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    std::mbstate_t mbs;
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    const char from[] = "some text";
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    assert(f.length(mbs, from, from+10, 0) == 0);
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    assert(f.length(mbs, from, from+10, 8) == 8);
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    assert(f.length(mbs, from, from+10, 9) == 9);
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    assert(f.length(mbs, from, from+10, 10) == 10);
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    assert(f.length(mbs, from, from+10, 100) == 10);
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project