]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/basic_ostream/3.cc
locale_facets.tcc: Tweak to avoid warnings.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / basic_ostream / 3.cc
CommitLineData
e6705174 1// 1999-01-17 bkoz test functionality of basic_filebuf for char_type == char
b2dad0e3 2
8d59b230 3// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
e6705174 4// Free Software Foundation, Inc.
b2dad0e3
BK
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
bcc6a03a
BK
22// 27.8.1.1 - Template class basic_filebuf
23// NB: This file is for testing basic_filebuf with NO OTHER INCLUDES.
1b4a6975 24
23cac885 25#include <ostream>
fe413112 26#include <testsuite_hooks.h>
b2dad0e3 27
e6705174 28// { dg-do compile }
c0b84d79 29
f13a69ec 30// libstdc++/2020
23cac885 31// should be able to use custom char_type, custom traits type
f13a69ec
BK
32class gnu_char_type
33{
34 unsigned long character;
35public:
36 // operator ==
37 bool
38 operator==(const gnu_char_type& __lhs)
39 { return character == __lhs.character; }
40
41 // operator <
42 bool
43 operator<(const gnu_char_type& __lhs)
44 { return character < __lhs.character; }
45
46 // default ctor
47 gnu_char_type() { }
48
49 // to_char_type
50 gnu_char_type(const unsigned long& __l) : character(__l) { }
51
52 // to_int_type
53 operator unsigned long() const { return character; }
54};
55
23cac885
BK
56// char_traits specialization
57struct gnu_char_traits
58{
59 typedef gnu_char_type char_type;
60 typedef long int_type;
61 typedef long pos_type;
62 typedef unsigned long off_type;
63 typedef long state_type;
64
65 static void
66 assign(char_type& __c1, const char_type& __c2) { }
67
68 static bool
69 eq(const char_type& __c1, const char_type& __c2) { return true; }
70
71 static bool
72 lt(const char_type& __c1, const char_type& __c2) { return true; }
73
74 static int
75 compare(const char_type* __s1, const char_type* __s2, size_t __n)
76 { return 0; }
77
78 static size_t
79 length(const char_type* __s) { return 0; }
80
81 static const char_type*
82 find(const char_type* __s, size_t __n, const char_type& __a)
83 { return __s; }
84
85 static char_type*
86 move(char_type* __s1, const char_type* __s2, size_t __n)
87 { return __s1; }
88
89 static char_type*
90 copy(char_type* __s1, const char_type* __s2, size_t __n)
91 { return __s1; }
92
93 static char_type*
94 assign(char_type* __s, size_t __n, char_type __a)
95 { return __s; }
96
97 static char_type
98 to_char_type(const int_type& __c)
99 { return char_type(); }
100
101 static int_type
102 to_int_type(const char_type& __c)
103 { return int_type(); }
104
105 static bool
106 eq_int_type(const int_type& __c1, const int_type& __c2)
107 { return true; }
108
109 static int_type
110 eof()
111 { return int_type(); }
112
113 static int_type
114 not_eof(const int_type& __c)
115 { return int_type(); }
116};
117
f13a69ec
BK
118void test07()
119{
11f10e6b 120 bool test __attribute__((unused)) = true;
23cac885
BK
121 typedef std::basic_ostream<gnu_char_type, gnu_char_traits> gnu_ostr;
122
f13a69ec 123 try
23cac885
BK
124 {
125 gnu_ostr obj(NULL);
126 }
f13a69ec
BK
127 catch(std::exception& obj)
128 {
129 test = false;
130 VERIFY( test );
131 }
132}
133
e6705174 134int main()
69302d8b 135{
f13a69ec 136 test07();
e6705174
BK
137 return 0;
138}
69302d8b 139
69302d8b 140
39003c99 141
e6705174 142// more surf!!!