<!-- Copyright 2008 Lubomir Bourdev and Hailin Jin

     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)
  -->

<!--
    Copyright 2005-2007 Adobe Systems Incorporated
    Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
    or a copy at http://stlab.adobe.com/licenses.html)

    Some files are held under additional license.
    Please see "http://stlab.adobe.com/licenses.html" for more information.
-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

<head>
    <TITLE>Generic Image Library: apply_operation.hpp File Reference</TITLE>
    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/>
    <LINK TYPE="text/css" REL="stylesheet" HREF="adobe_source.css"/>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" style='width: 100%; margin: 0; padding: 0'><tr>
<td width="100%" valign="top" style='padding-left: 10px; padding-right: 10px; padding-bottom: 10px'>
<div class="qindex"><a class="qindex" href="index.html">Modules</a> 
                  | <a class="qindex" href="classes.html">Alphabetical List</a> 
                  | <a class="qindex" href="annotated.html">Class List</a> 
                  | <a class="qindex" href="dirs.html">Directories</a> 
                  | <a class="qindex" href="files.html">File List</a> 
                  | <a class="qindex" href="../index.html">GIL Home Page</a> 
</div>
<!-- End Header -->
<!-- Generated by Doxygen 1.5.6 -->
  <div class="navpath"><a class="el" href="g_i_l_0076.html">boost</a>&nbsp;&raquo&nbsp;<a class="el" href="g_i_l_0079.html">gil</a>&nbsp;&raquo&nbsp;<a class="el" href="g_i_l_0078.html">extension</a>&nbsp;&raquo&nbsp;<a class="el" href="g_i_l_0075.html">dynamic_image</a>
  </div>
<div class="contents">
<h1>apply_operation.hpp File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Implements apply_operation for variants. Optionally performs type reduction. 
<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Lubomir Bourdev and Hailin Jin <br>
 Adobe Systems Incorporated </dd></dl>
<dl class="date" compact><dt><b>Date:</b></dt><dd>2005-2007 <br>
 Last updated on May 4, 2006 </dd></dl>

<p>
<code>#include &quot;<a class="el" href="g_i_l_0007.html">apply_operation_base.hpp</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="g_i_l_0643.html">variant.hpp</a>&quot;</code><br>

<p>
<a href="g_i_l_0005.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>boost::gil</b></td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g3c8fd0f3dc2495060bf062428dccc505"></a><!-- doxytag: member="apply_operation.hpp::apply_operation" ref="g3c8fd0f3dc2495060bf062428dccc505" args="(variant&lt; Types &gt; &amp;arg, UnaryOp op)" -->
template&lt;typename Types, typename UnaryOp&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">GIL_FORCEINLINE <br>
UnaryOp::result_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___variant.html#g3c8fd0f3dc2495060bf062428dccc505">apply_operation</a> (variant&lt; Types &gt; &amp;arg, UnaryOp op)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invokes a generic mutable operation (represented as a unary function object) on a <a class="el" href="g_i_l_0062.html" title="Represents a concrete instance of a run-time specified type from a set of typesA...">variant</a>. <br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g65c13b01bb2b7725fe96e56bcc2659b6"></a><!-- doxytag: member="apply_operation.hpp::apply_operation" ref="g65c13b01bb2b7725fe96e56bcc2659b6" args="(const variant&lt; Types &gt; &amp;arg, UnaryOp op)" -->
template&lt;typename Types, typename UnaryOp&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">GIL_FORCEINLINE <br>
UnaryOp::result_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___variant.html#g65c13b01bb2b7725fe96e56bcc2659b6">apply_operation</a> (const variant&lt; Types &gt; &amp;arg, UnaryOp op)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invokes a generic constant operation (represented as a unary function object) on a <a class="el" href="g_i_l_0062.html" title="Represents a concrete instance of a run-time specified type from a set of typesA...">variant</a>. <br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="g3dc0a90911c08815be11e1e49ec06037"></a><!-- doxytag: member="apply_operation.hpp::apply_operation" ref="g3dc0a90911c08815be11e1e49ec06037" args="(const variant&lt; Types1 &gt; &amp;arg1, const variant&lt; Types2 &gt; &amp;arg2, BinaryOp op)" -->
template&lt;typename Types1, typename Types2, typename BinaryOp&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">GIL_FORCEINLINE <br>
BinaryOp::result_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group___variant.html#g3dc0a90911c08815be11e1e49ec06037">apply_operation</a> (const variant&lt; Types1 &gt; &amp;arg1, const variant&lt; Types2 &gt; &amp;arg2, BinaryOp op)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invokes a generic constant operation (represented as a binary function object) on two variants. <br></td></tr>
</table>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:15 2009 for Generic Image Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
