147 lines
6.1 KiB
XML
147 lines
6.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Copyright 2012 Eric Niebler
|
|
|
|
Distributed under the Boost
|
|
Software License, Version 1.0. (See accompanying
|
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
-->
|
|
<header name="boost/proto/fusion.hpp">
|
|
<para>Make any Proto expression a valid Fusion sequence </para>
|
|
<namespace name="boost">
|
|
<namespace name="proto">
|
|
<namespace name="functional">
|
|
|
|
<!-- proto::functional::flatten -->
|
|
<struct name="flatten">
|
|
<purpose>A <conceptname>PolymorphicFunctionObject</conceptname> type that returns a "flattened"
|
|
view of a Proto expression tree. </purpose>
|
|
<description>
|
|
<para>
|
|
A <conceptname>PolymorphicFunctionObject</conceptname> type that returns a "flattened" view
|
|
of a Proto expression tree. For a tree with a top-most node tag of type
|
|
<computeroutput>T</computeroutput>, the elements of the flattened sequence are determined by
|
|
recursing into each child node with the same tag type and returning those nodes of different
|
|
type. So for instance, the Proto expression tree corresponding to the expression
|
|
<computeroutput>a | b | c</computeroutput> has a flattened view with elements [a, b, c], even
|
|
though the tree is grouped as <computeroutput>((a | b) | c)</computeroutput>.
|
|
</para>
|
|
<para>
|
|
The resulting view is a Fusion Forward Sequence.
|
|
</para>
|
|
</description>
|
|
<inherit>
|
|
<type><classname>proto::callable</classname></type>
|
|
</inherit>
|
|
<struct-specialization name="result">
|
|
<template>
|
|
<template-type-parameter name="This"/>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<specialization>
|
|
<template-arg>This(Expr)</template-arg>
|
|
</specialization>
|
|
<inherit>
|
|
<type>result< This(Expr const &) ></type>
|
|
</inherit>
|
|
</struct-specialization>
|
|
<struct-specialization name="result">
|
|
<template>
|
|
<template-type-parameter name="This"/>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<specialization>
|
|
<template-arg>This(Expr &)</template-arg>
|
|
</specialization>
|
|
<inherit>
|
|
<type><classname>proto::result_of::flatten</classname>< Expr ></type>
|
|
</inherit>
|
|
</struct-specialization>
|
|
<method-group name="public member functions">
|
|
<method name="operator()" cv="const">
|
|
<type>typename <classname>proto::result_of::flatten</classname>< Expr >::type const</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr &</paramtype>
|
|
</parameter>
|
|
<description>
|
|
<para>
|
|
Returns a Fusion Forward Sequence representing a flattened view of <computeroutput>expr</computeroutput>.
|
|
</para>
|
|
</description>
|
|
</method>
|
|
<method name="operator()" cv="const">
|
|
<type>typename <classname>proto::result_of::flatten</classname>< Expr const >::type const</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr const &</paramtype>
|
|
</parameter>
|
|
<description>
|
|
<para>
|
|
Returns a Fusion Forward Sequence representing a flattened view of <computeroutput>expr</computeroutput>.
|
|
</para>
|
|
</description>
|
|
</method>
|
|
</method-group>
|
|
</struct>
|
|
|
|
</namespace>
|
|
|
|
<namespace name="result_of">
|
|
<!-- proto::result_of::flatten -->
|
|
<struct name="flatten">
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<purpose>Metafunction that computes the return type of <computeroutput>
|
|
<functionname alt="proto::flatten">proto::flatten()</functionname></computeroutput></purpose>
|
|
<typedef name="type">
|
|
<type><emphasis>unspecified</emphasis></type>
|
|
<purpose>A Fusion Forward Sequence</purpose>
|
|
</typedef>
|
|
</struct>
|
|
</namespace>
|
|
|
|
<!-- proto::flatten() -->
|
|
<overloaded-function name="flatten">
|
|
<signature>
|
|
<type>typename <classname>proto::result_of::flatten</classname>< Expr >::type const</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr &</paramtype>
|
|
</parameter>
|
|
</signature>
|
|
<signature>
|
|
<type>typename <classname>proto::result_of::flatten</classname>< Expr const >::type const</type>
|
|
<template>
|
|
<template-type-parameter name="Expr"/>
|
|
</template>
|
|
<parameter name="expr">
|
|
<paramtype>Expr const &</paramtype>
|
|
</parameter>
|
|
</signature>
|
|
<purpose>A function that returns a "flattened" view of a Proto expression tree. </purpose>
|
|
<description>
|
|
<para>
|
|
For a tree with a top-most node tag of type <computeroutput>T</computeroutput>, the elements
|
|
of the flattened sequence are determined by recursing into each child node with the same tag
|
|
type and returning those nodes of different type. So for instance, the Proto expression tree
|
|
corresponding to the expression <computeroutput>a | b | c</computeroutput> has a flattened
|
|
view with elements [a, b, c], even though the tree is grouped as
|
|
<computeroutput>((a | b) | c)</computeroutput>.
|
|
</para>
|
|
<para>
|
|
The returned view is a Fusion Forward Sequence.
|
|
</para>
|
|
</description>
|
|
</overloaded-function>
|
|
</namespace>
|
|
</namespace>
|
|
</header>
|