narrow_1.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//===----------------------------------------------------------------------===//
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// <locale>
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// template <> class ctype<char>;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// char narrow(char c, char dfault) const;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include <locale>
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <cassert>
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)int main()
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles){
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::locale l = std::locale::classic();
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    {
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        typedef std::ctype<char> F;
24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        const F& f = std::use_facet<F>(l);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        assert(f.narrow(' ', '*') == ' ');
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(f.narrow('A', '*') == 'A');
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(f.narrow('\x07', '*') == '\x07');
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        assert(f.narrow('.', '*') == '.');
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(f.narrow('a', '*') == 'a');
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        assert(f.narrow('1', '*') == '1');
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    }
331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)