]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/27_io/filebuf.cc
char_traits.h: Remove generic definitions.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / filebuf.cc
1 // 1999-01-17 bkoz test functionality of basic_filebuf for char_type == char
2
3 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
4 // Free Software Foundation, Inc.
5 //
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
10 // any later version.
11
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING. If not, write to the Free
19 // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20 // USA.
21
22 // 27.8.1.1 - Template class basic_filebuf
23 // NB: This file is for testing basic_filebuf with NO OTHER INCLUDES.
24
25 #include <fstream>
26 #include <testsuite_hooks.h>
27
28 // { dg-do compile }
29
30 // libstdc++/7216
31 void test01()
32 {
33 // Check for required typedefs
34 typedef std::filebuf test_type;
35 typedef test_type::char_type char_type;
36 typedef test_type::traits_type traits_type;
37 typedef test_type::int_type int_type;
38 typedef test_type::pos_type pos_type;
39 typedef test_type::off_type off_type;
40 }
41
42 // test05
43 // libstdc++/1886
44 // should be able to instantiate basic_filebuf for non-standard types.
45 namespace test
46 {
47 using namespace std;
48 typedef short type_t;
49 template class basic_filebuf<type_t, char_traits<type_t> >;
50 template class basic_filebuf<gnu_char, char_traits<gnu_char> >;
51 } // test
52
53
54 // test07
55 // libstdc++/2020
56 // should be able to use custom char_type
57 class gnu_char_type
58 {
59 unsigned long character;
60 public:
61 // operator ==
62 bool
63 operator==(const gnu_char_type& __lhs)
64 { return character == __lhs.character; }
65
66 // operator <
67 bool
68 operator<(const gnu_char_type& __lhs)
69 { return character < __lhs.character; }
70
71 // default ctor
72 gnu_char_type() { }
73
74 // to_char_type
75 gnu_char_type(const unsigned long& __l) : character(__l) { }
76
77 // to_int_type
78 operator unsigned long() const { return character; }
79 };
80
81 void test07()
82 {
83 bool test = true;
84 typedef std::basic_filebuf<gnu_char_type> gnu_filebuf;
85
86 try
87 { gnu_filebuf obj; }
88 catch(std::exception& obj)
89 {
90 test = false;
91 VERIFY( test );
92 }
93 }
94
95 #if !__GXX_WEAK__
96 // Explicitly instantiate for systems with no COMDAT or weak support.
97 template
98 std::basic_streambuf<gnu_char_type>::int_type
99 std::basic_streambuf<gnu_char_type>::_S_pback_size;
100 #endif
101
102 int main()
103 {
104 test01();
105 test07();
106 return 0;
107 }
108
109
110
111 // more surf!!!
112
113
114
115
116
117
118
119
120