]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / fpos / mbstate_t / 1.cc
CommitLineData
b2dad0e3
BK
1// 1999-09-20 bkoz
2
748086b7 3// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
1b716e90 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
748086b7 9// Free Software Foundation; either version 3, or (at your option)
b2dad0e3
BK
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
748086b7
JJ
18// with this library; see the file COPYING3. If not see
19// <http://www.gnu.org/licenses/>.
b2dad0e3 20
b2dad0e3 21
23cac885 22// 27.4.3 template class fpos
b2dad0e3 23
23cac885
BK
24#include <cwchar> // for mbstate_t
25#include <ios>
1b716e90 26#include <cstring>
f13a69ec 27#include <testsuite_hooks.h>
b2dad0e3 28
bcc6a03a
BK
29void test01()
30{
11f10e6b 31 bool test __attribute__((unused)) = true;
bcc6a03a 32
23cac885 33 typedef std::mbstate_t state_type;
cc5112c9
BK
34 state_type state01 = state_type();
35 state_type state02 = state_type();
23cac885 36
cc5112c9
BK
37 std::streampos pos01(0);
38 std::streampos pos02(0);
23cac885 39
23cac885
BK
40 // 27.4.3.1 fpos members
41 // void state(state_type s);
42 // state_type state();
cc5112c9
BK
43
44 // XXX Need to have better sanity checking for the mbstate_t type,
45 // or whatever the insantiating type for class fpos happens to be
46 // for streampos, as things like equality operators and assignment
47 // operators, increment and deincrement operators need to be in
48 // place.
23cac885
BK
49 pos01.state(state02);
50 state01 = pos01.state();
1b716e90 51 test = std::memcmp(&state01, &state02, sizeof(state_type)) == 0;
cc5112c9 52 VERIFY( test );
23cac885 53}
b2dad0e3 54
e6705174
BK
55int main()
56{
bcc6a03a 57 test01();
b2dad0e3
BK
58 return 0;
59}