15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <locale>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <> class codecvt<char, char, mbstate_t>
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// int length(stateT& state, const externT* from, const externT* from_end, size_t max) const;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <locale>
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <cassert>
184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::codecvt<char, char, std::mbstate_t> F;
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main()
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::locale l = std::locale::classic();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const F& f = std::use_facet<F>(l);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::mbstate_t mbs = {0};
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const char from[10]= {0};
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f.length(mbs, from, from+10, 0) == 0);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f.length(mbs, from, from+10, 9) == 9);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f.length(mbs, from, from+10, 10) == 10);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f.length(mbs, from, from+10, 11) == 10);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f.length(mbs, from, from+10, 100) == 10);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)