[multiple changes]
2004-10-25 Benjamin Kosnik <bkoz@redhat.com> * include/Makefile.am (tr1_headers): Add tuple. * include/Makefile.in: Regenerate. 2004-10-25 Chris Jefferson <chris@bubblescope.net> * include/tr1/tuple: Implementation of tuple from library TR. * testsuite/tr1/6_containers/tuple/tuple_element.cc: New. * testsuite/tr1/6_containers/tuple/tuple_size.cc: New. * testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc: New. * testsuite/tr1/6_containers/tuple/cons/assignment.cc: New. * testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: New. * testsuite/tr1/6_containers/tuple/cons/constructor.cc: New. * testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc: New. * testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: New. * testsuite/tr1/6_containers/tuple/element_access/get.cc: New. From-SVN: r89548
This commit is contained in:
parent
08a692679f
commit
a520f0b0ae
|
@ -1,3 +1,23 @@
|
|||
2004-10-25 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/Makefile.am (tr1_headers): Add tuple.
|
||||
* include/Makefile.in: Regenerate.
|
||||
|
||||
2004-10-25 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
* include/tr1/tuple: Implementation of tuple from library TR.
|
||||
* testsuite/tr1/6_containers/tuple/tuple_element.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/tuple_size.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc:
|
||||
New.
|
||||
* testsuite/tr1/6_containers/tuple/cons/assignment.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/cons/big_tuples.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/cons/constructor.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc:
|
||||
New.
|
||||
* testsuite/tr1/6_containers/tuple/creation_functions/tie.cc: New.
|
||||
* testsuite/tr1/6_containers/tuple/element_access/get.cc: New.
|
||||
|
||||
2004-10-25 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/bits/basic_string.h (_Rep::_M_is_safe): Move to
|
||||
|
|
|
@ -228,7 +228,8 @@ ext_headers = \
|
|||
tr1_srcdir = ${glibcxx_srcdir}/include/tr1
|
||||
tr1_builddir = ./tr1
|
||||
tr1_headers = \
|
||||
${tr1_srcdir}/array
|
||||
${tr1_srcdir}/array \
|
||||
${tr1_srcdir}/tuple
|
||||
|
||||
# This is the common subset of files that all three "C" header models use.
|
||||
c_base_srcdir = $(C_INCLUDE_DIR)
|
||||
|
|
|
@ -445,7 +445,8 @@ ext_headers = \
|
|||
tr1_srcdir = ${glibcxx_srcdir}/include/tr1
|
||||
tr1_builddir = ./tr1
|
||||
tr1_headers = \
|
||||
${tr1_srcdir}/array
|
||||
${tr1_srcdir}/array \
|
||||
${tr1_srcdir}/tuple
|
||||
|
||||
|
||||
# This is the common subset of files that all three "C" header models use.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,50 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
#define TEST1(x) VERIFY( x == x && !(x != x) && x <= x && !(x < x) )
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int i=0;
|
||||
int j=0;
|
||||
int k=2;
|
||||
tuple<int, int, int> a(0, 0, 0);
|
||||
tuple<int, int, int> b(0, 0, 1);
|
||||
tuple<int& , int& , int&> c(i,j,k);
|
||||
tuple<const int&, const int&, const int&> d(c);
|
||||
TEST1(a);
|
||||
TEST1(b);
|
||||
TEST1(c);
|
||||
TEST1(d);
|
||||
VERIFY(!(a > a) && !(b > b));
|
||||
VERIFY(a >= a && b >= b);
|
||||
VERIFY(a < b && !(b < a) && a <= b && !(b <= a));
|
||||
VERIFY(b > a && !(a > b) && b >= a && !(a >= b));
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
tuple<> ta;
|
||||
tuple<> tb;
|
||||
ta = tb;
|
||||
|
||||
tuple<int> tc(1);
|
||||
tuple<int> td(0);
|
||||
td = tc;
|
||||
VERIFY(get<0>(td) == 1);
|
||||
|
||||
int i=0;
|
||||
tuple<int&> te(i);
|
||||
te = tc;
|
||||
VERIFY(i == 1);
|
||||
|
||||
tuple<const int&> tf(tc);
|
||||
|
||||
get<0>(tc) = 2;
|
||||
VERIFY(get<0>(tf) == 2);
|
||||
tuple<double> tg;
|
||||
tg = tc;
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
// A simple class without conversions to check some things
|
||||
struct foo
|
||||
{ };
|
||||
|
||||
void
|
||||
test_constructors()
|
||||
{
|
||||
int x1=0,x2=0;
|
||||
const int &z1=x1;
|
||||
|
||||
// Test empty constructor
|
||||
tuple<> ta;
|
||||
tuple<int,int> tb;
|
||||
// Test construction from values
|
||||
tuple<int,int> tc(x1,x2);
|
||||
tuple<int,int&> td(x1,x2);
|
||||
tuple<const int&> te(z1);
|
||||
x1=1;
|
||||
x2=1;
|
||||
VERIFY(get<0>(td) == 0 && get<1>(td) == 1 && get<0>(te) == 1);
|
||||
|
||||
// Test identical tuple copy constructor
|
||||
tuple<int,int> tf(tc);
|
||||
tuple<int,int> tg(td);
|
||||
tuple<const int&> th(te);
|
||||
// Test different tuple copy constructor
|
||||
tuple<int,double> ti(tc);
|
||||
tuple<int,double> tj(td);
|
||||
// Test constructing from a pair
|
||||
pair<int,int> pair1(1,1);
|
||||
const pair<int,int> pair2(pair1);
|
||||
tuple<int,int> tl(pair1);
|
||||
tuple<int,const int&> tm(pair1);
|
||||
tuple<int,int> tn(pair2);
|
||||
tuple<int,const int&> to(pair2);
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
//test construction
|
||||
typedef tuple<int,int,int,int,int,int,int,int,int,int> type1;
|
||||
type1 a(0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
|
||||
type1 b(0, 0, 0, 0, 0, 0, 0, 0, 0, 2);
|
||||
type1 c(a);
|
||||
typedef tuple<int,int,int,int,int,int,int,int,int,char> type2;
|
||||
type2 d(0, 0, 0, 0, 0, 0, 0, 0, 0, 3);
|
||||
type1 e(d);
|
||||
typedef tuple<foo,int,int,int,int,int,int,int,int,foo> type3;
|
||||
// get
|
||||
VERIFY(get<9>(a)==1 && get<9>(b)==2);
|
||||
// comparisons
|
||||
VERIFY(a==a && !(a!=a) && a<=a && a>=a && !(a<a) && !(a>a));
|
||||
VERIFY(!(a==b) && a!=b && a<=b && a<b && !(a>=b) && !(a>b));
|
||||
//tie
|
||||
{
|
||||
int i = 0;
|
||||
tie(ignore, ignore, ignore, ignore, ignore, ignore, ignore, ignore,
|
||||
ignore, i) = a;
|
||||
VERIFY(i == 1);
|
||||
}
|
||||
//test_assignment
|
||||
a=d;
|
||||
a=b;
|
||||
//make_tuple
|
||||
make_tuple(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
//tuple_size
|
||||
VERIFY(tuple_size<type3>::value == 10);
|
||||
//tuple_element
|
||||
{
|
||||
foo q1;
|
||||
tuple_element<0,type3>::type q2(q1);
|
||||
tuple_element<9,type3>::type q3(q1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int x1=0,x2=0;
|
||||
const int &z1=x1;
|
||||
|
||||
// Test empty constructor
|
||||
tuple<> ta;
|
||||
tuple<int,int> tb;
|
||||
// Test construction from values
|
||||
tuple<int,int> tc(x1,x2);
|
||||
tuple<int,int&> td(x1,x2);
|
||||
tuple<const int&> te(z1);
|
||||
x1=1;
|
||||
x2=1;
|
||||
VERIFY(get<0>(td) == 0 && get<1>(td) == 1 && get<0>(te) == 1);
|
||||
|
||||
// Test identical tuple copy constructor
|
||||
tuple<int,int> tf(tc);
|
||||
tuple<int,int> tg(td);
|
||||
tuple<const int&> th(te);
|
||||
// Test different tuple copy constructor
|
||||
tuple<int,double> ti(tc);
|
||||
tuple<int,double> tj(td);
|
||||
//tuple<int&, int&> tk(tc);
|
||||
tuple<const int&, const int&> tl(tc);
|
||||
tuple<const int&, const int&> tm(tl);
|
||||
// Test constructing from a pair
|
||||
pair<int,int> pair1(1,1);
|
||||
const pair<int,int> pair2(pair1);
|
||||
tuple<int,int> tn(pair1);
|
||||
tuple<int,const int&> to(pair1);
|
||||
tuple<int,int> tp(pair2);
|
||||
tuple<int,const int&> tq(pair2);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int i=0;
|
||||
make_tuple(1,2,4.0);
|
||||
make_tuple(ref(i)) = tuple<int>(1);
|
||||
VERIFY(i == 1);
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int x1 = 0;
|
||||
int x2 = 0;
|
||||
int y1 = 0;
|
||||
int y2 = 0;
|
||||
tuple<int,int> ta(1,1);
|
||||
tuple<const int&,const int&> tc(x1,x2);
|
||||
tie(y1,y2)=ta;
|
||||
VERIFY(y1 == 1 && y2 == 1);
|
||||
tie(y1,y2)=tc;
|
||||
VERIFY(y1 == 0 && y2 == 0);
|
||||
}
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int j=1;
|
||||
const int k=2;
|
||||
tuple<int,int &,const int&> a(0,j,k);
|
||||
const tuple<int,int &,const int&> b(1,j,k);
|
||||
VERIFY(get<0>(a)==0 && get<1>(a)==1 && get<2>(a)==2);
|
||||
get<0>(a)=3;
|
||||
get<1>(a)=4;
|
||||
VERIFY(get<0>(a)==3 && get<1>(a)==4);
|
||||
VERIFY(j==4);
|
||||
get<1>(b)=5;
|
||||
VERIFY(get<0>(b)==1 && get<1>(b)==5 && get<2>(b)==2);
|
||||
VERIFY(j==5);
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
struct foo
|
||||
{ };
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
// As foo isn't constructable from anything else, this
|
||||
// lets us check if type is returning foo when it should
|
||||
foo q1;
|
||||
tuple_element<0,tuple<foo,void,int> >::type q2(q1);
|
||||
tuple_element<2,tuple<void,int,foo> >::type q3(q1);
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
|
||||
|
||||
// Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
//
|
||||
// This file is part of the GNU ISO C++ Library. This library is free
|
||||
// software; you can redistribute it and/or modify it under the
|
||||
// terms of the GNU General Public License as published by the
|
||||
// Free Software Foundation; either version 2, or (at your option)
|
||||
// any later version.
|
||||
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this library; see the file COPYING. If not, write to the Free
|
||||
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
// USA.
|
||||
|
||||
// Tuple
|
||||
|
||||
#include <tr1/tuple>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace tr1;
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
VERIFY(tuple_size<tuple<> >::value == 0);
|
||||
VERIFY(tuple_size<tuple<int> >::value == 1);
|
||||
VERIFY(tuple_size<tuple<void> >::value == 1);
|
||||
typedef tuple<int,const int&,void> test_tuple1;
|
||||
VERIFY(tuple_size<test_tuple1>::value == 3);
|
||||
VERIFY(tuple_size<tuple<tuple<void> > >::value == 1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue