Compare commits

..

69 Commits

Author SHA1 Message Date
nobody
41cfcb972d This commit was manufactured by cvs2svn to create branch
'thread_rewrite'.

[SVN r30953]
2005-09-13 14:20:32 +00:00
John Maddock
1d60d49136 Large patch from Ulrich Eckhardt to fix support for EVC++ 4.
[SVN r30670]
2005-08-25 16:27:28 +00:00
Hartmut Kaiser
2dffdac9fe Disabiguated the detail namespace.
[SVN r30558]
2005-08-12 19:06:10 +00:00
Douglas Gregor
ddf00eb29d Merged from 1.33.0 release
[SVN r30540]
2005-08-12 13:02:37 +00:00
Dave Abrahams
0a6acd8ce8 Fix broken links
[SVN r30403]
2005-08-03 13:01:57 +00:00
Dave Abrahams
745322e797 Fix broken links
[SVN r30401]
2005-08-03 12:25:30 +00:00
Dave Abrahams
9f10fc03ce More Parameter library reference edits
[SVN r30276]
2005-07-28 04:19:28 +00:00
Dave Abrahams
84fbb3c896 Fix mis-nested namespace scope/#ifdef
[SVN r30159]
2005-07-18 18:50:47 +00:00
Douglas Gregor
865c707756 BOOST_NO_RESULT_OF support
[SVN r30040]
2005-07-13 12:35:37 +00:00
Markus Schöpflin
871f3a6779 Don't use the self contained include files for boost.test as this test is linked
with the boost.test library. We end up with multiple defined symbols, otherwise.


[SVN r29559]
2005-06-14 13:46:20 +00:00
John Maddock
aaca5ca871 Updated Borland workaround.
[SVN r29462]
2005-06-07 09:44:19 +00:00
Dave Abrahams
5a4e19989f Workaround for nonconformance to CWG issue 298, checked in on behalf of John Maddock
[SVN r29415]
2005-06-03 19:11:54 +00:00
John Maddock
6ea398c446 Make it clear that POD's are not zero initialised.
[SVN r29254]
2005-05-28 11:51:04 +00:00
Douglas Gregor
1bd83d43e8 Improvements in type_traits have gotten MSVC 7.0 and prior down to 12 failures here
[SVN r29170]
2005-05-24 14:53:49 +00:00
Fernando Cacciola
5ca5b4102b Optional's Assignment fixed
[SVN r28412]
2005-04-22 13:28:34 +00:00
Vladimir Prus
aca7699046 Add V2 Jamfile
[SVN r28246]
2005-04-14 13:15:46 +00:00
John Maddock
e702a944ca Fixes to get the tests working with the latest type traits and Boost.Test versions.
[SVN r27864]
2005-03-29 11:21:53 +00:00
John Maddock
a157c345ee Updated is_convertible test cases to check polymorphic-type conversions.
Added more test types to testing header.
Changed utility code to use new test header.


[SVN r27807]
2005-03-24 18:20:18 +00:00
Peter Dimov
dcb2dd4736 Removed type_traits include, added more tests
[SVN r27712]
2005-03-16 22:02:22 +00:00
Eric Niebler
ae19cd6236 work-around for Borland addressof(array) bug and associated tests
[SVN r27656]
2005-03-14 23:03:42 +00:00
Rene Rivera
3ab4d38931 Apply typo fixes from Julio M. Merino Vidal
[SVN r27513]
2005-02-27 17:28:24 +00:00
Fernando Cacciola
18c7fb72b5 ADL problem (with VC7.1) fixed
[SVN r27495]
2005-02-24 16:04:49 +00:00
Beman Dawes
6bb092a9b1 Add comment explaining use of assert.h
[SVN r27473]
2005-02-21 12:32:20 +00:00
Stefan Slapeta
f721b8b28c replaced BOOST_TEST
[SVN r27054]
2005-02-03 13:48:49 +00:00
Aleksey Gurtovoy
e5ba34472d merge RC_1_32_0 fixes
[SVN r26333]
2004-11-28 04:44:21 +00:00
Aleksey Gurtovoy
082ae17eaf merge RC_1_32_0 fixes
[SVN r26328]
2004-11-28 03:35:12 +00:00
Aleksey Gurtovoy
dd86e09ab4 merge RC_1_32_0 tab fixes
[SVN r26327]
2004-11-28 03:27:25 +00:00
Daniel Frey
baff23116e Fixed link to function_output_iterator
[SVN r25949]
2004-10-29 19:19:20 +00:00
Aleksey Gurtovoy
e549baf93a move enable_if tests into their own subdirectory
[SVN r25649]
2004-10-10 16:15:58 +00:00
Fernando Cacciola
30d46adcb7 bad links fixed
added myself to people


[SVN r25610]
2004-10-07 16:01:24 +00:00
Aleksey Gurtovoy
e854726be0 c++boost.gif -> boost.png replacement
[SVN r25573]
2004-10-05 15:45:52 +00:00
Joaquín M. López Muñoz
d198bd9d96 added explicit return to main
[SVN r25387]
2004-09-24 06:17:26 +00:00
Fernando Cacciola
5eb23cecd0 In-place factories moved from /detail to /utility
New value_initalized tests added


[SVN r25377]
2004-09-23 17:03:54 +00:00
Joaquín M. López Muñoz
eff2c75bba taken care of BOOST_NO_STDC_NAMESPACE
[SVN r25345]
2004-09-22 17:18:06 +00:00
Fernando Cacciola
325bd73df7 In-place factories moved from /detail to /utility
New value_initalized tests added


[SVN r25313]
2004-09-21 14:54:32 +00:00
Fernando Cacciola
0fcc554abd Initial commit
[SVN r25178]
2004-09-17 16:53:57 +00:00
John Maddock
b685784155 Added new types boost::long_long_type and boost::ulong_long_type in boost/config.hpp and applied these types in place of "long long" throughout. As a result, almost all of boost now compiles cleanly with -ansi -pedantic with gcc. Changes tested with gcc 3.3, 2.95, VC7.1 and Intel 8.
[SVN r24899]
2004-09-04 10:34:49 +00:00
Aleksey Gurtovoy
ac90fdc611 merge new MPL version from 'mplbook' branch
[SVN r24874]
2004-09-02 15:41:37 +00:00
Fernando Cacciola
51077e49f5 Fixed CW problems and refactored fail cases
[SVN r24870]
2004-09-02 13:19:50 +00:00
Fernando Cacciola
0c3199f72d Added my long name
[SVN r24869]
2004-09-02 12:59:42 +00:00
Dave Abrahams
62675a3bcd added copyright/license
[SVN r24814]
2004-08-30 01:31:40 +00:00
Daryle Walker
c26dbaa620 Updated copyright year list, since the interface changed
[SVN r24801]
2004-08-28 20:51:19 +00:00
Daryle Walker
8201624959 Moved a template argument default for base_from_member to primary header; removed forwarding header as it's not needed anymore
[SVN r24800]
2004-08-28 20:46:17 +00:00
Daryle Walker
f2116413d6 Changed constructor templates to be generated with the Preprocessor library; added a control macro for the maximum constructor argument length
[SVN r24799]
2004-08-28 20:24:17 +00:00
Dave Abrahams
b0baebeb0a fix noncopyable, finally
[SVN r24618]
2004-08-20 17:17:06 +00:00
Douglas Gregor
fb943b77d5 License updates
[SVN r24597]
2004-08-19 15:19:17 +00:00
Dave Abrahams
b4b39510fc ADL protection
[SVN r24595]
2004-08-19 13:12:35 +00:00
Aleksey Gurtovoy
6f0f05ba12 remove forward declaration for noncopyable
[SVN r24578]
2004-08-19 02:31:29 +00:00
Dave Abrahams
f0b64b6229 ADL protection
[SVN r24564]
2004-08-18 17:01:11 +00:00
Dave Abrahams
4229488989 Added redirection to fix old links.
[SVN r24558]
2004-08-18 13:55:35 +00:00
John Maddock
acd2e6ef2b Added Daryle Walker's copyrights as requested.
[SVN r24481]
2004-08-15 10:13:49 +00:00
Douglas Gregor
c26aaed71f Moved to BSL
[SVN r24446]
2004-08-12 17:13:07 +00:00
John Maddock
326d7ad4d7 Removed boost.org copyright assignments, and reverted to orginal author (as based on cvs history).
[SVN r24402]
2004-08-11 10:59:33 +00:00
Douglas Gregor
c76a2f4aab Add my license info
[SVN r24373]
2004-08-10 13:57:30 +00:00
John Maddock
d8b0ff2d7e Removed Boost.org copyrights and replaced with originating authors copyright instead.
[SVN r24372]
2004-08-10 12:53:34 +00:00
John Maddock
996ce2d307 Updated Beman Dawes' licence statement to use the new prefered form of words.
[SVN r24370]
2004-08-10 10:34:20 +00:00
Douglas Gregor
167fa4154f Eliminated unreviewed, unused, noncompiling code
[SVN r24314]
2004-08-05 18:57:39 +00:00
Stefan Slapeta
0c7e7c3c39 half_open_range_test removed
[SVN r24313]
2004-08-05 18:46:55 +00:00
Stefan Slapeta
9d8f8f41dc Include for test library fixed
[SVN r24299]
2004-08-05 09:23:05 +00:00
Aleksey Gurtovoy
39c4445b39 add missing tests, reorder tests by filename
[SVN r24216]
2004-08-01 05:40:21 +00:00
Douglas Gregor
7819b022ad License update
[SVN r24180]
2004-07-30 04:46:56 +00:00
Douglas Gregor
65d27e7f86 License update
[SVN r24175]
2004-07-30 01:47:08 +00:00
Douglas Gregor
212a70bf77 Remove "and" from copyright
[SVN r24167]
2004-07-29 15:50:36 +00:00
Douglas Gregor
6b5dc18a46 Converted to Boost Software License, Version 1.0
[SVN r24096]
2004-07-27 03:43:34 +00:00
Douglas Gregor
0917f83b9c Converted to Boost Software License, Version 1.0
[SVN r24055]
2004-07-26 00:32:12 +00:00
Douglas Gregor
7322bd3903 License update
[SVN r24048]
2004-07-25 19:13:06 +00:00
Douglas Gregor
e998010184 Add license
[SVN r24021]
2004-07-25 03:57:20 +00:00
Douglas Gregor
918a1c93e4 Doug Gregor -> Douglas Gregor
[SVN r24016]
2004-07-25 02:29:29 +00:00
Douglas Gregor
14c87853c2 Needed to include cstddef to get std::size_t
[SVN r24000]
2004-07-23 18:42:30 +00:00
21 changed files with 343 additions and 192 deletions

View File

@@ -3,10 +3,9 @@
//
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// 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)
//
// Note: There are no include guards. This is intentional.
//
@@ -33,6 +32,6 @@ void assertion_failed(char const * expr, char const * function, char const * fil
#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
#else
# include <assert.h>
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
# define BOOST_ASSERT(expr) assert(expr)
#endif

View File

@@ -10,15 +10,13 @@
//
// boost/checked_delete.hpp
//
// Copyright (c) 1999, 2000, 2001, 2002 boost.org
// Copyright (c) 2002, 2003 Peter Dimov
// Copyright (c) 2003 Daniel Frey
// Copyright (c) 2003 Howard Hinnant
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// 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)
//
// See http://www.boost.org/libs/utility/checked_delete.html for documentation.
//

View File

@@ -12,10 +12,9 @@
//
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// 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)
//
// http://www.boost.org/libs/utility/current_function.html
//

View File

@@ -25,6 +25,7 @@
#include <boost/type_traits/is_arithmetic.hpp>
#include <boost/type_traits/is_pointer.hpp>
#include <boost/detail/workaround.hpp>
namespace boost{
@@ -75,7 +76,7 @@ public:
// however compiler bugs prevent this - instead pass three bool's to
// ct_imp<T,bool,bool,bool> and add an extra partial specialisation
// of ct_imp to handle the logic. (JM)
typedef typename detail::ct_imp<
typedef typename boost::detail::ct_imp<
T,
::boost::is_pointer<T>::value,
::boost::is_arithmetic<T>::value
@@ -91,7 +92,7 @@ struct call_traits<T&>
typedef T& param_type; // hh removed const
};
#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x560)
#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x570 ) )
// these are illegal specialisations; cv-qualifies applied to
// references have no effect according to [8.3.2p1],
// C++ Builder requires them though as it treats cv-qualified

View File

@@ -132,7 +132,7 @@ namespace details
template <class T1, class T2>
class compressed_pair_imp<T1, T2, 1>
: private T1
: private ::boost::remove_cv<T1>::type
{
public:
typedef T1 first_type;
@@ -174,7 +174,7 @@ namespace details
template <class T1, class T2>
class compressed_pair_imp<T1, T2, 2>
: private T2
: private ::boost::remove_cv<T2>::type
{
public:
typedef T1 first_type;
@@ -217,8 +217,8 @@ namespace details
template <class T1, class T2>
class compressed_pair_imp<T1, T2, 3>
: private T1,
private T2
: private ::boost::remove_cv<T1>::type,
private ::boost::remove_cv<T2>::type
{
public:
typedef T1 first_type;
@@ -257,7 +257,7 @@ namespace details
// but reuses T1 base class for both first() and second().
template <class T1, class T2>
class compressed_pair_imp<T1, T2, 4>
: private T1
: private ::boost::remove_cv<T1>::type
{
public:
typedef T1 first_type;
@@ -430,5 +430,3 @@ swap(compressed_pair<T1, T2>& x, compressed_pair<T1, T2>& y)
#endif // BOOST_DETAIL_COMPRESSED_PAIR_HPP

View File

@@ -1,8 +1,7 @@
// (C) Copyright Jens Maurer 2001. Permission to copy, use,
// modify, sell and distribute this software is granted provided this
// copyright notice appears in all copies. This software is provided
// "as is" without express or implied warranty, and with no claim as
// to its suitability for any purpose.
// (C) Copyright Jens Maurer 2001.
// 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)
//
// Revision History:

View File

@@ -1,10 +1,8 @@
// Boost next_prior.hpp header file ---------------------------------------//
// (C) Copyright Boost.org 1999-2003. Permission to copy, use, modify, sell
// and distribute this software is granted provided this copyright
// notice appears in all copies. This software is provided "as is" without
// express or implied warranty, and with no claim as to its suitability for
// any purpose.
// (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. 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)
// See http://www.boost.org/libs/utility for documentation.

View File

@@ -1,10 +1,8 @@
// Boost noncopyable.hpp header file --------------------------------------//
// (C) Copyright Boost.org 1999-2003. Permission to copy, use, modify, sell
// and distribute this software is granted provided this copyright
// notice appears in all copies. This software is provided "as is" without
// express or implied warranty, and with no claim as to its suitability for
// any purpose.
// (C) Copyright Beman Dawes 1999-2003. 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)
// See http://www.boost.org/libs/utility for documentation.
@@ -18,15 +16,20 @@ namespace boost {
// Contributed by Dave Abrahams
class noncopyable
namespace noncopyable_ // protection from unintended ADL
{
protected:
noncopyable() {}
~noncopyable() {}
private: // emphasize the following members are private
noncopyable( const noncopyable& );
const noncopyable& operator=( const noncopyable& );
};
class noncopyable
{
protected:
noncopyable() {}
~noncopyable() {}
private: // emphasize the following members are private
noncopyable( const noncopyable& );
const noncopyable& operator=( const noncopyable& );
};
}
typedef noncopyable_::noncopyable noncopyable;
} // namespace boost

View File

@@ -1,10 +1,9 @@
// Boost operators.hpp header file ----------------------------------------//
// (C) Copyright David Abrahams, Jeremy Siek, and Daryle Walker 1999-2001.
// Permission to copy, use, modify, sell and distribute this software is
// granted provided this copyright notice appears in all copies. This
// software is provided "as is" without express or implied warranty, and
// with no claim as to its suitability for any purpose.
// (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
// 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)
// See http://www.boost.org/libs/utility/operators.htm for documentation.
@@ -675,7 +674,7 @@ struct random_access_iteratable
// Here's where we put it all together, defining the xxxx forms of the templates
// in namespace boost. We also define specializations of is_chained_base<> for
// the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
// neccessary.
// necessary.
//
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
@@ -700,7 +699,7 @@ template<class T> struct is_chained_base {
} // namespace boost
// Import a 4-type-argument operator template into boost (if neccessary) and
// Import a 4-type-argument operator template into boost (if necessary) and
// provide a specialization of 'is_chained_base<>' for it.
# define BOOST_OPERATOR_TEMPLATE4(template_name4) \
BOOST_IMPORT_TEMPLATE4(template_name4) \
@@ -709,7 +708,7 @@ template<class T> struct is_chained_base {
typedef ::boost::detail::true_t value; \
};
// Import a 3-type-argument operator template into boost (if neccessary) and
// Import a 3-type-argument operator template into boost (if necessary) and
// provide a specialization of 'is_chained_base<>' for it.
# define BOOST_OPERATOR_TEMPLATE3(template_name3) \
BOOST_IMPORT_TEMPLATE3(template_name3) \
@@ -718,7 +717,7 @@ template<class T> struct is_chained_base {
typedef ::boost::detail::true_t value; \
};
// Import a 2-type-argument operator template into boost (if neccessary) and
// Import a 2-type-argument operator template into boost (if necessary) and
// provide a specialization of 'is_chained_base<>' for it.
# define BOOST_OPERATOR_TEMPLATE2(template_name2) \
BOOST_IMPORT_TEMPLATE2(template_name2) \
@@ -727,7 +726,7 @@ template<class T> struct is_chained_base {
typedef ::boost::detail::true_t value; \
};
// Import a 1-type-argument operator template into boost (if neccessary) and
// Import a 1-type-argument operator template into boost (if necessary) and
// provide a specialization of 'is_chained_base<>' for it.
# define BOOST_OPERATOR_TEMPLATE1(template_name1) \
BOOST_IMPORT_TEMPLATE1(template_name1) \

View File

@@ -18,10 +18,9 @@
// Copyright (C) 2001, 2002 Peter Dimov
// Copyright (C) 2002 David Abrahams
//
// Permission to copy, use, modify, sell and distribute this software
// is granted provided this copyright notice appears in all copies.
// 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)
//
// See http://www.boost.org/libs/bind/ref.html for documentation.
//
@@ -74,18 +73,13 @@ template<class T> inline reference_wrapper<T const> BOOST_REF_CONST cref(T const
# undef BOOST_REF_CONST
# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
template<typename T>
class is_reference_wrapper
: public mpl::false_
{
};
template<typename T>
class is_reference_wrapper<reference_wrapper<T> >
: public mpl::true_
{
};
template<typename T>
class unwrap_reference
{
@@ -93,12 +87,30 @@ class unwrap_reference
typedef T type;
};
template<typename T>
class unwrap_reference<reference_wrapper<T> >
{
public:
typedef T type;
};
# define AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(X) \
template<typename T> \
class is_reference_wrapper< X > \
: public mpl::true_ \
{ \
}; \
\
template<typename T> \
class unwrap_reference< X > \
{ \
public: \
typedef T type; \
}; \
/**/
AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T>)
#if !defined(BOOST_NO_CV_SPECIALIZATIONS)
AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const)
AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> volatile)
AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const volatile)
#endif
# undef AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF
# else // no partial specialization
} // namespace boost

View File

@@ -1,6 +1,6 @@
// Boost utility.hpp header file -------------------------------------------//
// Copyright 1999-2003 Boost.org. Use, modification, and distribution are
// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
// subject to the Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)

View File

@@ -1,15 +1,10 @@
// Copyright (C) 2002 Brad King (brad.king@kitware.com)
// Doug Gregor (gregod@cs.rpi.edu)
// Douglas Gregor (gregod@cs.rpi.edu)
// Peter Dimov
//
// 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,9 +13,6 @@
# include <boost/config.hpp>
# include <boost/detail/workaround.hpp>
# if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
# include <boost/type_traits/add_pointer.hpp>
# endif
namespace boost {
@@ -28,7 +20,14 @@ namespace boost {
// VC7 strips const from nested classes unless we add indirection here
# if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
template <typename T> typename add_pointer<T>::type
template<class T> struct _addp
{
typedef T * type;
};
template <typename T> typename _addp<T>::type
# else
template <typename T> T*
# endif
@@ -38,6 +37,22 @@ addressof(T& v)
&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
}
// Borland doesn't like casting an array reference to a char reference
// but these overloads work around the problem.
# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
template<typename T,std::size_t N>
T (*addressof(T (&t)[N]))[N]
{
return reinterpret_cast<T(*)[N]>(&t);
}
template<typename T,std::size_t N>
const T (*addressof(const T (&t)[N]))[N]
{
return reinterpret_cast<const T(*)[N]>(&t);
}
# endif
}
#endif // BOOST_UTILITY_ADDRESSOF_HPP

View File

@@ -1,15 +1,53 @@
// boost utility/base_from_member.hpp header file --------------------------//
// Copyright 2001, 2003 Daryle Walker. Use, modification, and distribution are
// subject to the Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
// Copyright 2001, 2003, 2004 Daryle Walker. Use, modification, and
// distribution are subject to the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or a copy at
// <http://www.boost.org/LICENSE_1_0.txt>.)
// See <http://www.boost.org/libs/utility/> for the library's home page.
#ifndef BOOST_UTILITY_BASE_FROM_MEMBER_HPP
#define BOOST_UTILITY_BASE_FROM_MEMBER_HPP
#include <boost/utility_fwd.hpp> // required for parameter defaults
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
// Base-from-member arity configuration macro ------------------------------//
// The following macro determines how many arguments will be in the largest
// constructor template of base_from_member. Constructor templates will be
// generated from one argument to this maximum. Code from other files can read
// this number if they need to always match the exact maximum base_from_member
// uses. The maximum constructor length can be changed by overriding the
// #defined constant. Make sure to apply the override, if any, for all source
// files during project compiling for consistency.
// Contributed by Jonathan Turkanis
#ifndef BOOST_BASE_FROM_MEMBER_MAX_ARITY
#define BOOST_BASE_FROM_MEMBER_MAX_ARITY 10
#endif
// An iteration of a constructor template for base_from_member -------------//
// A macro that should expand to:
// template < typename T1, ..., typename Tn >
// base_from_member( T1 x1, ..., Tn xn )
// : member( x1, ..., xn )
// {}
// This macro should only persist within this file.
#define BOOST_PRIVATE_CTR_DEF( z, n, data ) \
template < BOOST_PP_ENUM_PARAMS(n, typename T) > \
explicit base_from_member( BOOST_PP_ENUM_BINARY_PARAMS(n, T, x) ) \
: member( BOOST_PP_ENUM_PARAMS(n, x) ) \
{} \
/**/
namespace boost
@@ -24,7 +62,7 @@ namespace boost
// Contributed by Daryle Walker
template < typename MemberType, int UniqueID >
template < typename MemberType, int UniqueID = 0 >
class base_from_member
{
protected:
@@ -34,66 +72,16 @@ protected:
: member()
{}
template< typename T1 >
explicit base_from_member( T1 x1 )
: member( x1 )
{}
template< typename T1, typename T2 >
base_from_member( T1 x1, T2 x2 )
: member( x1, x2 )
{}
template< typename T1, typename T2, typename T3 >
base_from_member( T1 x1, T2 x2, T3 x3 )
: member( x1, x2, x3 )
{}
template< typename T1, typename T2, typename T3, typename T4 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4 )
: member( x1, x2, x3, x4 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5 )
: member( x1, x2, x3, x4, x5 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, T6 x6 )
: member( x1, x2, x3, x4, x5, x6 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, T6 x6, T7 x7 )
: member( x1, x2, x3, x4, x5, x6, x7 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, T6 x6, T7 x7, T8 x8 )
: member( x1, x2, x3, x4, x5, x6, x7, x8 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, T6 x6, T7 x7, T8 x8,
T9 x9 )
: member( x1, x2, x3, x4, x5, x6, x7, x8, x9 )
{}
template< typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10 >
base_from_member( T1 x1, T2 x2, T3 x3, T4 x4, T5 x5, T6 x6, T7 x7, T8 x8,
T9 x9, T10 x10 )
: member( x1, x2, x3, x4, x5, x6, x7, x8, x9, x10 )
{}
BOOST_PP_REPEAT_FROM_TO( 1, BOOST_PP_INC(BOOST_BASE_FROM_MEMBER_MAX_ARITY),
BOOST_PRIVATE_CTR_DEF, _ )
}; // boost::base_from_member
} // namespace boost
// Undo any private macros
#undef BOOST_PRIVATE_CTR_DEF
#endif // BOOST_UTILITY_BASE_FROM_MEMBER_HPP

View File

@@ -0,0 +1,33 @@
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to 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)
//
// See http://www.boost.org/lib/optional for documentation.
//
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_25AGO2003_HPP
#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_25AGO2003_HPP
#include <boost/config.hpp>
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/punctuation/paren.hpp>
#include <boost/preprocessor/facilities/empty.hpp>
#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT(z,n,_) BOOST_PP_CAT(m_a,n) BOOST_PP_LPAREN() BOOST_PP_CAT(a,n) BOOST_PP_RPAREN()
#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL(z,n,_) BOOST_PP_CAT(A,n) const& BOOST_PP_CAT(m_a,n);
#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_ARG(z,n,_) BOOST_PP_CAT(m_a,n)
#define BOOST_MAX_INPLACE_FACTORY_ARITY 10
#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_25AGO2003_HPP
#endif

View File

@@ -0,0 +1,23 @@
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to 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)
//
// See http://www.boost.org/lib/optional for documentation.
//
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_25AGO2003_HPP
#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_25AGO2003_HPP
#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT
#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL
#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_ARG
#undef BOOST_MAX_INPLACE_FACTORY_ARITY
#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_25AGO2003_HPP
#endif

View File

@@ -1,3 +1,11 @@
// Boost result_of library
// Copyright Douglas Gregor 2004. Use, modification and
// distribution is subject to 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/libs/utility
#if !defined(BOOST_PP_IS_ITERATING)
# error Boost result_of - do not include this file!
#endif

View File

@@ -0,0 +1,58 @@
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to 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)
//
// See http://www.boost.org/lib/optional for documentation.
//
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
#ifndef BOOST_UTILITY_INPLACE_FACTORY_25AGO2003_HPP
#define BOOST_UTILITY_INPLACE_FACTORY_25AGO2003_HPP
#include <boost/utility/detail/in_place_factory_prefix.hpp>
#include <boost/type.hpp>
namespace boost {
class in_place_factory_base {} ;
#define BOOST_DEFINE_INPLACE_FACTORY_CLASS(z,n,_) \
template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n),class A) > \
class BOOST_PP_CAT(in_place_factory, BOOST_PP_INC(n) ) : public in_place_factory_base \
{ \
public: \
\
BOOST_PP_CAT(in_place_factory, BOOST_PP_INC(n) ) ( BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_INC(n),A,const& a) ) \
: \
BOOST_PP_ENUM( BOOST_PP_INC(n), BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT, _ ) \
{} \
\
template<class T> \
void apply ( void* address BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T) ) const \
{ \
new ( address ) T ( BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), m_a ) ) ; \
} \
\
BOOST_PP_REPEAT( BOOST_PP_INC(n), BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL, _) \
} ; \
\
template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n),class A) > \
BOOST_PP_CAT(in_place_factory, BOOST_PP_INC(n) ) < BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), A ) > \
in_place ( BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_INC(n),A, const& a) ) \
{ \
return BOOST_PP_CAT(in_place_factory, BOOST_PP_INC(n) ) < BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), A ) > \
( BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), a ) ) ; \
} ; \
BOOST_PP_REPEAT( BOOST_MAX_INPLACE_FACTORY_ARITY, BOOST_DEFINE_INPLACE_FACTORY_CLASS, BOOST_PP_EMPTY() )
} // namespace boost
#include <boost/utility/detail/in_place_factory_suffix.hpp>
#endif

View File

@@ -1,6 +1,6 @@
// Boost result_of library
// Copyright Doug Gregor 2004. Use, modification and
// Copyright Douglas Gregor 2004. Use, modification and
// distribution is subject to 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)
@@ -14,7 +14,7 @@
#include <boost/type.hpp>
#include <boost/preprocessor.hpp>
#include <boost/detail/workaround.hpp>
#include <boost/mpl/aux_/has_xxx.hpp>
#include <boost/mpl/has_xxx.hpp>
#ifndef BOOST_RESULT_OF_NUM_ARGS
# define BOOST_RESULT_OF_NUM_ARGS 10
@@ -57,9 +57,10 @@ struct result_of : get_result_of<F, FArgs, (has_result_type<F>::value)> {};
#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_RESULT_OF_NUM_ARGS,<boost/utility/detail/result_of_iterate.hpp>))
#include BOOST_PP_ITERATE()
}
#else
# error Your compiler cannot support class template result_of
# define BOOST_NO_RESULT_OF 1
#endif
}
#endif // BOOST_RESULT_OF_HPP

View File

@@ -0,0 +1,57 @@
// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to 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)
//
// See http://www.boost.org/lib/optional for documentation.
//
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
#ifndef BOOST_UTILITY_TYPED_INPLACE_FACTORY_25AGO2003_HPP
#define BOOST_UTILITY_TYPED_INPLACE_FACTORY_25AGO2003_HPP
#include <boost/utility/detail/in_place_factory_prefix.hpp>
namespace boost {
class typed_in_place_factory_base {} ;
#define BOOST_DEFINE_TYPED_INPLACE_FACTORY_CLASS(z,n,_) \
template< class T, BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n),class A) > \
class BOOST_PP_CAT(typed_in_place_factory, BOOST_PP_INC(n) ) : public typed_in_place_factory_base \
{ \
public: \
\
typedef T value_type ; \
\
BOOST_PP_CAT(typed_in_place_factory, BOOST_PP_INC(n) ) ( BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_INC(n),A,const& a) ) \
: \
BOOST_PP_ENUM( BOOST_PP_INC(n), BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT, _ ) \
{} \
\
void apply ( void* address ) const \
{ \
new ( address ) T ( BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), m_a ) ) ; \
} \
\
BOOST_PP_REPEAT( BOOST_PP_INC(n), BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL, _) \
} ; \
\
template< class T, BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n),class A) > \
BOOST_PP_CAT(typed_in_place_factory, BOOST_PP_INC(n) ) < T , BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), A ) > \
in_place ( BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PP_INC(n),A, const& a) ) \
{ \
return BOOST_PP_CAT(typed_in_place_factory, BOOST_PP_INC(n) ) < T, BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), A ) > \
( BOOST_PP_ENUM_PARAMS( BOOST_PP_INC(n), a ) ) ; \
} ; \
BOOST_PP_REPEAT( BOOST_MAX_INPLACE_FACTORY_ARITY, BOOST_DEFINE_TYPED_INPLACE_FACTORY_CLASS, BOOST_PP_EMPTY() )
} // namespace boost
#include <boost/utility/detail/in_place_factory_suffix.hpp>
#endif

View File

@@ -1,13 +1,8 @@
// (C) 2002, Fernando Luis Cacciola Carballal.
//
// This material is provided "as is", with absolutely no warranty expressed
// or implied. Any use is at your own risk.
//
// Permission to use or copy this software for any purpose is hereby granted
// without fee, provided the above notices are retained on all copies.
// Permission to modify the code and to distribute modified code is granted,
// provided the above notices are retained, and a notice that the code was
// modified is included with the above copyright notice.
// 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)
//
// 21 Ago 2002 (Created) Fernando Cacciola
//

View File

@@ -1,33 +0,0 @@
// Boost utility_fwd.hpp header file ---------------------------------------//
// Copyright 2001, 2003 Boost.org. Use, modification, and distribution are
// subject to the Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
// See <http://www.boost.org/libs/utility/> for the library's home page.
#ifndef BOOST_UTILITY_FWD_HPP
#define BOOST_UTILITY_FWD_HPP
namespace boost
{
// From <boost/utility/base_from_member.hpp> -------------------------------//
template < typename MemberType, int UniqueID = 0 >
class base_from_member;
// From <boost/noncopyable.hpp> --------------------------------------------//
class noncopyable;
// Also has a few function templates
} // namespace boost
#endif // BOOST_UTILITY_FWD_HPP