forked from boostorg/fusion
merge from trunk
[SVN r42226]
This commit is contained in:
@ -426,7 +426,7 @@ The user must the implement the key expressions required by their sequence type.
|
||||
#include <boost/fusion/include/sequence_facade.hpp>
|
||||
|
||||
[heading Example]
|
||||
A full worked example using __sequence_facade__ is provided in triple.cpp in the extension examples.
|
||||
A full working example using __sequence_facade__ is provided in triple.cpp in the extension examples.
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -475,122 +475,7 @@ The user must the implement the key expressions required by their iterator type.
|
||||
#include <boost/fusion/include/iterator_facade.hpp>
|
||||
|
||||
[heading Example]
|
||||
A full worked example using __iterator_facade__ is provided in triple.cpp in the extension examples.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Macros]
|
||||
|
||||
[section:adapt_struct BOOST_FUSION_ADAPT_STRUCT]
|
||||
|
||||
[heading Description]
|
||||
BOOST_FUSION_ADAPT_STRUCT is a macro that can be used to generate all the
|
||||
necessary boilerplate to make an arbitrary struct into a __random_access_sequence__.
|
||||
|
||||
[heading Synopsis]
|
||||
BOOST_FUSION_ADAPT_STRUCT(
|
||||
struct_name
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
...
|
||||
)
|
||||
|
||||
[heading Semantics]
|
||||
BOOST_FUSION_ADAPT_STRUCT(
|
||||
struct_name,
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
...
|
||||
)
|
||||
|
||||
The above macro generates the necessary code to adapt `struct_name`
|
||||
as a model of __random_access_sequence__. 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 macro should be used at global scope, and `struct_name` should be the fully
|
||||
namespace qualified name of the struct to be converted.
|
||||
|
||||
/adapted/struct/adapt_struct.hpp>
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
struct employee
|
||||
{
|
||||
std::string name;
|
||||
int age;
|
||||
};
|
||||
}
|
||||
|
||||
// demo::employee is now a Fusion sequence
|
||||
BOOST_FUSION_ADAPT_STRUCT(
|
||||
demo::employee
|
||||
(std::string, name)
|
||||
(int, age))
|
||||
|
||||
[endsect]
|
||||
|
||||
[section:adapt_assoc BOOST_FUSION_ADAPT_ASSOC_STRUCT]
|
||||
|
||||
[heading Description]
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT is a macro that can be used to generate all the
|
||||
necessary boilerplate to make an arbitrary struct into a model of __random_access_sequence__
|
||||
and __associative_sequence__.
|
||||
|
||||
[heading Synopsis]
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
|
||||
struct_name
|
||||
(member_type0, member_name0, key_type0)
|
||||
(member_type1, member_name1, key_type1)
|
||||
...
|
||||
)
|
||||
|
||||
[heading Semantics]
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
|
||||
struct_name
|
||||
(member_type0, member_name0, key_type0)
|
||||
(member_type1, member_name1, key_type1)
|
||||
...
|
||||
)
|
||||
|
||||
The above macro generates the necessary code to adapt `struct_name`
|
||||
as a model of __random_access_sequence__ and __associative_sequence__.
|
||||
The sequence of `(member_typeN, member_nameN, key_typeN)`
|
||||
triples declare the type, name and key type of each of the struct members
|
||||
that will be part of the sequence.
|
||||
|
||||
The macro should be used at global scope, and `struct_name` should be the fully
|
||||
namespace qualified name of the struct to be converted.
|
||||
|
||||
/adapted/struct/adapt_assoc_struct.hpp>
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
struct employee
|
||||
{
|
||||
std::string name;
|
||||
int age;
|
||||
};
|
||||
}
|
||||
|
||||
namespace keys
|
||||
{
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
// demo::employee is now a Fusion sequence
|
||||
// It is also an associative sequence with
|
||||
// keys keys::name and keys::age present.
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
|
||||
demo::employee
|
||||
(std::string, name, keys::name)
|
||||
(int, age, keys::age))
|
||||
|
||||
|
||||
[endsect]
|
||||
A full working example using __iterator_facade__ is provided in triple.cpp in the extension examples.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
Reference in New Issue
Block a user