char16_t_unshift.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// The LLVM Compiler Infrastructure 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// This file is distributed under the University of Illinois Open Source 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// License. See LICENSE.TXT for details. 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <locale> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// template <> class codecvt<char16_t, char, mbstate_t> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// result unshift(stateT& state, 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// externT* to, externT* to_end, externT*& to_next) const; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <locale> 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef std::codecvt<char16_t, char, std::mbstate_t> F; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main() 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::locale l = std::locale::classic(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<char> to(3); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const F& f = std::use_facet<F>(l); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::mbstate_t mbs; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char* to_next = 0; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(f.unshift(mbs, to.data(), to.data() + to.size(), to_next) == F::noconv); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert(to_next == to.data()); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)