]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / libstdc++-prettyprinters / simple11.cc
CommitLineData
047f1cec
JW
1// If you modify this, please update simple.cc and debug.cc as well.
2
52066eae
JW
3// { dg-do run { target c++11 } }
4// { dg-options "-g -O0" }
047f1cec 5
a945c346 6// Copyright (C) 2011-2024 Free Software Foundation, Inc.
047f1cec
JW
7//
8// This file is part of the GNU ISO C++ Library. This library is free
9// software; you can redistribute it and/or modify it under the
10// terms of the GNU General Public License as published by the
11// Free Software Foundation; either version 3, or (at your option)
12// any later version.
13
14// This library is distributed in the hope that it will be useful,
15// but WITHOUT ANY WARRANTY; without even the implied warranty of
16// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17// GNU General Public License for more details.
18
19// You should have received a copy of the GNU General Public License along
20// with this library; see the file COPYING3. If not see
21// <http://www.gnu.org/licenses/>.
22
23#include <string>
24#include <deque>
25#include <bitset>
26#include <iostream>
27#include <list>
28#include <map>
29#include <set>
93257ed6 30#include <sstream>
bdfc9f5c 31#include <vector>
047f1cec
JW
32#include <ext/slist>
33
34int
35main()
36{
37 std::string tem;
38 std::string str = "zardoz";
39// { dg-final { note-test str "\"zardoz\"" } }
40
41 std::bitset<10> bs;
42 bs[0] = 1;
43 bs[5] = 1;
44 bs[7] = 1;
3997383b 45// { dg-final { regexp-test bs {std::(__debug::)?bitset = {\[0\] = 1, \[5\] = 1, \[7\] = 1}} } }
047f1cec
JW
46
47 std::deque<std::string> deq;
48 deq.push_back("one");
49 deq.push_back("two");
3997383b 50// { dg-final { regexp-test deq {std::(__debug::)?deque with 2 elements = {"one", "two"}} } }
047f1cec
JW
51
52 std::deque<std::string>::iterator deqiter = deq.begin();
53// { dg-final { note-test deqiter {"one"} } }
54
bdfc9f5c
JW
55 std::deque<int>::iterator deqiter0;
56// { dg-final { note-test deqiter0 {non-dereferenceable iterator for std::deque} } }
57
047f1cec
JW
58 std::list<std::string> lst;
59 lst.push_back("one");
60 lst.push_back("two");
4347fea9 61// { dg-final { regexp-test lst {std::(__cxx11::)?(__debug::)?list = {\[0\] = "one", \[1\] = "two"}} } }
047f1cec
JW
62
63 std::list<std::string>::iterator lstiter = lst.begin();
64 tem = *lstiter;
65// { dg-final { note-test lstiter {"one"}} }
66
67 std::list<std::string>::const_iterator lstciter = lst.begin();
68 tem = *lstciter;
69// { dg-final { note-test lstciter {"one"}} }
70
bdfc9f5c
JW
71 std::list<int>::iterator lstiter0;
72// { dg-final { note-test lstiter0 {non-dereferenceable iterator for std::list} } }
73
047f1cec
JW
74 std::map<std::string, int> mp;
75 mp["zardoz"] = 23;
3997383b 76// { dg-final { regexp-test mp {std::(__debug::)?map with 1 element = {\["zardoz"\] = 23}} } }
047f1cec
JW
77
78 std::map<std::string, int>::iterator mpiter = mp.begin();
79// { dg-final { note-test mpiter {{first = "zardoz", second = 23}} } }
80
bdfc9f5c
JW
81 std::map<std::string, int>::iterator mpiter0;
82// { dg-final { note-test mpiter0 {non-dereferenceable iterator for associative container} } }
83
46d825c5
DE
84 // PR 67440
85 const std::set<int> const_intset = {2, 3};
3997383b 86// { dg-final { regexp-test const_intset {std::(__debug::)?set with 2 elements = {\[0\] = 2, \[1\] = 3}} } }
46d825c5 87
047f1cec
JW
88 std::set<std::string> sp;
89 sp.insert("clownfish");
90 sp.insert("barrel");
3997383b 91// { dg-final { regexp-test sp {std::(__debug::)?set with 2 elements = {\[0\] = "barrel", \[1\] = "clownfish"}} } }
047f1cec
JW
92
93 std::set<std::string>::const_iterator spciter = sp.begin();
94// { dg-final { note-test spciter {"barrel"} } }
95
bdfc9f5c
JW
96 std::set<int>::iterator spiter0;
97// { dg-final { note-test spiter0 {non-dereferenceable iterator for associative container} } }
98
99 std::vector<int> v;
100 v.push_back(1);
101 v.push_back(2);
102 v.erase(v.begin());
3997383b 103// { dg-final { regexp-test v {std::(__debug::)?vector of length 1, capacity 2 = \\{2\\}} } }
bdfc9f5c
JW
104 std::vector<int>::iterator viter3 = v.begin();
105// { dg-final { note-test viter3 {2} } }
106
107 std::vector<int>::iterator viter0;
108// { dg-final { note-test viter0 {non-dereferenceable iterator for std::vector} } }
109
36d0dada
MW
110 std::vector<bool> vb;
111 vb.reserve(100);
112 vb.push_back(true);
113 vb.push_back(true);
94872d7f 114 vb.push_back(true);
36d0dada
MW
115 vb.push_back(false);
116 vb.push_back(false);
117 vb.push_back(true);
118 vb.erase(vb.begin());
94872d7f 119// { dg-final { regexp-test vb {std::(__debug::)?vector<bool> of length 5, capacity 128 = \\{true, true, false, false, true\\}} } }
36d0dada 120
39836f83
MW
121 std::vector<bool>::iterator vbIt = vb.begin();
122// { dg-final { note-test vbIt {true} } }
123 std::vector<bool>::iterator vbIt2 = ++vbIt;
124// { dg-final { note-test vbIt2 {true} } }
125 std::vector<bool>::iterator vbIt3 = ++vbIt;
126// { dg-final { note-test vbIt3 {false} } }
127 std::vector<bool>::iterator vbIt4 = ++vbIt;
128// { dg-final { note-test vbIt4 {false} } }
129 std::vector<bool>::iterator vbIt5 = ++vbIt;
130// { dg-final { note-test vbIt5 {true} } }
131
132 std::vector<bool>::const_iterator vbcIt = vb.cbegin();
133// { dg-final { note-test vbcIt {true} } }
134
135 std::vector<bool>::iterator vbIt0;
136// { dg-final { note-test vbIt0 {non-dereferenceable iterator for std::vector<bool>} } }
137
c883d1dc 138 std::vector<bool>::reference br = *vb.begin();
39836f83 139// { dg-final { note-test br {true} } }
c883d1dc 140 std::vector<bool>::reference br2 = *vbIt2;
39836f83 141// { dg-final { note-test br2 {true} } }
c883d1dc 142 std::vector<bool>::reference br3 = *vbIt3;
39836f83 143// { dg-final { note-test br3 {false} } }
c883d1dc 144 std::vector<bool>::reference br4 = *vbIt4;
39836f83 145// { dg-final { note-test br4 {false} } }
c883d1dc 146 std::vector<bool>::reference br5 = *vbIt5;
39836f83
MW
147// { dg-final { note-test br5 {true} } }
148
c883d1dc
JW
149 std::vector<bool>::reference br0;
150// { dg-final { note-test br0 {invalid std::vector<bool>::reference} } }
39836f83 151
047f1cec
JW
152 __gnu_cxx::slist<int> sll;
153 sll.push_front(23);
154 sll.push_front(47);
155// { dg-final { note-test sll {__gnu_cxx::slist = {[0] = 47, [1] = 23}} } }
156
157 __gnu_cxx::slist<int>::iterator slliter = sll.begin();
158// { dg-final { note-test slliter {47} } }
159
bdfc9f5c
JW
160 __gnu_cxx::slist<int>::iterator slliter0;
161// { dg-final { note-test slliter0 {non-dereferenceable iterator for __gnu_cxx::slist} } }
162
93257ed6
PF
163 std::stringstream sstream;
164 sstream << "abc";
165// { dg-final { note-test sstream "\"abc\"" } }
166 std::stringstream ssin("input", std::ios::in);
167// { dg-final { note-test ssin "\"input\"" } }
168 std::istringstream ssin2("input");
169// { dg-final { note-test ssin2 "\"input\"" } }
170 std::ostringstream ssout;
171 ssout << "out";
172// { dg-final { note-test ssout "\"out\"" } }
173 std::stringstream redirected("xxx");
174 static_cast<std::basic_ios<std::stringstream::char_type>&>(redirected).rdbuf(sstream.rdbuf());
175// { dg-final { regexp-test redirected {std::.*stringstream redirected to .*} } }
176
af583c44 177 std::cout << "\n";
047f1cec
JW
178 return 0; // Mark SPOT
179}
180
181// { dg-final { gdb-test SPOT } }