Home | History | Annotate | Download | only in category.ctype
      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 // class ctype_base
     13 // {
     14 // public:
     15 //     typedef T mask;
     16 //
     17 //     // numeric values are for exposition only.
     18 //     static const mask space = 1 << 0;
     19 //     static const mask print = 1 << 1;
     20 //     static const mask cntrl = 1 << 2;
     21 //     static const mask upper = 1 << 3;
     22 //     static const mask lower = 1 << 4;
     23 //     static const mask alpha = 1 << 5;
     24 //     static const mask digit = 1 << 6;
     25 //     static const mask punct = 1 << 7;
     26 //     static const mask xdigit = 1 << 8;
     27 //     static const mask alnum = alpha | digit;
     28 //     static const mask graph = alnum | punct;
     29 // };
     30 
     31 #include <locale>
     32 #include <cassert>
     33 
     34 template <class _Tp>
     35 void test(const _Tp &) {}
     36 
     37 int main()
     38 {
     39     assert(std::ctype_base::space);
     40     assert(std::ctype_base::print);
     41     assert(std::ctype_base::cntrl);
     42     assert(std::ctype_base::upper);
     43     assert(std::ctype_base::lower);
     44     assert(std::ctype_base::alpha);
     45     assert(std::ctype_base::digit);
     46     assert(std::ctype_base::punct);
     47     assert(std::ctype_base::xdigit);
     48     assert(
     49       ( std::ctype_base::space
     50       & std::ctype_base::print
     51       & std::ctype_base::cntrl
     52       & std::ctype_base::upper
     53       & std::ctype_base::lower
     54       & std::ctype_base::alpha
     55       & std::ctype_base::digit
     56       & std::ctype_base::punct
     57       & std::ctype_base::xdigit) == 0);
     58     assert(std::ctype_base::alnum == (std::ctype_base::alpha | std::ctype_base::digit));
     59     assert(std::ctype_base::graph == (std::ctype_base::alnum | std::ctype_base::punct));
     60 
     61     test(std::ctype_base::space);
     62     test(std::ctype_base::print);
     63     test(std::ctype_base::cntrl);
     64     test(std::ctype_base::upper);
     65     test(std::ctype_base::lower);
     66     test(std::ctype_base::alpha);
     67     test(std::ctype_base::digit);
     68     test(std::ctype_base::punct);
     69     test(std::ctype_base::xdigit);
     70     test(std::ctype_base::blank);
     71     test(std::ctype_base::alnum);
     72     test(std::ctype_base::graph);
     73 }
     74