widen_many.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
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)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// <locale>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
120de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// template <> class ctype<char>;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// const char* widen(const char* low, const char* high, char* to) const;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <locale>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector>
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)int main()
220de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles){
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::locale l = std::locale::classic();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        typedef std::ctype<char> F;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        const F& f = std::use_facet<F>(l);
270de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)        std::string in(" A\x07.a1");
280de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)        std::vector<char> v(in.size());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch        assert(f.widen(&in[0], in.data() + in.size(), v.data()) == in.data() + in.size());
31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch        assert(v[0] == ' ');
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[1] == 'A');
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[2] == '\x07');
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[3] == '.');
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[4] == 'a');
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(v[5] == '1');
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)