<!-- 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: dynamic_at_c.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>dynamic_at_c.hpp File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Constructs for static-to-dynamic integer convesion. 
<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_0093.html">../../gil_config.hpp</a>&quot;</code><br>
<code>#include &lt;cassert&gt;</code><br>
<code>#include &lt;stdexcept&gt;</code><br>
<code>#include &lt;boost/mpl/at.hpp&gt;</code><br>
<code>#include &lt;boost/mpl/size.hpp&gt;</code><br>

<p>
<a href="g_i_l_0080.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 class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>boost::gil::detail</b></td></tr>

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

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="284cc661c47878d3d648be495b7e09fa"></a><!-- doxytag: member="dynamic_at_c.hpp::GIL_AT_C_VALUE" ref="284cc661c47878d3d648be495b7e09fa" args="(z, N, text)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>GIL_AT_C_VALUE</b>(z, N, text)&nbsp;&nbsp;&nbsp;mpl::at_c&lt;IntTypes,S+N&gt;::type::value,</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bbcf9c74f745f7418dafd494a9d6fdcf"></a><!-- doxytag: member="dynamic_at_c.hpp::GIL_DYNAMIC_AT_C_LIMIT" ref="bbcf9c74f745f7418dafd494a9d6fdcf" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>GIL_DYNAMIC_AT_C_LIMIT</b>&nbsp;&nbsp;&nbsp;226</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>GIL_AT_C_LOOKUP</b>(z, NUM, text)</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="59ff3e12a54bbb6333d323a45af74571"></a><!-- doxytag: member="dynamic_at_c.hpp::at_c" ref="59ff3e12a54bbb6333d323a45af74571" args="(std::size_t index)" -->
template&lt;typename IntTypes, typename ValueType&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">ValueType&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1gil.html#59ff3e12a54bbb6333d323a45af74571">at_c</a> (std::size_t index)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given an MPL Random Access Sequence and a dynamic index n, returns the value of the n-th element It constructs a lookup table at compile time. <br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="2fbb33b20a818d17010265c76e568309"></a><!-- doxytag: member="dynamic_at_c.hpp::GIL_AT_C_LOOKUP" ref="2fbb33b20a818d17010265c76e568309" args="(z, NUM, text)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define GIL_AT_C_LOOKUP          </td>
          <td>(</td>
          <td class="paramtype">z,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">NUM,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">text&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">template</span>&lt;std::<span class="keywordtype">size_t</span> S&gt;                                             \
    <span class="keyword">struct </span>at_c_fn&lt;S,NUM&gt; {                                             \
    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> IntTypes, <span class="keyword">typename</span> ValueType&gt; <span class="keyword">inline</span>           \
        <span class="keyword">static</span> ValueType apply(std::size_t index) {                    \
            <span class="keyword">static</span> ValueType table[] = {                               \
                BOOST_PP_REPEAT(NUM, GIL_AT_C_VALUE, BOOST_PP_EMPTY)    \
            };                                                          \
            <span class="keywordflow">return</span> table[index];                                        \
        }                                                               \
    };
</pre></div>
</div>
</div><p>
</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>
