1// { dg-require-namedlocale "de_DE" } 2 3// Copyright (C) 2011-2015 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20#include <locale> 21#include <ext/pod_char_traits.h> 22 23#define mychar __gnu_cxx::character<unsigned short, int> 24 25namespace std 26{ 27 template<> codecvt<mychar, char, mbstate_t>::~codecvt() 28 { } 29 30 template<> 31 codecvt<mychar, char, mbstate_t>::result 32 codecvt<mychar, char, mbstate_t>:: 33 do_out(state_type&, const intern_type*, const intern_type*, 34 const intern_type*&, extern_type*, extern_type*, 35 extern_type*&) const 36 { return codecvt_base::ok; } 37 38 template<> 39 codecvt<mychar, char, mbstate_t>::result 40 codecvt<mychar, char, mbstate_t>:: 41 do_in(state_type&, const extern_type*, const extern_type*, 42 const extern_type*&, intern_type*, intern_type*, 43 intern_type*&) const 44 { return codecvt_base::ok; } 45 46 template<> 47 codecvt<mychar, char, mbstate_t>::result 48 codecvt<mychar, char, mbstate_t>:: 49 do_unshift(state_type&, extern_type*, extern_type*, 50 extern_type*&) const 51 { return noconv; } 52 53 template<> 54 int 55 codecvt<mychar, char, mbstate_t>::do_encoding() const throw() 56 { return 0; } 57 58 template<> 59 bool 60 codecvt<mychar, char, mbstate_t>::do_always_noconv() const throw() 61 { return false; } 62 63 template<> 64 int 65 codecvt<mychar, char, mbstate_t>:: 66 do_length(state_type&, const extern_type*, const extern_type*, 67 size_t) const 68 { return 0; } 69 70 template<> 71 int 72 codecvt<mychar, char, mbstate_t>::do_max_length() const throw() 73 { return 4; } 74} 75 76// libstdc++/50714 77void test01() 78{ 79 using namespace std; 80 81 { 82 locale loc(locale::classic(), 83 new codecvt<mychar, char, mbstate_t>()); 84 } 85 { 86 locale loc2(locale::classic(), 87 new codecvt_byname<mychar, char, mbstate_t>("de_DE")); 88 } 89} 90 91int main() 92{ 93 test01(); 94 return 0; 95} 96