Home | History | Annotate | Download | only in locale.ctype.byname
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <locale>
     11 
     12 // template <class charT> class ctype_byname;
     13 
     14 // const charT* scan_not(mask m, const charT* low, const charT* high) const;
     15 
     16 // REQUIRES: locale.en_US.UTF-8
     17 
     18 #include <locale>
     19 #include <string>
     20 #include <vector>
     21 #include <cassert>
     22 
     23 #include <stdio.h>
     24 
     25 #include "platform_support.h" // locale name macros
     26 
     27 int main()
     28 {
     29     {
     30         std::locale l(LOCALE_en_US_UTF_8);
     31         {
     32             typedef std::ctype<wchar_t> F;
     33             const F& f = std::use_facet<F>(l);
     34             const std::wstring in(L"\x00DA A\x07.a1");
     35             std::vector<F::mask> m(in.size());
     36             assert(f.scan_not(F::space, in.data(), in.data() + in.size()) - in.data() == 0);
     37             assert(f.scan_not(F::print, in.data(), in.data() + in.size()) - in.data() == 3);
     38             assert(f.scan_not(F::cntrl, in.data(), in.data() + in.size()) - in.data() == 0);
     39             assert(f.scan_not(F::upper, in.data(), in.data() + in.size()) - in.data() == 1);
     40             assert(f.scan_not(F::lower, in.data(), in.data() + in.size()) - in.data() == 0);
     41             assert(f.scan_not(F::alpha, in.data(), in.data() + in.size()) - in.data() == 1);
     42             assert(f.scan_not(F::digit, in.data(), in.data() + in.size()) - in.data() == 0);
     43             assert(f.scan_not(F::punct, in.data(), in.data() + in.size()) - in.data() == 0);
     44             assert(f.scan_not(F::xdigit, in.data(), in.data() + in.size()) - in.data() == 0);
     45             assert(f.scan_not(F::blank, in.data(), in.data() + in.size()) - in.data() == 0);
     46             assert(f.scan_not(F::alnum, in.data(), in.data() + in.size()) - in.data() == 1);
     47             assert(f.scan_not(F::graph, in.data(), in.data() + in.size()) - in.data() == 1);
     48         }
     49     }
     50     {
     51         std::locale l("C");
     52         {
     53             typedef std::ctype<wchar_t> F;
     54             const F& f = std::use_facet<F>(l);
     55             const std::wstring in(L"\x00DA A\x07.a1");
     56             std::vector<F::mask> m(in.size());
     57             assert(f.scan_not(F::space, in.data(), in.data() + in.size()) - in.data() == 0);
     58             assert(f.scan_not(F::print, in.data(), in.data() + in.size()) - in.data() == 0);
     59             assert(f.scan_not(F::cntrl, in.data(), in.data() + in.size()) - in.data() == 0);
     60             assert(f.scan_not(F::upper, in.data(), in.data() + in.size()) - in.data() == 0);
     61             assert(f.scan_not(F::lower, in.data(), in.data() + in.size()) - in.data() == 0);
     62             assert(f.scan_not(F::alpha, in.data(), in.data() + in.size()) - in.data() == 0);
     63             assert(f.scan_not(F::digit, in.data(), in.data() + in.size()) - in.data() == 0);
     64             assert(f.scan_not(F::punct, in.data(), in.data() + in.size()) - in.data() == 0);
     65             assert(f.scan_not(F::xdigit, in.data(), in.data() + in.size()) - in.data() == 0);
     66             assert(f.scan_not(F::blank, in.data(), in.data() + in.size()) - in.data() == 0);
     67             assert(f.scan_not(F::alnum, in.data(), in.data() + in.size()) - in.data() == 0);
     68             assert(f.scan_not(F::graph, in.data(), in.data() + in.size()) - in.data() == 0);
     69         }
     70     }
     71 }
     72