Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

BOOST_FUSION_ADAPT_ASSOC_STRUCT

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.

Synopsis
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
    struct_name
    (member_type0, member_name0, key_type0)
    (member_type1, member_name1, key_type1)
    ...
    )
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>

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))

PrevUpHomeNext