forked from boostorg/tuple
Compare commits
24 Commits
svn-tags/m
...
boost-1.37
Author | SHA1 | Date | |
---|---|---|---|
e3954eea69 | |||
785ada83f4 | |||
57c6d6fd00 | |||
591a9a3ddf | |||
310c0cda3f | |||
e3455e7ddf | |||
ec599f4b77 | |||
31af4e8ec5 | |||
c493a8938d | |||
8bc4064ec5 | |||
3e7b7f407d | |||
88163596d0 | |||
588c928e5a | |||
76c2151830 | |||
2d13a60d05 | |||
9c6ef41dfe | |||
5686969287 | |||
a17ce206f2 | |||
34690282fe | |||
bc3d37ec2b | |||
eea1937afc | |||
8820994ffd | |||
045d761ab5 | |||
63c93b59b4 |
@ -4,7 +4,7 @@
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<IMG SRC="../../../c++boost.gif"
|
||||
<IMG SRC="../../../boost.png"
|
||||
ALT="C++ Boost" width="277" height="86">
|
||||
|
||||
<h1>Tuple Library : design decisions rationale</h1>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<title>Tuple library advanced features</title>
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<IMG SRC="../../../c++boost.gif"
|
||||
<IMG SRC="../../../boost.png"
|
||||
ALT="C++ Boost" width="277" height="86">
|
||||
|
||||
</head>
|
||||
@ -101,7 +101,7 @@ For a one-element cons list the tail argument (<code>null_type</code>) can be om
|
||||
<p>
|
||||
The template <code>access_traits</code> defines three type functions. Let <code>T</code> be a type of an element in a tuple:
|
||||
<ol>
|
||||
<li><code>access_traits<T>::type</code> maps <code>T</code> to the return type of the non-const access functions (nonmeber and member <code>get</code> functions, and the <code>get_head</code> function).</li>
|
||||
<li><code>access_traits<T>::non_const_type</code> maps <code>T</code> to the return type of the non-const access functions (nonmeber and member <code>get</code> functions, and the <code>get_head</code> function).</li>
|
||||
<li><code>access_traits<T>::const_type</code> maps <code>T</code> to the return type of the const access functions.</li>
|
||||
<li><code>access_traits<T>::parameter_type</code> maps <code>T</code> to the parameter type of the tuple constructor.</li>
|
||||
</ol>
|
||||
|
@ -4,7 +4,7 @@
|
||||
</head>
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
<IMG SRC="../../../c++boost.gif"
|
||||
<IMG SRC="../../../boost.png"
|
||||
ALT="C++ Boost" width="277" height="86">
|
||||
|
||||
<h1>The Boost Tuple Library</h1>
|
||||
@ -500,12 +500,12 @@ The idea for the tie mechanism came from an old usenet article by Ian McCulloch,
|
||||
|
||||
<p>
|
||||
<a name="publ_1"></a>[1]
|
||||
Järvi J.: <i>Tuples and multiple return values in C++</i>, TUCS Technical Report No 249, 1999 (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>).
|
||||
Järvi J.: <i>Tuples and multiple return values in C++</i>, TUCS Technical Report No 249, 1999<!-- (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>)-->.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a name="publ_2"></a>[2]
|
||||
Järvi J.: <i>ML-Style Tuple Assignment in Standard C++ - Extending the Multiple Return Value Formalism</i>, TUCS Technical Report No 267, 1999 (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>).
|
||||
Järvi J.: <i>ML-Style Tuple Assignment in Standard C++ - Extending the Multiple Return Value Formalism</i>, TUCS Technical Report No 267, 1999<!-- (<a href="http://www.tucs.fi/Publications">http://www.tucs.fi/Publications</a>)-->.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -516,7 +516,7 @@ Järvi J.: <i>ML-Style Tuple Assignment in Standard C++ - Extending the Mult
|
||||
|
||||
<p>Last modified 2003-09-07</p>
|
||||
|
||||
<p>© Copyright <a href="../../../people/jaakko_jarvi.htm"> Jaakko Järvi</a> 2001.
|
||||
<p>© Copyright <a href="http://www.boost.org/people/jaakko_jarvi.htm"> Jaakko Järvi</a> 2001.
|
||||
|
||||
Permission to copy, use, modify, sell and distribute this software and its documentation is granted provided this copyright notice appears in all copies.
|
||||
This software and its documentation is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.
|
||||
|
@ -1,15 +1,10 @@
|
||||
// tuple_basic.hpp -----------------------------------------------------
|
||||
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
@ -18,7 +13,7 @@
|
||||
// Fixed return types for get_head/get_tail
|
||||
// ( and other bugs ) per suggestion of Jens Maurer
|
||||
// simplified element type accessors + bug fix (Jeremy Siek)
|
||||
// Several changes/additions according to suggestions by Doug Gregor,
|
||||
// Several changes/additions according to suggestions by Douglas Gregor,
|
||||
// William Kempf, Vesa Karvonen, John Max Skaller, Ed Brey, Beman Dawes,
|
||||
// David Abrahams.
|
||||
|
||||
@ -43,6 +38,8 @@
|
||||
#include "boost/type_traits/cv_traits.hpp"
|
||||
#include "boost/type_traits/function_traits.hpp"
|
||||
|
||||
#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
|
||||
|
||||
namespace boost {
|
||||
namespace tuples {
|
||||
|
||||
@ -97,12 +94,22 @@ struct get_class {
|
||||
template<class RET, class HT, class TT >
|
||||
inline static RET get(const cons<HT, TT>& t)
|
||||
{
|
||||
#if BOOST_WORKAROUND(__IBMCPP__,==600)
|
||||
// vacpp 6.0 is not very consistent regarding the member template keyword
|
||||
// Here it generates an error when the template keyword is used.
|
||||
return get_class<N-1>::get<RET>(t.tail);
|
||||
#else
|
||||
return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
|
||||
#endif
|
||||
}
|
||||
template<class RET, class HT, class TT >
|
||||
inline static RET get(cons<HT, TT>& t)
|
||||
{
|
||||
#if BOOST_WORKAROUND(__IBMCPP__,==600)
|
||||
return get_class<N-1>::get<RET>(t.tail);
|
||||
#else
|
||||
return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
@ -128,6 +135,8 @@ struct get_class<0> {
|
||||
// Nth element ot T, first element is at index 0
|
||||
// -------------------------------------------------------
|
||||
|
||||
#ifndef BOOST_NO_CV_SPECIALIZATIONS
|
||||
|
||||
template<int N, class T>
|
||||
struct element
|
||||
{
|
||||
@ -149,14 +158,69 @@ private:
|
||||
typedef typename T::tail_type Next;
|
||||
typedef typename element<N-1, Next>::type unqualified_type;
|
||||
public:
|
||||
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
|
||||
typedef const unqualified_type type;
|
||||
#else
|
||||
typedef typename boost::add_const<unqualified_type>::type type;
|
||||
#endif
|
||||
|
||||
};
|
||||
template<class T>
|
||||
struct element<0,const T>
|
||||
{
|
||||
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
|
||||
typedef const typename T::head_type type;
|
||||
#else
|
||||
typedef typename boost::add_const<typename T::head_type>::type type;
|
||||
#endif
|
||||
};
|
||||
|
||||
#else // def BOOST_NO_CV_SPECIALIZATIONS
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<int N, class T, bool IsConst>
|
||||
struct element_impl
|
||||
{
|
||||
private:
|
||||
typedef typename T::tail_type Next;
|
||||
public:
|
||||
typedef typename element_impl<N-1, Next, IsConst>::type type;
|
||||
};
|
||||
|
||||
template<int N, class T>
|
||||
struct element_impl<N, T, true /* IsConst */>
|
||||
{
|
||||
private:
|
||||
typedef typename T::tail_type Next;
|
||||
public:
|
||||
typedef const typename element_impl<N-1, Next, true>::type type;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct element_impl<0, T, false /* IsConst */>
|
||||
{
|
||||
typedef typename T::head_type type;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct element_impl<0, T, true /* IsConst */>
|
||||
{
|
||||
typedef const typename T::head_type type;
|
||||
};
|
||||
|
||||
} // end of namespace detail
|
||||
|
||||
|
||||
template<int N, class T>
|
||||
struct element:
|
||||
public detail::element_impl<N, T, ::boost::is_const<T>::value>
|
||||
{
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
// -get function templates -----------------------------------------------
|
||||
// Usage: get<N>(aTuple)
|
||||
|
||||
@ -194,11 +258,17 @@ inline typename access_traits<
|
||||
typename element<N, cons<HT, TT> >::type
|
||||
>::non_const_type
|
||||
get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
|
||||
#if BOOST_WORKAROUND(__IBMCPP__,==600 )
|
||||
return detail::get_class<N>::
|
||||
#else
|
||||
return detail::get_class<N>::BOOST_NESTED_TEMPLATE
|
||||
#endif
|
||||
get<
|
||||
typename access_traits<
|
||||
typename element<N, cons<HT, TT> >::type
|
||||
>::non_const_type>(c);
|
||||
>::non_const_type,
|
||||
HT,TT
|
||||
>(c);
|
||||
}
|
||||
|
||||
// get function for const cons-lists, returns a const reference to
|
||||
@ -209,11 +279,17 @@ inline typename access_traits<
|
||||
typename element<N, cons<HT, TT> >::type
|
||||
>::const_type
|
||||
get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
|
||||
#if BOOST_WORKAROUND(__IBMCPP__,==600)
|
||||
return detail::get_class<N>::
|
||||
#else
|
||||
return detail::get_class<N>::BOOST_NESTED_TEMPLATE
|
||||
#endif
|
||||
get<
|
||||
typename access_traits<
|
||||
typename element<N, cons<HT, TT> >::type
|
||||
>::const_type>(c);
|
||||
>::const_type,
|
||||
HT,TT
|
||||
>(c);
|
||||
}
|
||||
|
||||
// -- the cons template --------------------------------------------------
|
||||
@ -286,7 +362,7 @@ struct cons {
|
||||
|
||||
template <class T2, class T3, class T4, class T5,
|
||||
class T6, class T7, class T8, class T9, class T10>
|
||||
cons( const null_type& t1, T2& t2, T3& t3, T4& t4, T5& t5,
|
||||
cons( const null_type& /*t1*/, T2& t2, T3& t3, T4& t4, T5& t5,
|
||||
T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )
|
||||
: head (),
|
||||
tail (t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())
|
||||
|
@ -1,17 +1,12 @@
|
||||
// - tuple_basic_no_partial_spec.hpp -----------------------------------------
|
||||
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Doug Gregor (gregod@rpi.edu)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Douglas Gregor (gregod@rpi.edu)
|
||||
// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org or http://lambda.cs.utu.fi
|
||||
|
||||
@ -110,7 +105,7 @@ namespace tuples {
|
||||
// Each of vc6 and vc7 seem to require a different formulation
|
||||
// of this return type
|
||||
template <class H, class T>
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
||||
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||
static typename add_reference<typename add_const<T>::type>::type
|
||||
#else
|
||||
static typename add_const_reference<T>::type
|
||||
|
@ -1,15 +1,10 @@
|
||||
// tuple.hpp - Boost Tuple Library --------------------------------------
|
||||
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
|
@ -1,16 +1,11 @@
|
||||
// tuple_comparison.hpp -----------------------------------------------------
|
||||
//
|
||||
// Copyright (C) 2001 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Gary Powell (gary.powell@sierra.com)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// For more information, see http://www.boost.org
|
||||
//
|
||||
|
@ -1,16 +1,11 @@
|
||||
// tuple_io.hpp --------------------------------------------------------------
|
||||
|
||||
// Copyright (C) 2001 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
// 2001 Gary Powell (gary.powell@sierra.com)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -354,7 +349,7 @@ extract_and_check_delimiter(
|
||||
char c;
|
||||
if (is_delimiter) {
|
||||
is >> c;
|
||||
if (c!=d) {
|
||||
if (is.good() && c!=d) {
|
||||
is.setstate(std::ios::failbit);
|
||||
}
|
||||
}
|
||||
@ -448,7 +443,7 @@ extract_and_check_delimiter(
|
||||
CharType c;
|
||||
if (is_delimiter) {
|
||||
is >> c;
|
||||
if (c!=d) {
|
||||
if (is.good() && c!=d) {
|
||||
is.setstate(std::ios::failbit);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,11 @@
|
||||
<meta http-equiv="refresh" content="0; URL=doc/tuple_users_guide.html">
|
||||
</head>
|
||||
<body>
|
||||
Automatic redirection failed, please go to <a href="doc/tuple_users_guide.html">doc/tuple_users_guide.html</a>
|
||||
Automatic redirection failed, please go to <a href="doc/tuple_users_guide.html">doc/tuple_users_guide.html</a>
|
||||
<hr>
|
||||
<p><EFBFBD> Copyright Beman Dawes, 2001</p>
|
||||
<p>Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or copy
|
||||
at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</p>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
24
test/Jamfile
24
test/Jamfile
@ -1,20 +1,8 @@
|
||||
subproject libs/tuple/test ;
|
||||
|
||||
unit-test tuple_test_bench
|
||||
: tuple_test_bench.cpp
|
||||
<lib>../../test/build/boost_test_exec_monitor
|
||||
: <sysinclude>$(BOOST_ROOT)
|
||||
;
|
||||
|
||||
unit-test io_test
|
||||
: io_test.cpp
|
||||
<lib>../../test/build/boost_test_exec_monitor
|
||||
: <sysinclude>$(BOOST_ROOT)
|
||||
;
|
||||
|
||||
unit-test another_tuple_test_bench
|
||||
: another_tuple_test_bench.cpp
|
||||
<lib>../../test/build/boost_test_exec_monitor
|
||||
: <sysinclude>$(BOOST_ROOT)
|
||||
;
|
||||
project : requirements <library>/boost/test//boost_test_exec_monitor ;
|
||||
|
||||
test-suite tuple :
|
||||
[ run tuple_test_bench.cpp ]
|
||||
[ run io_test.cpp ]
|
||||
[ run another_tuple_test_bench.cpp ]
|
||||
;
|
@ -1,13 +1,8 @@
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
|
@ -1,13 +1,8 @@
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
@ -57,7 +52,7 @@ int test_main(int argc, char * argv[] ) {
|
||||
os1 << set_close(']');
|
||||
os1 << set_delimiter(',');
|
||||
os1 << make_tuple(1, 2, 3);
|
||||
BOOST_TEST (os1.str() == std::string("[1,2,3]") );
|
||||
BOOST_CHECK (os1.str() == std::string("[1,2,3]") );
|
||||
|
||||
{
|
||||
useThisOStringStream os2;
|
||||
@ -67,13 +62,13 @@ int test_main(int argc, char * argv[] ) {
|
||||
os2 << set_delimiter(':');
|
||||
#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
os2 << make_tuple("TUPU", "HUPU", "LUPU", 4.5);
|
||||
BOOST_TEST (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") );
|
||||
BOOST_CHECK (os2.str() == std::string("(TUPU:HUPU:LUPU:4.5)") );
|
||||
#endif
|
||||
}
|
||||
|
||||
// The format is still [a, b, c] for os1
|
||||
os1 << make_tuple(1, 2, 3);
|
||||
BOOST_TEST (os1.str() == std::string("[1,2,3][1,2,3]") );
|
||||
BOOST_CHECK (os1.str() == std::string("[1,2,3][1,2,3]") );
|
||||
|
||||
ofstream tmp("temp.tmp");
|
||||
|
||||
@ -91,13 +86,13 @@ int test_main(int argc, char * argv[] ) {
|
||||
|
||||
#if !defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
tmp3 >> j;
|
||||
BOOST_TEST (tmp3.good() );
|
||||
BOOST_CHECK (tmp3.good() );
|
||||
#endif
|
||||
|
||||
tmp3 >> set_delimiter(':');
|
||||
tuple<int, int, int> i;
|
||||
tmp3 >> i;
|
||||
BOOST_TEST (tmp3.good() );
|
||||
BOOST_CHECK (tmp3.good() );
|
||||
|
||||
tmp3.close();
|
||||
|
||||
@ -106,8 +101,8 @@ int test_main(int argc, char * argv[] ) {
|
||||
useThisIStringStream is("(100 200 300)");
|
||||
|
||||
tuple<int, int, int> ti;
|
||||
BOOST_TEST(bool(is >> ti));
|
||||
BOOST_TEST(ti == make_tuple(100, 200, 300));
|
||||
BOOST_CHECK(bool(is >> ti));
|
||||
BOOST_CHECK(ti == make_tuple(100, 200, 300));
|
||||
|
||||
|
||||
// Note that strings are problematic:
|
||||
|
@ -1,13 +1,8 @@
|
||||
// Copyright (C) 1999, 2000 Jaakko J<EFBFBD>rvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
//
|
||||
// Permission to copy, use, sell and distribute this software is granted
|
||||
// provided this copyright notice appears in all copies.
|
||||
// Permission to modify the code and to distribute modified code is granted
|
||||
// provided this copyright notice appears in all copies, and a notice
|
||||
// that the code was modified is included with the copyright notice.
|
||||
//
|
||||
// This software is provided "as is" without express or implied warranty,
|
||||
// and with no claim as to its suitability for any purpose.
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
|
||||
@ -112,32 +107,32 @@ construction_test()
|
||||
// MSVC 6.0 just cannot find get without the namespace qualifier
|
||||
|
||||
tuple<int> t1;
|
||||
BOOST_TEST(get<0>(t1) == int());
|
||||
BOOST_CHECK(get<0>(t1) == int());
|
||||
|
||||
tuple<float> t2(5.5f);
|
||||
BOOST_TEST(get<0>(t2) > 5.4f && get<0>(t2) < 5.6f);
|
||||
BOOST_CHECK(get<0>(t2) > 5.4f && get<0>(t2) < 5.6f);
|
||||
|
||||
tuple<foo> t3(foo(12));
|
||||
BOOST_TEST(get<0>(t3) == foo(12));
|
||||
BOOST_CHECK(get<0>(t3) == foo(12));
|
||||
|
||||
tuple<double> t4(t2);
|
||||
BOOST_TEST(get<0>(t4) > 5.4 && get<0>(t4) < 5.6);
|
||||
BOOST_CHECK(get<0>(t4) > 5.4 && get<0>(t4) < 5.6);
|
||||
|
||||
tuple<int, float> t5;
|
||||
BOOST_TEST(get<0>(t5) == int());
|
||||
BOOST_TEST(get<1>(t5) == float());
|
||||
BOOST_CHECK(get<0>(t5) == int());
|
||||
BOOST_CHECK(get<1>(t5) == float());
|
||||
|
||||
tuple<int, float> t6(12, 5.5f);
|
||||
BOOST_TEST(get<0>(t6) == 12);
|
||||
BOOST_TEST(get<1>(t6) > 5.4f && get<1>(t6) < 5.6f);
|
||||
BOOST_CHECK(get<0>(t6) == 12);
|
||||
BOOST_CHECK(get<1>(t6) > 5.4f && get<1>(t6) < 5.6f);
|
||||
|
||||
tuple<int, float> t7(t6);
|
||||
BOOST_TEST(get<0>(t7) == 12);
|
||||
BOOST_TEST(get<1>(t7) > 5.4f && get<1>(t7) < 5.6f);
|
||||
BOOST_CHECK(get<0>(t7) == 12);
|
||||
BOOST_CHECK(get<1>(t7) > 5.4f && get<1>(t7) < 5.6f);
|
||||
|
||||
tuple<long, double> t8(t6);
|
||||
BOOST_TEST(get<0>(t8) == 12);
|
||||
BOOST_TEST(get<1>(t8) > 5.4f && get<1>(t8) < 5.6f);
|
||||
BOOST_CHECK(get<0>(t8) == 12);
|
||||
BOOST_CHECK(get<1>(t8) > 5.4f && get<1>(t8) < 5.6f);
|
||||
|
||||
dummy(
|
||||
tuple<no_def_constructor, no_def_constructor, no_def_constructor>(
|
||||
@ -180,27 +175,27 @@ void element_access_test()
|
||||
int i = get<0>(t);
|
||||
int i2 = get<3>(t);
|
||||
|
||||
BOOST_TEST(i == 1 && i2 == 2);
|
||||
BOOST_CHECK(i == 1 && i2 == 2);
|
||||
|
||||
int j = get<0>(ct);
|
||||
BOOST_TEST(j == 1);
|
||||
BOOST_CHECK(j == 1);
|
||||
|
||||
get<0>(t) = 5;
|
||||
BOOST_TEST(t.head == 5);
|
||||
BOOST_CHECK(t.head == 5);
|
||||
|
||||
// get<0>(ct) = 5; // can't assign to const
|
||||
|
||||
double e = get<1>(t);
|
||||
BOOST_TEST(e > 2.69 && e < 2.71);
|
||||
BOOST_CHECK(e > 2.69 && e < 2.71);
|
||||
|
||||
get<1>(t) = 3.14+i;
|
||||
BOOST_TEST(get<1>(t) > 4.13 && get<1>(t) < 4.15);
|
||||
BOOST_CHECK(get<1>(t) > 4.13 && get<1>(t) < 4.15);
|
||||
|
||||
// get<4>(t) = A(); // can't assign to const
|
||||
// dummy(get<5>(ct)); // illegal index
|
||||
|
||||
++get<0>(t);
|
||||
BOOST_TEST(get<0>(t) == 6);
|
||||
BOOST_CHECK(get<0>(t) == 6);
|
||||
|
||||
BOOST_STATIC_ASSERT((boost::is_const<boost::tuples::element<0, tuple<int, float> >::type>::value != true));
|
||||
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
@ -229,13 +224,13 @@ copy_test()
|
||||
tuple<int, char> t1(4, 'a');
|
||||
tuple<int, char> t2(5, 'b');
|
||||
t2 = t1;
|
||||
BOOST_TEST(get<0>(t1) == get<0>(t2));
|
||||
BOOST_TEST(get<1>(t1) == get<1>(t2));
|
||||
BOOST_CHECK(get<0>(t1) == get<0>(t2));
|
||||
BOOST_CHECK(get<1>(t1) == get<1>(t2));
|
||||
|
||||
tuple<long, std::string> t3(2, "a");
|
||||
t3 = t1;
|
||||
BOOST_TEST((double)get<0>(t1) == get<0>(t3));
|
||||
BOOST_TEST(get<1>(t1) == get<1>(t3)[0]);
|
||||
BOOST_CHECK((double)get<0>(t1) == get<0>(t3));
|
||||
BOOST_CHECK(get<1>(t1) == get<1>(t3)[0]);
|
||||
|
||||
// testing copy and assignment with implicit conversions between elements
|
||||
// testing tie
|
||||
@ -247,9 +242,9 @@ copy_test()
|
||||
int i; char c; double d;
|
||||
tie(i, c, d) = make_tuple(1, 'a', 5.5);
|
||||
|
||||
BOOST_TEST(i==1);
|
||||
BOOST_TEST(c=='a');
|
||||
BOOST_TEST(d>5.4 && d<5.6);
|
||||
BOOST_CHECK(i==1);
|
||||
BOOST_CHECK(c=='a');
|
||||
BOOST_CHECK(d>5.4 && d<5.6);
|
||||
}
|
||||
|
||||
void
|
||||
@ -261,10 +256,10 @@ mutate_test()
|
||||
get<2>(t1) = false;
|
||||
get<3>(t1) = foo(5);
|
||||
|
||||
BOOST_TEST(get<0>(t1) == 6);
|
||||
BOOST_TEST(get<1>(t1) > 2.1f && get<1>(t1) < 2.3f);
|
||||
BOOST_TEST(get<2>(t1) == false);
|
||||
BOOST_TEST(get<3>(t1) == foo(5));
|
||||
BOOST_CHECK(get<0>(t1) == 6);
|
||||
BOOST_CHECK(get<1>(t1) > 2.1f && get<1>(t1) < 2.3f);
|
||||
BOOST_CHECK(get<2>(t1) == false);
|
||||
BOOST_CHECK(get<3>(t1) == foo(5));
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -275,13 +270,13 @@ void
|
||||
make_tuple_test()
|
||||
{
|
||||
tuple<int, char> t1 = make_tuple(5, 'a');
|
||||
BOOST_TEST(get<0>(t1) == 5);
|
||||
BOOST_TEST(get<1>(t1) == 'a');
|
||||
BOOST_CHECK(get<0>(t1) == 5);
|
||||
BOOST_CHECK(get<1>(t1) == 'a');
|
||||
|
||||
tuple<int, std::string> t2;
|
||||
t2 = make_tuple((short int)2, std::string("Hi"));
|
||||
BOOST_TEST(get<0>(t2) == 2);
|
||||
BOOST_TEST(get<1>(t2) == "Hi");
|
||||
BOOST_CHECK(get<0>(t2) == 2);
|
||||
BOOST_CHECK(get<1>(t2) == "Hi");
|
||||
|
||||
|
||||
A a = A(); B b;
|
||||
@ -293,7 +288,7 @@ make_tuple_test()
|
||||
make_tuple(boost::ref(ca));
|
||||
|
||||
// the result of make_tuple is assignable:
|
||||
BOOST_TEST(make_tuple(2, 4, 6) ==
|
||||
BOOST_CHECK(make_tuple(2, 4, 6) ==
|
||||
(make_tuple(1, 2, 3) = make_tuple(2, 4, 6)));
|
||||
|
||||
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
@ -341,19 +336,19 @@ tie_test()
|
||||
foo c(5);
|
||||
|
||||
tie(a, b, c) = make_tuple(2, 'a', foo(3));
|
||||
BOOST_TEST(a == 2);
|
||||
BOOST_TEST(b == 'a');
|
||||
BOOST_TEST(c == foo(3));
|
||||
BOOST_CHECK(a == 2);
|
||||
BOOST_CHECK(b == 'a');
|
||||
BOOST_CHECK(c == foo(3));
|
||||
|
||||
tie(a, tuples::ignore, c) = make_tuple((short int)5, false, foo(5));
|
||||
BOOST_TEST(a == 5);
|
||||
BOOST_TEST(b == 'a');
|
||||
BOOST_TEST(c == foo(5));
|
||||
BOOST_CHECK(a == 5);
|
||||
BOOST_CHECK(b == 'a');
|
||||
BOOST_CHECK(c == foo(5));
|
||||
|
||||
// testing assignment from std::pair
|
||||
int i, j;
|
||||
tie (i, j) = std::make_pair(1, 2);
|
||||
BOOST_TEST(i == 1 && j == 2);
|
||||
BOOST_CHECK(i == 1 && j == 2);
|
||||
|
||||
tuple<int, int, float> ta;
|
||||
#ifdef E11
|
||||
@ -373,13 +368,13 @@ equality_test()
|
||||
{
|
||||
tuple<int, char> t1(5, 'a');
|
||||
tuple<int, char> t2(5, 'a');
|
||||
BOOST_TEST(t1 == t2);
|
||||
BOOST_CHECK(t1 == t2);
|
||||
|
||||
tuple<int, char> t3(5, 'b');
|
||||
tuple<int, char> t4(2, 'a');
|
||||
BOOST_TEST(t1 != t3);
|
||||
BOOST_TEST(t1 != t4);
|
||||
BOOST_TEST(!(t1 != t2));
|
||||
BOOST_CHECK(t1 != t3);
|
||||
BOOST_CHECK(t1 != t4);
|
||||
BOOST_CHECK(!(t1 != t2));
|
||||
}
|
||||
|
||||
|
||||
@ -393,14 +388,14 @@ ordering_test()
|
||||
tuple<int, float> t1(4, 3.3f);
|
||||
tuple<short, float> t2(5, 3.3f);
|
||||
tuple<long, double> t3(5, 4.4);
|
||||
BOOST_TEST(t1 < t2);
|
||||
BOOST_TEST(t1 <= t2);
|
||||
BOOST_TEST(t2 > t1);
|
||||
BOOST_TEST(t2 >= t1);
|
||||
BOOST_TEST(t2 < t3);
|
||||
BOOST_TEST(t2 <= t3);
|
||||
BOOST_TEST(t3 > t2);
|
||||
BOOST_TEST(t3 >= t2);
|
||||
BOOST_CHECK(t1 < t2);
|
||||
BOOST_CHECK(t1 <= t2);
|
||||
BOOST_CHECK(t2 > t1);
|
||||
BOOST_CHECK(t2 >= t1);
|
||||
BOOST_CHECK(t2 < t3);
|
||||
BOOST_CHECK(t2 <= t3);
|
||||
BOOST_CHECK(t3 > t2);
|
||||
BOOST_CHECK(t3 >= t2);
|
||||
|
||||
}
|
||||
|
||||
@ -417,7 +412,7 @@ void cons_test()
|
||||
cons<const int, cons<volatile float, null_type> > b(2,a);
|
||||
int i = 3;
|
||||
cons<int&, cons<const int, cons<volatile float, null_type> > > c(i, b);
|
||||
BOOST_TEST(make_tuple(3,2,1)==c);
|
||||
BOOST_CHECK(make_tuple(3,2,1)==c);
|
||||
|
||||
cons<char, cons<int, cons<float, null_type> > > x;
|
||||
dummy(x);
|
||||
@ -429,8 +424,8 @@ void cons_test()
|
||||
void const_tuple_test()
|
||||
{
|
||||
const tuple<int, float> t1(5, 3.3f);
|
||||
BOOST_TEST(get<0>(t1) == 5);
|
||||
BOOST_TEST(get<1>(t1) == 3.3f);
|
||||
BOOST_CHECK(get<0>(t1) == 5);
|
||||
BOOST_CHECK(get<1>(t1) == 3.3f);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user