args.xml 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3. Copyright 2012 Eric Niebler
  4. Distributed under the Boost
  5. Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. -->
  8. <header name="boost/proto/args.hpp">
  9. <para>
  10. Contains definitions of the <computeroutput>
  11. <classname alt="boost::proto::term">proto::term&lt;&gt;</classname></computeroutput>,
  12. <computeroutput><classname alt="boost::proto::listN">proto::list1&lt;&gt;</classname></computeroutput>,
  13. <computeroutput><classname alt="boost::proto::listN">proto::list2&lt;&gt;</classname></computeroutput>, etc.
  14. class templates.
  15. </para>
  16. <namespace name="boost">
  17. <namespace name="proto">
  18. <!-- proto::term<> -->
  19. <struct name="term">
  20. <template>
  21. <template-type-parameter name="T"/>
  22. </template>
  23. <purpose>A type sequence, for use as the 2<superscript>nd</superscript> parameter to the
  24. <computeroutput><classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> and
  25. <computeroutput><classname alt="proto::basic_expr">proto::basic_expr&lt;&gt;</classname></computeroutput>
  26. class templates.</purpose>
  27. <description>
  28. <para>
  29. A type sequence with one element, for use as the 2<superscript>nd</superscript> parameter to the
  30. <computeroutput><classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> and
  31. <computeroutput><classname alt="proto::basic_expr">proto::basic_expr&lt;&gt;</classname></computeroutput>
  32. class templates. The sequence element represents the value of a terminal.
  33. </para>
  34. </description>
  35. <data-member name="arity" specifiers="static">
  36. <purpose><computeroutput>= 0;</computeroutput></purpose>
  37. <type>const long</type>
  38. </data-member>
  39. <typedef name="child0">
  40. <type>T</type>
  41. </typedef>
  42. </struct>
  43. <!-- proto::list1<>, proto::list2<> ... -->
  44. <struct name="listN">
  45. <template>
  46. <template-type-parameter name="Arg" pack="1"/>
  47. </template>
  48. <purpose><computeroutput>proto::list1&lt;&gt;</computeroutput>, <computeroutput>proto::list2&lt;&gt;</computeroutput>, etc.,
  49. are type sequences for use as the 2<superscript>nd</superscript> parameter to the
  50. <computeroutput><classname>proto::expr&lt;&gt;</classname></computeroutput> or
  51. <computeroutput><classname>proto::basic_expr&lt;&gt;</classname></computeroutput> class templates.</purpose>
  52. <description>
  53. <para>
  54. Type sequences, for use as the 2<superscript>nd</superscript> parameter to the
  55. <computeroutput><classname>proto::expr&lt;&gt;</classname></computeroutput> or
  56. <computeroutput><classname>proto::basic_expr&lt;&gt;</classname></computeroutput> class template. The
  57. types in the sequence correspond to the children of a node in an expression tree.
  58. There is no type literally named "<computeroutput>listN</computeroutput>"; rather, there is
  59. a set of types named
  60. <computeroutput>proto::list1&lt;&gt;</computeroutput>,
  61. <computeroutput>proto::list2&lt;&gt;</computeroutput>, etc.
  62. </para>
  63. </description>
  64. <data-member name="arity" specifiers="static">
  65. <purpose><computeroutput>= N;</computeroutput></purpose>
  66. <type>const long</type>
  67. </data-member>
  68. <typedef name="childM">
  69. <purpose>For each <replaceable>M</replaceable> in <replaceable>[0,N)</replaceable></purpose>
  70. <type>Arg<replaceable>M</replaceable></type>
  71. </typedef>
  72. </struct>
  73. </namespace>
  74. </namespace>
  75. </header>