Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / libstdc++-v3 / testsuite / 22_locale / ctype / is / char / 2.cc
blobfe4bf71241682679a64f567f990249c9a3d16985
1 // { dg-do run { xfail *-*-![linux]* } }
2 // { dg-require-namedlocale "" }
4 // Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
5 // Free Software Foundation, Inc.
6 //
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 2, or (at your option)
11 // any later version.
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING. If not, write to the Free
20 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21 // USA.
23 // As a special exception, you may use this file as part of a free software
24 // library without restriction. Specifically, if other files instantiate
25 // templates or use macros or inline functions from this file, or you compile
26 // this file and link it with other files to produce an executable, this
27 // file does not by itself cause the resulting executable to be covered by
28 // the GNU General Public License. This exception does not however
29 // invalidate any other reasons why the executable file might be covered by
30 // the GNU General Public License.
32 // 22.2.1.3.2 ctype<char> members
34 #include <locale>
35 #include <vector>
36 #include <testsuite_hooks.h>
38 typedef char char_type;
40 // libstdc++/4456, libstdc++/4457, libstdc++/4458
41 void test02()
43 using namespace std;
44 typedef ctype_base::mask mask;
45 typedef vector<mask> vector_type;
47 bool test __attribute__((unused)) = true;
49 // const int max = numeric_limits<char>::max();
50 const int max = 255;
51 const int ctype_mask_max = 10;
52 vector_type v_c(max);
53 vector_type v_de(max);
55 // "C"
56 locale loc_c = locale::classic();
57 const ctype<char>& ctype_c = use_facet<ctype<char> >(loc_c);
58 for (int i = 0; i < max; ++i)
60 char_type c = static_cast<char>(i);
61 mask mask_test = static_cast<mask>(0);
62 mask mask_is = static_cast<mask>(0);
63 for (int j = 0; j <= ctype_mask_max; ++j)
65 mask_test = static_cast<mask>(1 << j);
66 if (ctype_c.is(mask_test, c))
67 mask_is |= mask_test;
69 v_c[i] = mask_is;
72 // "de_DE"
73 locale loc_de = locale("de_DE");
74 const ctype<char>& ctype_de = use_facet<ctype<char> >(loc_de);
75 for (int i = 0; i < max; ++i)
77 char_type c = static_cast<char>(i);
78 mask mask_test = static_cast<mask>(0);
79 mask mask_is = static_cast<mask>(0);
80 for (int j = 0; j <= ctype_mask_max; ++j)
82 mask_test = static_cast<mask>(1 << j);
83 if (ctype_de.is(mask_test, c))
84 mask_is |= mask_test;
86 v_de[i] = mask_is;
89 #if QUANNUM_VERBOSE_LYRICALLY_ADEPT_BAY_AREA_MCS_MODE
90 for (int i = 0; i < max; ++i)
92 char_type mark = v_c[i] == v_de[i] ? ' ' : '-';
93 cout << i << ' ' << mark << ' ' << static_cast<char>(i) << '\t' ;
94 cout << "v_c: " << setw(4) << v_c[i] << '\t';
95 cout << "v_de: " << setw(4) << v_de[i] << endl;
97 cout << (v_c == v_de) << endl;
98 #endif
100 VERIFY( v_c != v_de );
103 int main()
105 test02();
106 return 0;