| Home | Libraries | People | FAQ | More

## Version 1.7 to 1.8 conversion

Since the current version of VMD has been drastically changed to make it easier to use VMD functionality this section details equivalent functionality for previous version 1.7 VMD macros.

The changes in functionality involve the parsing of sequences. The equivalent to all the V1.7 functionality, which looks for various data types at the beginning of a sequence, is encompassed by the V1.8 macro BOOST_VMD_ELEM(0,sequence,...), where '0' is the first sequence element and 'sequence' is the sequence, with its optional parameters.

#### Identifier

V1.7

BOOST_VMD_IDENTIFIER(sequence,keys,...) looked for an identifier at the beginning of a sequence and returned a 2-element tuple, where the first element is the matching index starting with 1, or 0 if no identifier is found, and the second tuple element is the rest of the sequence or emptiness if no identifier is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_AFTER,BOOST_VMD_RETURN_INDEX) returns a 3-element tuple where the identifier found is the first tuple element, the rest of the sequence is the second tuple element, and the matching index, starting with 0, is the 3rd tuple element. If no identifier is found all elements of the returned tuple are empty.

V1.7

BOOST_VMD_BEGIN_IDENTIFIER(sequence,keys,...) looked for an identifier at the beginning of a sequence and returned the matching index starting with 1, or 0 if no identifier is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_INDEX) returns a 2-element tuple where the identifier found is the first tuple element and the matching index, starting with 0, is the 2nd tuple element. If no identifier is found both elements of the returned tuple are empty.

V1.7

BOOST_VMD_AFTER_IDENTIFIER(sequence,keys,...) looked for an identifier at the beginning of a sequence and returned the rest of the sequence or emptiness if no identifier is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_IDENTIFIER(sequence,keys,...) returns 1 if input begins with an identifier, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER) returns the identifier found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,identifiers,BOOST_VMD_TYPE_IDENTIFIER))) as the exact equivalent.

#### Number

V1.7

BOOST_VMD_NUMBER(sequence,...) looked for a number at the beginning of a sequence and returned a 2-element tuple, where the first element is the number and the second tuple element is the rest of the sequence. If no number is found both tuple elements are empty.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_BEGIN_NUMBER(sequence,...) looked for a number at the beginning of a sequence and returned the number if found or emptiness if no number is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER) is the exact equivalent.

V1.7

BOOST_VMD_AFTER_NUMBER(sequence,...) looked for a number at the beginning of a sequence and returned the rest of the sequence or emptiness if no number is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_NUMBER(sequence,...) returns 1 if input begins with a number, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER) returns the number found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER))) as the exact equivalent.

#### Array

V1.7

BOOST_VMD_ARRAY(sequence) looked for an array at the beginning of a sequence and returned a 2-element tuple, where the first element is the array and the second tuple element is the rest of the sequence. If no array is found both tuple elements are empty.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_BEGIN_ARRAY(sequence) looked for an array at the beginning of a sequence and returned the array if found or emptiness if no array is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY) is the exact equivalent.

V1.7

BOOST_VMD_AFTER_ARRAY(sequence) looked for an array at the beginning of a sequence and returned the rest of the sequence or emptiness if no array is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_ARRAY(sequence,...) returns 1 if input begins with an array, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY) returns the array found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY))) as the exact equivalent.

#### List

V1.7

BOOST_VMD_LIST(sequence) looked for an list at the beginning of a sequence and returned a 2-element tuple, where the first element is the list and the second tuple element is the rest of the sequence. If no list is found both tuple elements are empty.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_BEGIN_LIST(sequence) looked for a list at the beginning of a sequence and returned the list if found or emptiness if no list is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST) is the exact equivalent.

V1.7

BOOST_VMD_AFTER_LIST(sequence) looked for an list at the beginning of a sequence and returned the rest of the sequence or emptiness if no list is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_LIST(sequence,...) returns 1 if input begins with an list, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST) returns the list found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST))) as the exact equivalent.

#### Seq

V1.7

BOOST_VMD_SEQ(sequence) looked for a seq at the beginning of a sequence and returned a 2-element tuple, where the first element is the seq and the second tuple element is the rest of the sequence. If no seq is found both tuple elements are empty.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_BEGIN_SEQ(sequence) looked for a seq at the beginning of a sequence and returned the seq if found or emptiness if no seq is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ) is the exact equivalent.

V1.7

BOOST_VMD_AFTER_SEQ(sequence) looked for an seq at the beginning of a sequence and returned the rest of the sequence or emptiness if no seq is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_SEQ(sequence,...) returns 1 if input begins with an seq, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ) returns the seq found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ))) as the exact equivalent.

#### Tuple

V1.7

BOOST_VMD_TUPLE(sequence) looked for an tuple at the beginning of a sequence and returned a 2-element tuple, where the first element is the tuple and the second tuple element is the rest of the sequence. If no tuple is found both tuple elements are empty.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_BEGIN_TUPLE(sequence) looked for a tuple at the beginning of a sequence and returned the tuple if found or emptiness if no tuple is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE) is the exact equivalent.

V1.7

BOOST_VMD_AFTER_TUPLE(sequence) looked for an tuple at the beginning of a sequence and returned the rest of the sequence or emptiness if no tuple is found.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_ONLY_AFTER) is the exact equivalent.

V1.7

BOOST_VMD_IS_BEGIN_TUPLE(sequence,...) returns 1 if input begins with an tuple, else 0 if it does not.

V1.8 equivalent

BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE) returns the tuple found, otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE))) as the exact equivalent.