| Home | Libraries | People | FAQ | More

#### Summing up the generic macros

The VMD generic macros work with VMD sequences, which represent any VMD data. The macros are represented by this table:

Table 1.3. Generic sequence macros

Name | Function
--- | ---
BOOST_VMD_IS_EMPTY | Tests if the sequence is empty
BOOST_VMD_IS_UNARY | Tests if the sequence has a single element
BOOST_VMD_IS_MULTI | Tests if the sequence has more than one element
BOOST_VMD_SIZE | Returns the number of elements in the sequence
BOOST_VMD_TO_ARRAY | Converts a sequence to a Boost PP array
BOOST_VMD_TO_LIST | Converts a sequence to a Boost PP list
BOOST_VMD_TO_SEQ | Converts a sequence to a Boost PP seq
BOOST_VMD_TO_TUPLE | Converts a sequence to a Boost PP tuple
BOOST_VMD_ENUM | Converts a sequence to variadic data
BOOST_VMD_ELEM | Returns a sequence element
BOOST_VMD_GET_TYPE | Returns the type of a sequence
BOOST_VMD_EQUAL | Tests two sequences for equality
BOOST_VMD_NOT_EQUAL | Tests two sequences for inequality

- For all generic macros the top-level data types must be VMD data types.
- For the BOOST_VMD_EQUAL and BOOST_VMD_NOT_EQUAL macros all data types must be VMD data types
- Except for the BOOST_VMD_IS_EMPTY macro, which is really a specific macro which also works generically with sequences, identifiers must be specific identifiers, ie. identifiers must be registered to be used with generic macros and sequences. For the BOOST_VMD_EQUAL and BOOST_VMD_NOT_EQUAL macros specific identifiers must also be pre-detected.