2021-10-05 21:37:46 +02:00

435 lines
15 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Version 1.7 to 1.8 conversion</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.10">
<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.10">
<link rel="prev" href="vmd_vc_isms.html" title="Visual C++ gotchas in VMD">
<link rel="next" href="vmd_examples.html" title="Examples using VMD functionality">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="vmd_vc_isms.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_examples.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="variadic_macro_data.vmd_conv"></a><a class="link" href="vmd_conv.html" title="Version 1.7 to 1.8 conversion">Version 1.7 to 1.8 conversion</a>
</h2></div></div></div>
<p>
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.
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h0"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.identifier"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.identifier">Identifier</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_ONLY_AFTER)
is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_IDENTIFIER(sequence,keys,...) returns 1 if input begins
with an identifier, else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h1"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.number"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.number">Number</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_AFTER) is
the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER) is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_ONLY_AFTER)
is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_NUMBER(sequence,...) returns 1 if input begins with a number,
else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h2"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.array"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.array">Array</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_AFTER) is the
exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY) is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_ONLY_AFTER)
is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_ARRAY(sequence,...) returns 1 if input begins with an array,
else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h3"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.list"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.list">List</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_AFTER) is the
exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST) is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_ONLY_AFTER)
is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_LIST(sequence,...) returns 1 if input begins with an list,
else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h4"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.seq"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.seq">Seq</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_AFTER) is the
exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ) is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_ONLY_AFTER) is
the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_SEQ(sequence,...) returns 1 if input begins with an seq,
else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
<h4>
<a name="variadic_macro_data.vmd_conv.h5"></a>
<span class="phrase"><a name="variadic_macro_data.vmd_conv.tuple"></a></span><a class="link" href="vmd_conv.html#variadic_macro_data.vmd_conv.tuple">Tuple</a>
</h4>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_AFTER) is the
exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE) is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
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.
</p>
<p>
V1.8 equivalent
</p>
<p>
BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_ONLY_AFTER)
is the exact equivalent.
</p>
<p>
V1.7
</p>
<p>
BOOST_VMD_IS_BEGIN_TUPLE(sequence,...) returns 1 if input begins with an tuple,
else 0 if it does not.
</p>
<p>
V1.8 equivalent
</p>
<p>
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.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2010-2017 Tropic Software
East Inc</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="vmd_vc_isms.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="vmd_examples.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>