scan_is.pass.cpp revision bc8d3f97eb5c958007f2713238472e0c1c8fe02c
195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org//===----------------------------------------------------------------------===// 295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org// 301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// ��������������������The LLVM Compiler Infrastructure 401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// 501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// This file is distributed under the University of Illinois Open Source 601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// License. See LICENSE.TXT for details. 701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// 801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org//===----------------------------------------------------------------------===// 901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// <locale> 1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// template <class charT> class ctype; 1301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 1401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// const charT* scan_is(mask m, const charT* low, const charT* high) const; 1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 1601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <locale> 1701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <string> 1801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <vector> 1901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <cassert> 2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <stdio.h> 2201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org 2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgint main() 2401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org{ 2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org std::locale l = std::locale::classic(); 2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org { 2701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org typedef std::ctype<wchar_t> F; 2801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org const F& f = std::use_facet<F>(l); 2901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org const std::wstring in(L" A\x07.a1"); 3001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org std::vector<F::mask> m(in.size()); 3101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::space, in.data(), in.data() + in.size()) - in.data() == 0); 3201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::print, in.data(), in.data() + in.size()) - in.data() == 0); 3301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::cntrl, in.data(), in.data() + in.size()) - in.data() == 2); 3401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::upper, in.data(), in.data() + in.size()) - in.data() == 1); 3501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::lower, in.data(), in.data() + in.size()) - in.data() == 4); 3601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::alpha, in.data(), in.data() + in.size()) - in.data() == 1); 3701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::digit, in.data(), in.data() + in.size()) - in.data() == 5); 3801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::punct, in.data(), in.data() + in.size()) - in.data() == 3); 3901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::xdigit, in.data(), in.data() + in.size()) - in.data() == 1); 4001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::blank, in.data(), in.data() + in.size()) - in.data() == 0); 4101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::alnum, in.data(), in.data() + in.size()) - in.data() == 1); 4201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org assert(f.scan_is(F::graph, in.data(), in.data() + in.size()) - in.data() == 1); 4301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org } 4401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org} 4501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org