diff --git a/doc/adapted.qbk b/doc/adapted.qbk index 53e4bfbd..338d2896 100644 --- a/doc/adapted.qbk +++ b/doc/adapted.qbk @@ -101,8 +101,8 @@ header makes `boost::array` a fully conforming __random_access_sequence__. [heading Header] - #include - #include + #include + #include [heading Model of] @@ -196,6 +196,68 @@ namespace qualified name of the struct to be converted. [endsect] +[section:adapt_struct_named BOOST_FUSION_ADAPT_STRUCT_NAMED] + +[heading Description] +BOOST_FUSION_ADAPT_STRUCT_NAMED and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS are +macros that can be used to generate all the necessary boilerplate to make an +arbitrary struct into a __random_access_sequence__. The given struct is +adapted using the given name. + +[heading Synopsis] + BOOST_FUSION_ADAPT_STRUCT_NAMED( + struct_name, adapted_name + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + + BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( + struct_name, namespace_list, adapted_name + (member_type0, member_name0) + (member_type1, member_name1) + ... + ) + +[heading Semantics] + +The above macros generate the necessary code to adapt `struct_name` +as a model of __random_access_sequence__ while using `adapted_name` as the +name of the adapted struct. The sequence of `(member_typeN, member_nameN)` +pairs declare the type and names of each of the struct members that will be +part of the sequence. The `namespace_list` specifies the C++ namespace of +the `adapted_name`. It has the format of `(ns1)(ns2)...`, which results in +a fully qualified adapted name of `ns1::ns2::adapted_name`. If no namespace list +is given (i.e. `BOOST_FUSION_ADAPT_STRUCT_NAMED`), the adapted view is placed in +the namespace `boost::fusion::adapted`. + +The macro should be used at global scope, and `struct_name` should be the fully +namespace qualified name of the struct to be converted. + +[heading Header] + + #include + #include + +[heading Example] + namespace demo + { + struct employee + { + std::string name; + int age; + }; + } + + // boost::fusion::adapted::adapted_employee is now a Fusion sequence + // referring to demo::employee + BOOST_FUSION_ADAPT_STRUCT_NAMED( + demo::employee, adapted_employee + (std::string, name) + (int, age)) + +[endsect] + [section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT] [heading Description] diff --git a/doc/html/fusion/acknowledgements.html b/doc/html/fusion/acknowledgements.html index d1f544ad..f363e844 100644 --- a/doc/html/fusion/acknowledgements.html +++ b/doc/html/fusion/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + diff --git a/doc/html/fusion/adapted.html b/doc/html/fusion/adapted.html index beb3e6aa..b9b8b52b 100644 --- a/doc/html/fusion/adapted.html +++ b/doc/html/fusion/adapted.html @@ -3,7 +3,7 @@ Adapted - + @@ -32,6 +32,7 @@
boost::array
boost::tuple
BOOST_FUSION_ADAPT_STRUCT
+
BOOST_FUSION_ADAPT_STRUCT_NAMED
BOOST_FUSION_ADAPT_ASSOC_STRUCT

@@ -47,7 +48,7 @@ various data structures, non-intrusively, as full fledged Fusion sequences.

- + Header

#include <boost/fusion/adapted.hpp>
diff --git a/doc/html/fusion/adapted/adapt_assoc.html b/doc/html/fusion/adapted/adapt_assoc.html
index eb3a76d6..2b5994b5 100644
--- a/doc/html/fusion/adapted/adapt_assoc.html
+++ b/doc/html/fusion/adapted/adapt_assoc.html
@@ -3,10 +3,10 @@
 
 BOOST_FUSION_ADAPT_ASSOC_STRUCT
 
-
+
 
 
-
+
 
 
 
@@ -20,14 +20,14 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
- + Description

@@ -37,7 +37,7 @@ Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
@@ -48,7 +48,7 @@
     )
 
- + Semantics

@@ -66,14 +66,14 @@ should be the fully namespace qualified name of the struct to be converted.

- + Header
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
 #include <boost/fusion/include/adapt_assoc_struct.hpp>
 
- + Example
namespace demo
@@ -111,7 +111,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/adapted/adapt_struct.html b/doc/html/fusion/adapted/adapt_struct.html index 3719bf9d..51cab2d1 100644 --- a/doc/html/fusion/adapted/adapt_struct.html +++ b/doc/html/fusion/adapted/adapt_struct.html @@ -3,11 +3,11 @@ BOOST_FUSION_ADAPT_STRUCT - + - + @@ -20,14 +20,14 @@

-PrevUpHomeNext +PrevUpHomeNext
- + Description

@@ -36,7 +36,7 @@ Access Sequence.

- + Synopsis
BOOST_FUSION_ADAPT_STRUCT(
@@ -47,7 +47,7 @@
     )
 
- + Semantics

@@ -63,14 +63,14 @@ should be the fully namespace qualified name of the struct to be converted.

- + Header
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
 #include <boost/fusion/include/adapt_struct.hpp>
 
- + Example
namespace demo
@@ -100,7 +100,7 @@
 
 
-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/fusion/adapted/adapt_struct_named.html b/doc/html/fusion/adapted/adapt_struct_named.html new file mode 100644 index 00000000..2ac3eb6c --- /dev/null +++ b/doc/html/fusion/adapted/adapt_struct_named.html @@ -0,0 +1,121 @@ + + + +BOOST_FUSION_ADAPT_STRUCT_NAMED + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Description +
+

+ BOOST_FUSION_ADAPT_STRUCT_NAMED and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS are + macros that can be used to generate all the necessary boilerplate to make + an arbitrary struct into a Random + Access Sequence. The given struct is adapted using the given name. +

+
+ + Synopsis +
+
BOOST_FUSION_ADAPT_STRUCT_NAMED(
+    struct_name, adapted_name
+    (member_type0, member_name0)
+    (member_type1, member_name1)
+    ...
+    )
+
+BOOST_FUSION_ADAPT_STRUCT_NAMED_NS(
+    struct_name, namespace_list, adapted_name
+    (member_type0, member_name0)
+    (member_type1, member_name1)
+    ...
+    )
+
+
+ + Semantics +
+

+ The above macros generate the necessary code to adapt struct_name + as a model of Random + Access Sequence while using adapted_name + as the name of the adapted struct. The sequence of (member_typeN, + member_nameN) + pairs declare the type and names of each of the struct members that will + be part of the sequence. The namespace_list + specifies the C++ namespace of the adapted_name. + It has the format of (ns1)(ns2)..., + which results in a fully qualified adapted name of ns1::ns2::adapted_name. If no namespace list is given + (i.e. BOOST_FUSION_ADAPT_STRUCT_NAMED), + the adapted view is placed in the namespace boost::fusion::adapted. +

+

+ The macro should be used at global scope, and struct_name + should be the fully namespace qualified name of the struct to be converted. +

+
+ + Header +
+
#include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
+#include <boost/fusion/include/adapt_struct_named.hpp>
+
+
+ + Example +
+
namespace demo
+{
+    struct employee
+    {
+        std::string name;
+        int age;
+    };
+}
+
+// boost::fusion::adapted::adapted_employee is now a Fusion sequence
+// referring to demo::employee
+BOOST_FUSION_ADAPT_STRUCT_NAMED(
+    demo::employee, adapted_employee
+    (std::string, name)
+    (int, age))
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/html/fusion/adapted/boost__array.html b/doc/html/fusion/adapted/boost__array.html index b0aabd33..2bdbc450 100644 --- a/doc/html/fusion/adapted/boost__array.html +++ b/doc/html/fusion/adapted/boost__array.html @@ -3,7 +3,7 @@ boost::array - + @@ -33,20 +33,20 @@ Access Sequence.

- + Header
#include <boost/fusion/adapted/array.hpp>
 #include <boost/fusion/include/array.hpp>
 
- + Model of
- + Example
boost::array<int,3> arr = {{1,2,3}};
@@ -58,7 +58,7 @@
 std::cout << at_c<2>(arr) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/adapted/boost__tuple.html b/doc/html/fusion/adapted/boost__tuple.html index e90a52e3..55f8b390 100644 --- a/doc/html/fusion/adapted/boost__tuple.html +++ b/doc/html/fusion/adapted/boost__tuple.html @@ -3,7 +3,7 @@ boost::tuple - + @@ -33,19 +33,19 @@ Sequence.

- + Header
#include <boost/fusion/adapted/boost_tuple.hpp>
 #include <boost/fusion/include/boost_tuple.hpp>
 
- + Model of
- + Example
boost::tuple<int,std::string> example_tuple(101, "hello");
@@ -53,7 +53,7 @@
 std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
 
- + See also

diff --git a/doc/html/fusion/adapted/mpl_sequence.html b/doc/html/fusion/adapted/mpl_sequence.html index e801606b..87054a05 100644 --- a/doc/html/fusion/adapted/mpl_sequence.html +++ b/doc/html/fusion/adapted/mpl_sequence.html @@ -3,7 +3,7 @@ mpl sequence - + @@ -32,14 +32,14 @@ sequences fully conforming fusion sequences.

- + Header
#include <boost/fusion/adapted/mpl.hpp>
 #include <boost/fusion/include/mpl.hpp>
 
- + Model of
    @@ -60,7 +60,7 @@
- + Example
mpl::vector_c<int, 123, 456> vec_c;
@@ -73,7 +73,7 @@
 std::cout << at_c<1>(v) << std::endl;
 
- + See also

diff --git a/doc/html/fusion/adapted/std__pair.html b/doc/html/fusion/adapted/std__pair.html index 19c7ab19..86ce37d5 100644 --- a/doc/html/fusion/adapted/std__pair.html +++ b/doc/html/fusion/adapted/std__pair.html @@ -3,7 +3,7 @@ std::pair - + @@ -33,20 +33,20 @@ Access Sequence.

- + Header
#include <boost/fusion/adapted/std_pair.hpp>
 #include <boost/fusion/include/std_pair.hpp>
 
- + Model of
- + Example
std::pair<int, std::string> p(123, "Hola!!!");
@@ -55,7 +55,7 @@
 std::cout << p << std::endl;
 
- + See also

diff --git a/doc/html/fusion/algorithm.html b/doc/html/fusion/algorithm.html index 7b8ab330..2de22507 100644 --- a/doc/html/fusion/algorithm.html +++ b/doc/html/fusion/algorithm.html @@ -3,7 +3,7 @@ Algorithm - + @@ -44,7 +44,7 @@

- + Lazy Evaluation

@@ -67,7 +67,7 @@ as we want without incurring a high runtime penalty.

- + Sequence Extension

@@ -90,7 +90,7 @@ functions to convert back to the original sequence type.

- + Header

#include <boost/fusion/algorithm.hpp>
diff --git a/doc/html/fusion/algorithm/iteration.html b/doc/html/fusion/algorithm/iteration.html
index 196b56f0..28e07baf 100644
--- a/doc/html/fusion/algorithm/iteration.html
+++ b/doc/html/fusion/algorithm/iteration.html
@@ -3,7 +3,7 @@
 
 Iteration
 
-
+
 
 
 
@@ -35,7 +35,7 @@
         a sequence repeatedly applying an operation to its elements.
       

- + Header
#include <boost/fusion/algorithm/iteration.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/functions.html b/doc/html/fusion/algorithm/iteration/functions.html
index d4828078..83ad43ab 100644
--- a/doc/html/fusion/algorithm/iteration/functions.html
+++ b/doc/html/fusion/algorithm/iteration/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/iteration/functions/accumulate.html b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
index 7b559a04..ca852d2c 100644
--- a/doc/html/fusion/algorithm/iteration/functions/accumulate.html
+++ b/doc/html/fusion/algorithm/iteration/functions/accumulate.html
@@ -3,7 +3,7 @@
 
 accumulate
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 accumulate
 
- + Description

@@ -41,7 +41,7 @@ the first call) and each element of seq.

- + Synopsis
template<
@@ -53,7 +53,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.38. Parameters

+

Table 1.38. Parameters

@@ -141,7 +141,7 @@

- + Expression Semantics
@@ -156,21 +156,21 @@ are the elements of seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
 #include <boost/fusion/include/accumulate.hpp>
 
- + Example
struct make_string
diff --git a/doc/html/fusion/algorithm/iteration/functions/fold.html b/doc/html/fusion/algorithm/iteration/functions/fold.html
index 5343479a..19fc4c1a 100644
--- a/doc/html/fusion/algorithm/iteration/functions/fold.html
+++ b/doc/html/fusion/algorithm/iteration/functions/fold.html
@@ -3,7 +3,7 @@
 
 fold
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 fold
 
 
- + Description

@@ -38,7 +38,7 @@ if it is the first call) and each element of seq.

- + Synopsis
template<
@@ -50,7 +50,7 @@
     Sequence& seq, State const& initial_state, F const& f);
 
-

Table 1.37. Parameters

+

Table 1.37. Parameters

@@ -138,7 +138,7 @@

- + Expression Semantics
@@ -153,21 +153,21 @@ are the elements of seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
#include <boost/fusion/algorithm/iteration/fold.hpp>
 #include <boost/fusion/include/fold.hpp>
 
- + Example
struct make_string
diff --git a/doc/html/fusion/algorithm/iteration/functions/for_each.html b/doc/html/fusion/algorithm/iteration/functions/for_each.html
index 81aa8f9b..3394c4a3 100644
--- a/doc/html/fusion/algorithm/iteration/functions/for_each.html
+++ b/doc/html/fusion/algorithm/iteration/functions/for_each.html
@@ -3,7 +3,7 @@
 
 for_each
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 for_each
 
 
- + Description

Applies a unary function object to each element of a sequence.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence& seq, F const& f);
 
-

Table 1.39. Parameters

+

Table 1.39. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -126,21 +126,21 @@ in seq.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of f.

- + Header
#include <boost/fusion/algorithm/iteration/for_each.hpp>
 #include <boost/fusion/include/for_each.hpp>
 
- + Example
struct increment
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions.html b/doc/html/fusion/algorithm/iteration/metafunctions.html
index db18f64c..839860e2 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
index 09122217..c8dffb97 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/accumulate.html
@@ -3,7 +3,7 @@
 
 accumulate
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 accumulate
 
 
- + Description

Returns the result type of accumulate.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.41. Parameters

+

Table 1.41. Parameters

@@ -132,7 +132,7 @@

- + Expression Semantics
@@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
index 87a86e41..1e0765db 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/fold.html
@@ -3,7 +3,7 @@
 
 fold
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 fold
 
 
- + Description

Returns the result type of fold.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.40. Parameters

+

Table 1.40. Parameters

@@ -132,7 +132,7 @@

- + Expression Semantics
@@ -149,14 +149,14 @@ and binary function object or function pointer of type F.

- + Complexity

Linear, exactly result_of::size<Sequence>::value applications of F.

- + Header
#include <boost/fusion/algorithm/iteration/fold.hpp>
diff --git a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
index 5f8b4a42..bdc83e33 100644
--- a/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
+++ b/doc/html/fusion/algorithm/iteration/metafunctions/for_each.html
@@ -3,7 +3,7 @@
 
 for_each
 
-
+
 
 
 
@@ -31,11 +31,11 @@
             return type of for_each is always void.
           

- + Description
- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.42. Parameters

+

Table 1.42. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ return type is always void.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/iteration/for_each.hpp>
diff --git a/doc/html/fusion/algorithm/query.html b/doc/html/fusion/algorithm/query.html
index d93b96b9..6396a3b4 100644
--- a/doc/html/fusion/algorithm/query.html
+++ b/doc/html/fusion/algorithm/query.html
@@ -3,7 +3,7 @@
 
 Query
 
-
+
 
 
 
@@ -34,7 +34,7 @@
         The query algorithms provide support for searching and analyzing sequences.
       

- + Header
#include <boost/fusion/algorithm/query.hpp>
diff --git a/doc/html/fusion/algorithm/query/functions.html b/doc/html/fusion/algorithm/query/functions.html
index 99f9f4c4..664d0f78 100644
--- a/doc/html/fusion/algorithm/query/functions.html
+++ b/doc/html/fusion/algorithm/query/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/query/functions/all.html b/doc/html/fusion/algorithm/query/functions/all.html
index 851d318c..ab17b406 100644
--- a/doc/html/fusion/algorithm/query/functions/all.html
+++ b/doc/html/fusion/algorithm/query/functions/all.html
@@ -3,7 +3,7 @@
 
 all
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 all
 
 
- + Description

@@ -38,7 +38,7 @@ element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.44. Parameters

+

Table 1.44. Parameters

@@ -115,7 +115,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/all.hpp>
 #include <boost/fusion/include/all.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/functions/any.html b/doc/html/fusion/algorithm/query/functions/any.html
index d90e4edb..4f635314 100644
--- a/doc/html/fusion/algorithm/query/functions/any.html
+++ b/doc/html/fusion/algorithm/query/functions/any.html
@@ -3,7 +3,7 @@
 
 any
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 any
 
 
- + Description

@@ -38,7 +38,7 @@ least one element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.43. Parameters

+

Table 1.43. Parameters

@@ -115,7 +115,7 @@

- + Expression semantics
@@ -131,21 +131,21 @@ element e in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/any.hpp>
 #include <boost/fusion/include/any.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/functions/count.html b/doc/html/fusion/algorithm/query/functions/count.html
index df90ba60..08176e2f 100644
--- a/doc/html/fusion/algorithm/query/functions/count.html
+++ b/doc/html/fusion/algorithm/query/functions/count.html
@@ -3,7 +3,7 @@
 
 count
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 count
 
 
- + Description

Returns the number of elements of a given type within a sequence.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.48. Parameters

+

Table 1.48. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,21 +127,21 @@ t in seq.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/count.hpp>
 #include <boost/fusion/include/count.hpp>
 
- + Example
const vector<double,int,int> vec(1.0,2,3);
diff --git a/doc/html/fusion/algorithm/query/functions/count_if.html b/doc/html/fusion/algorithm/query/functions/count_if.html
index 1a706368..698cfe09 100644
--- a/doc/html/fusion/algorithm/query/functions/count_if.html
+++ b/doc/html/fusion/algorithm/query/functions/count_if.html
@@ -3,7 +3,7 @@
 
 count_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 count_if
 
 
- + Description

@@ -35,7 +35,7 @@ a given unary function object evaluates to true.

- + Synopsis
template<
@@ -46,7 +46,7 @@
     Sequence const& seq, F f);
 
-

Table 1.49. Parameters

+

Table 1.49. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -126,21 +126,21 @@ in seq where f evaluates to true.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/count_if.hpp>
 #include <boost/fusion/include/count_if.hpp>
 
- + Example
const vector<int,int,int> vec(1,2,3);
diff --git a/doc/html/fusion/algorithm/query/functions/find.html b/doc/html/fusion/algorithm/query/functions/find.html
index cead1370..97bc905e 100644
--- a/doc/html/fusion/algorithm/query/functions/find.html
+++ b/doc/html/fusion/algorithm/query/functions/find.html
@@ -3,7 +3,7 @@
 
 find
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 find
 
 
- + Description

Finds the first element of a given type within a sequence.

- + Synopsis
template<
@@ -50,7 +50,7 @@
 unspecified find(Sequence& seq);
 
-

Table 1.46. Parameters

+

Table 1.46. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ to find_if<boost::is_same<_, T> >(seq)

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find.hpp>
 #include <boost/fusion/include/find.hpp>
 
- + Example
const vector<char,int> vec('a','0');
diff --git a/doc/html/fusion/algorithm/query/functions/find_if.html b/doc/html/fusion/algorithm/query/functions/find_if.html
index 60096844..f7d3cd2f 100644
--- a/doc/html/fusion/algorithm/query/functions/find_if.html
+++ b/doc/html/fusion/algorithm/query/functions/find_if.html
@@ -3,7 +3,7 @@
 
 find_if
 
-
+
 
 
 
@@ -32,11 +32,11 @@
             Lambda Expression evaluates to boost::mpl::true_.
           

- + Description
- + Synopsis
template<
@@ -52,7 +52,7 @@
 unspecified find_if(Sequence& seq);
 
-

Table 1.47. Parameters

+

Table 1.47. Parameters

@@ -117,7 +117,7 @@

- + Expression Semantics
@@ -135,7 +135,7 @@ if there is no such element.

- + Complexity

@@ -150,7 +150,7 @@

- + Example
const vector<double,int> vec(1.0,2);
diff --git a/doc/html/fusion/algorithm/query/functions/none.html b/doc/html/fusion/algorithm/query/functions/none.html
index feeed992..cee48687 100644
--- a/doc/html/fusion/algorithm/query/functions/none.html
+++ b/doc/html/fusion/algorithm/query/functions/none.html
@@ -3,7 +3,7 @@
 
 none
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 none
 
 
- + Description

@@ -38,7 +38,7 @@ element of seq.

- + Synopsis
template<
@@ -49,7 +49,7 @@
     Sequence const& seq, F f);
 
-

Table 1.45. Parameters

+

Table 1.45. Parameters

@@ -115,7 +115,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ element e in seq. Result equivalent to !any(seq, f).

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/none.hpp>
 #include <boost/fusion/include/none.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/query/metafunctions.html b/doc/html/fusion/algorithm/query/metafunctions.html
index 9ebc4f86..a69af444 100644
--- a/doc/html/fusion/algorithm/query/metafunctions.html
+++ b/doc/html/fusion/algorithm/query/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/query/metafunctions/all.html b/doc/html/fusion/algorithm/query/metafunctions/all.html
index 82ce09bc..5d0464cd 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/all.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/all.html
@@ -3,7 +3,7 @@
 
 all
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 all
 
 
- + Description

A metafunction returning the result type of all.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.51. Parameters

+

Table 1.51. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/all.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/any.html b/doc/html/fusion/algorithm/query/metafunctions/any.html
index 913292cd..d6939235 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/any.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/any.html
@@ -3,7 +3,7 @@
 
 any
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 any
 
 
- + Description

A metafunction returning the result type of any.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.50. Parameters

+

Table 1.50. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/any.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count.html b/doc/html/fusion/algorithm/query/metafunctions/count.html
index 3b504e96..94dc7984 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count.html
@@ -3,7 +3,7 @@
 
 count
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 count
 
 
- + Description

@@ -35,7 +35,7 @@ given the sequence and search types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.55. Parameters

+

Table 1.55. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ int.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/count.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/count_if.html b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
index 02f10dc0..11517cb4 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/count_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/count_if.html
@@ -3,7 +3,7 @@
 
 count_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 count_if
 
 
- + Description

@@ -35,7 +35,7 @@ given the sequence and predicate types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.56. Parameters

+

Table 1.56. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ always int.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/count_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find.html b/doc/html/fusion/algorithm/query/metafunctions/find.html
index 6eeb4b49..7d8413d3 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find.html
@@ -3,7 +3,7 @@
 
 find
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 find
 
 
- + Description

@@ -35,7 +35,7 @@ search types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.53. Parameters

+

Table 1.53. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ if there is no such element.

- + Complexity

Linear, at most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/find_if.html b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
index 21546032..7395b851 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/find_if.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/find_if.html
@@ -3,7 +3,7 @@
 
 find_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 find_if
 
 
- + Description

@@ -35,7 +35,7 @@ predicate types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.54. Parameters

+

Table 1.54. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ to true. Returns result_of::end<Sequence>::type if there is no such element.

- + Complexity

Linear. At most result_of::size<Sequence>::value comparisons.

- + Header
#include <boost/fusion/algorithm/query/find_if.hpp>
diff --git a/doc/html/fusion/algorithm/query/metafunctions/none.html b/doc/html/fusion/algorithm/query/metafunctions/none.html
index b5137049..aeabfaaf 100644
--- a/doc/html/fusion/algorithm/query/metafunctions/none.html
+++ b/doc/html/fusion/algorithm/query/metafunctions/none.html
@@ -3,7 +3,7 @@
 
 none
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 none
 
 
- + Description

A metafunction returning the result type of none.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.52. Parameters

+

Table 1.52. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ The return type is always bool.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/query/none.hpp>
diff --git a/doc/html/fusion/algorithm/transformation.html b/doc/html/fusion/algorithm/transformation.html
index 9a96ba1b..9142768c 100644
--- a/doc/html/fusion/algorithm/transformation.html
+++ b/doc/html/fusion/algorithm/transformation.html
@@ -3,7 +3,7 @@
 
 Transformation
 
-
+
 
 
 
@@ -47,7 +47,7 @@
         

- + Header
#include <boost/fusion/algorithm/transformation.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/functions.html b/doc/html/fusion/algorithm/transformation/functions.html
index f961d36e..3779c4b8 100644
--- a/doc/html/fusion/algorithm/transformation/functions.html
+++ b/doc/html/fusion/algorithm/transformation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/transformation/functions/clear.html b/doc/html/fusion/algorithm/transformation/functions/clear.html
index 088bd15b..197e95ff 100644
--- a/doc/html/fusion/algorithm/transformation/functions/clear.html
+++ b/doc/html/fusion/algorithm/transformation/functions/clear.html
@@ -3,7 +3,7 @@
 
 clear
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 clear
 
 
- + Description

clear returns an empty sequence.

- + Synposis
template<
@@ -43,7 +43,7 @@
 typename result_of::clear<Sequence const>::type clear(Sequence const& seq);
 
-

Table 1.66. Parameters

+

Table 1.66. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,21 +103,21 @@ with no elements.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/clear.hpp>
 #include <boost/fusion/include/clear.hpp>
 
- + Example
assert(clear(make_vector(1,2,3)) == make_vector());
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase.html b/doc/html/fusion/algorithm/transformation/functions/erase.html
index 1bb329a3..15e06d55 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/functions/erase.html
@@ -3,7 +3,7 @@
 
 erase
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 erase
 
 
- + Description

@@ -35,7 +35,7 @@ those at a specified iterator, or between two iterators.

- + Synposis
template<
@@ -54,7 +54,7 @@
     Sequence const& seq, First const& it1, Last const& it2);
 
-

Table 1.67. Parameters

+

Table 1.67. Parameters

@@ -138,7 +138,7 @@

- + Expression Semantics
@@ -187,21 +187,21 @@ in their original order, except those in the range [first,last).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/erase.hpp>
 #include <boost/fusion/include/erase.hpp>
 
- + Example
const vector<int, double, char> vec(1, 2.0, 'c');
diff --git a/doc/html/fusion/algorithm/transformation/functions/erase_key.html b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
index 0365dfcf..484c7d7a 100644
--- a/doc/html/fusion/algorithm/transformation/functions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/functions/erase_key.html
@@ -3,7 +3,7 @@
 
 erase_key
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 erase_key
 
 
- + Description

@@ -39,7 +39,7 @@ key.

- + Synposis
template<
@@ -49,7 +49,7 @@
 typename result_of::erase_key<Sequence const, Key>::type erase_key(Sequence const& seq);
 
-

Table 1.68. Parameters

+

Table 1.68. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -131,21 +131,21 @@ except those with key Key.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/erase_key.hpp>
 #include <boost/fusion/include/erase_key.hpp>
 
- + Example
assert(erase_key<int>(make_map<int, long>('a', 'b')) == make_map<long>('b'));
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter.html b/doc/html/fusion/algorithm/transformation/functions/filter.html
index e567f308..fbfdc6a5 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/functions/filter.html
@@ -3,7 +3,7 @@
 
 filter
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 filter
 
 
- + Description

@@ -35,7 +35,7 @@ the elements of a specified type.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::filter<Sequence const, T>::type filter(Sequence const& seq);
 
-

Table 1.57. Parameters

+

Table 1.57. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -137,21 +137,21 @@ to filter_if<boost::same_type<_, T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/filter.hpp>
 #include <boost/fusion/include/filter.hpp>
 
- + Example
const vector<int,int,long,long> vec(1,2,3,4);
diff --git a/doc/html/fusion/algorithm/transformation/functions/filter_if.html b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
index b0cf3d3c..0b451ad7 100644
--- a/doc/html/fusion/algorithm/transformation/functions/filter_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/filter_if.html
@@ -3,7 +3,7 @@
 
 filter_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 filter_if
 
 
- + Description

@@ -36,7 +36,7 @@ Lambda Expression evaluates to boost::mpl::true_.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 typename result_of::filter_if<Sequence const, Pred>::type filter_if(Sequence const& seq);
 
-

Table 1.58. Parameters

+

Table 1.58. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -140,21 +140,21 @@ is the same as in the original sequence.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/filter_if.hpp>
 #include <boost/fusion/include/filter_if.hpp>
 
- + Example
const vector<int,int,double,double> vec(1,2,3.0,4.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert.html b/doc/html/fusion/algorithm/transformation/functions/insert.html
index b50ea27f..46f3fdbc 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert.html
+++ b/doc/html/fusion/algorithm/transformation/functions/insert.html
@@ -3,7 +3,7 @@
 
 insert
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 insert
 
 
- + Description

@@ -35,7 +35,7 @@ element inserted the position described by a given iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, Pos const& pos, T const& t);
 
-

Table 1.69. Parameters

+

Table 1.69. Parameters

@@ -129,7 +129,7 @@

- + Expression Semantics
@@ -158,21 +158,21 @@ pos.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/fusion/include/insert.hpp>
 
- + Example
const vector<int,int> vec(1,2);
diff --git a/doc/html/fusion/algorithm/transformation/functions/insert_range.html b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
index c1c5b5a2..8447a21d 100644
--- a/doc/html/fusion/algorithm/transformation/functions/insert_range.html
+++ b/doc/html/fusion/algorithm/transformation/functions/insert_range.html
@@ -3,7 +3,7 @@
 
 insert_range
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 insert_range
 
 
- + Description

@@ -35,7 +35,7 @@ iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, Pos const& pos, Range const& range);
 
-

Table 1.70. Parameters

+

Table 1.70. Parameters

@@ -130,7 +130,7 @@

- + Expression Semantics
@@ -159,21 +159,21 @@ All elements retaining their ordering from the orignal sequences.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/insert_range.hpp>
 #include <boost/fusion/include/insert_range.hpp>
 
- + Example
const vector<int,int> vec(1,2);
diff --git a/doc/html/fusion/algorithm/transformation/functions/join.html b/doc/html/fusion/algorithm/transformation/functions/join.html
index db653f21..757b1864 100644
--- a/doc/html/fusion/algorithm/transformation/functions/join.html
+++ b/doc/html/fusion/algorithm/transformation/functions/join.html
@@ -3,7 +3,7 @@
 
 join
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 join
 
 
- + Description

@@ -35,7 +35,7 @@ first followed by the elements of the second.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::join<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
 
-

Table 1.71. Parameters

+

Table 1.71. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -138,21 +138,21 @@ The order of the elements is preserved.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/join.hpp>
 #include <boost/fusion/include/join.hpp>
 
- + Example
vector<int,char> v1(1, 'a');
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_back.html b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
index 71d16629..3b2fcbc1 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/functions/pop_back.html
@@ -3,7 +3,7 @@
 
 pop_back
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 pop_back
 
 
- + Description

Returns a new sequence, with the last element of the original removed.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::pop_back<Sequence const>::type pop_back(Sequence const& seq);
 
-

Table 1.73. Parameters

+

Table 1.73. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -116,21 +116,21 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/pop_back.hpp>
 #include <boost/fusion/include/pop_back.hpp>
 
- + Example
assert(___pop_back__(make_vector(1,2,3)) == make_vector(1,2));
diff --git a/doc/html/fusion/algorithm/transformation/functions/pop_front.html b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
index 5d32ce45..27ebfb96 100644
--- a/doc/html/fusion/algorithm/transformation/functions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/functions/pop_front.html
@@ -3,7 +3,7 @@
 
 pop_front
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 pop_front
 
 
- + Description

Returns a new sequence, with the first element of the original removed.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::pop_front<Sequence const>::type pop_front(Sequence const& seq);
 
-

Table 1.74. Parameters

+

Table 1.74. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -116,21 +116,21 @@ same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/pop_front.hpp>
 #include <boost/fusion/include/pop_front.hpp>
 
- + Example
assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_back.html b/doc/html/fusion/algorithm/transformation/functions/push_back.html
index 218ea784..f1372b06 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_back.html
+++ b/doc/html/fusion/algorithm/transformation/functions/push_back.html
@@ -3,7 +3,7 @@
 
 push_back
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 push_back
 
 
- + Description

Returns a new sequence with an element added at the end.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.75. Parameters

+

Table 1.75. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -137,21 +137,21 @@ to the end. The elements are in the same order as they were in seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/push_back.hpp>
 #include <boost/fusion/include/push_back.hpp>
 
- + Example
assert(push_back(make_vector(1,2,3),4) == make_vector(1,2,3,4));
diff --git a/doc/html/fusion/algorithm/transformation/functions/push_front.html b/doc/html/fusion/algorithm/transformation/functions/push_front.html
index b3e628f9..893fdc12 100644
--- a/doc/html/fusion/algorithm/transformation/functions/push_front.html
+++ b/doc/html/fusion/algorithm/transformation/functions/push_front.html
@@ -3,7 +3,7 @@
 
 push_front
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 push_front
 
 
- + Description

Returns a new sequence with an element added at the beginning.

- + Synopsis
template<
@@ -45,7 +45,7 @@
     Sequence const& seq, T const& t);
 
-

Table 1.76. Parameters

+

Table 1.76. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -138,21 +138,21 @@ seq.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/push_front.hpp>
 #include <boost/fusion/include/push_front.hpp>
 
- + Example
assert(push_front(make_vector(1,2,3),0) == make_vector(0,1,2,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove.html b/doc/html/fusion/algorithm/transformation/functions/remove.html
index 0a2f02ea..414ca03d 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove.html
+++ b/doc/html/fusion/algorithm/transformation/functions/remove.html
@@ -3,7 +3,7 @@
 
 remove
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 remove
 
 
- + Description

@@ -35,7 +35,7 @@ except those of a given type.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::remove<Sequence const, T>::type replace(Sequence const& seq);
 
-

Table 1.63. Parameters

+

Table 1.63. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -137,21 +137,21 @@ Equivalent to remove_if<boost::is_same<_,T> >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/include/remove.hpp>
 
- + Example
const vector<int,double> vec(1,2.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/remove_if.html b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
index 22911110..18afffb7 100644
--- a/doc/html/fusion/algorithm/transformation/functions/remove_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/remove_if.html
@@ -3,7 +3,7 @@
 
 remove_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 remove_if
 
 
- + Description

@@ -35,7 +35,7 @@ those where a given unary function object evaluates to true.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 typename result_of::remove_if<Sequence const, Pred>::type remove_if(Sequence const& seq);
 
-

Table 1.64. Parameters

+

Table 1.64. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -139,21 +139,21 @@ >(seq).

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/remove_if.hpp>
 #include <boost/fusion/include/remove_if.hpp>
 
- + Example
const vector<int,double> vec(1,2.0);
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace.html b/doc/html/fusion/algorithm/transformation/functions/replace.html
index 2591cd69..2c108329 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace.html
+++ b/doc/html/fusion/algorithm/transformation/functions/replace.html
@@ -3,7 +3,7 @@
 
 replace
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 replace
 
 
- + Description

@@ -35,7 +35,7 @@ a new value.

- + Synopsis
template<
@@ -46,7 +46,7 @@
     Sequence const& seq, T const& old_value, T const& new_value);
 
-

Table 1.61. Parameters

+

Table 1.61. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -148,21 +148,21 @@ to elements with the same type and equal to old_value.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/replace.hpp>
 #include <boost/fusion/include/replace.hpp>
 
- + Example
assert(replace(make_vector(1,2), 2, 3) == make_vector(1,3));
diff --git a/doc/html/fusion/algorithm/transformation/functions/replace_if.html b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
index 49b63efe..f829950d 100644
--- a/doc/html/fusion/algorithm/transformation/functions/replace_if.html
+++ b/doc/html/fusion/algorithm/transformation/functions/replace_if.html
@@ -3,7 +3,7 @@
 
 replace_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 replace_if
 
 
- + Description

@@ -36,7 +36,7 @@ replaced with a new value.

- + Synopsis
template<
@@ -47,7 +47,7 @@
     Sequence const& seq, F f, T const& new_value);
 
-

Table 1.62. Parameters

+

Table 1.62. Parameters

@@ -130,7 +130,7 @@

- + Expression Semantics
@@ -148,21 +148,21 @@ evaluates to true.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/replace_if.hpp>
 #include <boost/fusion/include/replace_if.hpp>
 
- + Example
struct odd
diff --git a/doc/html/fusion/algorithm/transformation/functions/reverse.html b/doc/html/fusion/algorithm/transformation/functions/reverse.html
index 37bfd1d0..d48be1e0 100644
--- a/doc/html/fusion/algorithm/transformation/functions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/functions/reverse.html
@@ -3,7 +3,7 @@
 
 reverse
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 reverse
 
 
- + Description

Returns a new sequence with the elements of the original in reverse order.

- + Synposis
template<
@@ -43,7 +43,7 @@
 typename result_of::reverse<Sequence const>::type reverse(Sequence const& seq);
 
-

Table 1.65. Parameters

+

Table 1.65. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -120,21 +120,21 @@ in reverse order.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/reverse.hpp>
 #include <boost/fusion/include/reverse.hpp>
 
- + Example
assert(reverse(make_vector(1,2,3)) == make_vector(3,2,1));
diff --git a/doc/html/fusion/algorithm/transformation/functions/transform.html b/doc/html/fusion/algorithm/transformation/functions/transform.html
index b5f6003f..9295f5ac 100644
--- a/doc/html/fusion/algorithm/transformation/functions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/functions/transform.html
@@ -3,7 +3,7 @@
 
 transform
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 transform
 
 
- + Description

@@ -38,7 +38,7 @@ of seq.

- + Unary version synopsis
@@ -50,7 +50,7 @@ Sequence const& seq, F f);
-

Table 1.59. Parameters

+

Table 1.59. Parameters

@@ -117,7 +117,7 @@

- + Expression Semantics
@@ -133,7 +133,7 @@ within seq.

- + Binary version synopsis
@@ -146,7 +146,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.60. Parameters

+

Table 1.60. Parameters

@@ -241,21 +241,21 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- + Example
struct triple
diff --git a/doc/html/fusion/algorithm/transformation/functions/zip.html b/doc/html/fusion/algorithm/transformation/functions/zip.html
index 82304916..e71155a2 100644
--- a/doc/html/fusion/algorithm/transformation/functions/zip.html
+++ b/doc/html/fusion/algorithm/transformation/functions/zip.html
@@ -3,7 +3,7 @@
 
 zip
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 zip
 
 
- + Description

@@ -35,7 +35,7 @@ of the members of the component sequences.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
 
-

Table 1.72. Parameters

+

Table 1.72. Parameters

@@ -93,7 +93,7 @@

- + Expression Semantics
@@ -114,21 +114,21 @@ 'c'))

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/zip.hpp>
 #include <boost/fusion/include/zip.hpp>
 
- + Example
vector<int,char> v1(1, 'a');
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions.html b/doc/html/fusion/algorithm/transformation/metafunctions.html
index bb379566..8ef023bf 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
index c3055b77..7028ea53 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/clear.html
@@ -3,7 +3,7 @@
 
 clear
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 clear
 
 
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.86. Parameters

+

Table 1.86. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ Semantics: Returns an empty sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/clear.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
index 73ad8959..f8b36ea9 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase.html
@@ -3,7 +3,7 @@
 
 erase
 
-
+
 
 
 
@@ -31,11 +31,11 @@
             and range delimiting iterator types.
           

- + Description
- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.87. Parameters

+

Table 1.87. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -168,14 +168,14 @@ and It2 removed.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/erase.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
index c5c1b08a..2ff723a7 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/erase_key.html
@@ -3,7 +3,7 @@
 
 erase_key
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 erase_key
 
 
- + Description

@@ -35,7 +35,7 @@ and key types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.88. Parameters

+

Table 1.88. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ except those with key Key.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/erase_key.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
index 2d9236c1..c4d2c1e9 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter.html
@@ -3,7 +3,7 @@
 
 filter
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 filter
 
 
- + Description

@@ -35,7 +35,7 @@ and type to retain.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.77. Parameter

+

Table 1.77. Parameter

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/filter.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
index b4b65b1a..666d61ca 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/filter_if.html
@@ -3,7 +3,7 @@
 
 filter_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 filter_if
 
 
- + Description

@@ -36,7 +36,7 @@ Lambda Expression predicate type.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.78. Parameter

+

Table 1.78. Parameter

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -142,14 +142,14 @@ to boost::mpl::true_.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/filter_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
index bb8e7538..2e9db74b 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert.html
@@ -3,7 +3,7 @@
 
 insert
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 insert
 
 
- + Description

@@ -35,7 +35,7 @@ position iterator and insertion types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.89. Parameters

+

Table 1.89. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -159,14 +159,14 @@ in Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/insert.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
index ac1e5f14..4952a226 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/insert_range.html
@@ -3,7 +3,7 @@
 
 insert_range
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 insert_range
 
 
- + Description

@@ -35,7 +35,7 @@ sequence, position iterator and insertion range types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.90. Parameters

+

Table 1.90. Parameters

@@ -132,7 +132,7 @@

- + Expression Semantics
@@ -160,14 +160,14 @@ into Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/insert_range.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/join.html b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
index ee4a7894..f0615f08 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/join.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/join.html
@@ -3,7 +3,7 @@
 
 join
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 join
 
 
- + Description

Returns the result of joining 2 sequences, given the sequence types.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
- + Expression Semantics
@@ -76,14 +76,14 @@ The order of the elements in the 2 sequences is preserved.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/join.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
index d20ea2da..2890aae6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_back.html
@@ -3,7 +3,7 @@
 
 pop_back
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 pop_back
 
 
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.91. Parameters

+

Table 1.91. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -119,14 +119,14 @@ except the last element.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/pop_back.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
index e87265cf..3ae371a1 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/pop_front.html
@@ -3,7 +3,7 @@
 
 pop_front
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 pop_front
 
 
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.92. Parameters

+

Table 1.92. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -119,14 +119,14 @@ except the first element.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/pop_front.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
index de0911fd..e3c87cd6 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_back.html
@@ -3,7 +3,7 @@
 
 push_back
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 push_back
 
 
- + Description

@@ -35,7 +35,7 @@ the input sequence and element to push.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.93. Parameters

+

Table 1.93. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -140,14 +140,14 @@ added to the end.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/push_back.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
index 73387e9b..aafa4da4 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/push_front.html
@@ -3,7 +3,7 @@
 
 push_front
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 push_front
 
 
- + Description

@@ -35,7 +35,7 @@ of the input sequence and element to push.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.94. Parameters

+

Table 1.94. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -140,14 +140,14 @@ added to the beginning.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/push_front.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
index 519ae0d5..30234ed4 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove.html
@@ -3,7 +3,7 @@
 
 remove
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 remove
 
 
- + Description

@@ -35,7 +35,7 @@ removal types.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.83. Parameters

+

Table 1.83. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -141,14 +141,14 @@ boost::is_same<mpl::_, T> >::type.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/remove.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
index 4fe0e0ef..b6079e68 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/remove_if.html
@@ -3,7 +3,7 @@
 
 remove_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 remove_if
 
 
- + Description

@@ -36,7 +36,7 @@ Lambda Expression predicate types.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.84. Parameters

+

Table 1.84. Parameters

@@ -114,7 +114,7 @@

- + Expression Semantics
@@ -142,14 +142,14 @@ to boost::mpl::false_.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/remove_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
index b756d5a1..dc859db9 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace.html
@@ -3,7 +3,7 @@
 
 replace
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 replace
 
 
- + Description

@@ -35,7 +35,7 @@ the input sequence and element to replace.

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.81. Parameters

+

Table 1.81. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ replace.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/replace.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
index b7d26a4f..dd272a70 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/replace_if.html
@@ -3,7 +3,7 @@
 
 replace_if
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 replace_if
 
 
- + Description

@@ -36,7 +36,7 @@ Function Object predicate and replacement object.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.82. Parameters

+

Table 1.82. Parameters

@@ -131,7 +131,7 @@

- + Expression Semantics
@@ -146,14 +146,14 @@ replace_if.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/replace_if.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
index e2b22ce0..9754cbfe 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/reverse.html
@@ -3,7 +3,7 @@
 
 reverse
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 reverse
 
 
- + Description

@@ -35,7 +35,7 @@ type.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.85. Parameters

+

Table 1.85. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -123,14 +123,14 @@ elements in the reverse order to Sequence.

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/reverse.hpp>
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
index 7d1c3e94..57e41b20 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/transform.html
@@ -3,7 +3,7 @@
 
 transform
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 transform
 
 
- + Description

@@ -38,7 +38,7 @@ of seq.

- + Unary version synopsis
@@ -50,7 +50,7 @@ Sequence const& seq, F f);
-

Table 1.79. Parameters

+

Table 1.79. Parameters

@@ -117,7 +117,7 @@

- + Expression Semantics
@@ -144,7 +144,7 @@ within seq.

- + Binary version synopsis
@@ -157,7 +157,7 @@ Sequence1 const& seq1, Sequence2 const& seq2, F f);
-

Table 1.80. Parameters

+

Table 1.80. Parameters

@@ -252,21 +252,21 @@ within seq1 and seq2 respectively.

- + Complexity

Constant. Returns a view which is lazily evaluated.

- + Header
#include <boost/fusion/algorithm/transformation/transform.hpp>
 #include <boost/fusion/include/transform.hpp>
 
- + Example
struct triple
diff --git a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
index 99187ce0..69c1f96d 100644
--- a/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
+++ b/doc/html/fusion/algorithm/transformation/metafunctions/zip.html
@@ -3,7 +3,7 @@
 
 zip
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 zip
 
 
- + Description

@@ -35,7 +35,7 @@ of the members of the component sequences.

- + Synopsis
template<
@@ -50,7 +50,7 @@
 };
 
- + Expression Semantics
@@ -72,14 +72,14 @@ 'c'))

- + Complexity

Constant.

- + Header
#include <boost/fusion/algorithm/transformation/zip.hpp>
diff --git a/doc/html/fusion/change_log.html b/doc/html/fusion/change_log.html
index 8ce4bb0a..5b244e51 100644
--- a/doc/html/fusion/change_log.html
+++ b/doc/html/fusion/change_log.html
@@ -3,7 +3,7 @@
 
 Change log
 
-
+
 
 
 
diff --git a/doc/html/fusion/container.html b/doc/html/fusion/container.html
index cda425aa..fa21d880 100644
--- a/doc/html/fusion/container.html
+++ b/doc/html/fusion/container.html
@@ -3,7 +3,7 @@
 
 Container
 
-
+
 
 
 
@@ -49,7 +49,7 @@
       These containers are more or less counterparts of those in STL.
     

- + Header

#include <boost/fusion/container.hpp>
diff --git a/doc/html/fusion/container/cons.html b/doc/html/fusion/container/cons.html
index 844fb56d..db01ea7f 100644
--- a/doc/html/fusion/container/cons.html
+++ b/doc/html/fusion/container/cons.html
@@ -3,7 +3,7 @@
 
 cons
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 cons
 
 
- + Description

@@ -42,21 +42,21 @@ Inlined Functions).

- + Header
#include <boost/fusion/container/list/cons.hpp>
 #include <boost/fusion/include/cons.hpp>
 
- + Synopsis
template <typename Car, typename Cdr = nil>
 struct cons;
 
- + Template parameters
@@ -119,7 +119,7 @@
- + Model of
@@ -159,7 +159,7 @@
- + Expression Semantics

@@ -292,7 +292,7 @@

- + Example
cons<int, cons<float> > l(12, cons<float>(5.5f));
diff --git a/doc/html/fusion/container/conversion.html b/doc/html/fusion/container/conversion.html
index 1c61f4f6..2961ebe5 100644
--- a/doc/html/fusion/container/conversion.html
+++ b/doc/html/fusion/container/conversion.html
@@ -3,7 +3,7 @@
 
 Conversion
 
-
+
 
 
 
@@ -35,7 +35,7 @@
         types using one of these conversion functions.
       

- + Header
#include <boost/fusion/include/convert.hpp>
diff --git a/doc/html/fusion/container/conversion/functions.html b/doc/html/fusion/container/conversion/functions.html
index cba92405..ac2b1fd0 100644
--- a/doc/html/fusion/container/conversion/functions.html
+++ b/doc/html/fusion/container/conversion/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/container/conversion/functions/as_list.html b/doc/html/fusion/container/conversion/functions/as_list.html
index 1235bdef..414a2c3c 100644
--- a/doc/html/fusion/container/conversion/functions/as_list.html
+++ b/doc/html/fusion/container/conversion/functions/as_list.html
@@ -3,7 +3,7 @@
 
 as_list
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 as_list
 
 
- + Description

Convert a fusion sequence to a list.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_list(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ seq, to a list.

- + Header
#include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
as_list(make_vector('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/functions/as_map.html b/doc/html/fusion/container/conversion/functions/as_map.html
index 37e5379b..48d24c10 100644
--- a/doc/html/fusion/container/conversion/functions/as_map.html
+++ b/doc/html/fusion/container/conversion/functions/as_map.html
@@ -3,7 +3,7 @@
 
 as_map
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 as_map
 
 
- + Description

Convert a fusion sequence to a map.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_map(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -110,14 +110,14 @@ There may be no duplicate fusion::pair key types.

- + Header
#include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
as_map(make_vector(
diff --git a/doc/html/fusion/container/conversion/functions/as_set.html b/doc/html/fusion/container/conversion/functions/as_set.html
index af695532..96219fb1 100644
--- a/doc/html/fusion/container/conversion/functions/as_set.html
+++ b/doc/html/fusion/container/conversion/functions/as_set.html
@@ -3,7 +3,7 @@
 
 as_set
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 as_set
 
 
- + Description

Convert a fusion sequence to a set.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_set(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -109,14 +109,14 @@ key types.

- + Header
#include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
as_set(make_vector('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/functions/as_vector.html b/doc/html/fusion/container/conversion/functions/as_vector.html
index 883bf503..de1dda0d 100644
--- a/doc/html/fusion/container/conversion/functions/as_vector.html
+++ b/doc/html/fusion/container/conversion/functions/as_vector.html
@@ -3,7 +3,7 @@
 
 as_vector
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 as_vector
 
 
- + Description

Convert a fusion sequence to a vector.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 as_vector(Sequence const& seq);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ seq, to a vector.

- + Header
#include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
as_vector(make_list('x', 123, "hello"))
diff --git a/doc/html/fusion/container/conversion/metafunctions.html b/doc/html/fusion/container/conversion/metafunctions.html
index bdfbebe3..e41a2e2c 100644
--- a/doc/html/fusion/container/conversion/metafunctions.html
+++ b/doc/html/fusion/container/conversion/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_list.html b/doc/html/fusion/container/conversion/metafunctions/as_list.html
index 410e455b..204b2620 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_list.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_list.html
@@ -3,7 +3,7 @@
 
 as_list
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 as_list
 
 
- + Description

Returns the result type of as_list.

- + Synopsis
template <typename Sequence>
 struct as_list;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ Sequence, to a list.

- + Header
#include <boost/fusion/container/list/convert.hpp>
 #include <boost/fusion/include/as_list.hpp>
 
- + Example
result_of::as_list<vector<char, int> >::type
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_map.html b/doc/html/fusion/container/conversion/metafunctions/as_map.html
index de9412aa..d288b855 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_map.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_map.html
@@ -3,7 +3,7 @@
 
 as_map
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 as_map
 
 
- + Description

Returns the result type of as_map.

- + Synopsis
template <typename Sequence>
 struct as_map;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ There may be no duplicate fusion::pair key types.

- + Header
#include <boost/fusion/container/map/convert.hpp>
 #include <boost/fusion/include/as_map.hpp>
 
- + Example
result_of::as_map<vector<
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_set.html b/doc/html/fusion/container/conversion/metafunctions/as_set.html
index 1a3bf64f..d2447a04 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_set.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_set.html
@@ -3,7 +3,7 @@
 
 as_set
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 as_set
 
 
- + Description

Returns the result type of as_set.

- + Synopsis
template <typename Sequence>
 struct as_set;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ key types.

- + Header
#include <boost/fusion/container/set/convert.hpp>
 #include <boost/fusion/include/as_set.hpp>
 
- + Example
result_of::as_set<vector<char, int> >::type
diff --git a/doc/html/fusion/container/conversion/metafunctions/as_vector.html b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
index 70a4a127..30114f5e 100644
--- a/doc/html/fusion/container/conversion/metafunctions/as_vector.html
+++ b/doc/html/fusion/container/conversion/metafunctions/as_vector.html
@@ -3,7 +3,7 @@
 
 as_vector
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 as_vector
 
 
- + Description

Returns the result type of as_vector.

- + Synopsis
template <typename Sequence>
 struct as_vector;
 
- + Parameters
@@ -86,7 +86,7 @@
- + Expression Semantics
@@ -101,14 +101,14 @@ Sequence, to a vector.

- + Header
#include <boost/fusion/container/vector/convert.hpp>
 #include <boost/fusion/include/as_vector.hpp>
 
- + Example
result_of::as_vector<list<char, int> >::type
diff --git a/doc/html/fusion/container/generation.html b/doc/html/fusion/container/generation.html
index f9999511..7ad0abfc 100644
--- a/doc/html/fusion/container/generation.html
+++ b/doc/html/fusion/container/generation.html
@@ -3,7 +3,7 @@
 
 Generation
 
-
+
 
 
 
@@ -34,7 +34,7 @@
         These are the functions that you can use to generate various forms of Container from elemental values.
       

- + Header
#include <boost/fusion/container/generation.hpp>
diff --git a/doc/html/fusion/container/generation/functions.html b/doc/html/fusion/container/generation/functions.html
index 2c1861cc..0028ddc8 100644
--- a/doc/html/fusion/container/generation/functions.html
+++ b/doc/html/fusion/container/generation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/container/generation/functions/list_tie.html b/doc/html/fusion/container/generation/functions/list_tie.html
index 33a824d3..da40cbe6 100644
--- a/doc/html/fusion/container/generation/functions/list_tie.html
+++ b/doc/html/fusion/container/generation/functions/list_tie.html
@@ -3,7 +3,7 @@
 
 list_tie
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 list_tie
 
 
- + Description

Constructs a tie using a list sequence.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a list of references from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
int i = 123;
diff --git a/doc/html/fusion/container/generation/functions/make_cons.html b/doc/html/fusion/container/generation/functions/make_cons.html
index eff0b797..2887c8b1 100644
--- a/doc/html/fusion/container/generation/functions/make_cons.html
+++ b/doc/html/fusion/container/generation/functions/make_cons.html
@@ -3,7 +3,7 @@
 
 make_cons
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 make_cons
 
 
- + Description

@@ -36,7 +36,7 @@ and optional cdr (tail).

- + Synopsis
template <typename Car>
@@ -48,7 +48,7 @@
 make_cons(Car const& car, Cdr const& cdr);
 
- + Parameters
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -127,20 +127,20 @@ (tail).

- + Header
#include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
make_cons('x', make_cons(123))
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_list.html b/doc/html/fusion/container/generation/functions/make_list.html index 8f5d19bd..0fb0811e 100644 --- a/doc/html/fusion/container/generation/functions/make_list.html +++ b/doc/html/fusion/container/generation/functions/make_list.html @@ -3,7 +3,7 @@ make_list - + @@ -27,7 +27,7 @@ make_list
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -113,20 +113,20 @@ Semantics: Create a list from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
make_list(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_map.html b/doc/html/fusion/container/generation/functions/make_map.html index f2781816..0e145e04 100644 --- a/doc/html/fusion/container/generation/functions/make_map.html +++ b/doc/html/fusion/container/generation/functions/make_map.html @@ -3,7 +3,7 @@ make_map - + @@ -27,7 +27,7 @@ make_map
- + Description

@@ -35,7 +35,7 @@ from one or more key/data pairs.

- + Synopsis
template <
@@ -55,7 +55,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -123,7 +123,7 @@
- + Expression Semantics
@@ -143,20 +143,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
make_map<int, double>('X', "Men")
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_set.html b/doc/html/fusion/container/generation/functions/make_set.html index d96886eb..bcbc7687 100644 --- a/doc/html/fusion/container/generation/functions/make_set.html +++ b/doc/html/fusion/container/generation/functions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -27,7 +27,7 @@ make_set
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -117,20 +117,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
make_set(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/make_vector.html b/doc/html/fusion/container/generation/functions/make_vector.html index f602297f..325778f8 100644 --- a/doc/html/fusion/container/generation/functions/make_vector.html +++ b/doc/html/fusion/container/generation/functions/make_vector.html @@ -3,7 +3,7 @@ make_vector - + @@ -27,7 +27,7 @@ make_vector
- + Description

@@ -35,7 +35,7 @@ from one or more values.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -100,7 +100,7 @@
- + Expression Semantics
@@ -113,20 +113,20 @@ Semantics: Create a vector from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/make_vector.hpp>
 #include <boost/fusion/include/make_vector.hpp>
 
- + Example
make_vector(123, "hello", 12.5)
 
- + See also
diff --git a/doc/html/fusion/container/generation/functions/map_tie.html b/doc/html/fusion/container/generation/functions/map_tie.html index 6cbdb8ab..a4662608 100644 --- a/doc/html/fusion/container/generation/functions/map_tie.html +++ b/doc/html/fusion/container/generation/functions/map_tie.html @@ -3,7 +3,7 @@ map_tie - + @@ -27,14 +27,14 @@ map_tie
- + Description

Constructs a tie using a map sequence.

- + Synopsis
template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -121,7 +121,7 @@
- + Expression Semantics
@@ -136,14 +136,14 @@ Semantics: Create a map of references from x0, x1,... xN with keys K0, K1,... KN

- + Header
#include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
struct int_key;
diff --git a/doc/html/fusion/container/generation/functions/tiers.html b/doc/html/fusion/container/generation/functions/tiers.html
index 4d76ec45..46269ecc 100644
--- a/doc/html/fusion/container/generation/functions/tiers.html
+++ b/doc/html/fusion/container/generation/functions/tiers.html
@@ -3,7 +3,7 @@
 
 Tiers
 
-
+
 
 
 
@@ -49,7 +49,7 @@
             a vector
             of type vector<int&, char&, double&>. The same result could be achieved
             with the call make_vector(ref(i), ref(c), ref(a))
-            [9]
+            [9]
             .
           

@@ -66,7 +66,7 @@ when calling functions which return sequences.

- + Ignore

@@ -80,7 +80,7 @@



-

[9] +

[9] see Boost.Ref for details about ref

diff --git a/doc/html/fusion/container/generation/functions/vector_tie.html b/doc/html/fusion/container/generation/functions/vector_tie.html index 88ec2dfa..823f7e1e 100644 --- a/doc/html/fusion/container/generation/functions/vector_tie.html +++ b/doc/html/fusion/container/generation/functions/vector_tie.html @@ -3,7 +3,7 @@ vector_tie - + @@ -27,14 +27,14 @@ vector_tie
- + Description

Constructs a tie using a vector sequence.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -52,7 +52,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a vector of references from x0, x1,... xN.

- + Header
#include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
int i = 123;
diff --git a/doc/html/fusion/container/generation/metafunctions.html b/doc/html/fusion/container/generation/metafunctions.html
index c132393e..a5b785a8 100644
--- a/doc/html/fusion/container/generation/metafunctions.html
+++ b/doc/html/fusion/container/generation/metafunctions.html
@@ -3,7 +3,7 @@
 
 MetaFunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/container/generation/metafunctions/list_tie.html b/doc/html/fusion/container/generation/metafunctions/list_tie.html
index 36b17b53..42c8a080 100644
--- a/doc/html/fusion/container/generation/metafunctions/list_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/list_tie.html
@@ -3,7 +3,7 @@
 
 list_tie
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 list_tie
 
 
- + Description

Returns the result type of list_tie.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Create a list of references from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/list_tie.hpp>
 #include <boost/fusion/include/list_tie.hpp>
 
- + Example
result_of::list_tie<int, double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_cons.html b/doc/html/fusion/container/generation/metafunctions/make_cons.html
index 5d26d653..6fe39600 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_cons.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_cons.html
@@ -3,7 +3,7 @@
 
 make_cons
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 make_cons
 
 
- + Description

Returns the result type of make_cons.

- + Synopsis
template <typename Car, typename Cdr = nil>
 struct make_cons;
 
- + Parameters
@@ -105,7 +105,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ (tail).

- + Header
#include <boost/fusion/container/generation/make_cons.hpp>
 #include <boost/fusion/include/make_cons.hpp>
 
- + Example
result_of::make_cons<char, result_of::make_cons<int>::type>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_list.html b/doc/html/fusion/container/generation/metafunctions/make_list.html
index f6f28793..161a96a6 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_list.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_list.html
@@ -3,7 +3,7 @@
 
 make_list
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 make_list
 
 
- + Description

Returns the result type of make_list.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a list from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
result_of::make_list<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_map.html b/doc/html/fusion/container/generation/metafunctions/make_map.html
index de4129c4..da5f395a 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_map.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_map.html
@@ -3,7 +3,7 @@
 
 make_map
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 make_map
 
 
- + Description

Returns the result type of make_map.

- + Synopsis
template <
@@ -53,7 +53,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -121,7 +121,7 @@
- + Expression Semantics
@@ -140,20 +140,20 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_map.hpp>
 #include <boost/fusion/include/make_map.hpp>
 
- + Example
result_of::make_map<int, double, char, double>::type
 
- + See also
diff --git a/doc/html/fusion/container/generation/metafunctions/make_set.html b/doc/html/fusion/container/generation/metafunctions/make_set.html index 0ea2b7c6..32bb45b0 100644 --- a/doc/html/fusion/container/generation/metafunctions/make_set.html +++ b/doc/html/fusion/container/generation/metafunctions/make_set.html @@ -3,7 +3,7 @@ make_set - + @@ -27,14 +27,14 @@ make_set
- + Description

Returns the result type of make_set.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -117,14 +117,14 @@ key types.

- + Header
#include <boost/fusion/container/generation/make_set.hpp>
 #include <boost/fusion/include/make_set.hpp>
 
- + Example
result_of::make_set<int, char, double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/make_vector.html b/doc/html/fusion/container/generation/metafunctions/make_vector.html
index b1a564d2..0e28ed03 100644
--- a/doc/html/fusion/container/generation/metafunctions/make_vector.html
+++ b/doc/html/fusion/container/generation/metafunctions/make_vector.html
@@ -3,7 +3,7 @@
 
 make_vector
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 make_vector
 
 
- + Description

Returns the result type of make_vector.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ Semantics: Create a vector from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/make_list.hpp>
 #include <boost/fusion/include/make_list.hpp>
 
- + Example
result_of::make_vector<int, const char(&)[7], double>::type
diff --git a/doc/html/fusion/container/generation/metafunctions/map_tie.html b/doc/html/fusion/container/generation/metafunctions/map_tie.html
index 2acd4161..4658a472 100644
--- a/doc/html/fusion/container/generation/metafunctions/map_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/map_tie.html
@@ -3,7 +3,7 @@
 
 map_tie
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 map_tie
 
 
- + Description

Returns the result type of map_tie.

- + Synopsis
template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Parameters
@@ -119,7 +119,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ Semantics: Create a map of references from D0, D1,... DN with keys K0, K1,... KN

- + Header
#include <boost/fusion/container/generation/map_tie.hpp>
 #include <boost/fusion/include/map_tie.hpp>
 
- + Example
struct int_key;
diff --git a/doc/html/fusion/container/generation/metafunctions/vector_tie.html b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
index f9315495..5effeed5 100644
--- a/doc/html/fusion/container/generation/metafunctions/vector_tie.html
+++ b/doc/html/fusion/container/generation/metafunctions/vector_tie.html
@@ -3,7 +3,7 @@
 
 vector_tie
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 vector_tie
 
 
- + Description

Returns the result type of vector_tie.

- + Synopsis
template <typename T0, typename T1,... typename TN>
@@ -51,7 +51,7 @@
 
#define FUSION_MAX_VECTOR_SIZE 20
 
- + Parameters
@@ -98,7 +98,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Create a vector of references from T0, T1,... TN.

- + Header
#include <boost/fusion/container/generation/vector_tie.hpp>
 #include <boost/fusion/include/vector_tie.hpp>
 
- + Example
result_of::vector_tie<int, double>::type
diff --git a/doc/html/fusion/container/list.html b/doc/html/fusion/container/list.html
index 4aec42ce..fb5c776c 100644
--- a/doc/html/fusion/container/list.html
+++ b/doc/html/fusion/container/list.html
@@ -3,7 +3,7 @@
 
 list
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 list
 
 
- + Description

@@ -38,7 +38,7 @@ runtime cost of access to each element is peculiarly constant (see Recursive Inlined Functions).

- + Header
#include <boost/fusion/container/list.hpp>
@@ -47,7 +47,7 @@
 #include <boost/fusion/include/list_fwd.hpp>
 
- + Synopsis
template <
@@ -75,7 +75,7 @@
 
#define FUSION_MAX_LIST_SIZE 20
 
- + Template parameters
@@ -120,7 +120,7 @@
- + Model of
@@ -151,7 +151,7 @@
- + Expression Semantics

@@ -257,7 +257,7 @@

- + Example
list<int, float> l(12, 5.5f);
diff --git a/doc/html/fusion/container/map.html b/doc/html/fusion/container/map.html
index 41483836..f853ee4d 100644
--- a/doc/html/fusion/container/map.html
+++ b/doc/html/fusion/container/map.html
@@ -3,7 +3,7 @@
 
 map
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 map
 
 
- + Description

@@ -40,7 +40,7 @@ (see Overloaded Functions).

- + Header
#include <boost/fusion/container/map.hpp>
@@ -49,7 +49,7 @@
 #include <boost/fusion/include/map_fwd.hpp>
 
- + Synopsis
template <
@@ -77,7 +77,7 @@
 
#define FUSION_MAX_MAP_SIZE 20
 
- + Template parameters
@@ -122,7 +122,7 @@
- + Model of
    @@ -152,7 +152,7 @@
- + Expression Semantics

@@ -235,7 +235,7 @@

- + Example
typedef map<
diff --git a/doc/html/fusion/container/set.html b/doc/html/fusion/container/set.html
index 27152ebc..75547342 100644
--- a/doc/html/fusion/container/set.html
+++ b/doc/html/fusion/container/set.html
@@ -3,7 +3,7 @@
 
 set
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 set
 
 
- + Description

@@ -39,7 +39,7 @@ Functions).

- + Header
#include <boost/fusion/container/set.hpp>
@@ -48,7 +48,7 @@
 #include <boost/fusion/include/set_fwd.hpp>
 
- + Synopsis
template <
@@ -76,7 +76,7 @@
 
#define FUSION_MAX_SET_SIZE 20
 
- + Template parameters
@@ -121,7 +121,7 @@
- + Model of
    @@ -151,7 +151,7 @@
- + Expression Semantics

@@ -234,7 +234,7 @@

- + Example
typedef set<int, float> S;
diff --git a/doc/html/fusion/container/vector.html b/doc/html/fusion/container/vector.html
index 458b2e16..30c7331d 100644
--- a/doc/html/fusion/container/vector.html
+++ b/doc/html/fusion/container/vector.html
@@ -3,7 +3,7 @@
 
 vector
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 vector
 
 
- + Description

@@ -39,7 +39,7 @@ efficient.

- + Header
#include <boost/fusion/container/vector.hpp>
@@ -60,7 +60,7 @@
 #include <boost/fusion/include/vector50.hpp>
 
- + Synopsis

@@ -115,7 +115,7 @@

#define FUSION_MAX_VECTOR_SIZE 20
 
- + Template parameters
@@ -160,7 +160,7 @@
- + Model of
- + Expression Semantics

@@ -269,7 +269,7 @@

- + Example
vector<int, float> v(12, 5.5f);
diff --git a/doc/html/fusion/extension.html b/doc/html/fusion/extension.html
index fb3b4cbf..59c1e744 100644
--- a/doc/html/fusion/extension.html
+++ b/doc/html/fusion/extension.html
@@ -3,7 +3,7 @@
 
 Extension
 
-
+
 
 
 
diff --git a/doc/html/fusion/extension/ext_full.html b/doc/html/fusion/extension/ext_full.html
index a0787e0c..6c7143ed 100644
--- a/doc/html/fusion/extension/ext_full.html
+++ b/doc/html/fusion/extension/ext_full.html
@@ -3,7 +3,7 @@
 
 The Full Extension Mechanism
 
-
+
 
 
 
@@ -49,7 +49,7 @@
         
 
 
- + Our example

@@ -79,7 +79,7 @@ Start guide.

- + Enabling Tag Dispatching
@@ -120,7 +120,7 @@ #include <boost/fusion/include/tag_of.hpp>
- + Designing a suitable iterator
@@ -182,7 +182,7 @@ clearer as we add features to our implementation.

- + A first couple of instructive features
@@ -322,7 +322,7 @@

- + Implementing the remaining iterator functionality
@@ -373,7 +373,7 @@ are provided in the example code.

- + Implementing the intrinsic functions of the sequence
@@ -429,7 +429,7 @@ value_at_impl and at_impl.

- + Enabling our type as an associative sequence
@@ -493,7 +493,7 @@ are provided in the example code.

- + Summary

diff --git a/doc/html/fusion/extension/iterator_facade.html b/doc/html/fusion/extension/iterator_facade.html index 49b74580..38102f45 100644 --- a/doc/html/fusion/extension/iterator_facade.html +++ b/doc/html/fusion/extension/iterator_facade.html @@ -3,7 +3,7 @@ Iterator Facade - + @@ -27,7 +27,7 @@ Iterator Facade

- + Description

@@ -36,14 +36,14 @@ iterator.

- + Synopsis
template<typename Derived, typename TravesalTag>
 struct iterator_facade;
 
- + Usage

@@ -57,7 +57,7 @@ type.

-

Table 1.97. Parameters

+

Table 1.97. Parameters

@@ -106,7 +106,7 @@

-

Table 1.98. Key Expressions

+

Table 1.98. Key Expressions

@@ -435,14 +435,14 @@

- + Header
#include <boost/fusion/iterator/iterator_facade.hpp>
 #include <boost/fusion/include/iterator_facade.hpp>
 
- + Example

diff --git a/doc/html/fusion/extension/sequence_facade.html b/doc/html/fusion/extension/sequence_facade.html index 039f349d..ca797c33 100644 --- a/doc/html/fusion/extension/sequence_facade.html +++ b/doc/html/fusion/extension/sequence_facade.html @@ -3,7 +3,7 @@ Sequence Facade - + @@ -27,7 +27,7 @@ Sequence Facade

- + Description

@@ -36,14 +36,14 @@ iterator.

- + Synopsis
template<typename Derived, typename TravesalTag, typename IsView = mpl::false_>
 struct sequence_facade;
 
- + Usage

@@ -59,7 +59,7 @@ type.

-

Table 1.95. Parameters

+

Table 1.95. Parameters

@@ -107,7 +107,7 @@

-

Table 1.96. Key Expressions

+

Table 1.96. Key Expressions

@@ -243,14 +243,14 @@

- + Include
#include <boost/fusion/sequence/sequence_facade.hpp>
 #include <boost/fusion/include/sequence_facade.hpp>
 
- + Example

diff --git a/doc/html/fusion/functional.html b/doc/html/fusion/functional.html index 427b6aba..c218de9a 100644 --- a/doc/html/fusion/functional.html +++ b/doc/html/fusion/functional.html @@ -3,7 +3,7 @@ Functional - + @@ -63,13 +63,13 @@ through a function object interface.

- + Header

#include <boost/fusion/functional.hpp>
 

- + Fused and unfused forms

@@ -103,7 +103,7 @@ form of f'.

- + Calling functions and function objects

@@ -133,7 +133,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Making Fusion code callable through a function object interface

diff --git a/doc/html/fusion/functional/adapters.html b/doc/html/fusion/functional/adapters.html index e62dfd4b..3aee98d2 100644 --- a/doc/html/fusion/functional/adapters.html +++ b/doc/html/fusion/functional/adapters.html @@ -3,7 +3,7 @@ Adapters - + diff --git a/doc/html/fusion/functional/adapters/fused.html b/doc/html/fusion/functional/adapters/fused.html index 1319a107..dbaf9dea 100644 --- a/doc/html/fusion/functional/adapters/fused.html +++ b/doc/html/fusion/functional/adapters/fused.html @@ -3,7 +3,7 @@ fused - + @@ -27,7 +27,7 @@ fused
- + Description

@@ -54,20 +54,20 @@ and boost::shared_ptr).

- + Header
#include <boost/fusion/functional/adapter/fused.hpp>
 
- + Synopsis
template <typename Function>
 class fused;
 
- + Template parameters
@@ -113,7 +113,7 @@
- + Model of
    @@ -146,7 +146,7 @@
- + Expression Semantics
@@ -210,14 +210,14 @@
- + Example
fused< std::plus<long> > f;
 assert(f(make_vector(1,2l)) == 3l);
 
- + See also
    diff --git a/doc/html/fusion/functional/adapters/fused_function_object.html b/doc/html/fusion/functional/adapters/fused_function_object.html index 39ab6c3b..bf820d6c 100644 --- a/doc/html/fusion/functional/adapters/fused_function_object.html +++ b/doc/html/fusion/functional/adapters/fused_function_object.html @@ -3,7 +3,7 @@ fused_function_object - + @@ -27,7 +27,7 @@ fused_function_object
- + Description

@@ -44,20 +44,20 @@ object is held by value, the adapter is const).

- + Header
#include <boost/fusion/functional/adapter/fused_function_object.hpp>
 
- + Synopsis
template <class Function>
 class fused_function_object;
 
- + Template parameters
@@ -103,7 +103,7 @@
- + Model of
@@ -137,7 +137,7 @@
- + Expression Semantics
@@ -201,7 +201,7 @@
- + Example
template<class SeqOfSeqs, class Func>
@@ -238,7 +238,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/fused_procedure.html b/doc/html/fusion/functional/adapters/fused_procedure.html index 43ab2e3f..ef32e171 100644 --- a/doc/html/fusion/functional/adapters/fused_procedure.html +++ b/doc/html/fusion/functional/adapters/fused_procedure.html @@ -3,7 +3,7 @@ fused_procedure - + @@ -27,7 +27,7 @@ fused_procedure
- + Description

@@ -62,20 +62,20 @@ case is not implemented).

- + Header
#include <boost/fusion/functional/adapter/fused_procedure.hpp>
 
- + Synopsis
template <typename Function>
 class fused_procedure;
 
- + Template parameters
@@ -121,7 +121,7 @@
- + Model of
@@ -155,7 +155,7 @@
- + Expression Semantics
@@ -219,7 +219,7 @@
- + Example
template<class SequenceOfSequences, class Func>
@@ -239,7 +239,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/adapters/limits.html b/doc/html/fusion/functional/adapters/limits.html index f36d3bd4..ac89e1d0 100644 --- a/doc/html/fusion/functional/adapters/limits.html +++ b/doc/html/fusion/functional/adapters/limits.html @@ -3,7 +3,7 @@ Limits - + @@ -27,13 +27,13 @@ Limits
- + Header
#include <boost/fusion/functional/adapter/limits.hpp>
 
- + Macros

diff --git a/doc/html/fusion/functional/adapters/unfused.html b/doc/html/fusion/functional/adapters/unfused.html index 54c7229d..fef8d068 100644 --- a/doc/html/fusion/functional/adapters/unfused.html +++ b/doc/html/fusion/functional/adapters/unfused.html @@ -3,7 +3,7 @@ unfused - + @@ -27,7 +27,7 @@ unfused

- + Description

@@ -57,20 +57,20 @@ object is held by value, the adapter is const.

- + Header
#include <boost/fusion/functional/adapter/unfused.hpp>
 
- + Synopsis
template <class Function, bool AllowNullary = true>
 class unfused;
 
- + Template parameters
@@ -135,7 +135,7 @@
- + Model of
    @@ -172,7 +172,7 @@
- + Expression Semantics
@@ -236,7 +236,7 @@
- + Example
struct fused_incrementer
@@ -263,7 +263,7 @@
 }
 
- + See also
    diff --git a/doc/html/fusion/functional/adapters/unfused_typed.html b/doc/html/fusion/functional/adapters/unfused_typed.html index f4d23e0a..963f7c4e 100644 --- a/doc/html/fusion/functional/adapters/unfused_typed.html +++ b/doc/html/fusion/functional/adapters/unfused_typed.html @@ -3,7 +3,7 @@ unfused_typed - + @@ -27,7 +27,7 @@ unfused_typed
- + Description

@@ -66,20 +66,20 @@

- + Header
#include <boost/fusion/functional/adapter/unfused_typed.hpp>
 
- + Synopsis
template <class Function, class Sequence>
 class unfused_typed;
 
- + Template parameters
@@ -143,7 +143,7 @@
- + Model of
@@ -186,7 +186,7 @@
- + Expression Semantics
@@ -252,7 +252,7 @@
- + Example
struct add_assign // applies operator+=
@@ -320,7 +320,7 @@
 }
 
- + See also
    diff --git a/doc/html/fusion/functional/concepts.html b/doc/html/fusion/functional/concepts.html index c1eeed42..1f6efedb 100644 --- a/doc/html/fusion/functional/concepts.html +++ b/doc/html/fusion/functional/concepts.html @@ -3,7 +3,7 @@ Concepts - + diff --git a/doc/html/fusion/functional/concepts/callable.html b/doc/html/fusion/functional/concepts/callable.html index df1db4da..38efdb94 100644 --- a/doc/html/fusion/functional/concepts/callable.html +++ b/doc/html/fusion/functional/concepts/callable.html @@ -3,7 +3,7 @@ Callable Object - + @@ -27,7 +27,7 @@ Callable Object
- + Description

@@ -36,7 +36,7 @@ of a function call operator.

- + Models
    @@ -51,7 +51,7 @@
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/def_callable.html b/doc/html/fusion/functional/concepts/def_callable.html
index 56fc5adf..c76091ba 100644
--- a/doc/html/fusion/functional/concepts/def_callable.html
+++ b/doc/html/fusion/functional/concepts/def_callable.html
@@ -3,7 +3,7 @@
 
 Deferred Callable Object
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         Callable Object
 
 
- + Description

@@ -37,7 +37,7 @@ to determine the result of a call.

- + Refinement of
@@ -80,7 +80,7 @@
- + Expression requirements
@@ -118,7 +118,7 @@
- + Models
    @@ -131,7 +131,7 @@
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/poly.html b/doc/html/fusion/functional/concepts/poly.html
index c8300289..746842f3 100644
--- a/doc/html/fusion/functional/concepts/poly.html
+++ b/doc/html/fusion/functional/concepts/poly.html
@@ -3,7 +3,7 @@
 
 Polymorphic Function Object
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         Object
 
 
- + Description

@@ -36,7 +36,7 @@ Callable Object type.

- + Refinement of
@@ -78,7 +78,7 @@
- + Expression requirements
@@ -127,7 +127,7 @@
- + Models
    @@ -142,7 +142,7 @@
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/concepts/reg_callable.html b/doc/html/fusion/functional/concepts/reg_callable.html
index 7249e446..a6f44fbb 100644
--- a/doc/html/fusion/functional/concepts/reg_callable.html
+++ b/doc/html/fusion/functional/concepts/reg_callable.html
@@ -3,7 +3,7 @@
 
 Regular Callable Object
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         Object
 
 
- + Description

@@ -37,7 +37,7 @@ can appear immediately to the left of a function call operator.

- + Refinement of
@@ -67,7 +67,7 @@
- + Expression requirements
@@ -114,7 +114,7 @@
- + Models
    @@ -126,7 +126,7 @@
- + Examples
& a_free_function
diff --git a/doc/html/fusion/functional/generation.html b/doc/html/fusion/functional/generation.html
index 563f1d06..008a56eb 100644
--- a/doc/html/fusion/functional/generation.html
+++ b/doc/html/fusion/functional/generation.html
@@ -3,7 +3,7 @@
 
 Generation
 
-
+
 
 
 
diff --git a/doc/html/fusion/functional/generation/functions.html b/doc/html/fusion/functional/generation/functions.html
index 4ca2dcd2..b9df864c 100644
--- a/doc/html/fusion/functional/generation/functions.html
+++ b/doc/html/fusion/functional/generation/functions.html
@@ -3,7 +3,7 @@
 
 Functions
 
-
+
 
 
 
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused.html b/doc/html/fusion/functional/generation/functions/mk_fused.html
index fe800bf5..5517c860 100644
--- a/doc/html/fusion/functional/generation/functions/mk_fused.html
+++ b/doc/html/fusion/functional/generation/functions/mk_fused.html
@@ -3,7 +3,7 @@
 
 make_fused
 
-
+
 
 
 
@@ -28,7 +28,7 @@
           make_fused
 
 
- + Description

@@ -37,7 +37,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -45,7 +45,7 @@
 make_fused(F const & f);
 
- + Parameters
@@ -91,7 +91,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ Semantics: Returns a fused adapter for f.

- + Header
#include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/include/make_fused.hpp>
 
- + Example
float sub(float a, float b) { return a - b; }
@@ -126,7 +126,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html index a630a67b..28bd6194 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_fobj.html @@ -3,7 +3,7 @@ make_fused_function_object - + @@ -28,7 +28,7 @@ make_fused_function_object
- + Description

@@ -38,7 +38,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_fused_function_object(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ for f.

- + Header
#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Example
struct sub
@@ -141,7 +141,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html index b5808550..f9eda0f9 100644 --- a/doc/html/fusion/functional/generation/functions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/functions/mk_fused_proc.html @@ -3,7 +3,7 @@ make_fused_procedure - + @@ -28,7 +28,7 @@ make_fused_procedure
- + Description

@@ -38,7 +38,7 @@ conversion applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_fused_procedure(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -106,14 +106,14 @@ f.

- + Header
#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Example
vector<int,int,int> v(1,2,3);
@@ -122,7 +122,7 @@
 assert(front(v) == 0);
 
- + See also
diff --git a/doc/html/fusion/functional/generation/functions/mk_unfused.html b/doc/html/fusion/functional/generation/functions/mk_unfused.html index bf13a28f..01912357 100644 --- a/doc/html/fusion/functional/generation/functions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/functions/mk_unfused.html @@ -3,7 +3,7 @@ make_unfused - + @@ -28,7 +28,7 @@ make_unfused
- + Description

@@ -38,7 +38,7 @@ conversion is applied to the target function.

- + Synopsis
template <typename F>
@@ -46,7 +46,7 @@
 make_unfused(F const & f);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -105,14 +105,14 @@ Semantics: Returns a unfused adapter for f.

- + Header
#include <boost/fusion/functional/generation/make_unfused.hpp>
 #include <boost/fusion/include/make_unfused.hpp>
 
- + Example
struct fused_incrementer
@@ -138,7 +138,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/metafunctions.html b/doc/html/fusion/functional/generation/metafunctions.html index 63bd4e52..f32bc1c1 100644 --- a/doc/html/fusion/functional/generation/metafunctions.html +++ b/doc/html/fusion/functional/generation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html index c2b87eaa..bc309b72 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused.html @@ -3,7 +3,7 @@ make_fused - + @@ -28,21 +28,21 @@ make_fused
- + Description

Returns the result type of make_fused.

- + Header
#include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/include/make_fused.hpp>
 
- + Synopsis
namespace result_of
@@ -55,7 +55,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html index 46a0a80d..ea097584 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_fobj.html @@ -3,7 +3,7 @@ make_fused_function_object - + @@ -28,21 +28,21 @@ make_fused_function_object
- + Description

Returns the result type of make_fused_function_object.

- + Header
#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
 #include <boost/fusion/include/make_fused_function_object.hpp>
 
- + Synopsis
namespace result_of
@@ -55,7 +55,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html index 8c264124..a3204de4 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_fused_proc.html @@ -3,7 +3,7 @@ make_fused_procedure - + @@ -28,21 +28,21 @@ make_fused_procedure
- + Description

Returns the result type of make_fused_procedure.

- + Header
#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
 #include <boost/fusion/include/make_fused_procedure.hpp>
 
- + Synopsis
namespace result_of
@@ -55,7 +55,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html index 5ad10ef3..52591eda 100644 --- a/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html +++ b/doc/html/fusion/functional/generation/metafunctions/mk_unfused.html @@ -3,7 +3,7 @@ make_unfused - + @@ -28,21 +28,21 @@ make_unfused
- + Description

Returns the result type of make_unfused.

- + Header
#include <boost/fusion/functional/generation/make_unfused.hpp>
 #include <boost/fusion/include/make_unfused.hpp>
 
- + Synopsis
namespace result_of
@@ -55,7 +55,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation.html b/doc/html/fusion/functional/invocation.html index 02dae5c3..49ffed5f 100644 --- a/doc/html/fusion/functional/invocation.html +++ b/doc/html/fusion/functional/invocation.html @@ -3,7 +3,7 @@ Invocation - + diff --git a/doc/html/fusion/functional/invocation/functions.html b/doc/html/fusion/functional/invocation/functions.html index 8868e636..65fca2c9 100644 --- a/doc/html/fusion/functional/invocation/functions.html +++ b/doc/html/fusion/functional/invocation/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/functional/invocation/functions/invoke.html b/doc/html/fusion/functional/invocation/functions/invoke.html index b92bc23c..7ca7d4be 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke.html +++ b/doc/html/fusion/functional/invocation/functions/invoke.html @@ -3,7 +3,7 @@ invoke - + @@ -27,7 +27,7 @@ invoke
- + Description

@@ -49,7 +49,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Synopsis
template<
@@ -67,7 +67,7 @@
 invoke(Function f, Sequence const & s);
 
- + Parameters
@@ -133,7 +133,7 @@
- + Expression Semantics
@@ -149,20 +149,20 @@ as arguments and returns the result of the call expression.

- + Header
#include <boost/fusion/functional/invocation/invoke.hpp>
 
- + Example
std::plus<int> add;
 assert(invoke(add,make_vector(1,1)) == 2);
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html index f68cddfb..636a1581 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_fobj.html @@ -3,7 +3,7 @@ invoke_function_object - + @@ -28,7 +28,7 @@ invoke_function_object
- + Description

@@ -43,7 +43,7 @@ Constructors can be called applying Boost.Functional/Factory.

- + Synopsis
template<
@@ -61,7 +61,7 @@
 invoke_function_object(Function f, Sequence const & s);
 
- + Parameters
@@ -127,7 +127,7 @@
- + Expression Semantics
@@ -143,13 +143,13 @@ as arguments and returns the result of the call expression.

- + Header
#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
 
- + Example
struct sub
@@ -175,7 +175,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/functions/invoke_proc.html b/doc/html/fusion/functional/invocation/functions/invoke_proc.html index ba4b3560..95fe1fdc 100644 --- a/doc/html/fusion/functional/invocation/functions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/functions/invoke_proc.html @@ -3,7 +3,7 @@ invoke_procedure - + @@ -28,7 +28,7 @@ invoke_procedure
- + Description

@@ -52,7 +52,7 @@ isn't implemented).

- + Synopsis
template<
@@ -70,7 +70,7 @@
 invoke_procedure(Function f, Sequence const & s);
 
- + Parameters
@@ -136,7 +136,7 @@
- + Expression Semantics
@@ -151,13 +151,13 @@ as arguments.

- + Header
#include <booost/fusion/functional/invocation/invoke_procedure.hpp>
 
- + Example
vector<int,int> v(1,2);
@@ -166,7 +166,7 @@
 assert(front(v) == 3);
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/limits.html b/doc/html/fusion/functional/invocation/limits.html index 24a522d3..1d50885a 100644 --- a/doc/html/fusion/functional/invocation/limits.html +++ b/doc/html/fusion/functional/invocation/limits.html @@ -3,7 +3,7 @@ Limits - + @@ -27,13 +27,13 @@ Limits
- + Header
#include <boost/fusion/functional/invocation/limits.hpp>
 
- + Macros

diff --git a/doc/html/fusion/functional/invocation/metafunctions.html b/doc/html/fusion/functional/invocation/metafunctions.html index 2467e1b6..cf76cdda 100644 --- a/doc/html/fusion/functional/invocation/metafunctions.html +++ b/doc/html/fusion/functional/invocation/metafunctions.html @@ -3,7 +3,7 @@ Metafunctions - + diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke.html b/doc/html/fusion/functional/invocation/metafunctions/invoke.html index 26fe36f8..b8fab42d 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke.html @@ -3,7 +3,7 @@ invoke - + @@ -27,14 +27,14 @@ invoke

- + Description

Returns the result type of invoke.

- + Synopsis
namespace result_of
@@ -50,7 +50,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html index 4fdc4b90..6cd3e7da 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_fobj.html @@ -3,7 +3,7 @@ invoke_function_object - + @@ -28,14 +28,14 @@ invoke_function_object
- + Description

Returns the result type of invoke_function_object.

- + Synopsis
namespace result_of
@@ -51,7 +51,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html index a779304a..3d79703b 100644 --- a/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html +++ b/doc/html/fusion/functional/invocation/metafunctions/invoke_proc.html @@ -3,7 +3,7 @@ invoke_procedure - + @@ -28,14 +28,14 @@ invoke_procedure
- + Description

Returns the result type of invoke_procedure.

- + Synopsis
namespace result_of
@@ -51,7 +51,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/introduction.html b/doc/html/fusion/introduction.html index c11f10cf..f7bd8b1c 100644 --- a/doc/html/fusion/introduction.html +++ b/doc/html/fusion/introduction.html @@ -3,7 +3,7 @@ Introduction - + @@ -117,7 +117,7 @@ sequences are fully compatible with Fusion. You can work with Fusion sequences on MPL if you wish to work solely on types - [1] + [1] . In MPL, Fusion sequences follow MPL's sequence-type preserving semantics (i.e. algorithms preserve the original sequence @@ -132,7 +132,7 @@



-

[1] +

[1] Choose MPL over fusion when doing pure type calculations. Once the static type calculation is finished, you can instantiate a fusion sequence (see Conversion) diff --git a/doc/html/fusion/iterator.html b/doc/html/fusion/iterator.html index 24b786f9..9d0480b5 100644 --- a/doc/html/fusion/iterator.html +++ b/doc/html/fusion/iterator.html @@ -3,7 +3,7 @@ Iterator - + @@ -81,7 +81,7 @@ Sequence.

- + Header

#include <boost/fusion/iterator.hpp>
diff --git a/doc/html/fusion/iterator/concepts.html b/doc/html/fusion/iterator/concepts.html
index b4b03309..e586400f 100644
--- a/doc/html/fusion/iterator/concepts.html
+++ b/doc/html/fusion/iterator/concepts.html
@@ -3,7 +3,7 @@
 
 Concepts
 
-
+
 
 
 
diff --git a/doc/html/fusion/iterator/concepts/associative_iterator.html b/doc/html/fusion/iterator/concepts/associative_iterator.html
index 309b314c..eaad0719 100644
--- a/doc/html/fusion/iterator/concepts/associative_iterator.html
+++ b/doc/html/fusion/iterator/concepts/associative_iterator.html
@@ -3,7 +3,7 @@
 
 Associative Iterator
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         Iterator
 
- + Description

@@ -50,7 +50,7 @@

- + Refinement of
@@ -61,7 +61,7 @@ Access Iterator

- + Expression requirements
@@ -113,7 +113,7 @@
- + Meta Expressions
@@ -174,7 +174,7 @@
- + Models
    diff --git a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html index 79878316..e27cae93 100644 --- a/doc/html/fusion/iterator/concepts/bidirectional_iterator.html +++ b/doc/html/fusion/iterator/concepts/bidirectional_iterator.html @@ -3,7 +3,7 @@ Bidirectional Iterator - + @@ -28,7 +28,7 @@ Iterator
- + Description

@@ -58,7 +58,7 @@

- + Refinement of
@@ -66,7 +66,7 @@ Forward Iterator

- + Expression requirements
@@ -173,7 +173,7 @@
- + Meta Expressions
@@ -208,7 +208,7 @@
- + Expression Semantics
@@ -248,7 +248,7 @@
- + Invariants

@@ -264,7 +264,7 @@

- + Models
    diff --git a/doc/html/fusion/iterator/concepts/forward_iterator.html b/doc/html/fusion/iterator/concepts/forward_iterator.html index e8d8c8ea..2bf4e92a 100644 --- a/doc/html/fusion/iterator/concepts/forward_iterator.html +++ b/doc/html/fusion/iterator/concepts/forward_iterator.html @@ -3,7 +3,7 @@ Forward Iterator - + @@ -28,7 +28,7 @@ Iterator
- + Description

@@ -61,7 +61,7 @@

- + Expression requirements
@@ -239,7 +239,7 @@
- + Meta Expressions
@@ -350,7 +350,7 @@
- + Expression Semantics
@@ -476,7 +476,7 @@
- + Invariants

@@ -500,7 +500,7 @@

- + Models
    diff --git a/doc/html/fusion/iterator/concepts/random_access_iterator.html b/doc/html/fusion/iterator/concepts/random_access_iterator.html index 04f37615..012e6b38 100644 --- a/doc/html/fusion/iterator/concepts/random_access_iterator.html +++ b/doc/html/fusion/iterator/concepts/random_access_iterator.html @@ -3,7 +3,7 @@ Random Access Iterator - + @@ -28,7 +28,7 @@ Access Iterator
- + Description

@@ -61,7 +61,7 @@

- + Refinement of
@@ -70,7 +70,7 @@ Iterator

- + Expression requirements
@@ -177,7 +177,7 @@
- + Meta Expressions
@@ -240,7 +240,7 @@
- + Models
    diff --git a/doc/html/fusion/iterator/functions.html b/doc/html/fusion/iterator/functions.html index 24ee01cd..ed34f382 100644 --- a/doc/html/fusion/iterator/functions.html +++ b/doc/html/fusion/iterator/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/iterator/functions/advance.html b/doc/html/fusion/iterator/functions/advance.html index d6ea36c1..3baf1602 100644 --- a/doc/html/fusion/iterator/functions/advance.html +++ b/doc/html/fusion/iterator/functions/advance.html @@ -3,7 +3,7 @@ advance - + @@ -27,14 +27,14 @@ advance
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::advance<I, M>::type advance(I const& i);
 
-

Table 1.6. Parameters

+

Table 1.6. Parameters

@@ -109,7 +109,7 @@

- + Expression Semantics
@@ -128,14 +128,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/advance_c.html b/doc/html/fusion/iterator/functions/advance_c.html
index 6cdaf89f..5726a941 100644
--- a/doc/html/fusion/iterator/functions/advance_c.html
+++ b/doc/html/fusion/iterator/functions/advance_c.html
@@ -3,7 +3,7 @@
 
 advance_c
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 advance_c
 
 
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::advance_c<I, N>::type advance_c(I const& i);
 
-

Table 1.7. Parameters

+

Table 1.7. Parameters

@@ -108,7 +108,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/deref.html b/doc/html/fusion/iterator/functions/deref.html
index f8496388..bfb51292 100644
--- a/doc/html/fusion/iterator/functions/deref.html
+++ b/doc/html/fusion/iterator/functions/deref.html
@@ -3,7 +3,7 @@
 
 deref
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 deref
 
 
- + Description

Deferences an iterator.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::deref<I>::type deref(I const& i);
 
-

Table 1.2. Parameters

+

Table 1.2. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -102,14 +102,14 @@ i.

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/iterator/functions/deref_data.html b/doc/html/fusion/iterator/functions/deref_data.html
index 0f4092aa..3511b44f 100644
--- a/doc/html/fusion/iterator/functions/deref_data.html
+++ b/doc/html/fusion/iterator/functions/deref_data.html
@@ -3,7 +3,7 @@
 
 deref_data
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 deref_data
 
 
- + Description

@@ -35,7 +35,7 @@ an associative iterator.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::deref_data<I>::type deref(I const& i);
 
-

Table 1.8. Parameters

+

Table 1.8. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ associated with the element referenced by an associative iterator i.

- + Header
#include <boost/fusion/iterator/deref_data.hpp>
 #include <boost/fusion/include/deref_data.hpp>
 
- + Example
typedef map<pair<float,int&> > map;
diff --git a/doc/html/fusion/iterator/functions/distance.html b/doc/html/fusion/iterator/functions/distance.html
index 449ceffa..38ba9e17 100644
--- a/doc/html/fusion/iterator/functions/distance.html
+++ b/doc/html/fusion/iterator/functions/distance.html
@@ -3,7 +3,7 @@
 
 distance
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 distance
 
 
- + Description

Returns the distance between 2 iterators.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::distance<I, J>::type distance(I const& i, J const& j);
 
-

Table 1.5. Parameters

+

Table 1.5. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ iterators i and j.

- + Header
#include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/include/distance.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/next.html b/doc/html/fusion/iterator/functions/next.html
index 6c7be88d..8399f639 100644
--- a/doc/html/fusion/iterator/functions/next.html
+++ b/doc/html/fusion/iterator/functions/next.html
@@ -3,7 +3,7 @@
 
 next
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 next
 
 
- + Description

Moves an iterator 1 position forwards.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::next<I>::type next(I const& i);
 
-

Table 1.3. Parameters

+

Table 1.3. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ next element after i.

- + Header
#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/include/next.hpp>
 
- + Example
typedef vector<int,int,int> vec;
diff --git a/doc/html/fusion/iterator/functions/prior.html b/doc/html/fusion/iterator/functions/prior.html
index 688f1f4e..3ba81855 100644
--- a/doc/html/fusion/iterator/functions/prior.html
+++ b/doc/html/fusion/iterator/functions/prior.html
@@ -3,7 +3,7 @@
 
 prior
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 prior
 
 
- + Description

Moves an iterator 1 position backwards.

- + Synopsis
template<
@@ -43,7 +43,7 @@
 typename result_of::prior<I>::type prior(I const& i);
 
-

Table 1.4. Parameters

+

Table 1.4. Parameters

@@ -88,7 +88,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ element prior to i.

- + Header
#include <boost/fusion/iterator/prior.hpp>
 #include <boost/fusion/include/prior.hpp>
 
- + Example
typedef vector<int,int> vec;
diff --git a/doc/html/fusion/iterator/metafunctions.html b/doc/html/fusion/iterator/metafunctions.html
index 197b5498..c71a5528 100644
--- a/doc/html/fusion/iterator/metafunctions.html
+++ b/doc/html/fusion/iterator/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/iterator/metafunctions/advance.html b/doc/html/fusion/iterator/metafunctions/advance.html
index 48c72717..4844a55f 100644
--- a/doc/html/fusion/iterator/metafunctions/advance.html
+++ b/doc/html/fusion/iterator/metafunctions/advance.html
@@ -3,7 +3,7 @@
 
 advance
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 advance
 
 
- + Description

Moves an iterator a specified distance.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.18. Parameters

+

Table 1.18. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -130,14 +130,14 @@ may be negative.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/advance_c.html b/doc/html/fusion/iterator/metafunctions/advance_c.html
index 20c66d95..9fe0ed95 100644
--- a/doc/html/fusion/iterator/metafunctions/advance_c.html
+++ b/doc/html/fusion/iterator/metafunctions/advance_c.html
@@ -3,7 +3,7 @@
 
 advance_c
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 advance_c
 
 
- + Description

Moves an iterator by a specified distance.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.19. Parameters

+

Table 1.19. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -129,14 +129,14 @@ may be negative. Equivalent to result_of::advance<I, boost::mpl::int_<N> >::type.

- + Header
#include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/include/advance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/deref.html b/doc/html/fusion/iterator/metafunctions/deref.html
index c54733ac..b9d5fb17 100644
--- a/doc/html/fusion/iterator/metafunctions/deref.html
+++ b/doc/html/fusion/iterator/metafunctions/deref.html
@@ -3,7 +3,7 @@
 
 deref
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 deref
 
 
- + Description

Returns the type that will be returned by dereferencing an iterator.

- + Synposis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.13. Parameters

+

Table 1.13. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ an iterator of type I.

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/deref_data.html b/doc/html/fusion/iterator/metafunctions/deref_data.html
index 140c292c..93cec830 100644
--- a/doc/html/fusion/iterator/metafunctions/deref_data.html
+++ b/doc/html/fusion/iterator/metafunctions/deref_data.html
@@ -3,7 +3,7 @@
 
 deref_data
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 deref_data
 
 
- + Description

@@ -35,7 +35,7 @@ referenced by an associative iterator.

- + Synposis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.22. Parameters

+

Table 1.22. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ the data property referenced by an associative iterator of type I.

- + Header
#include <boosta/fusion/iterator/deref_data.hpp>
 #include <boost/fusion/include/deref_data.hpp>
 
- + Example
typedef map<pair<float,int> > map;
diff --git a/doc/html/fusion/iterator/metafunctions/distance.html b/doc/html/fusion/iterator/metafunctions/distance.html
index a29d884f..5028c706 100644
--- a/doc/html/fusion/iterator/metafunctions/distance.html
+++ b/doc/html/fusion/iterator/metafunctions/distance.html
@@ -3,7 +3,7 @@
 
 distance
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 distance
 
 
- + Description

Returns the distance between two iterators.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.17. Parameters

+

Table 1.17. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -108,14 +108,14 @@ J.

- + Header
#include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/include/distance.hpp>
 
- + Example
typedef vector<int,double,char> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/equal_to.html b/doc/html/fusion/iterator/metafunctions/equal_to.html
index 3e048154..97de7048 100644
--- a/doc/html/fusion/iterator/metafunctions/equal_to.html
+++ b/doc/html/fusion/iterator/metafunctions/equal_to.html
@@ -3,7 +3,7 @@
 
 equal_to
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 equal_to
 
 
- + Description

@@ -36,7 +36,7 @@ and J are equal.

- + Synopsis
template<
@@ -49,7 +49,7 @@
 };
 
-

Table 1.16. Parameters

+

Table 1.16. Parameters

@@ -93,7 +93,7 @@

- + Expression Semantics
@@ -109,14 +109,14 @@ Returns boost::mpl::false_ otherwise.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/include/equal_to.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/key_of.html b/doc/html/fusion/iterator/metafunctions/key_of.html
index 8e0b6f20..b8ba3bc4 100644
--- a/doc/html/fusion/iterator/metafunctions/key_of.html
+++ b/doc/html/fusion/iterator/metafunctions/key_of.html
@@ -3,7 +3,7 @@
 
 key_of
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 key_of
 
 
- + Description

@@ -35,7 +35,7 @@ iterator.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.20. Parameters

+

Table 1.20. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ with the element referenced by an associative iterator I.

- + Header
#include <boost/fusion/iterator/key_of.hpp>
 #include <boost/fusion/include/key_of.hpp>
 
- + Example
typedef map<pair<float,int> > vec;
diff --git a/doc/html/fusion/iterator/metafunctions/next.html b/doc/html/fusion/iterator/metafunctions/next.html
index 638b9985..b3c98341 100644
--- a/doc/html/fusion/iterator/metafunctions/next.html
+++ b/doc/html/fusion/iterator/metafunctions/next.html
@@ -3,7 +3,7 @@
 
 next
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 next
 
 
- + Description

Returns the type of the next iterator in a sequence.

- + Synposis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.14. Parameters

+

Table 1.14. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ next element in the sequence after I.

- + Header
#include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/include/next.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/prior.html b/doc/html/fusion/iterator/metafunctions/prior.html
index cafb37d7..b6049b1c 100644
--- a/doc/html/fusion/iterator/metafunctions/prior.html
+++ b/doc/html/fusion/iterator/metafunctions/prior.html
@@ -3,7 +3,7 @@
 
 prior
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 prior
 
 
- + Description

Returns the type of the previous iterator in a sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.15. Parameters

+

Table 1.15. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -106,14 +106,14 @@ previous element in the sequence before I.

- + Header
#include <boost/fusion/iterator/prior.hpp>
 #include <boost/fusion/include/prior.hpp>
 
- + Example
typedef vector<int,double> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/value_of.html b/doc/html/fusion/iterator/metafunctions/value_of.html
index e2c2af43..aae431dd 100644
--- a/doc/html/fusion/iterator/metafunctions/value_of.html
+++ b/doc/html/fusion/iterator/metafunctions/value_of.html
@@ -3,7 +3,7 @@
 
 value_of
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 value_of
 
 
- + Description

Returns the type stored at the position of an iterator.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.12. Parameters

+

Table 1.12. Parameters

@@ -91,7 +91,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ a sequence at iterator position I.

- + Header
#include <boost/fusion/iterator/value_of.hpp>
 #include <boost/fusion/include/value_of.hpp>
 
- + Example
typedef vector<int,int&,const int&> vec;
diff --git a/doc/html/fusion/iterator/metafunctions/value_of_data.html b/doc/html/fusion/iterator/metafunctions/value_of_data.html
index d14d922e..19293f68 100644
--- a/doc/html/fusion/iterator/metafunctions/value_of_data.html
+++ b/doc/html/fusion/iterator/metafunctions/value_of_data.html
@@ -3,7 +3,7 @@
 
 value_of_data
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 value_of_data
 
 
- + Description

@@ -35,7 +35,7 @@ by an associative iterator references.

- + Synopsis
template<
@@ -47,7 +47,7 @@
 };
 
-

Table 1.21. Parameters

+

Table 1.21. Parameters

@@ -92,7 +92,7 @@

- + Expression Semantics
@@ -107,14 +107,14 @@ I.

- + Header
#include <boost/fusion/iterator/value_of_data.hpp>
 #include <boost/fusion/include/value_of_data.hpp>
 
- + Example
typedef map<pair<float,int> > vec;
diff --git a/doc/html/fusion/iterator/operator.html b/doc/html/fusion/iterator/operator.html
index 7d3c9fff..87d0fb76 100644
--- a/doc/html/fusion/iterator/operator.html
+++ b/doc/html/fusion/iterator/operator.html
@@ -3,7 +3,7 @@
 
 Operator
 
-
+
 
 
 
diff --git a/doc/html/fusion/iterator/operator/operator_equality.html b/doc/html/fusion/iterator/operator/operator_equality.html
index 2c8b4170..4db3d51c 100644
--- a/doc/html/fusion/iterator/operator/operator_equality.html
+++ b/doc/html/fusion/iterator/operator/operator_equality.html
@@ -3,7 +3,7 @@
 
 Operator ==
 
-
+
 
 
 
@@ -28,14 +28,14 @@
         ==
 
 
- + Description

Compares 2 iterators for equality.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.10. Parameters

+

Table 1.10. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,7 +104,7 @@ and j respectively.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
diff --git a/doc/html/fusion/iterator/operator/operator_inequality.html b/doc/html/fusion/iterator/operator/operator_inequality.html
index bcd7468d..f872a5b6 100644
--- a/doc/html/fusion/iterator/operator/operator_inequality.html
+++ b/doc/html/fusion/iterator/operator/operator_inequality.html
@@ -3,7 +3,7 @@
 
 Operator !=
 
-
+
 
 
 
@@ -28,14 +28,14 @@
         !=
 
 
- + Description

Compares 2 iterators for inequality.

- + Synopsis
template<
@@ -45,7 +45,7 @@
 unspecified operator==(I const& i, J const& i);
 
-

Table 1.11. Parameters

+

Table 1.11. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -102,7 +102,7 @@ and j respectively.

- + Header
#include <boost/fusion/iterator/equal_to.hpp>
diff --git a/doc/html/fusion/iterator/operator/operator_unary_star.html b/doc/html/fusion/iterator/operator/operator_unary_star.html
index c52f4216..aa3ecaa6 100644
--- a/doc/html/fusion/iterator/operator/operator_unary_star.html
+++ b/doc/html/fusion/iterator/operator/operator_unary_star.html
@@ -3,7 +3,7 @@
 
 Operator *
 
-
+
 
 
 
@@ -28,14 +28,14 @@
         *
 
 
- + Description

Dereferences an iterator.

- + Synopsis
template<
@@ -44,7 +44,7 @@
 typename result_of::deref<I>::type operator*(unspecified<I> const& i);
 
-

Table 1.9. Parameters

+

Table 1.9. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ Semantics: Equivalent to deref(i).

- + Header
#include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/include/deref.hpp>
 
- + Example
typedef vector<int,int&> vec;
diff --git a/doc/html/fusion/notes.html b/doc/html/fusion/notes.html
index 494350e5..987e986e 100644
--- a/doc/html/fusion/notes.html
+++ b/doc/html/fusion/notes.html
@@ -3,7 +3,7 @@
 
 Notes
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 Notes
 
 

- + Recursive Inlined Functions

@@ -40,7 +40,7 @@ remains linear.

- + Overloaded Functions

@@ -50,7 +50,7 @@ given a key, k.

- + Tag Dispatching

@@ -101,7 +101,7 @@

- + Extensibility

@@ -136,7 +136,7 @@ it very cheap to pass around.

- + Element Conversion

@@ -158,7 +158,7 @@

Array arguments are deduced to reference to const types. For example - [10] + [10] :

make_list("Donald", "Daisy")
@@ -187,7 +187,7 @@
 
list<void (*)(int)>
 

- + boost::ref

@@ -227,7 +227,7 @@



-

[10] +

[10] Note that the type of a string literal is an array of const characters, not const char*. To get make_list to create a list with an element of a non-const array type one must use the ref diff --git a/doc/html/fusion/organization.html b/doc/html/fusion/organization.html index b4a81b1d..ddeca36d 100644 --- a/doc/html/fusion/organization.html +++ b/doc/html/fusion/organization.html @@ -3,7 +3,7 @@ Organization - + @@ -35,7 +35,7 @@ The library is organized in three layers:

- + Layers

@@ -66,7 +66,7 @@ against.

- + Directory

    @@ -187,7 +187,7 @@

- + Example

@@ -202,12 +202,12 @@

The first includes all containers The second includes only list - [4] + [4] .



-

[4] +

[4] Modules may contain smaller components. Header file information for each component will be provided as part of the component's documentation.

diff --git a/doc/html/fusion/preface.html b/doc/html/fusion/preface.html index 43f7f60e..bc9b3632 100644 --- a/doc/html/fusion/preface.html +++ b/doc/html/fusion/preface.html @@ -3,7 +3,7 @@ Preface - + @@ -45,7 +45,7 @@

- + Description

@@ -63,7 +63,7 @@ of compile time metaprogramming with runtime programming.

- + Motivation

@@ -89,7 +89,7 @@ an instant AHA! moment.

- + How to use this manual

@@ -97,7 +97,7 @@ icons precede some text to indicate:

-

Table 1.1. Icons

+

Table 1.1. Icons

@@ -200,7 +200,7 @@ Tools.

- + Support

diff --git a/doc/html/fusion/quick_start.html b/doc/html/fusion/quick_start.html index 9d2bc6a1..47831753 100644 --- a/doc/html/fusion/quick_start.html +++ b/doc/html/fusion/quick_start.html @@ -3,7 +3,7 @@ Quick Start - + @@ -34,7 +34,7 @@

For starters, we shall include all of Fusion's Sequence(s) - [2] + [2] :

#include <boost/fusion/sequence.hpp>
@@ -42,7 +42,7 @@
 

Let's begin with a vector - [3] + [3] :

vector<int, char, std::string> stuff(1, 'x', "howdy");
@@ -59,7 +59,7 @@
       Let's see some examples.
     

- + Print the vector as XML

@@ -114,7 +114,7 @@ print just about any Fusion Sequence.

- + Print only pointers

@@ -146,7 +146,7 @@ Easy, right?

- + Associative tuples

@@ -218,7 +218,7 @@ a dog or a whole alternate_universe.

- + Tip of the Iceberg

@@ -229,12 +229,12 @@



-

[2] +

[2] There are finer grained header files available if you wish to have more control over which components to include (see section Orgainization for details).

-

[3] +

[3] Unless otherwise noted, components are in namespace boost::fusion. For the sake of simplicity, code in this quick start implies using directives for the fusion components we will be using. diff --git a/doc/html/fusion/references.html b/doc/html/fusion/references.html index 24845fd1..84116491 100644 --- a/doc/html/fusion/references.html +++ b/doc/html/fusion/references.html @@ -3,7 +3,7 @@ References - + diff --git a/doc/html/fusion/sequence.html b/doc/html/fusion/sequence.html index ecac45e7..afd38a15 100644 --- a/doc/html/fusion/sequence.html +++ b/doc/html/fusion/sequence.html @@ -3,7 +3,7 @@ Sequence - + @@ -60,7 +60,7 @@ type that can be used to iterate through the Sequence's elements.

- + Header

#include <boost/fusion/sequence.hpp>
diff --git a/doc/html/fusion/sequence/concepts.html b/doc/html/fusion/sequence/concepts.html
index 82b4d273..349525f7 100644
--- a/doc/html/fusion/sequence/concepts.html
+++ b/doc/html/fusion/sequence/concepts.html
@@ -3,7 +3,7 @@
 
 Concepts
 
-
+
 
 
 
@@ -40,7 +40,7 @@
         Fusion Sequences are organized into a hierarchy of concepts.
       

- + Traversal

@@ -53,7 +53,7 @@ Sequence. These concepts pertain to sequence traversal.

- + Associativity

diff --git a/doc/html/fusion/sequence/concepts/associative_sequence.html b/doc/html/fusion/sequence/concepts/associative_sequence.html index 6c9ca166..c7519961 100644 --- a/doc/html/fusion/sequence/concepts/associative_sequence.html +++ b/doc/html/fusion/sequence/concepts/associative_sequence.html @@ -3,7 +3,7 @@ Associative Sequence - + @@ -28,7 +28,7 @@ Sequence

- + Description

@@ -64,7 +64,7 @@

- + Valid Expressions
@@ -173,7 +173,7 @@
- + Result Type Expressions
@@ -248,7 +248,7 @@

- + Expression Semantics
@@ -303,7 +303,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html index 9a38b700..4a2152c6 100644 --- a/doc/html/fusion/sequence/concepts/bidirectional_sequence.html +++ b/doc/html/fusion/sequence/concepts/bidirectional_sequence.html @@ -3,7 +3,7 @@ Bidirectional Sequence - + @@ -28,7 +28,7 @@ Sequence
- + Description

@@ -37,7 +37,7 @@ Iterator.

- + Refinement of
@@ -66,7 +66,7 @@
- + Valid Expressions
@@ -198,7 +198,7 @@
- + Result Type Expressions
@@ -259,7 +259,7 @@
- + Expression Semantics
@@ -299,7 +299,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/concepts/forward_sequence.html b/doc/html/fusion/sequence/concepts/forward_sequence.html index 64ee321d..5ee362bb 100644 --- a/doc/html/fusion/sequence/concepts/forward_sequence.html +++ b/doc/html/fusion/sequence/concepts/forward_sequence.html @@ -3,7 +3,7 @@ Forward Sequence - + @@ -28,7 +28,7 @@ Sequence
- + Description

@@ -60,7 +60,7 @@

- + Valid Expressions
@@ -235,7 +235,7 @@
- + Result Type Expressions
@@ -320,7 +320,7 @@
- + Expression Semantics
@@ -408,7 +408,7 @@
- + Invariants

@@ -434,7 +434,7 @@

- + Models
    diff --git a/doc/html/fusion/sequence/concepts/random_access_sequence.html b/doc/html/fusion/sequence/concepts/random_access_sequence.html index 2735b06d..9f0cfa78 100644 --- a/doc/html/fusion/sequence/concepts/random_access_sequence.html +++ b/doc/html/fusion/sequence/concepts/random_access_sequence.html @@ -3,7 +3,7 @@ Random Access Sequence - + @@ -28,7 +28,7 @@ Access Sequence
- + Description

@@ -38,7 +38,7 @@ sequence elements.

- + Refinement of
@@ -73,7 +73,7 @@
- + Valid Expressions
@@ -205,7 +205,7 @@
- + Result Type Expressions
@@ -291,7 +291,7 @@

- + Expression Semantics
@@ -331,7 +331,7 @@
- + Models
    diff --git a/doc/html/fusion/sequence/intrinsic.html b/doc/html/fusion/sequence/intrinsic.html index 33d310c2..816fc9b2 100644 --- a/doc/html/fusion/sequence/intrinsic.html +++ b/doc/html/fusion/sequence/intrinsic.html @@ -3,7 +3,7 @@ Intrinsic - + @@ -37,11 +37,11 @@ Intrinsic functions, unlike Algorithms, are not generic across the full Sequence repertoire. They need to be implemented for each Fusion Sequence - [5] + [5] .

    - + Header
    #include <boost/fusion/sequence/intrinsic.hpp>
    @@ -49,7 +49,7 @@
     


    -

    [5] +

    [5] In practice, many of intrinsic functions have default implementations that will work in majority of cases

    diff --git a/doc/html/fusion/sequence/intrinsic/functions.html b/doc/html/fusion/sequence/intrinsic/functions.html index cb1de60c..eeaa90d8 100644 --- a/doc/html/fusion/sequence/intrinsic/functions.html +++ b/doc/html/fusion/sequence/intrinsic/functions.html @@ -3,7 +3,7 @@ Functions - + diff --git a/doc/html/fusion/sequence/intrinsic/functions/at.html b/doc/html/fusion/sequence/intrinsic/functions/at.html index 2e6f9895..8d2e444d 100644 --- a/doc/html/fusion/sequence/intrinsic/functions/at.html +++ b/doc/html/fusion/sequence/intrinsic/functions/at.html @@ -3,7 +3,7 @@ at - + @@ -27,14 +27,14 @@ at
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
template <typename N, typename Sequence>
@@ -46,7 +46,7 @@
 at(Sequence const& seq);
 
- + Parameters
@@ -112,7 +112,7 @@
- + Expression Semantics
@@ -138,14 +138,14 @@
deref(advance<N>(begin(s)))
 
- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_c.html b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
index 3fcb7f6a..23fa7f1f 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/at_c.html
@@ -3,7 +3,7 @@
 
 at_c
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 at_c
 
 
- + Description

Returns the N-th element from the beginning of the sequence.

- + Synopsis
template <int N, typename Sequence>
@@ -46,7 +46,7 @@
 at_c(Sequence const& seq);
 
- + Parameters
@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -138,14 +138,14 @@
deref(advance<N>(begin(s)))
 
- + Header
#include <boost/fusion/sequence/intrinsic/at_c.hpp>
 #include <boost/fusion/include/at_c.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/at_key.html b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
index decbe7c3..24bde4cc 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/at_key.html
@@ -3,7 +3,7 @@
 
 at_key
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 at_key
 
 
- + Description

Returns the element associated with a Key from the sequence.

- + Synopsis
template <typename Key, typename Sequence>
@@ -46,7 +46,7 @@
 at_key(Sequence const& seq);
 
- + Parameters
@@ -111,7 +111,7 @@
- + Expression Semantics
@@ -134,14 +134,14 @@ with Key.

- + Header
#include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/include/at_key.hpp>
 
- + Example
set<int, char, bool> s(1, 'x', true);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/back.html b/doc/html/fusion/sequence/intrinsic/functions/back.html
index 5e02ab00..fc28aa2d 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/back.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/back.html
@@ -3,7 +3,7 @@
 
 back
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 back
 
 
- + Description

Returns the last element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 back(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/back.hpp>
 #include <boost/fusion/include/back.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/begin.html b/doc/html/fusion/sequence/intrinsic/functions/begin.html
index f9ccf211..763f20ca 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/begin.html
@@ -3,7 +3,7 @@
 
 begin
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 begin
 
 
- + Description

Returns an iterator pointing to the first element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 begin(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -126,14 +126,14 @@ to the first element in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/include/begin.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/empty.html b/doc/html/fusion/sequence/intrinsic/functions/empty.html
index ee713d13..a16ed75d 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/empty.html
@@ -3,7 +3,7 @@
 
 empty
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 empty
 
 
- + Description

@@ -36,7 +36,7 @@ the sequence is empty, else, evaluates to false.

- + Synopsis
template <typename Sequence>
@@ -44,7 +44,7 @@
 empty(Sequence const& seq);
 
- + Parameters
@@ -90,7 +90,7 @@
- + Expression Semantics
@@ -104,14 +104,14 @@ to false.

- + Header
#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/include/empty.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/end.html b/doc/html/fusion/sequence/intrinsic/functions/end.html
index f0055b03..24e17231 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/end.html
@@ -3,7 +3,7 @@
 
 end
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 end
 
 
- + Description

Returns an iterator pointing to one element past the end of the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 end(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -126,14 +126,14 @@ to one element past the end of the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/include/end.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/front.html b/doc/html/fusion/sequence/intrinsic/functions/front.html
index a6467a42..716b6267 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/front.html
@@ -3,7 +3,7 @@
 
 front
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 front
 
 
- + Description

Returns the first element in the sequence.

- + Synopsis
template <typename Sequence>
@@ -46,7 +46,7 @@
 front(Sequence const& seq);
 
- + Parameters
@@ -92,7 +92,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/include/front.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/has_key.html b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
index 3e9b9f07..f0ddc89e 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/has_key.html
@@ -3,7 +3,7 @@
 
 has_key
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 has_key
 
 
- + Description

@@ -37,7 +37,7 @@ to false.

- + Synopsis
template <typename Key, typename Sequence>
@@ -45,7 +45,7 @@
 has_key(Sequence const& seq);
 
- + Parameters
@@ -110,7 +110,7 @@
- + Expression Semantics
@@ -124,14 +124,14 @@ associated with Key, else, evaluates to false.

- + Header
#include <boost/fusion/sequence/intrinsic/has_key.hpp>
 #include <boost/fusion/include/has_key.hpp>
 
- + Example
set<int, char, bool> s(1, 'x', true);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/size.html b/doc/html/fusion/sequence/intrinsic/functions/size.html
index 54945730..c4a473e0 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/size.html
@@ -3,7 +3,7 @@
 
 size
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 size
 
 
- + Description

@@ -35,7 +35,7 @@ that evaluates the number of elements in the sequence.

- + Synopsis
template <typename Sequence>
@@ -43,7 +43,7 @@
 size(Sequence const& seq);
 
- + Parameters
@@ -89,7 +89,7 @@
- + Expression Semantics
@@ -103,14 +103,14 @@ in the sequence.

- + Header
#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/include/size.hpp>
 
- + Example
vector<int, int, int> v(1, 2, 3);
diff --git a/doc/html/fusion/sequence/intrinsic/functions/swap.html b/doc/html/fusion/sequence/intrinsic/functions/swap.html
index e0b8e11a..52a9928f 100644
--- a/doc/html/fusion/sequence/intrinsic/functions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/functions/swap.html
@@ -3,7 +3,7 @@
 
 swap
 
-
+
 
 
 
@@ -27,21 +27,21 @@
 swap
 
 
- + Description

Performs an element by element swap of the elements in 2 sequences.

- + Synopsis
template<typename Seq1, typename Seq2>
 void swap(Seq1& seq1, Seq2& seq2);
 
- + Parameters
@@ -87,7 +87,7 @@
- + Expression Semantics
@@ -106,7 +106,7 @@ /sequence/intrinsic/swap.hpp>

- + Example
vector<int, std::string> v1(1, "hello"), v2(2, "world");
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions.html b/doc/html/fusion/sequence/intrinsic/metafunctions.html
index 35b5be17..fa5c74ea 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions.html
@@ -3,7 +3,7 @@
 
 Metafunctions
 
-
+
 
 
 
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
index e93f34e9..4b79843e 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at.html
@@ -3,7 +3,7 @@
 
 at
 
-
+
 
 
 
@@ -27,16 +27,16 @@
 at
 
 
- + Description

Returns the result type of at - [6] + [6] .

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.29. Parameters

+

Table 1.29. Parameters

@@ -113,7 +113,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ using at to access the Nth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
@@ -142,7 +142,7 @@
 


-

[6] +

[6] result_of::at reflects the actual return type of the function at. Sequence(s) typically return references to its elements via the at function. If you want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html index 27311720..903b5dbe 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_c.html @@ -3,7 +3,7 @@ at_c - + @@ -27,16 +27,16 @@ at_c

- + Description

Returns the result type of at_c - [7] + [7] .

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.30. Parameters

+

Table 1.30. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -126,14 +126,14 @@ using at_c to access the Mth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/fusion/include/at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
@@ -141,7 +141,7 @@
 


-

[7] +

[7] result_of::at_c reflects the actual return type of the function at_c. Sequence(s) typically return references to its elements via the at_c function. If you want diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html index 7ae7b6e2..1540a3fa 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/at_key.html @@ -3,7 +3,7 @@ at_key - + @@ -27,16 +27,16 @@ at_key

- + Description

Returns the result type of at_key - [8] + [8] .

- + Synopsis
template<
@@ -48,7 +48,7 @@
 };
 
-

Table 1.34. Parameters

+

Table 1.34. Parameters

@@ -112,7 +112,7 @@

- + Expression Semantics
@@ -128,14 +128,14 @@ Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/at_key.hpp>
 #include <boost/fusion/include/at_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
@@ -143,7 +143,7 @@
 


-

[8] +

[8] result_of::at_key reflects the actual return type of the function at_key. _sequence_s typically return references to its elements via the at_key function. If you diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html index a2e0fd9a..c78f9aa3 100644 --- a/doc/html/fusion/sequence/intrinsic/metafunctions/back.html +++ b/doc/html/fusion/sequence/intrinsic/metafunctions/back.html @@ -3,7 +3,7 @@ back - + @@ -27,14 +27,14 @@ back

- + Description

Returns the result type of back.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.27. Parameters

+

Table 1.27. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -103,14 +103,14 @@ an iterator to the last element in the sequence. Equivalent to result_of::deref<result_of::prior<result_of::end<Seq>::type>::type>::type.

- + Header
#include <boost/fusion/sequence/intrinsic/back.hpp>
 #include <boost/fusion/include/back.hpp>
 
- + Example
typedef vector<int,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
index e8a35d28..ec2f0b51 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/begin.html
@@ -3,7 +3,7 @@
 
 begin
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 begin
 
 
- + Description

Returns the result type of begin.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.23. Parameters

+

Table 1.23. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -123,14 +123,14 @@ to the first element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/include/begin.hpp>
 
- + Example
typedef vector<int> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
index 5dee4743..3699b419 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/empty.html
@@ -3,7 +3,7 @@
 
 empty
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 empty
 
 
- + Description

Returns the result type of empty.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.25. Parameters

+

Table 1.25. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -105,14 +105,14 @@ mpl::false_ otherwise.

- + Header
#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/include/empty.hpp>
 
- + Example
typedef vector<> empty_vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
index 5ba2ef53..8942cbc6 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/end.html
@@ -3,7 +3,7 @@
 
 end
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 end
 
 
- + Description

Returns the result type of end.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.24. Parameters

+

Table 1.24. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -123,14 +123,14 @@ one past the end of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/include/end.hpp>
 
- + Example
typedef vector<int> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
index 0428314e..1f907f12 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/front.html
@@ -3,7 +3,7 @@
 
 front
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 front
 
 
- + Description

Returns the result type of front.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.26. Parameters

+

Table 1.26. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,14 +104,14 @@ Equivalent to result_of::deref<result_of::begin<Seq>::type>::type.

- + Header
#include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/include/front.hpp>
 
- + Example
typedef vector<int,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
index cdf59b02..a45e7b9c 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/has_key.html
@@ -3,7 +3,7 @@
 
 has_key
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 has_key
 
 
- + Description

Returns the result type of has_key.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.33. Parameters

+

Table 1.33. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -127,14 +127,14 @@ mpl::false_ otherwise.

- + Header
#include <boost/fusion/sequence/intrinsic/has_key.hpp>
 #include <boost/fusion/include/has_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
index 62577c2c..9c2b2561 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/size.html
@@ -3,7 +3,7 @@
 
 size
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 size
 
 
- + Description

Returns the result type of size.

- + Synopsis
template<typename Seq>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.28. Parameters

+

Table 1.28. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -104,14 +104,14 @@ in Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/include/size.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
index 1bb080df..bbe8c5bd 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/swap.html
@@ -3,7 +3,7 @@
 
 swap
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 swap
 
 
- + Description

Returns the return type of swap.

- + Synopsis
template<typename Seq1, typename Seq2>
@@ -44,7 +44,7 @@
 };
 
-

Table 1.36. Parameters

+

Table 1.36. Parameters

@@ -89,7 +89,7 @@

- + Expression Semantics
@@ -102,7 +102,7 @@ Semantics: Always returns void.

- + Header
#include <boost/fusion/sequence/intrinsic/swap.hpp>
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
index 761a47ac..e6f7a38a 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at.html
@@ -3,7 +3,7 @@
 
 value_at
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 value_at
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.31. Parameters

+

Table 1.31. Parameters

@@ -111,7 +111,7 @@

- + Expression Semantics
@@ -125,14 +125,14 @@ the Nth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
 #include <boost/fusion/include/value_at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
index ba075a1f..fc820f74 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_c.html
@@ -3,7 +3,7 @@
 
 value_at_c
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 value_at_c
 
 
- + Description

Returns the actual type at a given index from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.32. Parameters

+

Table 1.32. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -124,14 +124,14 @@ the Mth element of Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
 #include <boost/fusion/include/value_at.hpp>
 
- + Example
typedef vector<int,float,char> vec;
diff --git a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
index 97f0adb5..e1be2e7b 100644
--- a/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
+++ b/doc/html/fusion/sequence/intrinsic/metafunctions/value_at_key.html
@@ -3,7 +3,7 @@
 
 value_at_key
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 value_at_key
 
 
- + Description

Returns the actual element type associated with a Key from the Sequence.

- + Synopsis
template<
@@ -46,7 +46,7 @@
 };
 
-

Table 1.35. Parameters

+

Table 1.35. Parameters

@@ -110,7 +110,7 @@

- + Expression Semantics
@@ -125,14 +125,14 @@ in Seq.

- + Header
#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
 #include <boost/fusion/include/value_at_key.hpp>
 
- + Example
typedef map<pair<int, char>, pair<char, char>, pair<double, char> > mymap;
diff --git a/doc/html/fusion/sequence/operator.html b/doc/html/fusion/sequence/operator.html
index be7e0c01..2b1e2854 100644
--- a/doc/html/fusion/sequence/operator.html
+++ b/doc/html/fusion/sequence/operator.html
@@ -3,7 +3,7 @@
 
 Operator
 
-
+
 
 
 
diff --git a/doc/html/fusion/sequence/operator/comparison.html b/doc/html/fusion/sequence/operator/comparison.html
index 6306aab6..7653360a 100644
--- a/doc/html/fusion/sequence/operator/comparison.html
+++ b/doc/html/fusion/sequence/operator/comparison.html
@@ -3,7 +3,7 @@
 
 Comparison
 
-
+
 
 
 
@@ -49,7 +49,7 @@
           only until the result is clear.
         

- + Header
#include <boost/fusion/sequence/comparison.hpp>
diff --git a/doc/html/fusion/sequence/operator/comparison/equal.html b/doc/html/fusion/sequence/operator/comparison/equal.html
index 8e3f9757..8dacf70c 100644
--- a/doc/html/fusion/sequence/operator/comparison/equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/equal.html
@@ -3,7 +3,7 @@
 
 equal
 
-
+
 
 
 
@@ -27,14 +27,14 @@
 equal
 
 
- + Description

Compare two sequences for equality.

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -42,7 +42,7 @@
 operator==(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -88,7 +88,7 @@
- + Expression Semantics
@@ -123,14 +123,14 @@ true.

- + Header
#include <boost/fusion/sequence/comparison/equal_to.hpp>
 #include <boost/fusion/include/equal_to.hpp>
 
- + Example
vector<int, char> v1(5, 'a');
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than.html b/doc/html/fusion/sequence/operator/comparison/greater_than.html
index 7197b642..03264f31 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than.html
+++ b/doc/html/fusion/sequence/operator/comparison/greater_than.html
@@ -3,7 +3,7 @@
 
 greater than
 
-
+
 
 
 
@@ -31,7 +31,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator>(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns b < a.

- + Header
#include <boost/fusion/sequence/comparison/less_equal.hpp>
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
index 17f5979d..534a12d7 100644
--- a/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/greater_than_equal.html
@@ -3,7 +3,7 @@
 
 greater than equal
 
-
+
 
 
 
@@ -31,7 +31,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator>=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns !(a < b).

- + Header
#include <boost/fusion/sequence/comparison/greater_equal.hpp>
 #include <boost/fusion/include/greater_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than.html b/doc/html/fusion/sequence/operator/comparison/less_than.html
index e0eb2c1c..9a420591 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than.html
+++ b/doc/html/fusion/sequence/operator/comparison/less_than.html
@@ -3,7 +3,7 @@
 
 less than
 
-
+
 
 
 
@@ -31,7 +31,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator<(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -114,14 +114,14 @@ and b.

- + Header
#include <boost/fusion/sequence/comparison/less.hpp>
 #include <boost/fusion/include/less.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
index b2c03472..7ba2e708 100644
--- a/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/less_than_equal.html
@@ -3,7 +3,7 @@
 
 less than equal
 
-
+
 
 
 
@@ -31,7 +31,7 @@
             Lexicographically compare two sequences.
           

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator<=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -112,14 +112,14 @@ Semantics: Returns !(b < a).

- + Header
#include <boost/fusion/sequence/comparison/less_equal.hpp>
 #include <boost/fusion/include/less_equal.hpp>
 
- + Example
vector<int, float> v1(4, 3.3f);
diff --git a/doc/html/fusion/sequence/operator/comparison/not_equal.html b/doc/html/fusion/sequence/operator/comparison/not_equal.html
index 70072299..18a46e03 100644
--- a/doc/html/fusion/sequence/operator/comparison/not_equal.html
+++ b/doc/html/fusion/sequence/operator/comparison/not_equal.html
@@ -3,7 +3,7 @@
 
 not equal
 
-
+
 
 
 
@@ -31,7 +31,7 @@
             Compare two sequences for inequality.
           

- + Synopsis
template <typename Seq1, typename Seq2>
@@ -39,7 +39,7 @@
 operator!=(Seq1 const& a, Seq2 const& b);
 
- + Parameters
@@ -85,7 +85,7 @@
- + Expression Semantics
@@ -115,14 +115,14 @@ Returns !(a == b).

- + Header
#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
 #include <boost/fusion/include/not_equal_to.hpp>
 
- + Example
vector<int, char> v3(5, 'b');
diff --git a/doc/html/fusion/sequence/operator/i_o.html b/doc/html/fusion/sequence/operator/i_o.html
index 2b1d4cc2..94d651f8 100644
--- a/doc/html/fusion/sequence/operator/i_o.html
+++ b/doc/html/fusion/sequence/operator/i_o.html
@@ -3,7 +3,7 @@
 
 I/O
 
-
+
 
 
 
@@ -113,7 +113,7 @@
           representation may not be unambiguously parseable.
         

- + Header
#include <boost/fusion/sequence/io.hpp>
diff --git a/doc/html/fusion/sequence/operator/i_o/in.html b/doc/html/fusion/sequence/operator/i_o/in.html
index 51030266..63111870 100644
--- a/doc/html/fusion/sequence/operator/i_o/in.html
+++ b/doc/html/fusion/sequence/operator/i_o/in.html
@@ -3,7 +3,7 @@
 
 in
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 in
 
 
- + Description

@@ -35,7 +35,7 @@ stream.

- + Synopsis
template <typename IStream, typename Sequence>
@@ -43,7 +43,7 @@
 operator>>(IStream& is, Sequence& seq);
 
- + Parameters
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ e.

- + Header
#include <boost/fusion/sequence/io/in.hpp>
 #include <boost/fusion/include/in.hpp>
 
- + Example
vector<int, std::string, char> v;
diff --git a/doc/html/fusion/sequence/operator/i_o/out.html b/doc/html/fusion/sequence/operator/i_o/out.html
index 224061f5..3ad6a50e 100644
--- a/doc/html/fusion/sequence/operator/i_o/out.html
+++ b/doc/html/fusion/sequence/operator/i_o/out.html
@@ -3,7 +3,7 @@
 
 out
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 out
 
 
- + Description

@@ -35,7 +35,7 @@ stream.

- + Synopsis
template <typename OStream, typename Sequence>
@@ -43,7 +43,7 @@
 operator<<(OStream& os, Sequence& seq);
 
- + Parameters
@@ -107,7 +107,7 @@
- + Expression Semantics
@@ -122,14 +122,14 @@ e.

- + Header
#include <boost/fusion/sequence/io/out.hpp>
 #include <boost/fusion/include/out.hpp>
 
- + Example
std::cout << make_vector(123, "Hello", 'x') << std::endl;
diff --git a/doc/html/fusion/support.html b/doc/html/fusion/support.html
index 6949af9b..50e09866 100644
--- a/doc/html/fusion/support.html
+++ b/doc/html/fusion/support.html
@@ -3,7 +3,7 @@
 
 Support
 
-
+
 
 
 
diff --git a/doc/html/fusion/support/category_of.html b/doc/html/fusion/support/category_of.html
index 175af66a..53764c9f 100644
--- a/doc/html/fusion/support/category_of.html
+++ b/doc/html/fusion/support/category_of.html
@@ -3,7 +3,7 @@
 
 category_of
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 category_of
 
 
- + Description

@@ -37,7 +37,7 @@ Sequence Concepts).

- + Synopsis
namespace traits
@@ -50,7 +50,7 @@
 }
 
- + Parameters
@@ -95,7 +95,7 @@
- + Expression Semantics
@@ -137,14 +137,14 @@ of a particular Sequence or Iterator.

- + Header
#include <boost/fusion/support/category_of.hpp>
 #include <boost/fusion/include/category_of.hpp>
 
- + Example
using boost::is_base_of;
diff --git a/doc/html/fusion/support/deduce.html b/doc/html/fusion/support/deduce.html
index ac7fdeba..cc3d826e 100644
--- a/doc/html/fusion/support/deduce.html
+++ b/doc/html/fusion/support/deduce.html
@@ -3,7 +3,7 @@
 
 deduce
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 deduce
 
 
- + Description

@@ -40,14 +40,14 @@ Reference wrappers are removed (see boost::ref).

- + Header
#include <boost/fusion/support/deduce.hpp>
 #include <boost/fusion/include/deduce.hpp>
 
- + Synopsis
namespace traits
@@ -60,7 +60,7 @@
 }
 
- + Example
template <typename T>
@@ -80,7 +80,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/support/deduce_sequence.html b/doc/html/fusion/support/deduce_sequence.html index d8c12462..192298d9 100644 --- a/doc/html/fusion/support/deduce_sequence.html +++ b/doc/html/fusion/support/deduce_sequence.html @@ -3,7 +3,7 @@ deduce_sequence - + @@ -27,7 +27,7 @@ deduce_sequence
- + Description

@@ -38,14 +38,14 @@ original type as its argument.

- + Header
#include <boost/fusion/support/deduce_sequence.hpp>
 #include <boost/fusion/include/deduce_sequence.hpp>
 
- + Synopsis
namespace traits
@@ -58,7 +58,7 @@
 }
 
- + Example
template <class Seq>
@@ -80,7 +80,7 @@
 }
 
- + See also
diff --git a/doc/html/fusion/support/is_sequence.html b/doc/html/fusion/support/is_sequence.html index a03532ee..9bfd50e4 100644 --- a/doc/html/fusion/support/is_sequence.html +++ b/doc/html/fusion/support/is_sequence.html @@ -3,7 +3,7 @@ is_sequence - + @@ -27,7 +27,7 @@ is_sequence
- + Description

@@ -38,7 +38,7 @@ conforming sequences.

- + Synopsis
namespace traits
@@ -51,7 +51,7 @@
 }
 
- + Parameters
@@ -96,7 +96,7 @@
- + Expression Semantics
@@ -113,14 +113,14 @@ otherwise.

- + Header
#include <boost/fusion/support/is_sequence.hpp>
 #include <boost/fusion/include/is_sequence.hpp>
 
- + Example
BOOST_MPL_ASSERT_NOT(( traits::is_sequence< std::vector<int> > ));
diff --git a/doc/html/fusion/support/is_view.html b/doc/html/fusion/support/is_view.html
index 1a05d34c..403c168d 100644
--- a/doc/html/fusion/support/is_view.html
+++ b/doc/html/fusion/support/is_view.html
@@ -3,7 +3,7 @@
 
 is_view
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 is_view
 
 
- + Description

@@ -41,7 +41,7 @@ specialized to accomodate clients providing Fusion conforming views.

- + Synopsis
namespace traits
@@ -54,7 +54,7 @@
 }
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
typedef traits::is_view<T>::type c;
@@ -115,14 +115,14 @@
         otherwise.
       

- + Header
#include <boost/fusion/support/is_view.hpp>
 #include <boost/fusion/include/is_view.hpp>
 
- + Example
BOOST_MPL_ASSERT_NOT(( traits::is_view<std::vector<int> > ));
diff --git a/doc/html/fusion/support/pair.html b/doc/html/fusion/support/pair.html
index e04e0199..337e226e 100644
--- a/doc/html/fusion/support/pair.html
+++ b/doc/html/fusion/support/pair.html
@@ -3,7 +3,7 @@
 
 pair
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 pair
 
 
- + Description

@@ -37,7 +37,7 @@ the first type does not have data. It is used as elements in maps, for example.

- + Synopsis
template <typename First, typename Second>
@@ -60,7 +60,7 @@
 make_pair(Second const &);
 
- + Template parameters
@@ -139,7 +139,7 @@
- + Expression Semantics
@@ -319,14 +319,14 @@
- + Header
#include <boost/fusion/support/pair.hpp>
 #include <boost/fusion/include/pair.hpp>
 
- + Example
pair<int, char> p('X');
diff --git a/doc/html/fusion/support/tag_of.html b/doc/html/fusion/support/tag_of.html
index bb1667e1..4b66a533 100644
--- a/doc/html/fusion/support/tag_of.html
+++ b/doc/html/fusion/support/tag_of.html
@@ -3,7 +3,7 @@
 
 tag_of
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 tag_of
 
 
- + Description

@@ -41,7 +41,7 @@ conforming sequences.

- + Synopsis
namespace traits
@@ -54,7 +54,7 @@
 }
 
- + Parameters
@@ -99,7 +99,7 @@
- + Expression Semantics
typedef traits::tag_of<T>::type tag;
@@ -112,14 +112,14 @@
         with T.
       

- + Header
#include <boost/fusion/support/tag_of.hpp>
 #include <boost/fusion/include/tag_of.hpp>
 
- + Example
typedef traits::tag_of<list<> >::type tag1;
diff --git a/doc/html/fusion/tuple.html b/doc/html/fusion/tuple.html
index 2858e0c6..449f10c7 100644
--- a/doc/html/fusion/tuple.html
+++ b/doc/html/fusion/tuple.html
@@ -3,7 +3,7 @@
 
 Tuple
 
-
+
 
 
 
diff --git a/doc/html/fusion/tuple/class_template_tuple.html b/doc/html/fusion/tuple/class_template_tuple.html
index 4ede42f6..31ebd973 100644
--- a/doc/html/fusion/tuple/class_template_tuple.html
+++ b/doc/html/fusion/tuple/class_template_tuple.html
@@ -3,7 +3,7 @@
 
 Class template tuple
 
-
+
 
 
 
@@ -48,7 +48,7 @@
         in future releases of fusion.
       

- + Synopsis
template<
diff --git a/doc/html/fusion/tuple/class_template_tuple/construction.html b/doc/html/fusion/tuple/class_template_tuple/construction.html
index 0ad6dbcb..cedc6369 100644
--- a/doc/html/fusion/tuple/class_template_tuple/construction.html
+++ b/doc/html/fusion/tuple/class_template_tuple/construction.html
@@ -3,7 +3,7 @@
 
 Construction
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 Construction
 
 
- + Description

@@ -38,7 +38,7 @@ in this section.

- + Specification
diff --git a/doc/html/fusion/tuple/class_template_tuple/element_access.html b/doc/html/fusion/tuple/class_template_tuple/element_access.html index ae472e17..e49c5806 100644 --- a/doc/html/fusion/tuple/class_template_tuple/element_access.html +++ b/doc/html/fusion/tuple/class_template_tuple/element_access.html @@ -3,7 +3,7 @@ Element access - + @@ -28,7 +28,7 @@ access
- + Description

@@ -37,7 +37,7 @@ function to provide access to it's elements by zero based numeric index.

- + Specification
template<int I, T>
diff --git a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
index c3972485..52edea81 100644
--- a/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
+++ b/doc/html/fusion/tuple/class_template_tuple/relational_operators.html
@@ -3,7 +3,7 @@
 
 Relational operators
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         operators
 
 
- + Description

@@ -36,7 +36,7 @@ Tuple provides the standard boolean relational operators.

- + Specification
diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html index c376b80d..e76ae7b3 100644 --- a/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html +++ b/doc/html/fusion/tuple/class_template_tuple/tuple_creation_functions.html @@ -3,7 +3,7 @@ Tuple creation functions - + @@ -28,7 +28,7 @@ creation functions
- + Description

@@ -38,7 +38,7 @@ functions are described in this section.

- + Specification
template<typename T1, typename T2, ..., typename TN>
diff --git a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
index af861b00..3508cf5f 100644
--- a/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
+++ b/doc/html/fusion/tuple/class_template_tuple/tuple_helper_classes.html
@@ -3,7 +3,7 @@
 
 Tuple helper classes
 
-
+
 
 
 
@@ -28,7 +28,7 @@
         helper classes
 
 
- + Description

@@ -37,7 +37,7 @@ tuple size, and the element types.

- + Specification
tuple_size<T>::value
diff --git a/doc/html/fusion/tuple/pairs.html b/doc/html/fusion/tuple/pairs.html
index 63f9ad31..a334a273 100644
--- a/doc/html/fusion/tuple/pairs.html
+++ b/doc/html/fusion/tuple/pairs.html
@@ -3,7 +3,7 @@
 
 Pairs
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 Pairs
 
 
- + Description

@@ -36,7 +36,7 @@ as if it were a 2 element tuple.

- + Specification
tuple_size<std::pair<T1, T2> >::value
diff --git a/doc/html/fusion/view.html b/doc/html/fusion/view.html
index 157d61d7..66ce1022 100644
--- a/doc/html/fusion/view.html
+++ b/doc/html/fusion/view.html
@@ -3,7 +3,7 @@
 
 View
 
-
+
 
 
 
@@ -46,7 +46,7 @@
       to copy and be passed around by value.
     

- + Header

#include <boost/fusion/view.hpp>
diff --git a/doc/html/fusion/view/filter_view.html b/doc/html/fusion/view/filter_view.html
index a9ffa089..02fe8d2f 100644
--- a/doc/html/fusion/view/filter_view.html
+++ b/doc/html/fusion/view/filter_view.html
@@ -3,7 +3,7 @@
 
 filter_view
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 filter_view
 
 
- + Description

@@ -38,21 +38,21 @@ only those elements for which its predicate evaluates to mpl::true_.

- + Header
#include <boost/fusion/view/filter_view.hpp>
 #include <boost/fusion/include/filter_view.hpp>
 
- + Synopsis
template <typename Sequence, typename Pred>
 struct filter_view;
 
- + Template parameters
@@ -115,7 +115,7 @@
- + Model of
    @@ -146,7 +146,7 @@
- + Expression Semantics

@@ -216,7 +216,7 @@

- + Example
using boost::mpl::_;
diff --git a/doc/html/fusion/view/iterator_range.html b/doc/html/fusion/view/iterator_range.html
index dca63711..2a4655a7 100644
--- a/doc/html/fusion/view/iterator_range.html
+++ b/doc/html/fusion/view/iterator_range.html
@@ -3,7 +3,7 @@
 
 iterator_range
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 iterator_range
 
 
- + Description

@@ -35,21 +35,21 @@ sub-range of its underlying sequence delimited by a pair of iterators.

- + Header
#include <boost/fusion/view/iterator_range.hpp>
 #include <boost/fusion/include/iterator_range.hpp>
 
- + Synopsis
template <typename First, typename Last>
 struct iterator_range;
 
- + Template parameters
@@ -111,7 +111,7 @@
- + Model of
    @@ -154,7 +154,7 @@
- + Expression Semantics
@@ -227,7 +227,7 @@
- + Example
char const* s = "Ruby";
diff --git a/doc/html/fusion/view/joint_view.html b/doc/html/fusion/view/joint_view.html
index ec578a7b..61b4ffad 100644
--- a/doc/html/fusion/view/joint_view.html
+++ b/doc/html/fusion/view/joint_view.html
@@ -3,7 +3,7 @@
 
 joint_view
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 joint_view
 
 
- + Description

@@ -35,21 +35,21 @@ which is a concatenation of two sequences.

- + Header
#include <boost/fusion/view/joint_view.hpp>
 #include <boost/fusion/include/joint_view.hpp>
 
- + Synopsis
template <typename Sequence1, typename Sequence2>
 struct joint_view;
 
- + Template parameters
@@ -113,7 +113,7 @@
- + Model of
    @@ -149,7 +149,7 @@
- + Expression Semantics

@@ -220,7 +220,7 @@

- + Example
vector<int, char> v1(3, 'x');
diff --git a/doc/html/fusion/view/nview.html b/doc/html/fusion/view/nview.html
index 85b9ec53..34d3a756 100644
--- a/doc/html/fusion/view/nview.html
+++ b/doc/html/fusion/view/nview.html
@@ -3,7 +3,7 @@
 
 nview
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 nview
 
 
- + Description

@@ -38,14 +38,14 @@ and a list of indicies specifying the elements to iterate over.

- + Header
#include <boost/fusion/view/nview.hpp>
 #include <boost/fusion/include/nview.hpp>
 
- + Synopsis
template <typename Sequence, typename Indicies>
@@ -56,7 +56,7 @@
 as_nview(Sequence& s);
 
- + Template parameters
@@ -137,7 +137,7 @@
- + Model of
  • @@ -164,7 +164,7 @@
- + Expression Semantics

@@ -240,7 +240,7 @@ of references to the elements of the original Fusion Sequence

- + Example
typedef vector<int, char, double> vec;
diff --git a/doc/html/fusion/view/reverse_view.html b/doc/html/fusion/view/reverse_view.html
index 095f4a9c..2de97b97 100644
--- a/doc/html/fusion/view/reverse_view.html
+++ b/doc/html/fusion/view/reverse_view.html
@@ -3,7 +3,7 @@
 
 reverse_view
 
-
+
 
 
 
@@ -32,21 +32,21 @@
         element will be its first.
       

- + Header
#include <boost/fusion/view/reverse_view.hpp>
 #include <boost/fusion/include/reverse_view.hpp>
 
- + Synopsis
template <typename Sequence>
 struct reverse_view;
 
- + Template parameters
@@ -91,7 +91,7 @@
- + Model of
    @@ -130,7 +130,7 @@
- + Expression Semantics
@@ -201,7 +201,7 @@
- + Example
typedef vector<int, short, double> vector_type;
diff --git a/doc/html/fusion/view/single_view.html b/doc/html/fusion/view/single_view.html
index 278f5e63..95be6aec 100644
--- a/doc/html/fusion/view/single_view.html
+++ b/doc/html/fusion/view/single_view.html
@@ -3,7 +3,7 @@
 
 single_view
 
-
+
 
 
 
@@ -31,21 +31,21 @@
         a value as a single element sequence.
       

- + Header
#include <boost/fusion/view/single_view.hpp>
 #include <boost/fusion/include/single_view.hpp>
 
- + Synopsis
template <typename T>
 struct single_view;
 
- + Template parameters
@@ -89,7 +89,7 @@
- + Model of
@@ -112,7 +112,7 @@
- + Expression Semantics

@@ -183,7 +183,7 @@

- + Example
single_view<int> view(3);
diff --git a/doc/html/fusion/view/transform_view.html b/doc/html/fusion/view/transform_view.html
index 6b51608b..f4f3c629 100644
--- a/doc/html/fusion/view/transform_view.html
+++ b/doc/html/fusion/view/transform_view.html
@@ -3,7 +3,7 @@
 
 transform_view
 
-
+
 
 
 
@@ -36,14 +36,14 @@
         Traversal Concept) of its underlying sequence or sequences.
       

- + Header
#include <boost/fusion/view/transform_view.hpp>
 #include <boost/fusion/include/transform_view.hpp>
 
- + Synopsis

@@ -59,7 +59,7 @@ struct transform_view;

- + Template parameters
@@ -178,7 +178,7 @@
- + Model of
  • @@ -234,7 +234,7 @@
- + Expression Semantics
@@ -326,7 +326,7 @@
- + Example
struct square
diff --git a/doc/html/fusion/view/zip_view.html b/doc/html/fusion/view/zip_view.html
index 1c275ea5..4bdefd42 100644
--- a/doc/html/fusion/view/zip_view.html
+++ b/doc/html/fusion/view/zip_view.html
@@ -3,7 +3,7 @@
 
 zip_view
 
-
+
 
 
 
@@ -27,7 +27,7 @@
 zip_view
 
 
- + Description

@@ -38,21 +38,21 @@ to the component _sequence_s.

- + Header
#include <boost/fusion/view/zip_view.hpp>
 #include <boost/fusion/include/zip_view.hpp>
 
- + Synopsis
template <typename Sequences>
 struct zip_view;
 
- + Template parameters
@@ -97,7 +97,7 @@
- + Model of
  • @@ -127,7 +127,7 @@
- + Expression Semantics

@@ -198,7 +198,7 @@

- + Example
typedef vector<int,int> vec1;
diff --git a/doc/html/index.html b/doc/html/index.html
index a5c02b3f..f66bcce2 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -3,7 +3,7 @@
 
 Chapter 1. Fusion 2.0
 
-
+
 
 
 
@@ -34,7 +34,7 @@
 
-

+

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)

@@ -164,6 +164,7 @@
boost::array
boost::tuple
BOOST_FUSION_ADAPT_STRUCT
+
BOOST_FUSION_ADAPT_STRUCT_NAMED
BOOST_FUSION_ADAPT_ASSOC_STRUCT
Algorithm
@@ -247,7 +248,7 @@
- +

Last revised: December 29, 2009 at 18:24:22 GMT

Last revised: January 29, 2010 at 02:17:31 GMT


diff --git a/include/boost/fusion/adapted.hpp b/include/boost/fusion/adapted.hpp index c343405c..0dd1f0e7 100644 --- a/include/boost/fusion/adapted.hpp +++ b/include/boost/fusion/adapted.hpp @@ -13,5 +13,6 @@ #include #include #include +#include #endif diff --git a/include/boost/fusion/adapted/array.hpp b/include/boost/fusion/adapted/array.hpp index 2be9d4ba..cb828090 100644 --- a/include/boost/fusion/adapted/array.hpp +++ b/include/boost/fusion/adapted/array.hpp @@ -1,6 +1,7 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt 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) @@ -8,15 +9,19 @@ #if !defined(BOOST_FUSION_ARRAY_27122005_1035) #define BOOST_FUSION_ARRAY_27122005_1035 -#include +//For backwards compatibility +#include + #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/array/at_impl.hpp b/include/boost/fusion/adapted/array/at_impl.hpp new file mode 100644 index 00000000..12f03726 --- /dev/null +++ b/include/boost/fusion/adapted/array/at_impl.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct at_impl; + + template<> + struct at_impl + { + template + struct apply + { + typedef typename + add_reference::type>::type + type; + + static type + call(Seq& seq) + { + return seq[N::value]; + } + }; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/begin_impl.hpp b/include/boost/fusion/adapted/array/begin_impl.hpp new file mode 100644 index 00000000..2ee4d707 --- /dev/null +++ b/include/boost/fusion/adapted/array/begin_impl.hpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef + basic_iterator< + po_array_iterator_tag + , random_access_traversal_tag + , Seq + , 0 + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/category_of_impl.hpp b/include/boost/fusion/adapted/array/category_of_impl.hpp new file mode 100644 index 00000000..0a633a45 --- /dev/null +++ b/include/boost/fusion/adapted/array/category_of_impl.hpp @@ -0,0 +1,32 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_CATEGORY_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_CATEGORY_OF_IMPL_HPP + +namespace boost { namespace fusion +{ + struct random_access_traversal_tag; + + namespace extension + { + template + struct category_of_impl; + + template<> + struct category_of_impl + { + template + struct apply + { + typedef random_access_traversal_tag type; + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/array/deref_impl.hpp b/include/boost/fusion/adapted/array/deref_impl.hpp new file mode 100644 index 00000000..a58cf990 --- /dev/null +++ b/include/boost/fusion/adapted/array/deref_impl.hpp @@ -0,0 +1,40 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename + add_reference< + typename remove_extent::type + >::type + type; + + static type + call(It const& it) + { + return (*it.seq)[It::index::value]; + } + }; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/end_impl.hpp b/include/boost/fusion/adapted/array/end_impl.hpp new file mode 100644 index 00000000..5b367f9c --- /dev/null +++ b/include/boost/fusion/adapted/array/end_impl.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP + +#include +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef + basic_iterator< + po_array_iterator_tag + , random_access_traversal_tag + , Seq + , extent::value-1>::value + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/is_sequence_impl.hpp b/include/boost/fusion/adapted/array/is_sequence_impl.hpp new file mode 100644 index 00000000..d6de8585 --- /dev/null +++ b/include/boost/fusion/adapted/array/is_sequence_impl.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct is_sequence_impl; + + template<> + struct is_sequence_impl + { + template + struct apply + : mpl::true_ + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/is_view_impl.hpp b/include/boost/fusion/adapted/array/is_view_impl.hpp new file mode 100644 index 00000000..238eac0e --- /dev/null +++ b/include/boost/fusion/adapted/array/is_view_impl.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct is_view_impl; + + template<> + struct is_view_impl + { + template + struct apply + : mpl::false_ + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/size_impl.hpp b/include/boost/fusion/adapted/array/size_impl.hpp new file mode 100644 index 00000000..8be5a29d --- /dev/null +++ b/include/boost/fusion/adapted/array/size_impl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct size_impl; + + template<> + struct size_impl + { + template + struct apply + : extent::value-1> + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/tag_of.hpp b/include/boost/fusion/adapted/array/tag_of.hpp index 67a4f116..7c732a70 100644 --- a/include/boost/fusion/adapted/array/tag_of.hpp +++ b/include/boost/fusion/adapted/array/tag_of.hpp @@ -1,58 +1,72 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) -#define FUSION_SEQUENCE_TAG_OF_27122005_1030 + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP #include - #include -namespace boost -{ - template - class array; -} - -namespace boost { namespace fusion +namespace boost { - struct array_tag; - struct fusion_sequence_tag; - - namespace traits + namespace fusion { - template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - struct tag_of, void > -#else - struct tag_of > -#endif + struct po_array_tag; + struct po_array_iterator_tag; + struct random_access_traversal_tag; + struct fusion_sequence_tag; + + namespace traits { - typedef array_tag type; +#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS + template + struct tag_of + { + typedef po_array_tag type; + }; + + template + struct tag_of + { + typedef po_array_tag type; + }; +#else + template + struct tag_of + { + typedef po_array_tag type; + }; + + template + struct tag_of + { + typedef po_array_tag type; + }; +#endif + } + } + + namespace mpl + { + template + struct sequence_tag; + + template + struct sequence_tag + { + typedef fusion::po_array_tag type; + }; + + template + struct sequence_tag + { + typedef fusion::po_array_tag type; }; } -}} - -namespace boost { namespace mpl -{ - template - struct sequence_tag; - - template - struct sequence_tag > - { - typedef fusion::fusion_sequence_tag type; - }; - - template - struct sequence_tag const> - { - typedef fusion::fusion_sequence_tag type; - }; -}} +} #endif diff --git a/include/boost/fusion/adapted/array/value_at_impl.hpp b/include/boost/fusion/adapted/array/value_at_impl.hpp new file mode 100644 index 00000000..4e04c37a --- /dev/null +++ b/include/boost/fusion/adapted/array/value_at_impl.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + : remove_extent + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/array/value_of_impl.hpp b/include/boost/fusion/adapted/array/value_of_impl.hpp new file mode 100644 index 00000000..2bbddf23 --- /dev/null +++ b/include/boost/fusion/adapted/array/value_of_impl.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + : remove_extent + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/boost_array.hpp b/include/boost/fusion/adapted/boost_array.hpp new file mode 100644 index 00000000..835135b9 --- /dev/null +++ b/include/boost/fusion/adapted/boost_array.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_BOOST_ARRAY_27122005_1035) +#define BOOST_FUSION_BOOST_ARRAY_27122005_1035 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/include/boost/fusion/adapted/array/array_iterator.hpp b/include/boost/fusion/adapted/boost_array/array_iterator.hpp similarity index 100% rename from include/boost/fusion/adapted/array/array_iterator.hpp rename to include/boost/fusion/adapted/boost_array/array_iterator.hpp diff --git a/include/boost/fusion/adapted/array/detail/at_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/at_impl.hpp similarity index 94% rename from include/boost/fusion/adapted/array/detail/at_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/at_impl.hpp index 3c427059..16557a11 100644 --- a/include/boost/fusion/adapted/array/detail/at_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/at_impl.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -22,7 +22,7 @@ namespace boost { namespace fusion { struct at_impl; template<> - struct at_impl + struct at_impl { template struct apply diff --git a/include/boost/fusion/adapted/array/detail/begin_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/begin_impl.hpp similarity index 87% rename from include/boost/fusion/adapted/array/detail/begin_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/begin_impl.hpp index 06dc8c51..0798659b 100644 --- a/include/boost/fusion/adapted/array/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/begin_impl.hpp @@ -8,11 +8,11 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 -#include +#include namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct begin_impl; template <> - struct begin_impl + struct begin_impl { template struct apply diff --git a/include/boost/fusion/adapted/array/detail/category_of_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp similarity index 92% rename from include/boost/fusion/adapted/array/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp index 5d01f053..35762a03 100644 --- a/include/boost/fusion/adapted/array/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp @@ -12,7 +12,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; struct random_access_traversal_tag; namespace extension @@ -21,7 +21,7 @@ namespace boost { namespace fusion { struct category_of_impl; template<> - struct category_of_impl + struct category_of_impl { template struct apply diff --git a/include/boost/fusion/adapted/array/detail/end_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/end_impl.hpp similarity index 88% rename from include/boost/fusion/adapted/array/detail/end_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/end_impl.hpp index c9432c9b..35b1fdbc 100644 --- a/include/boost/fusion/adapted/array/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/end_impl.hpp @@ -8,11 +8,11 @@ #if !defined(BOOST_FUSION_END_IMPL_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 -#include +#include namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct end_impl; template <> - struct end_impl + struct end_impl { template struct apply diff --git a/include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp similarity index 91% rename from include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp index a248c314..9301e81e 100644 --- a/include/boost/fusion/adapted/array/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp @@ -12,7 +12,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct is_sequence_impl; template<> - struct is_sequence_impl + struct is_sequence_impl { template struct apply : mpl::true_ {}; diff --git a/include/boost/fusion/adapted/array/detail/is_view_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp similarity index 91% rename from include/boost/fusion/adapted/array/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp index bc821fa6..6cb6b36a 100644 --- a/include/boost/fusion/adapted/array/detail/is_view_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp @@ -12,7 +12,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion struct is_view_impl; template<> - struct is_view_impl + struct is_view_impl { template struct apply : mpl::false_ diff --git a/include/boost/fusion/adapted/array/detail/size_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/size_impl.hpp similarity index 91% rename from include/boost/fusion/adapted/array/detail/size_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/size_impl.hpp index 63661573..87cafdac 100644 --- a/include/boost/fusion/adapted/array/detail/size_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/size_impl.hpp @@ -10,7 +10,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -18,7 +18,7 @@ namespace boost { namespace fusion { struct size_impl; template<> - struct size_impl + struct size_impl { template struct apply : mpl::int_ {}; diff --git a/include/boost/fusion/adapted/array/detail/value_at_impl.hpp b/include/boost/fusion/adapted/boost_array/detail/value_at_impl.hpp similarity index 92% rename from include/boost/fusion/adapted/array/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/boost_array/detail/value_at_impl.hpp index f465b1d6..a35abc68 100644 --- a/include/boost/fusion/adapted/array/detail/value_at_impl.hpp +++ b/include/boost/fusion/adapted/boost_array/detail/value_at_impl.hpp @@ -10,7 +10,7 @@ namespace boost { namespace fusion { - struct array_tag; + struct boost_array_tag; namespace extension { @@ -18,7 +18,7 @@ namespace boost { namespace fusion { struct value_at_impl; template <> - struct value_at_impl + struct value_at_impl { template struct apply diff --git a/include/boost/fusion/adapted/std_pair/tag_of.hpp b/include/boost/fusion/adapted/boost_array/tag_of.hpp similarity index 53% rename from include/boost/fusion/adapted/std_pair/tag_of.hpp rename to include/boost/fusion/adapted/boost_array/tag_of.hpp index 2d4faaa5..d38cc804 100644 --- a/include/boost/fusion/adapted/std_pair/tag_of.hpp +++ b/include/boost/fusion/adapted/boost_array/tag_of.hpp @@ -5,24 +5,34 @@ 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_TAG_OF_24122005_1722) -#define BOOST_FUSION_TAG_OF_24122005_1722 +#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) +#define FUSION_SEQUENCE_TAG_OF_27122005_1030 #include -#include +#include -namespace boost { namespace fusion { +namespace boost +{ + template + class array; +} - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct boost_array_tag; struct fusion_sequence_tag; namespace traits { - template - struct tag_of > + template +#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) + struct tag_of, void > +#else + struct tag_of > +#endif { - typedef std_pair_tag type; + typedef boost_array_tag type; }; } }} @@ -32,14 +42,14 @@ namespace boost { namespace mpl template struct sequence_tag; - template - struct sequence_tag > + template + struct sequence_tag > { typedef fusion::fusion_sequence_tag type; }; - template - struct sequence_tag const> + template + struct sequence_tag const> { typedef fusion::fusion_sequence_tag type; }; diff --git a/include/boost/fusion/adapted/class.hpp b/include/boost/fusion/adapted/class.hpp index be973831..75150942 100644 --- a/include/boost/fusion/adapted/class.hpp +++ b/include/boost/fusion/adapted/class.hpp @@ -1,28 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_CLASS_OCTOBER_4_2009_839PM) -#define BOOST_FUSION_CLASS_OCTOBER_4_2009_839PM -#include -#include -#include -#include +#ifndef BOOST_FUSION_ADAPTED_CLASS_HPP +#define BOOST_FUSION_ADAPTED_CLASS_HPP -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp new file mode 100644 index 00000000..26eb3ae6 --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_assoc_class.hpp @@ -0,0 +1,76 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2007 Dan Marsden + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_ADAPT_ASSOC_CLASS_HPP +#define BOOST_FUSION_ADAPTED_CLASS_ADAPT_ASSOC_CLASS_HPP + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0(A, B, C, D, E)\ + ((A, B, C, D, E)) BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_1 +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_1(A, B, C, D, E)\ + ((A, B, C, D, E)) BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0_END +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_1_END + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_C( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \ + \ + BOOST_FUSION_ADAPT_CLASS_C_BASE(TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,ATTRIBUTE,5) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_assoc_key \ + { \ + typedef BOOST_PP_TUPLE_ELEM(5, 4, ATTRIBUTE) type; \ + }; + +#define BOOST_FUSION_ADAPT_ASSOC_TPL_CLASS( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (1)TEMPLATE_PARAMS_SEQ, \ + (1)NAME_SEQ, \ + assoc_struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_C) + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_C) + +#endif diff --git a/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp new file mode 100644 index 00000000..81930556 --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_assoc_class_named.hpp @@ -0,0 +1,28 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_ADAPT_ASSOC_CLASS_NAMED_HPP +#define BOOST_FUSION_ADAPTED_CLASS_ADAPT_ASSOC_CLASS_NAMED_HPP + +#include +#include + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_NAMED_NS( \ + WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \ + WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ + \ + BOOST_FUSION_ADAPT_ASSOC_CLASS( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + ATTRIBUTES) + +#define BOOST_FUSION_ADAPT_ASSOC_CLASS_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_ASSOC_CLASS_NAMED_NS( \ + WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/class/adapt_class.hpp b/include/boost/fusion/adapted/class/adapt_class.hpp new file mode 100644 index 00000000..f3ee7e93 --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_class.hpp @@ -0,0 +1,63 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2009-2010 Hartmut Kaiser + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_ADAPT_CLASS_HPP +#define BOOST_FUSION_ADAPTED_CLASS_ADAPT_CLASS_HPP + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_ADAPT_CLASS_FILLER_0(A, B, C, D)\ + ((A, B, C, D)) BOOST_FUSION_ADAPT_CLASS_FILLER_1 +#define BOOST_FUSION_ADAPT_CLASS_FILLER_1(A, B, C, D)\ + ((A, B, C, D)) BOOST_FUSION_ADAPT_CLASS_FILLER_0 +#define BOOST_FUSION_ADAPT_CLASS_FILLER_0_END +#define BOOST_FUSION_ADAPT_CLASS_FILLER_1_END + +#define BOOST_FUSION_ADAPT_CLASS_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \ + BOOST_FUSION_ADAPT_CLASS_C_BASE( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE, 4) + +#define BOOST_FUSION_ADAPT_TPL_CLASS(TEMPLATE_PARAMS_SEQ, NAME_SEQ , ATTRIBUTES)\ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (1)TEMPLATE_PARAMS_SEQ, \ + (1)NAME_SEQ, \ + struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_CLASS_C) + +#define BOOST_FUSION_ADAPT_CLASS(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_CLASS_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_CLASS_C) + + +#endif diff --git a/include/boost/fusion/adapted/class/adapt_class_named.hpp b/include/boost/fusion/adapted/class/adapt_class_named.hpp new file mode 100644 index 00000000..8f7ebfd7 --- /dev/null +++ b/include/boost/fusion/adapted/class/adapt_class_named.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2009-2010 Hartmut Kaiser + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_ADAPT_CLASS_NAMED_HPP +#define BOOST_FUSION_ADAPTED_CLASS_ADAPT_CLASS_NAMED_HPP + +#include +#include + +#define BOOST_FUSION_ADAPT_CLASS_NAMED_NS( \ + WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \ + WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ + \ + BOOST_FUSION_ADAPT_CLASS( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ)NAME, \ + ATTRIBUTES) + +#define BOOST_FUSION_ADAPT_CLASS_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_CLASS_NAMED_NS( \ + WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/struct/struct_iterator.hpp b/include/boost/fusion/adapted/class/class_iterator.hpp similarity index 63% rename from include/boost/fusion/adapted/struct/struct_iterator.hpp rename to include/boost/fusion/adapted/class/class_iterator.hpp index fe26aa33..639ee927 100644 --- a/include/boost/fusion/adapted/struct/struct_iterator.hpp +++ b/include/boost/fusion/adapted/class/class_iterator.hpp @@ -1,15 +1,15 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden 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) ==============================================================================*/ -#if !defined(FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM) -#define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM +#if !defined(FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M) +#define FUSION_CLASS_ITERATOR_OCTOBER_4_2009_839M #include -#include +#include #include #include #include @@ -23,23 +23,23 @@ namespace boost { namespace fusion { struct random_access_traversal_tag; - template - struct struct_iterator - : iterator_facade, random_access_traversal_tag> + template + struct class_iterator + : iterator_facade, random_access_traversal_tag> { BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, extension::struct_size::value); + BOOST_MPL_ASSERT_RELATION(N_, <=, extension::class_size::value); typedef mpl::int_ index; - typedef Struct struct_type; + typedef Class class_type; - struct_iterator(Struct& struct_) - : struct_(struct_) {} - Struct& struct_; + class_iterator(Class& class_) + : class_(class_) {} + Class& class_; template struct value_of - : extension::struct_member + : extension::class_member { }; @@ -47,16 +47,18 @@ namespace boost { namespace fusion struct deref { typedef typename - add_reference< - typename extension::struct_member::type + mpl::if_< + is_const + , typename extension::class_member::get_type + , typename extension::class_member::proxy >::type type; static type call(Iterator const& iter) { - return extension::struct_member:: - call(iter.struct_); + return extension::class_member:: + call(iter.class_); } }; @@ -64,13 +66,13 @@ namespace boost { namespace fusion struct advance { typedef typename Iterator::index index; - typedef typename Iterator::struct_type struct_type; - typedef struct_iterator type; + typedef typename Iterator::class_type class_type; + typedef class_iterator type; static type call(Iterator const& iter) { - return type(iter.struct_); + return type(iter.class_); } }; @@ -95,10 +97,6 @@ namespace boost { namespace fusion return type(); } }; - - private: - // silence MSVC warning C4512: assignment operator could not be generated - struct_iterator& operator= (struct_iterator const&); }; }} diff --git a/include/boost/fusion/adapted/class/detail/adapt_base.hpp b/include/boost/fusion/adapted/class/detail/adapt_base.hpp new file mode 100644 index 00000000..54b701f3 --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/adapt_base.hpp @@ -0,0 +1,115 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_DETAIL_ADAPT_BASE_HPP +#define BOOST_FUSION_ADAPTED_CLASS_DETAIL_ADAPT_BASE_HPP + +#include +#include +#include +#include +#include + +//cschmidt: Spirit relies on Fusion defining class_member_proxy in the +//boost::fusion::extension namespace, with two nested types named lvalue and +//rvalue. + +#define BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_TEMPLATE_IMPL(TEMPLATE_PARAMS_SEQ)\ + typename detail::get_identity< \ + lvalue \ + , BOOST_PP_SEQ_ELEM(1,TEMPLATE_PARAMS_SEQ) \ + >::type + +#define BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_NON_TEMPLATE_IMPL( \ + TEMPLATE_PARAMS_SEQ) \ + \ + lvalue + +#define BOOST_FUSION_ADAPT_CLASS_C_BASE(\ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct class_member_proxy< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + , I \ + > \ + { \ + typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \ + typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) rvalue; \ + \ + class_member_proxy(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj)\ + : obj(obj) \ + {} \ + \ + template \ + class_member_proxy& \ + operator=(Arg const& val) \ + { \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 3, ATTRIBUTE); \ + return *this; \ + } \ + \ + operator lvalue() \ + { \ + return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \ + } \ + \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \ + }; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) lvalue; \ + \ + typedef \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), \ + BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_TEMPLATE_IMPL, \ + BOOST_FUSION_ADAPT_CLASS_GET_IDENTITY_NON_TEMPLATE_IMPL)( \ + TEMPLATE_PARAMS_SEQ) \ + type; \ + \ + template \ + struct apply \ + { \ + typedef \ + class_member_proxy< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + , I \ + > \ + proxy; \ + \ + typedef typename \ + mpl::if_< \ + is_const \ + , BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \ + , proxy \ + >::type \ + type; \ + \ + static proxy \ + call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \ + { \ + return proxy(obj); \ + } \ + \ + static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \ + call(BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \ + { \ + return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \ + } \ + }; \ + }; + +#endif diff --git a/include/boost/fusion/adapted/class/detail/at_impl.hpp b/include/boost/fusion/adapted/class/detail/at_impl.hpp new file mode 100644 index 00000000..12b5171f --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/at_impl.hpp @@ -0,0 +1,70 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + 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) +==============================================================================*/ +#if !defined(BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct class_tag; + + namespace extension + { + template + struct at_impl; + + template + struct class_member; + + template + struct class_size; + + template <> + struct at_impl + { + template + struct apply + { + static int const n_value = N::value; + BOOST_MPL_ASSERT_RELATION( + n_value, <=, extension::class_size::value); + + typedef typename + extension::class_member + element; + + typedef typename + mpl::if_< + is_const + , typename class_member::get_type + , typename class_member::proxy + >::type + type; + + static type + call(Sequence& seq) + { + return extension:: + class_member::call(seq); + } + + //~ static typename class_member::get_type + //~ call(Sequence const& seq) + //~ { + //~ return extension:: + //~ class_member::call(seq); + //~ } + }; + }; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp similarity index 73% rename from include/boost/fusion/adapted/struct/detail/at_key_impl.hpp rename to include/boost/fusion/adapted/class/detail/at_key_impl.hpp index 4ce0fce9..9df985bf 100644 --- a/include/boost/fusion/adapted/struct/detail/at_key_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/at_key_impl.hpp @@ -1,35 +1,35 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_AT_KEY_IMPL_20070508_2248) -#define BOOST_FUSION_AT_KEY_IMPL_20070508_2248 +#if !defined(BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_AT_KEY_IMPL_OCTOBER_4_2009_920PM #include namespace boost { namespace fusion { - struct struct_tag; + struct class_tag; namespace extension { template struct at_key_impl; - template - struct struct_assoc_member; + template + struct class_assoc_member; template <> - struct at_key_impl + struct at_key_impl { template struct apply { typedef typename - extension::struct_assoc_member + extension::class_assoc_member element; typedef typename @@ -44,7 +44,7 @@ namespace boost { namespace fusion call(Sequence& seq) { return extension:: - struct_assoc_member::call(seq); + class_assoc_member::call(seq); } }; }; diff --git a/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp b/include/boost/fusion/adapted/class/detail/begin_impl.hpp similarity index 62% rename from include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp rename to include/boost/fusion/adapted/class/detail/begin_impl.hpp index 1fd48f51..4fadac4e 100644 --- a/include/boost/fusion/adapted/std_pair/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/begin_impl.hpp @@ -1,18 +1,18 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) -#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 +#if !defined(BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM) +#define BOOST_FUSION_BEGIN_IMPL_OCTOBER_4_2009_920PM -#include +#include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct class_tag; namespace extension { @@ -20,13 +20,13 @@ namespace boost { namespace fusion { struct begin_impl; template <> - struct begin_impl + struct begin_impl { template - struct apply + struct apply { - typedef std_pair_iterator type; - + typedef class_iterator type; + static type call(Sequence& v) { diff --git a/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp similarity index 71% rename from include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp rename to include/boost/fusion/adapted/class/detail/category_of_impl.hpp index 68df41dc..821cf38b 100644 --- a/include/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/category_of_impl.hpp @@ -1,18 +1,18 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) -#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_CATEGORY_OF_IMPL_OCTOBER_4_2009_919PM #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct class_tag; struct random_access_traversal_tag; namespace extension @@ -21,7 +21,7 @@ namespace boost { namespace fusion { struct category_of_impl; template<> - struct category_of_impl + struct category_of_impl { template struct apply diff --git a/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp b/include/boost/fusion/adapted/class/detail/end_impl.hpp similarity index 53% rename from include/boost/fusion/adapted/std_pair/detail/end_impl.hpp rename to include/boost/fusion/adapted/class/detail/end_impl.hpp index 747f2c6f..81c02c30 100644 --- a/include/boost/fusion/adapted/std_pair/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/end_impl.hpp @@ -1,32 +1,40 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) -#define BOOST_FUSION_END_IMPL_24122005_1755 +#if !defined(BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_END_IMPL_OCTOBER_4_2009_919PM -#include +#include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct class_tag; namespace extension { template struct end_impl; + template + struct class_size; + template <> - struct end_impl + struct end_impl { template - struct apply + struct apply { - typedef std_pair_iterator type; - + typedef + class_iterator< + Sequence + , class_size::value + > + type; + static type call(Sequence& v) { diff --git a/include/boost/fusion/adapted/class/detail/extension.hpp b/include/boost/fusion/adapted/class/detail/extension.hpp new file mode 100644 index 00000000..0ad7c66e --- /dev/null +++ b/include/boost/fusion/adapted/class/detail/extension.hpp @@ -0,0 +1,33 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_CLASS_DETAIL_EXTENSION_HPP +#define BOOST_FUSION_ADAPTED_CLASS_DETAIL_EXTENSION_HPP + +#include +#include + +namespace boost { namespace fusion +{ + namespace detail + { + template + struct get_identity + : remove_const::type> + {}; + } + + namespace extension + { + template + struct class_member_proxy; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/has_key_impl.hpp b/include/boost/fusion/adapted/class/detail/has_key_impl.hpp similarity index 65% rename from include/boost/fusion/adapted/struct/detail/has_key_impl.hpp rename to include/boost/fusion/adapted/class/detail/has_key_impl.hpp index 8972f5df..27f1adce 100644 --- a/include/boost/fusion/adapted/struct/detail/has_key_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/has_key_impl.hpp @@ -1,19 +1,19 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_HAS_KEY_IMPL_20070508_2231) -#define BOOST_FUSION_HAS_KEY_IMPL_20070508_2231 +#if !defined(BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_HAS_KEY_IMPL_OCTOBER_4_2009_919PM #include #include namespace boost { namespace fusion { - struct struct_tag; + struct class_tag; namespace extension { @@ -22,15 +22,15 @@ namespace boost { namespace fusion { template struct has_key_impl; - template - struct struct_assoc_member; + template + struct class_assoc_member; template<> - struct has_key_impl + struct has_key_impl { template struct apply - : mpl::not_::type> > + : mpl::not_::type> > { }; }; diff --git a/include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp similarity index 68% rename from include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp rename to include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp index 1c669a68..c1d35de1 100644 --- a/include/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/is_sequence_impl.hpp @@ -1,18 +1,18 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 +#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_IS_SEQUENCE_IMPL_OCTOBER_4_2009_919PM #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct class_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion { struct is_sequence_impl; template<> - struct is_sequence_impl + struct is_sequence_impl { template struct apply : mpl::true_ {}; diff --git a/include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp b/include/boost/fusion/adapted/class/detail/is_view_impl.hpp similarity index 69% rename from include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp rename to include/boost/fusion/adapted/class/detail/is_view_impl.hpp index 94842bc0..86ce0074 100644 --- a/include/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/is_view_impl.hpp @@ -1,18 +1,18 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) -#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 +#if !defined(BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_IS_VIEW_IMPL_OCTOBER_4_2009_919PM #include -namespace boost { namespace fusion +namespace boost { namespace fusion { - struct std_pair_tag; + struct class_tag; namespace extension { @@ -20,7 +20,7 @@ namespace boost { namespace fusion struct is_view_impl; template<> - struct is_view_impl + struct is_view_impl { template struct apply : mpl::false_ diff --git a/include/boost/fusion/adapted/std_pair/detail/size_impl.hpp b/include/boost/fusion/adapted/class/detail/size_impl.hpp similarity index 56% rename from include/boost/fusion/adapted/std_pair/detail/size_impl.hpp rename to include/boost/fusion/adapted/class/detail/size_impl.hpp index 5f35bffd..de34a3b1 100644 --- a/include/boost/fusion/adapted/std_pair/detail/size_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/size_impl.hpp @@ -1,18 +1,24 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) -#define BOOST_FUSION_SIZE_IMPL_24122005_1759 +#if !defined(BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM) +#define BOOST_FUSION_SIZE_IMPL_OCTOBER_4_2009_919PM #include -namespace boost { namespace fusion { +namespace boost { namespace fusion +{ + namespace extension + { + template + struct class_size; + } - struct std_pair_tag; + struct class_tag; namespace extension { @@ -20,10 +26,10 @@ namespace boost { namespace fusion { struct size_impl; template <> - struct size_impl + struct size_impl { template - struct apply : mpl::int_<2> {}; + struct apply : extension::class_size {}; }; } }} diff --git a/include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_impl.hpp similarity index 54% rename from include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp rename to include/boost/fusion/adapted/class/detail/value_at_impl.hpp index 16047ec9..64d2fc3a 100644 --- a/include/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/value_at_impl.hpp @@ -1,39 +1,43 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden - Distributed under the Boost Software License, Version 1.0. (See accompanying + 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) -#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 +#if !defined(BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM) +#define BOOST_FUSION_VALUE_AT_IMPL_OCTOBER_4_2009_918PM #include #include -namespace boost { namespace fusion { - - struct std_pair_tag; +namespace boost { namespace fusion +{ + struct class_tag; namespace extension { template struct value_at_impl; + template + struct class_member; + + template + struct class_size; + template <> - struct value_at_impl + struct value_at_impl { template - struct apply + struct apply { static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); + BOOST_MPL_ASSERT_RELATION( + n_value, <=, extension::class_size::value); + typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - >::type + extension::class_member::type type; }; }; diff --git a/include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp b/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp similarity index 65% rename from include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp rename to include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp index b1b3dcfb..f9adc104 100644 --- a/include/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp +++ b/include/boost/fusion/adapted/class/detail/value_at_key_impl.hpp @@ -1,35 +1,35 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300) -#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300 +#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM) +#define BOOST_FUSION_VALUE_AT_KEY_IMPL_OCTOBER_4_2009_918PM #include namespace boost { namespace fusion { - struct struct_tag; + struct class_tag; namespace extension { template struct value_at_key_impl; - template - struct struct_assoc_member; + template + struct class_assoc_member; template <> - struct value_at_key_impl + struct value_at_key_impl { template struct apply { typedef typename - extension::struct_assoc_member::type + extension::class_assoc_member::type type; }; }; diff --git a/include/boost/fusion/adapted/class/extension.hpp b/include/boost/fusion/adapted/class/extension.hpp new file mode 100644 index 00000000..28d0a223 --- /dev/null +++ b/include/boost/fusion/adapted/class/extension.hpp @@ -0,0 +1,68 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + 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) +==============================================================================*/ +#if !defined(FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM) +#define FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM + +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct class_member; + + template + struct class_size; + + template + struct class_member : class_member {}; + //~ { + //~ typedef typename class_member::type type; + //~ typedef typename class_member::get_type get_type; + //~ typedef typename class_member::proxy proxy; + + //~ static get_type& + //~ call(Class const& class_) + //~ { + //~ return class_member::call( + //~ const_cast(class_)); + //~ } + //~ }; + + template + struct class_size + : class_size + {}; + + struct no_such_member; + + template + struct class_assoc_member + { + typedef no_such_member type; + }; + + template + struct class_assoc_member + { + typedef typename + add_const::type>::type + type; + + static type& + call(Class const& class_) + { + return class_assoc_member::call( + const_cast(class_)); + } + }; + +}}} + +#endif + + diff --git a/include/boost/fusion/adapted/std_pair.hpp b/include/boost/fusion/adapted/std_pair.hpp index 0c87084c..5792dd44 100644 --- a/include/boost/fusion/adapted/std_pair.hpp +++ b/include/boost/fusion/adapted/std_pair.hpp @@ -1,89 +1,24 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_STD_PAIR_24122005_1744) -#define BOOST_FUSION_STD_PAIR_24122005_1744 -#include -#include -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_HPP +#define BOOST_FUSION_ADAPTED_STD_PAIR_HPP -namespace boost { namespace fusion +#include + +namespace std { - struct struct_tag; - struct fusion_sequence_tag; + template + struct pair; +} - namespace traits - { - template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - struct tag_of, void > -#else - struct tag_of > -#endif - { - typedef struct_tag type; - }; - } -}} - -namespace boost { namespace mpl -{ - template - struct sequence_tag; - - template - struct sequence_tag > - { - typedef fusion::fusion_sequence_tag type; - }; - - template - struct sequence_tag const> - { - typedef fusion::fusion_sequence_tag type; - }; -}} - -namespace boost { namespace fusion { namespace extension -{ - template - struct struct_member; - - template - struct struct_size; - - template - struct struct_member, 0> - { - typedef T1 type; - - static type& call(std::pair& pair) - { - return pair.first; - } - }; - - template - struct struct_member, 1> - { - typedef T2 type; - - static type& call(std::pair& pair) - { - return pair.second; - } - }; - - template - struct struct_size > : mpl::int_<2> - { - }; -}}} +BOOST_FUSION_ADAPT_TPL_STRUCT( + (T1)(T2),(std::pair)(T1)(T2),(T1, first)(T2, second)) #endif diff --git a/include/boost/fusion/adapted/std_pair/detail/at_impl.hpp b/include/boost/fusion/adapted/std_pair/detail/at_impl.hpp deleted file mode 100644 index 2f26fa68..00000000 --- a/include/boost/fusion/adapted/std_pair/detail/at_impl.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) -#define BOOST_FUSION_AT_IMPL_24122005_1807 - -#include -#include -#include -#include - -namespace boost { namespace fusion { - - struct std_pair_tag; - - namespace extension - { - template - struct at_impl; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2)); - typedef typename - mpl::if_c< - (n_value == 0) - , typename Sequence::first_type - , typename Sequence::second_type - > - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - template - static RT get(Sequence& p, mpl::int_<0>) - { - return p.first; - } - - template - static RT get(Sequence& p, mpl::int_<1>) - { - return p.second; - } - - static type - call(Sequence& p) - { - return get(p, N()); - } - }; - }; - } -}} - -#endif diff --git a/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp b/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp deleted file mode 100644 index 9469723b..00000000 --- a/include/boost/fusion/adapted/std_pair/std_pair_iterator.hpp +++ /dev/null @@ -1,127 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - - 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) -==============================================================================*/ -#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934) -#define FUSION_STD_PAIR_ITERATOR_09262005_0934 - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace fusion -{ - struct random_access_traversal_tag; - - template - struct std_pair_iterator - : iterator_facade, random_access_traversal_tag> - { - BOOST_MPL_ASSERT_RELATION(N_, >=, 0); - BOOST_MPL_ASSERT_RELATION(N_, <=, 2); - - typedef mpl::int_ index; - typedef Pair_ pair_type; - - std_pair_iterator(Pair_& pair) - : pair(pair) {} - Pair_& pair; - - template - struct value_of; - - template - struct value_of > - : mpl::identity {}; - - template - struct value_of > - : mpl::identity {}; - - template - struct deref; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::first_type const& - , typename Pair::first_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.first; - } - }; - - template - struct deref > - { - typedef typename - mpl::if_< - is_const - , typename Pair::second_type const& - , typename Pair::second_type& - >::type - type; - - static type - call(std_pair_iterator const& iter) - { - return iter.pair.second; - } - }; - - template - struct advance - { - typedef typename Iterator::index index; - typedef typename Iterator::pair_type pair_type; - typedef std_pair_iterator type; - - static type - call(Iterator const& iter) - { - return type(iter.pair); - } - }; - - template - struct next : advance > {}; - - template - struct prior : advance > {}; - - template - struct distance : mpl::minus - { - typedef typename - mpl::minus< - typename I2::index, typename I1::index - >::type - type; - - static type - call(I1 const&, I2 const&) - { - return type(); - } - }; - }; -}} - -#endif - - diff --git a/include/boost/fusion/adapted/struct.hpp b/include/boost/fusion/adapted/struct.hpp index c3c24e0b..9c38bb48 100644 --- a/include/boost/fusion/adapted/struct.hpp +++ b/include/boost/fusion/adapted/struct.hpp @@ -1,28 +1,18 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_STRUCT_24122005_1744) -#define BOOST_FUSION_STRUCT_24122005_1744 -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_HPP + +#include #include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #endif diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index 5061fe36..c6c991d1 100644 --- a/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -1,113 +1,82 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2007 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207) -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207 -#include -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include #include #include +#include #include +#include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z)\ + ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z)\ + ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0_END +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1_END -namespace boost { namespace fusion { namespace extension { - template - struct struct_assoc_member; -}}} - - -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT(name, bseq) \ - BOOST_FUSION_ADAPT_ASSOC_STRUCT_I( \ - name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_X bseq, 0)) \ - /***/ - -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_X -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X0 -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y0 - -// BOOST_FUSION_ADAPT_ASSOC_STRUCT_I generates the overarching structure and uses -// SEQ_FOR_EACH_I to generate the "linear" substructures. -// Thanks to Paul Mensonides for the PP macro help - -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \ - namespace boost { namespace fusion { namespace traits \ - { \ - template <> \ - struct tag_of \ - { \ - typedef struct_tag type; \ - }; \ - }}} \ +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,PREFIX,ATTRIBUTE) \ \ - namespace boost { namespace mpl \ - { \ - template \ - struct sequence_tag; \ + BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, PREFIX, ATTRIBUTE, 3) \ \ - template<> \ - struct sequence_tag \ - { \ - typedef fusion::fusion_sequence_tag type; \ - }; \ - \ - template<> \ - struct sequence_tag \ - { \ - typedef fusion::fusion_sequence_tag type; \ - }; \ - }} \ - \ - namespace boost { namespace fusion { namespace extension \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_assoc_key \ { \ - template <> \ - struct struct_size : mpl::int_ {}; \ - BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_STRUCT_C, name, seq) \ - }}} \ - /***/ - -#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \ - template <> \ - struct struct_member \ - { \ - typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ - static type& call(name& struct_) \ - { \ - return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ - }; \ - }; \ - template<> \ - struct struct_assoc_member \ - { \ - typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \ - static type& call(name& struct_) \ - { \ - return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \ - }; \ + typedef BOOST_PP_TUPLE_ELEM(3, 2, ATTRIBUTE) type; \ }; - /***/ + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ + \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE) + +#define BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (1)TEMPLATE_PARAMS_SEQ, \ + (1)NAME_SEQ, \ + assoc_struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + assoc_struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C) #endif diff --git a/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp new file mode 100644 index 00000000..7cefc517 --- /dev/null +++ b/include/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp @@ -0,0 +1,38 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP + +#include +#include + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, ATTRIBUTE) \ + \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE) + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ + WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \ + WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ + \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ + (0)NAMESPACE_SEQ)NAME), \ + assoc_struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_C) + +#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS( \ + WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/struct/adapt_struct.hpp b/include/boost/fusion/adapted/struct/adapt_struct.hpp index 88122aff..0758af53 100644 --- a/include/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/include/boost/fusion/adapted/struct/adapt_struct.hpp @@ -1,94 +1,59 @@ /*============================================================================= Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM) -#define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM -#include -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP + +#include +#include +#include +#include +#include +#include + +#include +#include +#include #include #include +#include #include +#include #include #include -#include -#include -#include +#include +#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y) \ + ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_1 +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y) \ + ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_0 +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END +#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END -#define BOOST_FUSION_ADAPT_STRUCT(name, bseq) \ - BOOST_FUSION_ADAPT_STRUCT_I( \ - name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_X bseq, 0)) \ - /***/ +#define BOOST_FUSION_ADAPT_STRUCT_C(TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE)\ + BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,BOOST_PP_EMPTY(),ATTRIBUTE,2) -#define BOOST_FUSION_ADAPT_STRUCT_X(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_Y -#define BOOST_FUSION_ADAPT_STRUCT_Y(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_X -#define BOOST_FUSION_ADAPT_STRUCT_X0 -#define BOOST_FUSION_ADAPT_STRUCT_Y0 +#define BOOST_FUSION_ADAPT_TPL_STRUCT(TEMPLATE_PARAMS_SEQ,NAME_SEQ, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (1)TEMPLATE_PARAMS_SEQ, \ + (1)NAME_SEQ, \ + struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) -// BOOST_FUSION_ADAPT_STRUCT_I generates the overarching structure and uses -// SEQ_FOR_EACH_I to generate the "linear" substructures. -// Thanks to Paul Mensonides for the PP macro help - -#define BOOST_FUSION_ADAPT_STRUCT_I(name, seq) \ - namespace boost { namespace fusion { namespace traits \ - { \ - template <> \ - struct tag_of \ - { \ - typedef struct_tag type; \ - }; \ - }}} \ - \ - namespace boost { namespace mpl \ - { \ - template \ - struct sequence_tag; \ - \ - template<> \ - struct sequence_tag \ - { \ - typedef fusion::fusion_sequence_tag type; \ - }; \ - \ - template<> \ - struct sequence_tag \ - { \ - typedef fusion::fusion_sequence_tag type; \ - }; \ - }} \ - \ - namespace boost { namespace fusion { namespace extension \ - { \ - template <> \ - struct struct_size : mpl::int_ {}; \ - BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_STRUCT_C, name, seq) \ - }}} \ - /***/ - -#define BOOST_FUSION_ADAPT_STRUCT_C(r, name, i, xy) \ - template <> \ - struct struct_member \ - { \ - typedef BOOST_PP_TUPLE_ELEM(2, 0, xy) type; \ - static type& call(name& struct_) \ - { \ - return struct_.BOOST_PP_TUPLE_ELEM(2, 1, xy); \ - }; \ - }; \ - /***/ +#define BOOST_FUSION_ADAPT_STRUCT(NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(NAME), \ + struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_C) #endif diff --git a/include/boost/fusion/adapted/struct/adapt_struct_named.hpp b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp new file mode 100644 index 00000000..86bd8725 --- /dev/null +++ b/include/boost/fusion/adapted/struct/adapt_struct_named.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2009-2010 Hartmut Kaiser + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP + +#include +#include +#include + +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_C( \ + TEMPLATE_PARAMS_SEQ, NAME_SEQ, I, ATTRIBUTE) \ + \ + BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ, I, obj., ATTRIBUTE, 2) + +#define BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ + WRAPPED_TYPE, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \ + WRAPPED_TYPE,(0)NAMESPACE_SEQ,NAME) \ + \ + BOOST_FUSION_ADAPT_STRUCT_BASE( \ + (0), \ + (0)(BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION( \ + (0)NAMESPACE_SEQ)NAME), \ + struct_tag, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + BOOST_FUSION_ADAPT_STRUCT_NAMED_C) + +#define BOOST_FUSION_ADAPT_STRUCT_NAMED(WRAPPED_TYPE, NAME, ATTRIBUTES) \ + BOOST_FUSION_ADAPT_STRUCT_NAMED_NS( \ + WRAPPED_TYPE,(boost)(fusion)(adapted),NAME,ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/struct/define_assoc_struct.hpp b/include/boost/fusion/adapted/struct/define_assoc_struct.hpp new file mode 100644 index 00000000..d69ed461 --- /dev/null +++ b/include/boost/fusion/adapted/struct/define_assoc_struct.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP + +#include +#include + +#define BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( \ + TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \ + TEMPLATE_PARAMS_SEQ, \ + (0)NAMESPACE_SEQ, \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + 3) \ + \ + BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( \ + TEMPLATE_PARAMS_SEQ, \ + (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME)\ + TEMPLATE_PARAMS_SEQ, \ + ATTRIBUTES) + +#define BOOST_FUSION_DEFINE_ASSOC_STRUCT(NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_IMPL( \ + (0)NAMESPACE_SEQ, \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + 3) \ + \ + BOOST_FUSION_ADAPT_ASSOC_STRUCT( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME, \ + ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/struct/define_struct.hpp b/include/boost/fusion/adapted/struct/define_struct.hpp new file mode 100644 index 00000000..11a393b7 --- /dev/null +++ b/include/boost/fusion/adapted/struct/define_struct.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP + +#include +#include + +#define BOOST_FUSION_DEFINE_TPL_STRUCT( \ + TEMPLATE_PARAMS_SEQ, NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + \ + BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \ + TEMPLATE_PARAMS_SEQ, \ + (0)NAMESPACE_SEQ, \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + 2) \ + \ + BOOST_FUSION_ADAPT_TPL_STRUCT( \ + TEMPLATE_PARAMS_SEQ, \ + (BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME)\ + TEMPLATE_PARAMS_SEQ, \ + ATTRIBUTES) + +#define BOOST_FUSION_DEFINE_STRUCT(NAMESPACE_SEQ, NAME, ATTRIBUTES) \ + BOOST_FUSION_DEFINE_STRUCT_IMPL( \ + (0)NAMESPACE_SEQ, \ + NAME, \ + BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END), \ + 2) \ + \ + BOOST_FUSION_ADAPT_STRUCT( \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION((0)NAMESPACE_SEQ) NAME, \ + ATTRIBUTES) + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/adapt_base.hpp b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp new file mode 100644 index 00000000..c1b1b923 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -0,0 +1,203 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME_TEMPLATE_PARAMS(SEQ) \ + BOOST_PP_SEQ_HEAD(SEQ) \ + BOOST_PP_EMPTY() + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(SEQ), \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME_TEMPLATE_PARAMS, \ + BOOST_PP_SEQ_HEAD)(BOOST_PP_SEQ_TAIL(SEQ)) + +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL_C(R, _, ELEM) \ + (typename ELEM) +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL(SEQ) \ + BOOST_PP_SEQ_ENUM( \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL_C, \ + _, \ + BOOST_PP_SEQ_TAIL(SEQ))) +#define BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_SEQ_HEAD(SEQ), \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL, \ + BOOST_PP_TUPLE_EAT(1))(SEQ) + +#ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +# define BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + MODIFIER, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct tag_of< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) MODIFIER \ + , void \ + > \ + { \ + typedef TAG type; \ + }; +#else +# define BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + MODIFIER, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct tag_of \ + { \ + typedef TAG type; \ + }; +#endif + +#define BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL(R,DATA,I,ATTRIBUTE) \ + BOOST_PP_TUPLE_ELEM(3,0,DATA)( \ + BOOST_PP_TUPLE_ELEM(3,1,DATA), \ + BOOST_PP_TUPLE_ELEM(3,2,DATA), \ + I, \ + ATTRIBUTE) + +#define BOOST_FUSION_ADAPT_STRUCT_C_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,PREFIX,ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_member \ + { \ + typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \ + \ + template \ + struct apply \ + { \ + typedef typename \ + add_reference< \ + typename mpl::eval_if< \ + is_const \ + , add_const \ + , mpl::identity \ + >::type \ + >::type \ + type; \ + \ + static type \ + call(Seq& seq) \ + { \ + return seq.PREFIX \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE); \ + } \ + }; \ + }; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_member_name< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \ + , I \ + > \ + { \ + typedef char const* type; \ + \ + static type \ + call() \ + { \ + return BOOST_PP_STRINGIZE( \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)); \ + } \ + }; + +#define BOOST_FUSION_ADAPT_STRUCT_BASE( \ + TEMPLATE_PARAMS_SEQ,NAME_SEQ,TAG,ATTRIBUTES_SEQ,ATTRIBUTES_CALLBACK) \ + \ +namespace boost \ +{ \ + namespace fusion \ + { \ + namespace traits \ + { \ + BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + BOOST_PP_EMPTY(), TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION( \ + const, TEMPLATE_PARAMS_SEQ, NAME_SEQ, TAG) \ + } \ + \ + namespace extension \ + { \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_ADAPT_STRUCT_BASE_UNPACK_AND_CALL, \ + (ATTRIBUTES_CALLBACK,TEMPLATE_PARAMS_SEQ,NAME_SEQ), \ + ATTRIBUTES_SEQ) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct struct_size \ + : mpl::int_ \ + {}; \ + } \ + } \ + \ + namespace mpl \ + { \ + template \ + struct sequence_tag; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct sequence_tag \ + { \ + typedef fusion::fusion_sequence_tag type; \ + }; \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS( \ + TEMPLATE_PARAMS_SEQ) \ + > \ + struct sequence_tag< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const \ + > \ + { \ + typedef fusion::fusion_sequence_tag type; \ + }; \ + } \ +} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/at_impl.hpp b/include/boost/fusion/adapted/struct/detail/at_impl.hpp index 809902ae..febb6335 100644 --- a/include/boost/fusion/adapted/struct/detail/at_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/at_impl.hpp @@ -1,63 +1,38 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) -#define BOOST_FUSION_AT_IMPL_24122005_1807 -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP + #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct at_impl; - namespace extension + template <> + struct at_impl { - template - struct at_impl; + template + struct apply + : extension::struct_member< + typename remove_const::type + , N::value + >::template apply + {}; + }; - template - struct struct_member; - - template - struct struct_size; - - template <> - struct at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::struct_size::value); - - typedef typename - extension::struct_member - element; - - typedef typename - mpl::eval_if< - is_const - , detail::cref_result - , detail::ref_result - >::type - type; - - static type - call(Sequence& seq) - { - return extension:: - struct_member::call(seq); - } - }; - }; - } -}} + template <> + struct at_impl + : at_impl + {}; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/begin_impl.hpp b/include/boost/fusion/adapted/struct/detail/begin_impl.hpp index bf5a00bc..80321ee1 100644 --- a/include/boost/fusion/adapted/struct/detail/begin_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/begin_impl.hpp @@ -1,40 +1,67 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752) -#define BOOST_FUSION_BEGIN_IMPL_24122005_1752 -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP -namespace boost { namespace fusion +#include + +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct begin_impl; - namespace extension + template <> + struct begin_impl { - template - struct begin_impl; - - template <> - struct begin_impl + template + struct apply { - template - struct apply - { - typedef struct_iterator type; + typedef + basic_iterator< + struct_iterator_tag + , random_access_traversal_tag + , Seq + , 0 + > + type; - static type - call(Sequence& v) - { - return type(v); - } - }; + static type + call(Seq& seq) + { + return type(seq,0); + } }; - } -}} + }; + + template <> + struct begin_impl + { + template + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , assoc_struct_category + , Seq + , 0 + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp b/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp index c23b9751..81350e6a 100644 --- a/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/category_of_impl.hpp @@ -1,34 +1,41 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731) -#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731 -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP namespace boost { namespace fusion { - struct struct_tag; - struct random_access_traversal_tag; - namespace extension { - template + template struct category_of_impl; template<> struct category_of_impl { - template + template struct apply { typedef random_access_traversal_tag type; }; }; + + template<> + struct category_of_impl + { + template + struct apply + { + typedef assoc_struct_category type; + }; + }; } }} diff --git a/include/boost/fusion/adapted/struct/detail/define_struct.hpp b/include/boost/fusion/adapted/struct/detail/define_struct.hpp new file mode 100644 index 00000000..42bc6dcd --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -0,0 +1,308 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP +#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_DEFINE_STRUCT_COPY_CTOR_FILLER_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)( \ + other_self.BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)) + +#define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I_, ATTRIBUTE) \ + \ + BOOST_PP_IF( \ + I_, \ + typedef typename \ + boost::fusion::result_of::next< \ + BOOST_PP_CAT(I,BOOST_PP_DEC(I_)) \ + >::type \ + BOOST_PP_CAT(I,I_); \ + BOOST_PP_CAT(I,I_) BOOST_PP_CAT(i,I_)= \ + boost::fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(I_)));, \ + BOOST_PP_EMPTY() \ + ) \ + \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)= \ + boost::fusion::deref(BOOST_PP_CAT(i,I_)); + +#define BOOST_FUSION_DEFINE_STRUCT_ASSIGN_OP( \ + ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + template \ + self_type& \ + operator=(Seq const& seq) \ + { \ + typedef typename \ + boost::fusion::result_of::begin::type \ + I0; \ + I0 i0=boost::fusion::begin(seq); \ + \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_ASSIGN_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + \ + return *this; \ + } + +#define BOOST_FUSION_DEFINE_STRUCT_ATTR_I(R, ATTRIBUTE_TUPEL_SIZE, ATTRIBUTE) \ + \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,0,ATTRIBUTE) \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE); + +#define BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_FILLER_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)( \ + boost::fusion::deref(boost::fusion::advance_c(boost::fusion::begin( \ + seq)))) + +#define BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_DISABLER( \ + ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + , typename boost::disable_if< \ + boost::is_convertible< \ + Seq const& \ + , BOOST_PP_TUPLE_ELEM( \ + ATTRIBUTE_TUPEL_SIZE, \ + 0, \ + BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \ + > \ + >::type* =0 + +#define BOOST_FUSION_DEFINE_STRUCT_SEQ_DEFAULT_CTOR_FILLER_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)() + +#define BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + BOOST_PP_SEQ_FOR_EACH_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_ATTR_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + \ + NAME() \ + : BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_SEQ_DEFAULT_CTOR_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + {} \ + \ + NAME(self_type const& other_self) \ + : BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_COPY_CTOR_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + {} \ + \ + template \ + NAME(Seq const& seq \ + BOOST_PP_IF( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ + BOOST_PP_TUPLE_EAT(2), \ + BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_DISABLER)( \ + ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + ) \ + : BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_SEQ_CTOR_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + {} \ + \ + BOOST_FUSION_DEFINE_STRUCT_ASSIGN_OP(ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) + +#define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + explicit \ + NAME(boost::call_traits< \ + BOOST_PP_TUPLE_ELEM( \ + ATTRIBUTE_TUPEL_SIZE,0,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \ + >::param_type arg) \ + : BOOST_PP_TUPLE_ELEM( \ + ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))(arg) \ + {} + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \ + TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + explicit \ + NAME(typename boost::call_traits< \ + typename boost::fusion::detail::get_first_arg< \ + BOOST_PP_TUPLE_ELEM( \ + ATTRIBUTE_TUPEL_SIZE, \ + 0, \ + BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ)) \ + , BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ) \ + >::type \ + >::param_type arg) \ + : BOOST_PP_TUPLE_ELEM( \ + ATTRIBUTE_TUPEL_SIZE,1,BOOST_PP_SEQ_HEAD(ATTRIBUTES_SEQ))(arg) \ + {} + +#define BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,1,ATTRIBUTE)(BOOST_PP_CAT(_,I)) + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I(R, DATA, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + typename boost::call_traits< \ + typename boost::fusion::detail::get_first_arg< \ + BOOST_PP_TUPLE_ELEM( \ + BOOST_PP_TUPLE_ELEM(3,0,DATA), \ + 0, \ + ATTRIBUTE) \ + , BOOST_PP_TUPLE_ELEM(3,2,DATA) \ + >::type \ + >::param_type BOOST_PP_CAT(_,I) + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \ + TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \ + ( \ + ATTRIBUTE_TUPEL_SIZE, \ + BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \ + BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ) \ + ), \ + ATTRIBUTES_SEQ)) \ + : BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + {} + +#define BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I( \ + R, ATTRIBUTE_TUPEL_SIZE, I, ATTRIBUTE) \ + \ + BOOST_PP_COMMA_IF(I) \ + boost::call_traits< \ + BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE,0,ATTRIBUTE) \ + >::param_type BOOST_PP_CAT(_,I) + +#define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ)) \ + : BOOST_PP_SEQ_FOR_EACH_I_R( \ + 1, \ + BOOST_FUSION_DEFINE_STRUCT_CTOR_FILLER_I, \ + ATTRIBUTE_TUPEL_SIZE, \ + ATTRIBUTES_SEQ) \ + {} + +#define BOOST_FUSION_DEFINE_STRUCT_CTOR(ATTRIBUTES_SEQ) \ + BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ + BOOST_FUSION_DEFINE_STRUCT_CTOR_N, \ + BOOST_FUSION_DEFINE_STRUCT_CTOR_1) + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR(ATTRIBUTES_SEQ) \ + BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ + BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N, \ + BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1) + +#define BOOST_FUSION_DEFINE_STRUCT_IMPL( \ + NAMESPACE_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \ + \ + struct NAME \ + { \ + typedef NAME self_type; \ + \ + BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + BOOST_FUSION_DEFINE_STRUCT_CTOR(ATTRIBUTES_SEQ)( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + }; \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) + +#define BOOST_FUSION_DEFINE_TPL_STRUCT_IMPL( \ + TEMPLATE_PARAMS_SEQ, \ + NAMESPACE_SEQ, \ + NAME, \ + ATTRIBUTES_SEQ, \ + ATTRIBUTE_TUPEL_SIZE) \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \ + \ + template< \ + BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \ + (0)TEMPLATE_PARAMS_SEQ) \ + > \ + struct NAME \ + { \ + typedef NAME self_type; \ + \ + BOOST_FUSION_DEFINE_STRUCT_IMPL_IMPL( \ + NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + \ + BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR(ATTRIBUTES_SEQ)( \ + TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ + }; \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) + +namespace boost { namespace fusion { namespace detail +{ + template + struct get_first_arg + { + typedef A1 type; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/deref_data_impl.hpp b/include/boost/fusion/adapted/struct/detail/deref_data_impl.hpp new file mode 100644 index 00000000..d3b6ced6 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/deref_data_impl.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_DATA_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_DATA_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template + struct deref_data_impl; + + template <> + struct deref_data_impl + : deref_impl + {}; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/deref_impl.hpp b/include/boost/fusion/adapted/struct/detail/deref_impl.hpp new file mode 100644 index 00000000..498617a3 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/deref_impl.hpp @@ -0,0 +1,41 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template + struct deref_impl; + + template <> + struct deref_impl + { + template + struct apply + { + typedef typename + extension::struct_member< + typename remove_const::type + , It::index::value + >::template apply + impl; + + typedef typename impl::type type; + + static + type + call(It const& it) + { + return impl::call(*it.seq); + } + }; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/end_impl.hpp b/include/boost/fusion/adapted/struct/detail/end_impl.hpp index 514f7f58..e4f92056 100644 --- a/include/boost/fusion/adapted/struct/detail/end_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -1,48 +1,67 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_END_IMPL_24122005_1755) -#define BOOST_FUSION_END_IMPL_24122005_1755 -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP -namespace boost { namespace fusion +#include + +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct end_impl; - namespace extension + template <> + struct end_impl { - template - struct end_impl; - - template - struct struct_size; - - template <> - struct end_impl + template + struct apply { - template - struct apply - { - typedef - struct_iterator< - Sequence - , struct_size::value - > - type; + typedef + basic_iterator< + struct_iterator_tag + , random_access_traversal_tag + , Seq + , struct_size::type>::value + > + type; - static type - call(Sequence& v) - { - return type(v); - } - }; + static type + call(Seq& seq) + { + return type(seq,0); + } }; - } -}} + }; + + template <> + struct end_impl + { + template + struct apply + { + typedef + basic_iterator< + struct_iterator_tag + , assoc_struct_category + , Seq + , struct_size::type>::value + > + type; + + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/extension.hpp b/include/boost/fusion/adapted/struct/detail/extension.hpp new file mode 100644 index 00000000..4896859d --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/extension.hpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP + +#include + +namespace boost { namespace fusion +{ + struct struct_tag; + struct struct_iterator_tag; + struct assoc_struct_tag; + struct fusion_sequence_tag; + + struct assoc_struct_category + : bidirectional_traversal_tag, associative_tag + {}; + + namespace extension + { + struct no_such_member; + + template + struct struct_member; + + template + struct struct_member_name; + + template + struct struct_assoc_key; + + template + struct struct_size; + } +}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp index f81e9fb6..6f8adde5 100644 --- a/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp @@ -1,31 +1,35 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651) -#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651 + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct is_sequence_impl; - namespace extension + template<> + struct is_sequence_impl { - template - struct is_sequence_impl; + template + struct apply + : mpl::true_ + {}; + }; - template<> - struct is_sequence_impl - { - template - struct apply : mpl::true_ {}; - }; - } -}} + template <> + struct is_sequence_impl + : is_sequence_impl + {}; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp index da6f380b..0580018d 100644 --- a/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/is_view_impl.hpp @@ -1,32 +1,35 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219) -#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219 + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP #include -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct is_view_impl; - namespace extension + template<> + struct is_view_impl { - template - struct is_view_impl; + template + struct apply + : mpl::false_ + {}; + }; - template<> - struct is_view_impl - { - template - struct apply : mpl::false_ - {}; - }; - } -}} + template <> + struct is_view_impl + : is_view_impl + {}; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/key_of_impl.hpp b/include/boost/fusion/adapted/struct/detail/key_of_impl.hpp new file mode 100644 index 00000000..d24a24b1 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/key_of_impl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_KEY_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_KEY_OF_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template + struct key_of_impl; + + template <> + struct key_of_impl + { + template + struct apply + : extension::struct_assoc_key< + typename remove_const::type + , It::index::value + > + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/namespace.hpp b/include/boost/fusion/adapted/struct/detail/namespace.hpp new file mode 100644 index 00000000..0f3ec5e0 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/namespace.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2009-2010 Hartmut Kaiser + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP +#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP + +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I(R,DATA,ELEM) \ + namespace ELEM { +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I(Z,I,DATA) } +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I(Z,I,ELEM) ELEM:: + +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \ + BOOST_PP_SEQ_FOR_EACH_R, \ + BOOST_PP_TUPLE_EAT(4))( \ + 1, \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_BEGIN_I, \ + _, \ + BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ)) + +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) \ + BOOST_PP_REPEAT_1( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_END_I, \ + _) + +#define BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION(NAMESPACE_SEQ) \ + BOOST_PP_IF( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(NAMESPACE_SEQ)), \ + BOOST_PP_SEQ_FOR_EACH_R, \ + BOOST_PP_TUPLE_EAT(4))( \ + 1, \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DECLARATION_I, \ + _, \ + BOOST_PP_SEQ_TAIL(NAMESPACE_SEQ)) + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/proxy_type.hpp b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp new file mode 100644 index 00000000..1ebc5087 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/proxy_type.hpp @@ -0,0 +1,30 @@ +/*============================================================================= + Copyright (c) 2009-2010 Hartmut Kaiser + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP +#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP + +#include + +#define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \ + WRAPPED_TYPE,NAMESPACE_SEQ,NAME) \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \ + \ + struct NAME \ + { \ + NAME(WRAPPED_TYPE& obj) \ + : obj(obj) \ + {} \ + \ + WRAPPED_TYPE& obj; \ + }; \ + \ + BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ) + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/size_impl.hpp b/include/boost/fusion/adapted/struct/detail/size_impl.hpp index 12ec14ba..43a57057 100644 --- a/include/boost/fusion/adapted/struct/detail/size_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/size_impl.hpp @@ -1,37 +1,33 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759) -#define BOOST_FUSION_SIZE_IMPL_24122005_1759 -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace extension { - namespace extension + template + struct size_impl; + + template <> + struct size_impl { - template - struct struct_size; - } + template + struct apply + : struct_size::type> + {}; + }; - struct struct_tag; - - namespace extension - { - template - struct size_impl; - - template <> - struct size_impl - { - template - struct apply : extension::struct_size {}; - }; - } -}} + template <> + struct size_impl + : size_impl + {}; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp b/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp index 8f5d97a0..5ecf4ac7 100644 --- a/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp +++ b/include/boost/fusion/adapted/struct/detail/value_at_impl.hpp @@ -1,47 +1,33 @@ /*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2009-2010 Christopher Schmidt 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) ==============================================================================*/ -#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917) -#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917 -#include -#include +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP -namespace boost { namespace fusion +namespace boost { namespace fusion { namespace extension { - struct struct_tag; + template + struct value_at_impl; - namespace extension + template <> + struct value_at_impl { - template - struct value_at_impl; + template + struct apply + : struct_member::type, N::value> + {}; + }; - template - struct struct_member; - - template - struct struct_size; - - template <> - struct value_at_impl - { - template - struct apply - { - static int const n_value = N::value; - BOOST_MPL_ASSERT_RELATION( - n_value, <=, extension::struct_size::value); - - typedef typename - extension::struct_member::type - type; - }; - }; - } -}} + template <> + struct value_at_impl + : value_at_impl + {}; +}}} #endif diff --git a/include/boost/fusion/adapted/struct/detail/value_of_data_impl.hpp b/include/boost/fusion/adapted/struct/detail/value_of_data_impl.hpp new file mode 100644 index 00000000..4528b854 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/value_of_data_impl.hpp @@ -0,0 +1,22 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_DATA_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_DATA_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template + struct value_of_data_impl; + + template <> + struct value_of_data_impl + : value_of_impl + {}; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/detail/value_of_impl.hpp b/include/boost/fusion/adapted/struct/detail/value_of_impl.hpp new file mode 100644 index 00000000..55d37ed7 --- /dev/null +++ b/include/boost/fusion/adapted/struct/detail/value_of_impl.hpp @@ -0,0 +1,29 @@ +/*============================================================================= + Copyright (c) 2009-2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_IMPL_HPP +#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_OF_IMPL_HPP + +namespace boost { namespace fusion { namespace extension +{ + template + struct value_of_impl; + + template <> + struct value_of_impl + { + template + struct apply + : extension::struct_member< + typename remove_const::type + , It::index::value + > + {}; + }; +}}} + +#endif diff --git a/include/boost/fusion/adapted/struct/extension.hpp b/include/boost/fusion/adapted/struct/extension.hpp deleted file mode 100644 index 6f5de9ea..00000000 --- a/include/boost/fusion/adapted/struct/extension.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM) -#define FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM - -#include - -namespace boost { namespace fusion -{ - struct fusion_sequence_tag; - - namespace extension - { - template - struct struct_member; - - template - struct struct_size; - - template - struct struct_member - { - typedef typename - add_const::type>::type - type; - - static type& - call(Struct const& struct_) - { - return struct_member::call( - const_cast(struct_)); - } - }; - - template - struct struct_size - : struct_size - {}; - - struct no_such_member; - - template - struct struct_assoc_member - { - typedef no_such_member type; - }; - - template - struct struct_assoc_member - { - typedef typename - add_const::type>::type - type; - - static type& - call(Struct const& struct_) - { - return struct_assoc_member::call( - const_cast(struct_)); - } - }; - - } -}} - -#endif - - diff --git a/include/boost/fusion/include/adapt_assoc_class.hpp b/include/boost/fusion/include/adapt_assoc_class.hpp new file mode 100644 index 00000000..ccbfeb18 --- /dev/null +++ b/include/boost/fusion/include/adapt_assoc_class.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_assoc_class_named.hpp b/include/boost/fusion/include/adapt_assoc_class_named.hpp new file mode 100644 index 00000000..10782681 --- /dev/null +++ b/include/boost/fusion/include/adapt_assoc_class_named.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_NAMED_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_NAMED_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_assoc_struct.hpp b/include/boost/fusion/include/adapt_assoc_struct.hpp new file mode 100644 index 00000000..681aa2e4 --- /dev/null +++ b/include/boost/fusion/include/adapt_assoc_struct.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_assoc_struct_named.hpp b/include/boost/fusion/include/adapt_assoc_struct_named.hpp new file mode 100644 index 00000000..19204f50 --- /dev/null +++ b/include/boost/fusion/include/adapt_assoc_struct_named.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_NAMED_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_NAMED_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_class.hpp b/include/boost/fusion/include/adapt_class.hpp new file mode 100644 index 00000000..77f519be --- /dev/null +++ b/include/boost/fusion/include/adapt_class.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_CLASS_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_CLASS_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_class_named.hpp b/include/boost/fusion/include/adapt_class_named.hpp new file mode 100644 index 00000000..81136a1f --- /dev/null +++ b/include/boost/fusion/include/adapt_class_named.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_CLASS_NAMED_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_CLASS_NAMED_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapt_struct.hpp b/include/boost/fusion/include/adapt_struct.hpp index facc8970..c1271543 100644 --- a/include/boost/fusion/include/adapt_struct.hpp +++ b/include/boost/fusion/include/adapt_struct.hpp @@ -4,8 +4,9 @@ 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) ==============================================================================*/ -#if !defined(FUSION_INCLUDE_ADAPT_STRUCT) -#define FUSION_INCLUDE_ADAPT_STRUCT + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP #include diff --git a/include/boost/fusion/include/adapt_struct_named.hpp b/include/boost/fusion/include/adapt_struct_named.hpp new file mode 100644 index 00000000..01cbf329 --- /dev/null +++ b/include/boost/fusion/include/adapt_struct_named.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_NAMED_HPP +#define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_NAMED_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/adapted_class_named.cpp b/include/boost/fusion/include/adapted_class_named.cpp new file mode 100644 index 00000000..0002ad6f --- /dev/null +++ b/include/boost/fusion/include/adapted_class_named.cpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + + 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_ADAPT_CLASS_NAMED) +#define FUSION_INCLUDE_ADAPT_CLASS_NAMED + +#include + +#endif diff --git a/include/boost/fusion/include/boost_array.hpp b/include/boost/fusion/include/boost_array.hpp new file mode 100644 index 00000000..d2c2bed8 --- /dev/null +++ b/include/boost/fusion/include/boost_array.hpp @@ -0,0 +1,12 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#if !defined(FUSION_INCLUDE_BOOST_ARRAY) +#define FUSION_INCLUDE_BOOST_ARRAY + +#include + +#endif diff --git a/include/boost/fusion/include/define_assoc_struct.hpp b/include/boost/fusion/include/define_assoc_struct.hpp new file mode 100644 index 00000000..8b8ee261 --- /dev/null +++ b/include/boost/fusion/include/define_assoc_struct.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP +#define BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP + +#include + +#endif diff --git a/include/boost/fusion/include/define_struct.hpp b/include/boost/fusion/include/define_struct.hpp new file mode 100644 index 00000000..564f1c78 --- /dev/null +++ b/include/boost/fusion/include/define_struct.hpp @@ -0,0 +1,13 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#ifndef BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP +#define BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP + +#include + +#endif diff --git a/include/boost/fusion/iterator/advance.hpp b/include/boost/fusion/iterator/advance.hpp index 2cbafede..56ed60be 100644 --- a/include/boost/fusion/iterator/advance.hpp +++ b/include/boost/fusion/iterator/advance.hpp @@ -21,7 +21,7 @@ namespace boost { namespace fusion // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -51,7 +51,7 @@ namespace boost { namespace fusion }; template <> - struct advance_impl; + struct advance_impl; template <> struct advance_impl; diff --git a/include/boost/fusion/iterator/basic_iterator.hpp b/include/boost/fusion/iterator/basic_iterator.hpp index 80c7f646..33c514f3 100644 --- a/include/boost/fusion/iterator/basic_iterator.hpp +++ b/include/boost/fusion/iterator/basic_iterator.hpp @@ -95,11 +95,16 @@ namespace boost { namespace fusion template struct distance - : mpl::minus< - typename It2::index - , typename It1::index - > - {}; + { + typedef mpl::minus type; + + static + type + call(It1 const&, It2 const&) + { + return type(); + } + }; template struct equal_to diff --git a/include/boost/fusion/iterator/deref.hpp b/include/boost/fusion/iterator/deref.hpp index 0e6f54d2..2d5f04ee 100644 --- a/include/boost/fusion/iterator/deref.hpp +++ b/include/boost/fusion/iterator/deref.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion { // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -35,7 +35,7 @@ namespace boost { namespace fusion }; template <> - struct deref_impl; + struct deref_impl; template <> struct deref_impl; diff --git a/include/boost/fusion/iterator/distance.hpp b/include/boost/fusion/iterator/distance.hpp index 44fc4292..0cfa414d 100644 --- a/include/boost/fusion/iterator/distance.hpp +++ b/include/boost/fusion/iterator/distance.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -48,7 +48,7 @@ namespace boost { namespace fusion }; template <> - struct distance_impl; + struct distance_impl; template <> struct distance_impl; @@ -61,8 +61,8 @@ namespace boost { namespace fusion { template struct distance - : extension::distance_impl::type>:: - template apply + : extension::distance_impl::type>:: + template apply { typedef typename extension::distance_impl::type>:: template apply::type distance_application; diff --git a/include/boost/fusion/iterator/equal_to.hpp b/include/boost/fusion/iterator/equal_to.hpp index 2db27675..a0387417 100644 --- a/include/boost/fusion/iterator/equal_to.hpp +++ b/include/boost/fusion/iterator/equal_to.hpp @@ -18,7 +18,7 @@ namespace boost { namespace fusion { // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -42,7 +42,7 @@ namespace boost { namespace fusion }; template <> - struct equal_to_impl; + struct equal_to_impl; template <> struct equal_to_impl; diff --git a/include/boost/fusion/iterator/next.hpp b/include/boost/fusion/iterator/next.hpp index 9070a9e2..d2cf63dd 100644 --- a/include/boost/fusion/iterator/next.hpp +++ b/include/boost/fusion/iterator/next.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion { // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -34,7 +34,7 @@ namespace boost { namespace fusion }; template <> - struct next_impl; + struct next_impl; template <> struct next_impl; diff --git a/include/boost/fusion/iterator/prior.hpp b/include/boost/fusion/iterator/prior.hpp index 9a261039..a8b9fd64 100644 --- a/include/boost/fusion/iterator/prior.hpp +++ b/include/boost/fusion/iterator/prior.hpp @@ -13,7 +13,7 @@ namespace boost { namespace fusion { // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -34,7 +34,7 @@ namespace boost { namespace fusion }; template <> - struct prior_impl; + struct prior_impl; template <> struct prior_impl; diff --git a/include/boost/fusion/iterator/value_of.hpp b/include/boost/fusion/iterator/value_of.hpp index 808c6593..478e4d2b 100644 --- a/include/boost/fusion/iterator/value_of.hpp +++ b/include/boost/fusion/iterator/value_of.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion { // Special tags: struct iterator_facade_tag; // iterator facade tag - struct array_iterator_tag; // boost::array iterator tag + struct boost_array_iterator_tag; // boost::array iterator tag struct mpl_iterator_tag; // mpl sequence iterator tag struct std_pair_iterator_tag; // std::pair iterator tag @@ -35,7 +35,7 @@ namespace boost { namespace fusion }; template <> - struct value_of_impl; + struct value_of_impl; template <> struct value_of_impl; diff --git a/include/boost/fusion/sequence/comparison/detail/greater.hpp b/include/boost/fusion/sequence/comparison/detail/greater.hpp index 6807d367..e7b6a034 100644 --- a/include/boost/fusion/sequence/comparison/detail/greater.hpp +++ b/include/boost/fusion/sequence/comparison/detail/greater.hpp @@ -32,9 +32,8 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a > *b - || !(*b > *a) - && call(fusion::next(a), fusion::next(b)); + return *a > *b || + (!(*b > *a) && call(fusion::next(a), fusion::next(b))); } template diff --git a/include/boost/fusion/sequence/comparison/detail/less.hpp b/include/boost/fusion/sequence/comparison/detail/less.hpp index 0c457c41..a8b0ce84 100644 --- a/include/boost/fusion/sequence/comparison/detail/less.hpp +++ b/include/boost/fusion/sequence/comparison/detail/less.hpp @@ -32,9 +32,8 @@ namespace boost { namespace fusion { namespace detail static bool call(I1 const& a, I2 const& b, mpl::false_) { - return *a < *b - || !(*b < *a) - && call(fusion::next(a), fusion::next(b)); + return *a < *b || + (!(*b < *a) && call(fusion::next(a), fusion::next(b))); } template diff --git a/include/boost/fusion/sequence/intrinsic/at.hpp b/include/boost/fusion/sequence/intrinsic/at.hpp index bcb67990..9ccbfc64 100644 --- a/include/boost/fusion/sequence/intrinsic/at.hpp +++ b/include/boost/fusion/sequence/intrinsic/at.hpp @@ -17,7 +17,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -41,7 +41,7 @@ namespace boost { namespace fusion struct at_impl; template <> - struct at_impl; + struct at_impl; template <> struct at_impl; diff --git a/include/boost/fusion/sequence/intrinsic/at_key.hpp b/include/boost/fusion/sequence/intrinsic/at_key.hpp index 4c860bc1..30fefe01 100644 --- a/include/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/at_key.hpp @@ -18,7 +18,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -52,7 +52,7 @@ namespace boost { namespace fusion }; template <> - struct at_key_impl; + struct at_key_impl; template <> struct at_key_impl; diff --git a/include/boost/fusion/sequence/intrinsic/begin.hpp b/include/boost/fusion/sequence/intrinsic/begin.hpp index 715ef9e1..5dbe0c40 100644 --- a/include/boost/fusion/sequence/intrinsic/begin.hpp +++ b/include/boost/fusion/sequence/intrinsic/begin.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; // iterator facade tag struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -38,7 +38,7 @@ namespace boost { namespace fusion struct begin_impl; template <> - struct begin_impl; + struct begin_impl; template <> struct begin_impl; diff --git a/include/boost/fusion/sequence/intrinsic/end.hpp b/include/boost/fusion/sequence/intrinsic/end.hpp index 04232f12..98a554e3 100644 --- a/include/boost/fusion/sequence/intrinsic/end.hpp +++ b/include/boost/fusion/sequence/intrinsic/end.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -38,7 +38,7 @@ namespace boost { namespace fusion struct end_impl; template <> - struct end_impl; + struct end_impl; template <> struct end_impl; diff --git a/include/boost/fusion/sequence/intrinsic/has_key.hpp b/include/boost/fusion/sequence/intrinsic/has_key.hpp index 68582059..f254eb1e 100644 --- a/include/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/has_key.hpp @@ -19,7 +19,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -47,7 +47,7 @@ namespace boost { namespace fusion }; template <> - struct has_key_impl; + struct has_key_impl; template <> struct has_key_impl; diff --git a/include/boost/fusion/sequence/intrinsic/size.hpp b/include/boost/fusion/sequence/intrinsic/size.hpp index 74e3f53a..2a3cb7f8 100644 --- a/include/boost/fusion/sequence/intrinsic/size.hpp +++ b/include/boost/fusion/sequence/intrinsic/size.hpp @@ -15,7 +15,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -39,7 +39,7 @@ namespace boost { namespace fusion struct size_impl; template <> - struct size_impl; + struct size_impl; template <> struct size_impl; diff --git a/include/boost/fusion/sequence/intrinsic/value_at.hpp b/include/boost/fusion/sequence/intrinsic/value_at.hpp index d0868155..01cdc9d5 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at.hpp @@ -15,7 +15,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -39,7 +39,7 @@ namespace boost { namespace fusion struct value_at_impl; template <> - struct value_at_impl; + struct value_at_impl; template <> struct value_at_impl; diff --git a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp index 406d7ae2..d7f84cd9 100644 --- a/include/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/include/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -17,7 +17,7 @@ namespace boost { namespace fusion { // Special tags: struct sequence_facade_tag; - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -42,7 +42,7 @@ namespace boost { namespace fusion }; template <> - struct value_at_key_impl; + struct value_at_key_impl; template <> struct value_at_key_impl; diff --git a/include/boost/fusion/support/category_of.hpp b/include/boost/fusion/support/category_of.hpp index 8877b347..73def5b0 100644 --- a/include/boost/fusion/support/category_of.hpp +++ b/include/boost/fusion/support/category_of.hpp @@ -15,7 +15,7 @@ namespace boost { namespace fusion { // Special tags: struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -48,7 +48,7 @@ namespace boost { namespace fusion struct category_of_impl; template <> - struct category_of_impl; + struct category_of_impl; template <> struct category_of_impl; diff --git a/include/boost/fusion/support/ext_/is_segmented.hpp b/include/boost/fusion/support/ext_/is_segmented.hpp old mode 100755 new mode 100644 index 38def075..63330a4a --- a/include/boost/fusion/support/ext_/is_segmented.hpp +++ b/include/boost/fusion/support/ext_/is_segmented.hpp @@ -14,7 +14,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag struct iterator_range_tag; diff --git a/include/boost/fusion/support/is_sequence.hpp b/include/boost/fusion/support/is_sequence.hpp index 84dc2ec1..d57cecb4 100644 --- a/include/boost/fusion/support/is_sequence.hpp +++ b/include/boost/fusion/support/is_sequence.hpp @@ -19,7 +19,7 @@ namespace boost { namespace fusion // Special tags: struct non_fusion_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -43,7 +43,7 @@ namespace boost { namespace fusion struct is_sequence_impl; template <> - struct is_sequence_impl; + struct is_sequence_impl; template <> struct is_sequence_impl; @@ -56,8 +56,9 @@ namespace boost { namespace fusion { template struct is_sequence - : extension::is_sequence_impl::type>:: - template apply + : extension::is_sequence_impl< + typename fusion::detail::tag_of::type + >::template apply {}; } }} diff --git a/include/boost/fusion/support/is_view.hpp b/include/boost/fusion/support/is_view.hpp index a89291d1..e2cf6eb4 100644 --- a/include/boost/fusion/support/is_view.hpp +++ b/include/boost/fusion/support/is_view.hpp @@ -15,7 +15,7 @@ namespace boost { namespace fusion // Special tags: struct sequence_facade_tag; struct boost_tuple_tag; // boost::tuples::tuple tag - struct array_tag; // boost::array tag + struct boost_array_tag; // boost::array tag struct mpl_sequence_tag; // mpl sequence tag struct std_pair_tag; // std::pair tag @@ -41,7 +41,7 @@ namespace boost { namespace fusion struct is_view_impl; template <> - struct is_view_impl; + struct is_view_impl; template <> struct is_view_impl; diff --git a/include/boost/fusion/view/nview/nview.hpp b/include/boost/fusion/view/nview/nview.hpp index fe8d35cf..02422e0b 100644 --- a/include/boost/fusion/view/nview/nview.hpp +++ b/include/boost/fusion/view/nview/nview.hpp @@ -14,6 +14,8 @@ #include #include +#include +#include #include #include @@ -34,7 +36,7 @@ namespace boost { namespace fusion struct result : add_reference {}; template - typename boost::result_of::type + typename add_reference::type operator()(T& x) const { return x; @@ -52,11 +54,18 @@ namespace boost { namespace fusion {}; template - typename boost::result_of::type + typename add_reference::type>::type operator()(T& x) const { return x; } + + template + typename add_reference::type>::type + operator()(T const& x) const + { + return x; + } }; } diff --git a/test/Jamfile b/test/Jamfile index f8bfe077..2ddf7912 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -81,6 +81,7 @@ import testing ; [ run sequence/set.cpp : : : : ] [ run sequence/single_view.cpp : : : : ] [ run sequence/std_pair.cpp : : : : ] + [ run sequence/boost_array.cpp : : : : ] [ run sequence/array.cpp : : : : ] [ run sequence/tuple_comparison.cpp : : : : ] [ run sequence/tuple_construction.cpp : : : : ] @@ -107,9 +108,23 @@ import testing ; [ run sequence/zip_view_ignore.cpp : : : : ] [ run sequence/repetitive_view.cpp : : : : ] [ run sequence/deduce_sequence.cpp : : : : ] - [ run sequence/adapt_struct.cpp : : : : ] + [ run sequence/adapt_assoc_class_named.cpp : : : : ] + [ run sequence/adapt_assoc_class.cpp : : : : ] + [ run sequence/adapt_assoc_struct_named.cpp : : : : ] [ run sequence/adapt_assoc_struct.cpp : : : : ] - + [ run sequence/adapt_assoc_tpl_class.cpp : : : : ] + [ run sequence/adapt_assoc_tpl_struct.cpp : : : : ] + [ run sequence/adapt_class_named.cpp : : : : ] + [ run sequence/adapt_class.cpp : : : : ] + [ run sequence/adapt_struct_named.cpp : : : : ] + [ run sequence/adapt_struct.cpp : : : : ] + [ run sequence/adapt_tpl_class.cpp : : : : ] + [ run sequence/adapt_tpl_struct.cpp : : : : ] + [ run sequence/define_struct.cpp : : : : ] + [ run sequence/define_assoc_struct.cpp : : : : ] + [ run sequence/define_tpl_struct.cpp : : : : ] + [ run sequence/define_assoc_tpl_struct.cpp : : : : ] + [ run functional/fused.cpp : : : : ] [ run functional/fused_function_object.cpp : : : : ] [ run functional/fused_procedure.cpp : : : : ] diff --git a/test/sequence/adapt_assoc_class.cpp b/test/sequence/adapt_assoc_class.cpp new file mode 100644 index 00000000..cdbdd36b --- /dev/null +++ b/test/sequence/adapt_assoc_class.cpp @@ -0,0 +1,136 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; + + class point + { + public: + + point() : x(0), y(0) {} + point(int x, int y) : x(x), y(y) {} + + int get_x() const { return x; } + int get_y() const { return y; } + void set_x(int x_) { x = x_; } + void set_y(int y_) { y = y_; } + + private: + + int x; + int y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_CLASS( + ns::point, + (int, int, obj.get_x(), obj.set_x(val), ns::x_member) + (int, int, obj.get_y(), obj.set_y(val), ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + boost::fusion::vector v1(4, 2); + ns::point v2(5, 3); + boost::fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p(5, 3); + boost::fusion::vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p(5, 3); + boost::fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((boost::mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + boost::fusion::result_of::value_at_c::type + , boost::mpl::front::type>)); + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + ns::point p(5, 3); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_assoc_class_named.cpp b/test/sequence/adapt_assoc_class_named.cpp new file mode 100644 index 00000000..8f6ec592 --- /dev/null +++ b/test/sequence/adapt_assoc_class_named.cpp @@ -0,0 +1,142 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; + + class point + { + public: + + point() : x(0), y(0) {} + point(int x, int y) : x(x), y(y) {} + + int get_x() const { return x; } + int get_y() const { return y; } + void set_x(int x_) { x = x_; } + void set_y(int y_) { y = y_; } + + private: + + int x; + int y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_CLASS_NAMED( + ns::point, + point, + (int, int, obj.obj.get_x(), obj.obj.set_x(val), ns::x_member) + (int, int, obj.obj.get_y(), obj.obj.set_y(val), ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point basep(123, 456); + adapted::point p(basep); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + boost::fusion::vector v1(4, 2); + ns::point basev2(5, 3); + adapted::point v2(basev2); + boost::fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from adapted::point to vector + ns::point basep(5, 3); + adapted::point p(basep); + boost::fusion::vector v(p); + v = p; + } + + { + // conversion from adated::point to list + ns::point basep(5, 3); + adapted::point p(basep); + boost::fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((boost::mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + boost::fusion::result_of::value_at_c::type + , boost::mpl::front::type>)); + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + ns::point basep(5, 3); + adapted::point p(basep); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_assoc_struct.cpp b/test/sequence/adapt_assoc_struct.cpp index 7fe5e35b..b9000bbd 100644 --- a/test/sequence/adapt_assoc_struct.cpp +++ b/test/sequence/adapt_assoc_struct.cpp @@ -121,8 +121,8 @@ main() BOOST_MPL_ASSERT((fusion::result_of::has_key)); BOOST_MPL_ASSERT((mpl::not_ >)); - BOOST_MPL_ASSERT((is_same::type, int>)); - BOOST_MPL_ASSERT((is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); ns::point p = {5, 3}; diff --git a/test/sequence/adapt_assoc_struct_named.cpp b/test/sequence/adapt_assoc_struct_named.cpp new file mode 100644 index 00000000..2cbf2f53 --- /dev/null +++ b/test/sequence/adapt_assoc_struct_named.cpp @@ -0,0 +1,121 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; + + struct point + { + int x; + int y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED( + ns::point, + point, + (int, x, ns::x_member) + (int, y, ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point basep = {123, 456}; + adapted::point p(basep); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + ns::point basev2 = {5, 3}; + adapted::point v2(basev2); + + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from adapted::point to vector + ns::point basep = {5, 3}; + adapted::point p(basep); + vector v(p); + v = p; + } + + { + // conversion from adapted::point to list + ns::point basep = {5, 3}; + adapted::point p(basep); + list l(p); + l = p; + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + ns::point basep = {5, 3}; + adapted::point p(basep); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_assoc_tpl_class.cpp b/test/sequence/adapt_assoc_tpl_class.cpp new file mode 100644 index 00000000..31a37d4c --- /dev/null +++ b/test/sequence/adapt_assoc_tpl_class.cpp @@ -0,0 +1,140 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; + + template + class point + { + public: + + point() : x(0), y(0) {} + point(X x, Y y) : x(x), y(y) {} + + X get_x() const { return x; } + Y get_y() const { return y; } + void set_x(X x_) { x = x_; } + void set_y(Y y_) { y = y_; } + + private: + + X x; + Y y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_TPL_CLASS( + (X)(Y), + (ns::point)(X)(Y), + (X, X, obj.get_x(), obj.set_x(val), ns::x_member) + (Y, Y, obj.get_y(), obj.set_y(val), ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + using namespace std; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + boost::fusion::vector v1(4, 2); + point v2(5, 3); + boost::fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p(5, 3); + boost::fusion::vector v(p); + v = p; + } + + { + // conversion from point to list + point p(5, 3); + boost::fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((boost::mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + boost::fusion::result_of::value_at_c::type + , boost::mpl::front::type>)); + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + point p(5, 3); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_assoc_tpl_struct.cpp b/test/sequence/adapt_assoc_tpl_struct.cpp new file mode 100644 index 00000000..b148c22b --- /dev/null +++ b/test/sequence/adapt_assoc_tpl_struct.cpp @@ -0,0 +1,133 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; + + template + struct point + { + X x; + Y y; + }; +} + +BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT( + (X)(Y), + (ns::point)(X)(Y), + (int, x, ns::x_member) + (int, y, ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p = {123, 456}; + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + point v2 = {5, 3}; + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p = {5, 3}; + vector v(p); + v = p; + } + + { + // conversion from point to list + point p = {5, 3}; + list l(p); + l = p; + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + point p = {5, 3}; + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_class.cpp b/test/sequence/adapt_class.cpp new file mode 100644 index 00000000..d0081808 --- /dev/null +++ b/test/sequence/adapt_class.cpp @@ -0,0 +1,129 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + class point + { + public: + + point() : x(0), y(0) {} + point(int x, int y) : x(x), y(y) {} + + int get_x() const { return x; } + int get_y() const { return y; } + void set_x(int x_) { x = x_; } + void set_y(int y_) { y = y_; } + + private: + + int x; + int y; + }; +} + +BOOST_FUSION_ADAPT_CLASS( + ns::point, + (int, int, obj.get_x(), obj.set_x(val)) + (int, int, obj.get_y(), obj.set_y(val)) +) + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + fusion::vector v1(4, 2); + ns::point v2(5, 3); + fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p(5, 3); + fusion::vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p(5, 3); + fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::result_of::value_at_c::type + , mpl::front::type>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_class_named.cpp b/test/sequence/adapt_class_named.cpp new file mode 100644 index 00000000..a67d68da --- /dev/null +++ b/test/sequence/adapt_class_named.cpp @@ -0,0 +1,137 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + class point + { + public: + + point() : x(0), y(0) {} + point(int x, int y) : x(x), y(y) {} + + int get_x() const { return x; } + int get_y() const { return y; } + void set_x(int x_) { x = x_; } + void set_y(int y_) { y = y_; } + + private: + + int x; + int y; + }; +} + +// this creates a fusion view: boost::fusion::adapted::point +BOOST_FUSION_ADAPT_CLASS_NAMED( + ns::point, point, + (int, int, obj.obj.get_x(), obj.obj.set_x(val)) + (int, int, obj.obj.get_y(), obj.obj.set_y(val)) +) + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point basep(123, 456); + adapted::point p(basep); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + fusion::vector v1(4, 2); + ns::point basep(5, 3); + adapted::point v2(basep); + + fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point basep(5, 3); + adapted::point p(basep); + + fusion::vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point basep(5, 3); + adapted::point p(basep); + + fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::result_of::value_at_c::type + , mpl::front::type>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_struct_named.cpp b/test/sequence/adapt_struct_named.cpp new file mode 100644 index 00000000..8dabc56c --- /dev/null +++ b/test/sequence/adapt_struct_named.cpp @@ -0,0 +1,138 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct point + { + int x; + int y; + }; +} + +// this creates a fusion view: boost::fusion::adapted::point +BOOST_FUSION_ADAPT_STRUCT_NAMED( + ns::point, point, + (int, x) + (int, y) +) + +// this creates a fusion view: ns1::s1 +struct s { int m; }; +BOOST_FUSION_ADAPT_STRUCT_NAMED_NS(s, (ns1), s1, (int, m)) + +int +main() +{ + using namespace boost::fusion; + using namespace boost; + using namespace std; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point basep = {123, 456}; + adapted::point p(basep); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + fusion::vector v1(4, 2); + ns::point p = {5, 3}; + adapted::point v2(p); + + fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from adapted::point to vector + ns::point basep = {5, 3}; + adapted::point p(basep); + fusion::vector v(p); + v = p; + } + + { + // conversion from adapted::point to list + ns::point basep = {5, 3}; + adapted::point p(basep); + fusion::list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + using boost::is_same; + + typedef result_of::begin::type b; + typedef result_of::end::type e; + // this fails + BOOST_MPL_ASSERT((is_same::type, e>)); + } + + + { + BOOST_MPL_ASSERT((mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + fusion::result_of::value_at_c::type + , mpl::front::type>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_tpl_class.cpp b/test/sequence/adapt_tpl_class.cpp new file mode 100644 index 00000000..7a1b0be9 --- /dev/null +++ b/test/sequence/adapt_tpl_class.cpp @@ -0,0 +1,133 @@ +/*============================================================================= + Copyright (c) 2001-2009 Joel de Guzman + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + template + class point + { + public: + + point() : x(0), y(0) {} + point(X x, Y y) : x(x), y(y) {} + + X get_x() const { return x; } + Y get_y() const { return y; } + void set_x(X x_) { x = x_; } + void set_y(Y y_) { y = y_; } + + private: + + X x; + Y y; + }; +} + +BOOST_FUSION_ADAPT_TPL_CLASS( + (X)(Y), + (ns::point)(X)(Y), + (X, X, obj.get_x(), obj.set_x(val)) + (Y, Y, obj.get_y(), obj.set_y(val)) +) + +int +main() +{ + using namespace boost::fusion; + using namespace std; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + boost::fusion::vector v1(4, 2); + point v2(5, 3); + boost::fusion::vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p(5, 3); + boost::fusion::vector v(p); + v = p; + } + + { + // conversion from point to list + point p(5, 3); + boost::fusion::list l(p); + l = p; + } + + { + BOOST_MPL_ASSERT((boost::mpl::is_sequence)); + BOOST_MPL_ASSERT((boost::is_same< + boost::fusion::result_of::value_at_c::type + , boost::mpl::front::type>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/adapt_tpl_struct.cpp b/test/sequence/adapt_tpl_struct.cpp new file mode 100644 index 00000000..13e4446c --- /dev/null +++ b/test/sequence/adapt_tpl_struct.cpp @@ -0,0 +1,122 @@ +/*============================================================================= + Copyright (c) 2001-2007 Joel de Guzman + + 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) +==============================================================================*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + template + struct point + { + X x; + Y y; + }; +} + +BOOST_FUSION_ADAPT_TPL_STRUCT( + (X)(Y), + (ns::point)(X)(Y), + (X, x) + (Y, y) +) + +template +struct s { M m; }; +BOOST_FUSION_ADAPT_TPL_STRUCT((M), (s)(M), (M, m)) + +int +main() +{ + using namespace boost::fusion; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p = {123, 456}; + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + point v2 = {5, 3}; + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p = {5, 3}; + vector v(p); + v = p; + } + + { + // conversion from point to list + point p = {5, 3}; + list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + + typedef result_of::begin >::type b; + typedef result_of::end >::type e; + // this fails + BOOST_MPL_ASSERT((boost::is_same::type, e>)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/array.cpp b/test/sequence/array.cpp index 07b5f48e..15b4ed89 100644 --- a/test/sequence/array.cpp +++ b/test/sequence/array.cpp @@ -1,6 +1,5 @@ /*============================================================================= - Copyright (c) 2001-2006 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt 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) @@ -9,28 +8,22 @@ #include #include -#include - #include +#include #include #include -#include -#include -#include -#include #include -#include int main() { using namespace boost::fusion; - typedef boost::array array_type; + typedef int array_type[3]; BOOST_MPL_ASSERT((traits::is_sequence)); BOOST_MPL_ASSERT_NOT((traits::is_view)); - array_type arr = {{1,2,3}}; + array_type arr = {1,2,3}; BOOST_TEST(*begin(arr) == 1); BOOST_TEST(*next(begin(arr)) == 2); @@ -41,8 +34,6 @@ int main() BOOST_TEST(size(arr) == 3); BOOST_TEST(distance(begin(arr), end(arr)) == 3); - BOOST_MPL_ASSERT((boost::mpl::is_sequence)); - BOOST_MPL_ASSERT((boost::is_same::type>)); - return boost::report_errors(); } + diff --git a/test/sequence/boost_array.cpp b/test/sequence/boost_array.cpp new file mode 100644 index 00000000..fbe11761 --- /dev/null +++ b/test/sequence/boost_array.cpp @@ -0,0 +1,42 @@ +/*============================================================================= + Copyright (c) 2001-2006 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +int main() +{ + using namespace boost::fusion; + typedef boost::array array_type; + + BOOST_MPL_ASSERT((traits::is_sequence)); + BOOST_MPL_ASSERT_NOT((traits::is_view)); + + array_type arr = {{1,2,3}}; + + BOOST_TEST(*begin(arr) == 1); + BOOST_TEST(*next(begin(arr)) == 2); + BOOST_TEST(*advance_c<2>(begin(arr)) == 3); + BOOST_TEST(prior(next(begin(arr))) == begin(arr)); + BOOST_TEST(*prior(end(arr)) == 3); + BOOST_TEST(at_c<2>(arr) == 3); + BOOST_TEST(size(arr) == 3); + BOOST_TEST(distance(begin(arr), end(arr)) == 3); + + return boost::report_errors(); +} diff --git a/test/sequence/define_assoc_struct.cpp b/test/sequence/define_assoc_struct.cpp new file mode 100644 index 00000000..bacc0bff --- /dev/null +++ b/test/sequence/define_assoc_struct.cpp @@ -0,0 +1,114 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; +} + +BOOST_FUSION_DEFINE_ASSOC_STRUCT( + (ns), + point, + (int, x, ns::x_member) + (int, y, ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + ns::point v2(5, 3); + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p(5, 3); + list l(p); + l = p; + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + ns::point p(5, 3); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + { + ns::point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/define_assoc_tpl_struct.cpp b/test/sequence/define_assoc_tpl_struct.cpp new file mode 100644 index 00000000..88623bcb --- /dev/null +++ b/test/sequence/define_assoc_tpl_struct.cpp @@ -0,0 +1,118 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ns +{ + struct x_member; + struct y_member; + struct z_member; +} + +BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT( + (X)(Y), + (ns), + point, + (int, x, ns::x_member) + (int, y, ns::y_member) +) + +int +main() +{ + using namespace boost::fusion; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + point v2(5, 3); + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from point to list + point p(5, 3); + list l(p); + l = p; + } + + { + // assoc stuff + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((result_of::has_key)); + BOOST_MPL_ASSERT((boost::mpl::not_ >)); + + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + BOOST_MPL_ASSERT((boost::is_same::type, int>)); + + point p(5, 3); + + BOOST_TEST(at_key(p) == 5); + BOOST_TEST(at_key(p) == 3); + } + + { + point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/define_struct.cpp b/test/sequence/define_struct.cpp new file mode 100644 index 00000000..8aa535e8 --- /dev/null +++ b/test/sequence/define_struct.cpp @@ -0,0 +1,105 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +BOOST_FUSION_DEFINE_STRUCT( + (ns), + point, + (int, x) + (int, y) +) + +BOOST_FUSION_DEFINE_STRUCT(BOOST_PP_EMPTY(), s, (int, m)) + +int +main() +{ + using namespace boost::fusion; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + ns::point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + ns::point v2(5, 3); + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from ns::point to vector + ns::point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from ns::point to list + ns::point p(5, 3); + list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + + typedef result_of::begin::type b; + typedef result_of::end::type e; + // this fails + BOOST_MPL_ASSERT((boost::is_same::type, e>)); + } + + { + ns::point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/define_tpl_struct.cpp b/test/sequence/define_tpl_struct.cpp new file mode 100644 index 00000000..58c1758b --- /dev/null +++ b/test/sequence/define_tpl_struct.cpp @@ -0,0 +1,109 @@ +/*============================================================================= + Copyright (c) 2010 Christopher Schmidt + + 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) +==============================================================================*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +BOOST_FUSION_DEFINE_TPL_STRUCT( + (X)(Y), + (ns), + point, + (X, x) + (Y, y) +) + +BOOST_FUSION_DEFINE_TPL_STRUCT((M), BOOST_PP_EMPTY(), s, (M, m)) + +int +main() +{ + using namespace boost::fusion; + + typedef ns::point point; + + std::cout << tuple_open('['); + std::cout << tuple_close(']'); + std::cout << tuple_delimiter(", "); + + { + BOOST_MPL_ASSERT_NOT((traits::is_view)); + point p(123, 456); + + std::cout << at_c<0>(p) << std::endl; + std::cout << at_c<1>(p) << std::endl; + std::cout << p << std::endl; + BOOST_TEST(p == make_vector(123, 456)); + + at_c<0>(p) = 6; + at_c<1>(p) = 9; + BOOST_TEST(p == make_vector(6, 9)); + + BOOST_STATIC_ASSERT(result_of::size::value == 2); + BOOST_STATIC_ASSERT(!result_of::empty::value); + + BOOST_TEST(front(p) == 6); + BOOST_TEST(back(p) == 9); + } + + { + vector v1(4, 2); + point v2(5, 3); + vector v3(5, 4); + BOOST_TEST(v1 < v2); + BOOST_TEST(v1 <= v2); + BOOST_TEST(v2 > v1); + BOOST_TEST(v2 >= v1); + BOOST_TEST(v2 < v3); + BOOST_TEST(v2 <= v3); + BOOST_TEST(v3 > v2); + BOOST_TEST(v3 >= v2); + } + + { + // conversion from point to vector + point p(5, 3); + vector v(p); + v = p; + } + + { + // conversion from point to list + point p(5, 3); + list l(p); + l = p; + } + + { // begin/end + using namespace boost::fusion; + + typedef result_of::begin >::type b; + typedef result_of::end >::type e; + // this fails + BOOST_MPL_ASSERT((boost::is_same::type, e>)); + } + + + { + point p = make_list(5,3); + BOOST_TEST(p == make_vector(5,3)); + + p = make_list(3,5); + BOOST_TEST(p == make_vector(3,5)); + } + + return boost::report_errors(); +} + diff --git a/test/sequence/vector_n.cpp b/test/sequence/vector_n.cpp index f041bac8..a536affb 100644 --- a/test/sequence/vector_n.cpp +++ b/test/sequence/vector_n.cpp @@ -45,7 +45,7 @@ main() BOOST_STATIC_ASSERT(result_of::size::value == 1); BOOST_TEST(at_c<0>(vec) == 0); - BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); // prove that it is mutable at_c<0>(vec) = 987; @@ -82,8 +82,8 @@ main() BOOST_TEST(at_c<0>(vec) == 0); BOOST_TEST(at_c<1>(vec) == char()); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); } { @@ -109,9 +109,9 @@ main() BOOST_TEST(at_c<1>(vec) == char()); BOOST_TEST(at_c<2>(vec) == double()); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); } { @@ -147,13 +147,13 @@ main() BOOST_TEST(at_c<5>(vec) >= 5.9 && at_c<5>(vec) <= 6.1); BOOST_TEST(at_c<6>(vec) >= 6.9 && at_c<6>(vec) <= 7.1); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); - BOOST_STATIC_ASSERT((is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); + BOOST_STATIC_ASSERT((boost::is_same::type>::value)); cout << "(bool, char, short, int, long, float, double): " << sizeof(vec) << endl; }