1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Version 1.7 to 1.8 conversion</title> 5<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.9"> 8<link rel="up" href="../index.html" title="Chapter 1. The Variadic Macro Data Library 1.9"> 9<link rel="prev" href="vmd_vc_isms.html" title="Visual C++ gotchas in VMD"> 10<link rel="next" href="vmd_examples.html" title="Examples using VMD functionality"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<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> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h2 class="title" style="clear: both"> 27<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> 28</h2></div></div></div> 29<p> 30 Since the current version of VMD has been drastically changed to make it easier 31 to use VMD functionality this section details equivalent functionality for 32 previous version 1.7 VMD macros. 33 </p> 34<p> 35 The changes in functionality involve the parsing of sequences. The equivalent 36 to all the V1.7 functionality, which looks for various data types at the beginning 37 of a sequence, is encompassed by the V1.8 macro BOOST_VMD_ELEM(0,sequence,...), 38 where '0' is the first sequence element and 'sequence' is the sequence, with 39 its optional parameters. 40 </p> 41<h4> 42<a name="variadic_macro_data.vmd_conv.h0"></a> 43 <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> 44 </h4> 45<p> 46 V1.7 47 </p> 48<p> 49 BOOST_VMD_IDENTIFIER(sequence,keys,...) looked for an identifier at the beginning 50 of a sequence and returned a 2-element tuple, where the first element is the 51 matching index starting with 1, or 0 if no identifier is found, and the second 52 tuple element is the rest of the sequence or emptiness if no identifier is 53 found. 54 </p> 55<p> 56 V1.8 equivalent 57 </p> 58<p> 59 BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_AFTER,BOOST_VMD_RETURN_INDEX) 60 returns a 3-element tuple where the identifier found is the first tuple element, 61 the rest of the sequence is the second tuple element, and the matching index, 62 starting with 0, is the 3rd tuple element. If no identifier is found all elements 63 of the returned tuple are empty. 64 </p> 65<p> 66 V1.7 67 </p> 68<p> 69 BOOST_VMD_BEGIN_IDENTIFIER(sequence,keys,...) looked for an identifier at the 70 beginning of a sequence and returned the matching index starting with 1, or 71 0 if no identifier is found. 72 </p> 73<p> 74 V1.8 equivalent 75 </p> 76<p> 77 BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_INDEX) 78 returns a 2-element tuple where the identifier found is the first tuple element 79 and the matching index, starting with 0, is the 2nd tuple element. If no identifier 80 is found both elements of the returned tuple are empty. 81 </p> 82<p> 83 V1.7 84 </p> 85<p> 86 BOOST_VMD_AFTER_IDENTIFIER(sequence,keys,...) looked for an identifier at the 87 beginning of a sequence and returned the rest of the sequence or emptiness 88 if no identifier is found. 89 </p> 90<p> 91 V1.8 equivalent 92 </p> 93<p> 94 BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER,BOOST_VMD_RETURN_ONLY_AFTER) 95 is the exact equivalent. 96 </p> 97<p> 98 V1.7 99 </p> 100<p> 101 BOOST_VMD_IS_BEGIN_IDENTIFIER(sequence,keys,...) returns 1 if input begins 102 with an identifier, else 0 if it does not. 103 </p> 104<p> 105 V1.8 equivalent 106 </p> 107<p> 108 BOOST_VMD_ELEM(0,sequence,(identifiers),BOOST_VMD_TYPE_IDENTIFIER) returns 109 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))) 110 as the exact equivalent. 111 </p> 112<h4> 113<a name="variadic_macro_data.vmd_conv.h1"></a> 114 <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> 115 </h4> 116<p> 117 V1.7 118 </p> 119<p> 120 BOOST_VMD_NUMBER(sequence,...) looked for a number at the beginning of a sequence 121 and returned a 2-element tuple, where the first element is the number and the 122 second tuple element is the rest of the sequence. If no number is found both 123 tuple elements are empty. 124 </p> 125<p> 126 V1.8 equivalent 127 </p> 128<p> 129 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_AFTER) is 130 the exact equivalent. 131 </p> 132<p> 133 V1.7 134 </p> 135<p> 136 BOOST_VMD_BEGIN_NUMBER(sequence,...) looked for a number at the beginning of 137 a sequence and returned the number if found or emptiness if no number is found. 138 </p> 139<p> 140 V1.8 equivalent 141 </p> 142<p> 143 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER) is the exact equivalent. 144 </p> 145<p> 146 V1.7 147 </p> 148<p> 149 BOOST_VMD_AFTER_NUMBER(sequence,...) looked for a number at the beginning of 150 a sequence and returned the rest of the sequence or emptiness if no number 151 is found. 152 </p> 153<p> 154 V1.8 equivalent 155 </p> 156<p> 157 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER,BOOST_VMD_RETURN_ONLY_AFTER) 158 is the exact equivalent. 159 </p> 160<p> 161 V1.7 162 </p> 163<p> 164 BOOST_VMD_IS_BEGIN_NUMBER(sequence,...) returns 1 if input begins with a number, 165 else 0 if it does not. 166 </p> 167<p> 168 V1.8 equivalent 169 </p> 170<p> 171 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER) returns the number found, 172 otherwise emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_NUMBER))) 173 as the exact equivalent. 174 </p> 175<h4> 176<a name="variadic_macro_data.vmd_conv.h2"></a> 177 <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> 178 </h4> 179<p> 180 V1.7 181 </p> 182<p> 183 BOOST_VMD_ARRAY(sequence) looked for an array at the beginning of a sequence 184 and returned a 2-element tuple, where the first element is the array and the 185 second tuple element is the rest of the sequence. If no array is found both 186 tuple elements are empty. 187 </p> 188<p> 189 V1.8 equivalent 190 </p> 191<p> 192 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_AFTER) is the 193 exact equivalent. 194 </p> 195<p> 196 V1.7 197 </p> 198<p> 199 BOOST_VMD_BEGIN_ARRAY(sequence) looked for an array at the beginning of a sequence 200 and returned the array if found or emptiness if no array is found. 201 </p> 202<p> 203 V1.8 equivalent 204 </p> 205<p> 206 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY) is the exact equivalent. 207 </p> 208<p> 209 V1.7 210 </p> 211<p> 212 BOOST_VMD_AFTER_ARRAY(sequence) looked for an array at the beginning of a sequence 213 and returned the rest of the sequence or emptiness if no array is found. 214 </p> 215<p> 216 V1.8 equivalent 217 </p> 218<p> 219 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY,BOOST_VMD_RETURN_ONLY_AFTER) 220 is the exact equivalent. 221 </p> 222<p> 223 V1.7 224 </p> 225<p> 226 BOOST_VMD_IS_BEGIN_ARRAY(sequence,...) returns 1 if input begins with an array, 227 else 0 if it does not. 228 </p> 229<p> 230 V1.8 equivalent 231 </p> 232<p> 233 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY) returns the array found, otherwise 234 emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_ARRAY))) 235 as the exact equivalent. 236 </p> 237<h4> 238<a name="variadic_macro_data.vmd_conv.h3"></a> 239 <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> 240 </h4> 241<p> 242 V1.7 243 </p> 244<p> 245 BOOST_VMD_LIST(sequence) looked for an list at the beginning of a sequence 246 and returned a 2-element tuple, where the first element is the list and the 247 second tuple element is the rest of the sequence. If no list is found both 248 tuple elements are empty. 249 </p> 250<p> 251 V1.8 equivalent 252 </p> 253<p> 254 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_AFTER) is the 255 exact equivalent. 256 </p> 257<p> 258 V1.7 259 </p> 260<p> 261 BOOST_VMD_BEGIN_LIST(sequence) looked for a list at the beginning of a sequence 262 and returned the list if found or emptiness if no list is found. 263 </p> 264<p> 265 V1.8 equivalent 266 </p> 267<p> 268 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST) is the exact equivalent. 269 </p> 270<p> 271 V1.7 272 </p> 273<p> 274 BOOST_VMD_AFTER_LIST(sequence) looked for an list at the beginning of a sequence 275 and returned the rest of the sequence or emptiness if no list is found. 276 </p> 277<p> 278 V1.8 equivalent 279 </p> 280<p> 281 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST,BOOST_VMD_RETURN_ONLY_AFTER) 282 is the exact equivalent. 283 </p> 284<p> 285 V1.7 286 </p> 287<p> 288 BOOST_VMD_IS_BEGIN_LIST(sequence,...) returns 1 if input begins with an list, 289 else 0 if it does not. 290 </p> 291<p> 292 V1.8 equivalent 293 </p> 294<p> 295 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST) returns the list found, otherwise 296 emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_LIST))) 297 as the exact equivalent. 298 </p> 299<h4> 300<a name="variadic_macro_data.vmd_conv.h4"></a> 301 <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> 302 </h4> 303<p> 304 V1.7 305 </p> 306<p> 307 BOOST_VMD_SEQ(sequence) looked for a seq at the beginning of a sequence and 308 returned a 2-element tuple, where the first element is the seq and the second 309 tuple element is the rest of the sequence. If no seq is found both tuple elements 310 are empty. 311 </p> 312<p> 313 V1.8 equivalent 314 </p> 315<p> 316 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_AFTER) is the 317 exact equivalent. 318 </p> 319<p> 320 V1.7 321 </p> 322<p> 323 BOOST_VMD_BEGIN_SEQ(sequence) looked for a seq at the beginning of a sequence 324 and returned the seq if found or emptiness if no seq is found. 325 </p> 326<p> 327 V1.8 equivalent 328 </p> 329<p> 330 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ) is the exact equivalent. 331 </p> 332<p> 333 V1.7 334 </p> 335<p> 336 BOOST_VMD_AFTER_SEQ(sequence) looked for an seq at the beginning of a sequence 337 and returned the rest of the sequence or emptiness if no seq is found. 338 </p> 339<p> 340 V1.8 equivalent 341 </p> 342<p> 343 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ,BOOST_VMD_RETURN_ONLY_AFTER) is 344 the exact equivalent. 345 </p> 346<p> 347 V1.7 348 </p> 349<p> 350 BOOST_VMD_IS_BEGIN_SEQ(sequence,...) returns 1 if input begins with an seq, 351 else 0 if it does not. 352 </p> 353<p> 354 V1.8 equivalent 355 </p> 356<p> 357 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ) returns the seq found, otherwise 358 emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_SEQ))) 359 as the exact equivalent. 360 </p> 361<h4> 362<a name="variadic_macro_data.vmd_conv.h5"></a> 363 <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> 364 </h4> 365<p> 366 V1.7 367 </p> 368<p> 369 BOOST_VMD_TUPLE(sequence) looked for an tuple at the beginning of a sequence 370 and returned a 2-element tuple, where the first element is the tuple and the 371 second tuple element is the rest of the sequence. If no tuple is found both 372 tuple elements are empty. 373 </p> 374<p> 375 V1.8 equivalent 376 </p> 377<p> 378 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_AFTER) is the 379 exact equivalent. 380 </p> 381<p> 382 V1.7 383 </p> 384<p> 385 BOOST_VMD_BEGIN_TUPLE(sequence) looked for a tuple at the beginning of a sequence 386 and returned the tuple if found or emptiness if no tuple is found. 387 </p> 388<p> 389 V1.8 equivalent 390 </p> 391<p> 392 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE) is the exact equivalent. 393 </p> 394<p> 395 V1.7 396 </p> 397<p> 398 BOOST_VMD_AFTER_TUPLE(sequence) looked for an tuple at the beginning of a sequence 399 and returned the rest of the sequence or emptiness if no tuple is found. 400 </p> 401<p> 402 V1.8 equivalent 403 </p> 404<p> 405 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE,BOOST_VMD_RETURN_ONLY_AFTER) 406 is the exact equivalent. 407 </p> 408<p> 409 V1.7 410 </p> 411<p> 412 BOOST_VMD_IS_BEGIN_TUPLE(sequence,...) returns 1 if input begins with an tuple, 413 else 0 if it does not. 414 </p> 415<p> 416 V1.8 equivalent 417 </p> 418<p> 419 BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE) returns the tuple found, otherwise 420 emptiness if not found. You can use BOOST_PP_COMPL(BOOST_VMD_IS_EMPTY(BOOST_VMD_ELEM(0,sequence,BOOST_VMD_TYPE_TUPLE))) 421 as the exact equivalent. 422 </p> 423</div> 424<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 425<td align="left"></td> 426<td align="right"><div class="copyright-footer">Copyright © 2010-2017 Tropic Software 427 East Inc</div></td> 428</tr></table> 429<hr> 430<div class="spirit-nav"> 431<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> 432</div> 433</body> 434</html> 435