Home | History | Annotate | Download | only in locale.moneypunct.members
      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 moneypunct<charT, International>
     13 
     14 // pattern pos_format() const;
     15 
     16 #include <locale>
     17 #include <limits>
     18 #include <cassert>
     19 
     20 typedef std::moneypunct<char> F;
     21 
     22 class Fnf
     23     : public std::moneypunct<char, false>
     24 {
     25 public:
     26     explicit Fnf(std::size_t refs = 0)
     27         : std::moneypunct<char, false>(refs) {}
     28 };
     29 
     30 class Fnt
     31     : public std::moneypunct<char, true>
     32 {
     33 public:
     34     explicit Fnt(std::size_t refs = 0)
     35         : std::moneypunct<char, true>(refs) {}
     36 };
     37 
     38 class Fwf
     39     : public std::moneypunct<wchar_t, false>
     40 {
     41 public:
     42     explicit Fwf(std::size_t refs = 0)
     43         : std::moneypunct<wchar_t, false>(refs) {}
     44 };
     45 
     46 class Fwt
     47     : public std::moneypunct<wchar_t, true>
     48 {
     49 public:
     50     explicit Fwt(std::size_t refs = 0)
     51         : std::moneypunct<wchar_t, true>(refs) {}
     52 };
     53 
     54 int main()
     55 {
     56     {
     57         Fnf f(1);
     58         std::money_base::pattern p = f.pos_format();
     59         assert(p.field[0] == std::money_base::symbol);
     60         assert(p.field[1] == std::money_base::sign);
     61         assert(p.field[2] == std::money_base::none);
     62         assert(p.field[3] == std::money_base::value);
     63     }
     64     {
     65         Fnt f(1);
     66         std::money_base::pattern p = f.pos_format();
     67         assert(p.field[0] == std::money_base::symbol);
     68         assert(p.field[1] == std::money_base::sign);
     69         assert(p.field[2] == std::money_base::none);
     70         assert(p.field[3] == std::money_base::value);
     71     }
     72     {
     73         Fwf f(1);
     74         std::money_base::pattern p = f.pos_format();
     75         assert(p.field[0] == std::money_base::symbol);
     76         assert(p.field[1] == std::money_base::sign);
     77         assert(p.field[2] == std::money_base::none);
     78         assert(p.field[3] == std::money_base::value);
     79     }
     80     {
     81         Fwt f(1);
     82         std::money_base::pattern p = f.pos_format();
     83         assert(p.field[0] == std::money_base::symbol);
     84         assert(p.field[1] == std::money_base::sign);
     85         assert(p.field[2] == std::money_base::none);
     86         assert(p.field[3] == std::money_base::value);
     87     }
     88 }
     89