Compare commits

..

27 Commits

Author SHA1 Message Date
7016e0fe37 Branch for adding initializer list support (only in the unreleased gcc 4.4 at the moment).
[SVN r48931]
2008-09-23 19:45:43 +00:00
575ce8ca26 Fix cyclic dependencies between Boost.fusion.tuples and TR1.
Fixes #2261.

[SVN r48820]
2008-09-17 17:20:22 +00:00
d8d881ac6f attempt to work around early instantiation problem on edg-based compilers
[SVN r48769]
2008-09-14 04:46:32 +00:00
399b268bf1 fix #1600 (duplicate include guard)
[SVN r48600]
2008-09-05 02:39:34 +00:00
24f0323699 added missing include
[SVN r48369]
2008-08-25 07:14:20 +00:00
a8fe0fa44a more conformance tweaks to std tr1
[SVN r48258]
2008-08-20 12:56:53 +00:00
814c40a093 fixed typo
[SVN r48256]
2008-08-20 12:36:13 +00:00
7c74332487 conform to TR1 to the letter
[SVN r48244]
2008-08-20 08:20:40 +00:00
e165418461 conform to TR1 to the letter
[SVN r48243]
2008-08-20 08:20:19 +00:00
c51fc2ebee fixed non-ascii chars
[SVN r47676]
2008-07-22 09:07:07 +00:00
4a2214739c fixed non-ascii chars
[SVN r47675]
2008-07-22 09:06:54 +00:00
ef1e821173 added info on how to map to and from MPL
[SVN r47647]
2008-07-21 07:25:52 +00:00
af0e42f13e list-at optimization
[SVN r47643]
2008-07-20 23:14:15 +00:00
8506cd8be6 pair doc fix
[SVN r47527]
2008-07-17 23:59:22 +00:00
8b749bef46 With his kind permission, change Jaakko "Järvi" to "Jarvi"
[SVN r46808]
2008-06-28 13:45:21 +00:00
91ea13a593 Fusion: Fixed a VC level 4 warning
[SVN r44794]
2008-04-27 01:04:25 +00:00
6d462cbd63 Changed macro BOOST_PARTIAL_SPECIALIZATION_EXPLICIT_ARGS to BOOST_NO_PARTIAL_SPECIALIZATION_DEFAULT_ARGS.
Changed <utility> to <boost/config/no_tr1/utility.hpp> in order to prevent cyclic dependencies between Fusion Tuples and TR1.

[SVN r44692]
2008-04-21 12:06:02 +00:00
9a622b6904 Generated documentation which is no longer generated.
[SVN r43213]
2008-02-10 16:21:22 +00:00
f199472458 Removing fusion variant adapter
[SVN r42224]
2007-12-20 23:28:26 +00:00
2c1a03f785 Removing fusion variant adapter
[SVN r42223]
2007-12-20 23:24:28 +00:00
bcbd2ff112 tweakbug fix for end_impl (tweak).
[SVN r42167]
2007-12-19 10:42:04 +00:00
67279d5c3d bug fix for end_impl. (test)
[SVN r42165]
2007-12-19 10:33:39 +00:00
61bf0151da bug fix for end_impl.
[SVN r42164]
2007-12-19 10:33:14 +00:00
e9fd448376 fixed documentation bug
[SVN r42116]
2007-12-17 09:27:42 +00:00
300f35fadd Strips top-level cv-qualifiers off non-reference types, now.
[SVN r41642]
2007-12-03 13:25:26 +00:00
6168061f97 remove old unused file
[SVN r41519]
2007-12-01 01:11:44 +00:00
9a1f176df2 fixed link
[SVN r41489]
2007-11-30 10:07:41 +00:00
7 changed files with 61 additions and 95 deletions

View File

@ -1,29 +0,0 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
#----------------------------------------------------------------------------
# This file was automatically generated from the original CMakeLists.txt file
# Add a variable to hold the headers for the library
set (lib_headers
fusion
)
# Add a library target to the build system
boost_library_project(
fusion
# SRCDIRS
# TESTDIRS
HEADERS ${lib_headers}
# DOCDIRS
DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc."
MODULARIZED
AUTHORS "Joel de Guzman <joel -at- boost-consulting.com>"
"Dan Marsden <danmarsden -at- yahoo.co.uk>"
"Tobias Schwinger <tschwinger -at- isonews2.com>"
# MAINTAINERS
)

View File

@ -9,8 +9,6 @@ project boost/libs/fusion/doc ;
import boostbook : boostbook ;
using quickbook ;
path-constant images_location : html ;
boostbook quickbook
:
fusion.qbk
@ -23,9 +21,5 @@ boostbook quickbook
<xsl:param>toc.section.depth=3
<xsl:param>toc.max.depth=3
<xsl:param>generate.section.toc.level=4
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/fusion/doc/html
<format>pdf:<xsl:param>img.src.path=$(images_location)/
;

View File

@ -28,7 +28,13 @@ namespace boost { namespace fusion
struct apply
{
typedef mpl::at<typename Sequence::types, N> element;
typedef typename detail::ref_result<element>::type type;
typedef typename
mpl::eval_if<
is_const<Sequence>
, detail::cref_result<element>
, detail::ref_result<element>
>::type
type;
static type
call(Sequence& v)
@ -36,19 +42,6 @@ namespace boost { namespace fusion
return v.at_impl(N());
}
};
template <typename Sequence, typename N>
struct apply <Sequence const, N>
{
typedef mpl::at<typename Sequence::types, N> element;
typedef typename detail::cref_result<element>::type type;
static type
call(Sequence const& v)
{
return v.at_impl(N());
}
};
};
}
}}

View File

@ -25,12 +25,11 @@
#include <boost/fusion/container/vector/vector50.hpp>
#endif
#include <boost/mpl/distance.hpp>
#include <boost/mpl/find.hpp>
#include <boost/mpl/begin_end.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/arithmetic/dec.hpp>
#include <boost/preprocessor/arithmetic/sub.hpp>
#include <boost/preprocessor/facilities/intercept.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
namespace boost { namespace fusion
{
@ -39,23 +38,40 @@ namespace boost { namespace fusion
namespace boost { namespace fusion { namespace detail
{
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
struct vector_n_chooser
{
typedef BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE)<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> type;
};
template <int N>
struct get_vector_n;
template <>
struct vector_n_chooser<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, void_ BOOST_PP_INTERCEPT)>
struct get_vector_n<0>
{
typedef vector0 type;
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
struct call
{
typedef vector0 type;
};
};
#define BOOST_PP_FILENAME_1 \
<boost/fusion/container/vector/detail/vector_n_chooser.hpp>
#define BOOST_PP_ITERATION_LIMITS (1, BOOST_PP_DEC(FUSION_MAX_VECTOR_SIZE))
#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
#include BOOST_PP_ITERATE()
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
struct vector_n_chooser
{
typedef
mpl::BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE)
<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
input;
typedef typename mpl::begin<input>::type begin;
typedef typename mpl::find<input, void_>::type end;
typedef typename mpl::distance<begin, end>::type size;
typedef typename get_vector_n<size::value>::template
call<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type
type;
};
}}}
#endif
@ -69,12 +85,14 @@ namespace boost { namespace fusion { namespace detail
#define N BOOST_PP_ITERATION()
template <BOOST_PP_ENUM_PARAMS(N, typename T)>
struct vector_n_chooser<
BOOST_PP_ENUM_PARAMS(N, T)
BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SUB(FUSION_MAX_VECTOR_SIZE, N), void_ BOOST_PP_INTERCEPT)>
template <>
struct get_vector_n<N>
{
typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
struct call
{
typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
};
};
#undef N

View File

@ -91,14 +91,14 @@ namespace boost { namespace fusion
>::type
at_c(Sequence& seq)
{
return fusion::at<mpl::int_<N> >(seq);
return at<mpl::int_<N> >(seq);
}
template <int N, typename Sequence>
inline typename result_of::at_c<Sequence const, N>::type
at_c(Sequence const& seq)
{
return fusion::at<mpl::int_<N> >(seq);
return at<mpl::int_<N> >(seq);
}
}}

View File

@ -7,8 +7,12 @@
#if !defined(FUSION_ACCESS_04182005_0737)
#define FUSION_ACCESS_04182005_0737
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/is_reference.hpp>
#include <boost/type_traits/remove_cv.hpp>
namespace boost { namespace fusion { namespace detail
{
@ -28,36 +32,23 @@ namespace boost { namespace fusion { namespace detail
type;
};
template <typename T>
struct non_ref_parameter
{
typedef typename boost::remove_cv<T>::type const& type;
};
template <typename T>
struct call_param
{
typedef T const& type;
typedef typename
mpl::eval_if<
is_reference<T>
, mpl::identity<T>
, non_ref_parameter<T>
>::type
type;
};
template <typename T>
struct call_param<T &>
{
typedef T& type;
};
template <typename T>
struct call_param<T const>
{
typedef T const& type;
};
template <typename T>
struct call_param<T volatile>
{
typedef T const& type;
};
template <typename T>
struct call_param<T const volatile>
{
typedef T const& type;
};
}}}
#endif

View File

@ -1 +0,0 @@
boost_module (fusion DEPENDS function_types)