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)