blob: e364a8e58a438a5391587488e8ef364761c77b63 [file] [log] [blame]
<!-- 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: RandomAccessNDLocatorConcept Struct Template 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="namespaceboost.html">boost</a>::<b>gil</b>::<a class="el" href="g_i_l_0374.html">RandomAccessNDLocatorConcept</a>
</div>
<div class="contents">
<h1>RandomAccessNDLocatorConcept Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0172.html">RandomAccessNDLocatorConcept</a>]</small>
</h1><!-- doxytag: class="boost::gil::RandomAccessNDLocatorConcept" --><code>#include &lt;<a class="el" href="g_i_l_0091.html">gil_concept.hpp</a>&gt;</code>
<p>
<p>
<a href="g_i_l_0373.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename Loc&gt;<br>
struct boost::gil::RandomAccessNDLocatorConcept&lt; Loc &gt;</h3>
N-dimensional locator over immutable values.
<p>
<div class="fragment"><pre class="fragment">concept RandomAccessNDLocatorConcept&lt;Regular Loc&gt; {
<span class="keyword">typename</span> value_type; <span class="comment">// value over which the locator navigates</span>
<span class="keyword">typename</span> reference; <span class="comment">// result of dereferencing</span>
<span class="keyword">typename</span> difference_type; where PointNDConcept&lt;difference_type&gt;; <span class="comment">// return value of operator-.</span>
<span class="keyword">typename</span> const_t; <span class="comment">// same as Loc, but operating over immutable values</span>
<span class="keyword">typename</span> cached_location_t; <span class="comment">// type to store relative location (for efficient repeated access)</span>
<span class="keyword">typename</span> point_t = difference_type;
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_dimensions; <span class="comment">// dimensionality of the locator</span>
where num_dimensions = point_t::num_dimensions;
<span class="comment">// The difference_type and iterator type along each dimension. The iterators may only differ in </span>
<span class="comment">// difference_type. Their value_type must be the same as Loc::value_type</span>
<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt; <span class="keyword">struct </span>axis {
<span class="keyword">typename</span> coord_t = point_t::axis&lt;D&gt;::coord_t;
<span class="keyword">typename</span> iterator; where RandomAccessTraversalConcept&lt;iterator&gt;; <span class="comment">// iterator along D-th axis.</span>
where iterator::value_type == value_type;
};
<span class="comment">// Defines the type of a locator similar to this type, except it invokes Deref upon dereferencing</span>
<span class="keyword">template</span> &lt;PixelDereferenceAdaptorConcept Deref&gt; <span class="keyword">struct </span>add_deref {
<span class="keyword">typename</span> type; where RandomAccessNDLocatorConcept&lt;type&gt;;
<span class="keyword">static</span> type make(<span class="keyword">const</span> Loc&amp; loc, <span class="keyword">const</span> Deref&amp; deref);
};
Loc&amp; operator+=(Loc&amp;, <span class="keyword">const</span> difference_type&amp;);
Loc&amp; operator-=(Loc&amp;, <span class="keyword">const</span> difference_type&amp;);
Loc operator+(<span class="keyword">const</span> Loc&amp;, <span class="keyword">const</span> difference_type&amp;);
Loc operator-(<span class="keyword">const</span> Loc&amp;, <span class="keyword">const</span> difference_type&amp;);
reference operator*(<span class="keyword">const</span> Loc&amp;);
reference operator[](<span class="keyword">const</span> Loc&amp;, <span class="keyword">const</span> difference_type&amp;);
<span class="comment">// Storing relative location for faster repeated access and accessing it </span>
cached_location_t Loc::cache_location(<span class="keyword">const</span> difference_type&amp;) <span class="keyword">const</span>;
reference operator[](<span class="keyword">const</span> Loc&amp;,<span class="keyword">const</span> cached_location_t&amp;);
<span class="comment">// Accessing iterators along a given dimension at the current location or at a given offset</span>
<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt; axis&lt;D&gt;::iterator&amp; Loc::axis_iterator();
<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt; axis&lt;D&gt;::iterator <span class="keyword">const</span>&amp; Loc::axis_iterator() <span class="keyword">const</span>;
<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> D&gt; axis&lt;D&gt;::iterator Loc::axis_iterator(<span class="keyword">const</span> difference_type&amp;) <span class="keyword">const</span>;
};
</pre></div> <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0a0dbf6ca9028bbbb2240cad5882537"></a><!-- doxytag: member="boost::gil::RandomAccessNDLocatorConcept::constraints" ref="b0a0dbf6ca9028bbbb2240cad5882537" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>constraints</b> ()</td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78b239cb3da334ec5ca272453ae698f1"></a><!-- doxytag: member="boost::gil::RandomAccessNDLocatorConcept::loc" ref="78b239cb3da334ec5ca272453ae698f1" args="" -->
Loc&nbsp;</td><td class="memItemRight" valign="bottom"><b>loc</b></td></tr>
</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="g_i_l_0091.html">gil_concept.hpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:17 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>