mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-22 03:42:19 +00:00
2076 lines
307 KiB
HTML
2076 lines
307 KiB
HTML
<!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">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<title>Boost.uBlas: storage.hpp Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
|
|
</head>
|
|
<body onload='searchBox.OnSelectItem(0);'>
|
|
<!-- Generated by Doxygen 1.7.3 -->
|
|
<script type="text/javascript"><!--
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
--></script>
|
|
<script type="text/javascript">
|
|
function hasClass(ele,cls) {
|
|
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
|
|
}
|
|
|
|
function addClass(ele,cls) {
|
|
if (!this.hasClass(ele,cls)) ele.className += " "+cls;
|
|
}
|
|
|
|
function removeClass(ele,cls) {
|
|
if (hasClass(ele,cls)) {
|
|
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
|
|
ele.className=ele.className.replace(reg,' ');
|
|
}
|
|
}
|
|
|
|
function toggleVisibility(linkObj) {
|
|
var base = linkObj.getAttribute('id');
|
|
var summary = document.getElementById(base + '-summary');
|
|
var content = document.getElementById(base + '-content');
|
|
var trigger = document.getElementById(base + '-trigger');
|
|
if ( hasClass(linkObj,'closed') ) {
|
|
summary.style.display = 'none';
|
|
content.style.display = 'block';
|
|
trigger.src = 'open.png';
|
|
removeClass(linkObj,'closed');
|
|
addClass(linkObj,'opened');
|
|
} else if ( hasClass(linkObj,'opened') ) {
|
|
summary.style.display = 'block';
|
|
content.style.display = 'none';
|
|
trigger.src = 'closed.png';
|
|
removeClass(linkObj,'opened');
|
|
addClass(linkObj,'closed');
|
|
}
|
|
return false;
|
|
}
|
|
</script>
|
|
<div id="top">
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="logo boost ublas.png"></td>
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">Boost.uBlas <span id="projectnumber">1.49</span></div>
|
|
<div id="projectbrief">Linear Algebra in C++: matrices, vectors and numeric algorithms</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
<li id="searchli">
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
<li><a href="globals.html"><span>File Members</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
initNavTree('a00634.html','');
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<h1>storage.hpp</h1> </div>
|
|
</div>
|
|
<div class="contents">
|
|
<a href="a00634.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
|
|
<a name="l00002"></a>00002 <span class="comment">// Copyright (c) 2000-2002</span>
|
|
<a name="l00003"></a>00003 <span class="comment">// Joerg Walter, Mathias Koch</span>
|
|
<a name="l00004"></a>00004 <span class="comment">//</span>
|
|
<a name="l00005"></a>00005 <span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span>
|
|
<a name="l00006"></a>00006 <span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span>
|
|
<a name="l00007"></a>00007 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
|
|
<a name="l00008"></a>00008 <span class="comment">//</span>
|
|
<a name="l00009"></a>00009 <span class="comment">// The authors gratefully acknowledge the support of</span>
|
|
<a name="l00010"></a>00010 <span class="comment">// GeNeSys mbH & Co. KG in producing this work.</span>
|
|
<a name="l00011"></a>00011 <span class="comment">//</span>
|
|
<a name="l00012"></a>00012
|
|
<a name="l00013"></a>00013 <span class="preprocessor">#ifndef BOOST_UBLAS_STORAGE_H</span>
|
|
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define BOOST_UBLAS_STORAGE_H</span>
|
|
<a name="l00015"></a>00015 <span class="preprocessor"></span>
|
|
<a name="l00016"></a>00016 <span class="preprocessor">#include <algorithm></span>
|
|
<a name="l00017"></a>00017 <span class="preprocessor">#ifdef BOOST_UBLAS_SHALLOW_ARRAY_ADAPTOR</span>
|
|
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#include <boost/shared_array.hpp></span>
|
|
<a name="l00019"></a>00019 <span class="preprocessor">#endif</span>
|
|
<a name="l00020"></a>00020 <span class="preprocessor"></span>
|
|
<a name="l00021"></a>00021 <span class="preprocessor">#include <boost/serialization/array.hpp></span>
|
|
<a name="l00022"></a>00022 <span class="preprocessor">#include <boost/serialization/collection_size_type.hpp></span>
|
|
<a name="l00023"></a>00023 <span class="preprocessor">#include <boost/serialization/nvp.hpp></span>
|
|
<a name="l00024"></a>00024
|
|
<a name="l00025"></a>00025 <span class="preprocessor">#include <boost/numeric/ublas/exception.hpp></span>
|
|
<a name="l00026"></a>00026 <span class="preprocessor">#include <boost/numeric/ublas/traits.hpp></span>
|
|
<a name="l00027"></a>00027 <span class="preprocessor">#include <boost/numeric/ublas/detail/iterator.hpp></span>
|
|
<a name="l00028"></a>00028
|
|
<a name="l00029"></a>00029
|
|
<a name="l00030"></a>00030 <span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>numeric { <span class="keyword">namespace </span>ublas {
|
|
<a name="l00031"></a>00031
|
|
<a name="l00032"></a>00032
|
|
<a name="l00033"></a>00033 <span class="comment">// Base class for Storage Arrays - see the Barton Nackman trick</span>
|
|
<a name="l00034"></a>00034 <span class="keyword">template</span><<span class="keyword">class</span> E>
|
|
<a name="l00035"></a><a class="code" href="a00417.html">00035</a> <span class="keyword">class </span><a class="code" href="a00417.html">storage_array</a>:
|
|
<a name="l00036"></a>00036 <span class="keyword">private</span> <a class="code" href="a00359.html">nonassignable</a> {
|
|
<a name="l00037"></a>00037 };
|
|
<a name="l00038"></a>00038
|
|
<a name="l00039"></a>00039
|
|
<a name="l00040"></a>00040 <span class="comment">// Unbounded array - with allocator</span>
|
|
<a name="l00041"></a>00041 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> ALLOC>
|
|
<a name="l00042"></a><a class="code" href="a00473.html">00042</a> <span class="keyword">class </span><a class="code" href="a00473.html">unbounded_array</a>:
|
|
<a name="l00043"></a>00043 <span class="keyword">public</span> <a class="code" href="a00417.html">storage_array</a><unbounded_array<T, ALLOC> > {
|
|
<a name="l00044"></a>00044
|
|
<a name="l00045"></a><a class="code" href="a00473.html#ae9819f654ac458f4ede33905c4bec3f4">00045</a> <span class="keyword">typedef</span> <a class="code" href="a00473.html">unbounded_array<T, ALLOC></a> <a class="code" href="a00473.html#ae9819f654ac458f4ede33905c4bec3f4">self_type</a>;
|
|
<a name="l00046"></a>00046 <span class="keyword">public</span>:
|
|
<a name="l00047"></a><a class="code" href="a00473.html#aa7ec3ca0b24f2a993574a83ef1790386">00047</a> <span class="keyword">typedef</span> ALLOC <a class="code" href="a00473.html#aa7ec3ca0b24f2a993574a83ef1790386">allocator_type</a>;
|
|
<a name="l00048"></a><a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">00048</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ALLOC::size_type <a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a>;
|
|
<a name="l00049"></a><a class="code" href="a00473.html#a821bed89da9c156048e89dad39d5c944">00049</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ALLOC::difference_type <a class="code" href="a00473.html#a821bed89da9c156048e89dad39d5c944">difference_type</a>;
|
|
<a name="l00050"></a><a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">00050</a> <span class="keyword">typedef</span> T <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a>;
|
|
<a name="l00051"></a><a class="code" href="a00473.html#a47e03bbacbaae1b934c463c12cfb0d66">00051</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00473.html#a47e03bbacbaae1b934c463c12cfb0d66">const_reference</a>;
|
|
<a name="l00052"></a><a class="code" href="a00473.html#a61335a5b48ef06e0818f596e3bc81ab5">00052</a> <span class="keyword">typedef</span> T &<a class="code" href="a00473.html#a61335a5b48ef06e0818f596e3bc81ab5">reference</a>;
|
|
<a name="l00053"></a><a class="code" href="a00473.html#a842380a168380998d40d5c7a3917714b">00053</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T *<a class="code" href="a00473.html#a842380a168380998d40d5c7a3917714b">const_pointer</a>;
|
|
<a name="l00054"></a><a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">00054</a> <span class="keyword">typedef</span> T *<a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a>;
|
|
<a name="l00055"></a><a class="code" href="a00473.html#aa84cc0ded229ad24a573b71a2f85f196">00055</a> <span class="keyword">typedef</span> <a class="code" href="a00473.html#a842380a168380998d40d5c7a3917714b">const_pointer</a> <a class="code" href="a00473.html#aa84cc0ded229ad24a573b71a2f85f196">const_iterator</a>;
|
|
<a name="l00056"></a><a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">00056</a> <span class="keyword">typedef</span> <a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> <a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a>;
|
|
<a name="l00057"></a>00057
|
|
<a name="l00058"></a>00058 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00059"></a>00059 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00060"></a><a class="code" href="a00473.html#a3174616a980cea9b31485b65ce7dcca1">00060</a> <a class="code" href="a00473.html#a3174616a980cea9b31485b65ce7dcca1">unbounded_array</a> (<span class="keyword">const</span> ALLOC &a = ALLOC()):
|
|
<a name="l00061"></a>00061 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a> (a), <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> (0) {
|
|
<a name="l00062"></a>00062 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = 0;
|
|
<a name="l00063"></a>00063 }
|
|
<a name="l00064"></a>00064 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00065"></a><a class="code" href="a00473.html#a4caafd3a11c73df85f00a3c5a83f3207">00065</a> <a class="code" href="a00473.html#a3174616a980cea9b31485b65ce7dcca1">unbounded_array</a> (<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a>, <span class="keyword">const</span> ALLOC &a = ALLOC()):
|
|
<a name="l00066"></a>00066 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>(a), <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> (size) {
|
|
<a name="l00067"></a>00067 <span class="keywordflow">if</span> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00068"></a>00068 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.allocate (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00069"></a>00069 <span class="keywordflow">if</span> (! <a class="code" href="a00110.html">detail::has_trivial_constructor<T>::value</a>) {
|
|
<a name="l00070"></a>00070 <span class="keywordflow">for</span> (<a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> d = <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>; d != <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>; ++d)
|
|
<a name="l00071"></a>00071 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.construct(d, <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a>());
|
|
<a name="l00072"></a>00072 }
|
|
<a name="l00073"></a>00073 }
|
|
<a name="l00074"></a>00074 <span class="keywordflow">else</span>
|
|
<a name="l00075"></a>00075 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = 0;
|
|
<a name="l00076"></a>00076 }
|
|
<a name="l00077"></a>00077 <span class="comment">// No value initialised, but still be default constructed</span>
|
|
<a name="l00078"></a>00078 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00079"></a><a class="code" href="a00473.html#a336dca002a0a3605b02cc3b3d2bcd7df">00079</a> <a class="code" href="a00473.html#a3174616a980cea9b31485b65ce7dcca1">unbounded_array</a> (<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> size, <span class="keyword">const</span> <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a> &init, <span class="keyword">const</span> ALLOC &a = ALLOC()):
|
|
<a name="l00080"></a>00080 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a> (a), <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> (size) {
|
|
<a name="l00081"></a>00081 <span class="keywordflow">if</span> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00082"></a>00082 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.allocate (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00083"></a>00083 std::uninitialized_fill (<a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a>(), <a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a>(), init);
|
|
<a name="l00084"></a>00084 }
|
|
<a name="l00085"></a>00085 <span class="keywordflow">else</span>
|
|
<a name="l00086"></a>00086 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = 0;
|
|
<a name="l00087"></a>00087 }
|
|
<a name="l00088"></a>00088 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00089"></a><a class="code" href="a00473.html#a1a3db773a377bcb42166aa2ab96f4ef8">00089</a> <a class="code" href="a00473.html#a3174616a980cea9b31485b65ce7dcca1">unbounded_array</a> (<span class="keyword">const</span> <a class="code" href="a00473.html">unbounded_array</a> &c):
|
|
<a name="l00090"></a>00090 <a class="code" href="a00417.html">storage_array</a><<a class="code" href="a00473.html">unbounded_array</a><T, ALLOC> >(),
|
|
<a name="l00091"></a>00091 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a> (c.<a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>), <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> (c.<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00092"></a>00092 <span class="keywordflow">if</span> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00093"></a>00093 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.allocate (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00094"></a>00094 std::uninitialized_copy (c.<a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a>(), c.<a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a>(), <a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a>());
|
|
<a name="l00095"></a>00095 }
|
|
<a name="l00096"></a>00096 <span class="keywordflow">else</span>
|
|
<a name="l00097"></a>00097 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = 0;
|
|
<a name="l00098"></a>00098 }
|
|
<a name="l00099"></a>00099 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00100"></a><a class="code" href="a00473.html#a0788701972727a4b3204b4dbe4a709d5">00100</a> <a class="code" href="a00473.html#a0788701972727a4b3204b4dbe4a709d5">~unbounded_array</a> () {
|
|
<a name="l00101"></a>00101 <span class="keywordflow">if</span> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00102"></a>00102 <span class="keywordflow">if</span> (! <a class="code" href="a00112.html">detail::has_trivial_destructor<T>::value</a>) {
|
|
<a name="l00103"></a>00103 <span class="comment">// std::_Destroy (begin(), end(), alloc_);</span>
|
|
<a name="l00104"></a>00104 <span class="keyword">const</span> <a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a> i_end = <a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a>();
|
|
<a name="l00105"></a>00105 <span class="keywordflow">for</span> (<a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a> i = <a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a> (); i != i_end; ++i) {
|
|
<a name="l00106"></a>00106 <a class="code" href="a00473.html#a360e52d807a1be9045d8c8ede3551698">iterator_destroy</a> (i);
|
|
<a name="l00107"></a>00107 }
|
|
<a name="l00108"></a>00108 }
|
|
<a name="l00109"></a>00109 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.deallocate (<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>, <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00110"></a>00110 }
|
|
<a name="l00111"></a>00111 }
|
|
<a name="l00112"></a>00112
|
|
<a name="l00113"></a>00113 <span class="comment">// Resizing</span>
|
|
<a name="l00114"></a>00114 <span class="keyword">private</span>:
|
|
<a name="l00115"></a>00115 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00116"></a><a class="code" href="a00473.html#a109b6efde62c4f07e0830a4920d6a13c">00116</a> <span class="keywordtype">void</span> <a class="code" href="a00473.html#a109b6efde62c4f07e0830a4920d6a13c">resize_internal</a> (<span class="keyword">const</span> <a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> size, <span class="keyword">const</span> <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a> init, <span class="keyword">const</span> <span class="keywordtype">bool</span> preserve) {
|
|
<a name="l00117"></a>00117 <span class="keywordflow">if</span> (size != <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00118"></a>00118 <a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> p_data = <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>;
|
|
<a name="l00119"></a>00119 <span class="keywordflow">if</span> (size) {
|
|
<a name="l00120"></a>00120 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.allocate (size);
|
|
<a name="l00121"></a>00121 <span class="keywordflow">if</span> (preserve) {
|
|
<a name="l00122"></a>00122 <a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> si = p_data;
|
|
<a name="l00123"></a>00123 <a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> di = <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>;
|
|
<a name="l00124"></a>00124 <span class="keywordflow">if</span> (size < <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00125"></a>00125 <span class="keywordflow">for</span> (; di != <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a>; ++di) {
|
|
<a name="l00126"></a>00126 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.construct (di, *si);
|
|
<a name="l00127"></a>00127 ++si;
|
|
<a name="l00128"></a>00128 }
|
|
<a name="l00129"></a>00129 }
|
|
<a name="l00130"></a>00130 <span class="keywordflow">else</span> {
|
|
<a name="l00131"></a>00131 <span class="keywordflow">for</span> (<a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> si = p_data; si != p_data + <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>; ++si) {
|
|
<a name="l00132"></a>00132 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.construct (di, *si);
|
|
<a name="l00133"></a>00133 ++di;
|
|
<a name="l00134"></a>00134 }
|
|
<a name="l00135"></a>00135 <span class="keywordflow">for</span> (; di != <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a>; ++di) {
|
|
<a name="l00136"></a>00136 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.construct (di, init);
|
|
<a name="l00137"></a>00137 }
|
|
<a name="l00138"></a>00138 }
|
|
<a name="l00139"></a>00139 }
|
|
<a name="l00140"></a>00140 <span class="keywordflow">else</span> {
|
|
<a name="l00141"></a>00141 <span class="keywordflow">if</span> (! <a class="code" href="a00110.html">detail::has_trivial_constructor<T>::value</a>) {
|
|
<a name="l00142"></a>00142 <span class="keywordflow">for</span> (<a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> di = <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>; di != <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a>; ++di)
|
|
<a name="l00143"></a>00143 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.construct (di, <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a>());
|
|
<a name="l00144"></a>00144 }
|
|
<a name="l00145"></a>00145 }
|
|
<a name="l00146"></a>00146 }
|
|
<a name="l00147"></a>00147
|
|
<a name="l00148"></a>00148 <span class="keywordflow">if</span> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>) {
|
|
<a name="l00149"></a>00149 <span class="keywordflow">if</span> (! <a class="code" href="a00112.html">detail::has_trivial_destructor<T>::value</a>) {
|
|
<a name="l00150"></a>00150 <span class="keywordflow">for</span> (<a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> si = p_data; si != p_data + <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>; ++si)
|
|
<a name="l00151"></a>00151 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.destroy (si);
|
|
<a name="l00152"></a>00152 }
|
|
<a name="l00153"></a>00153 <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>.deallocate (p_data, <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00154"></a>00154 }
|
|
<a name="l00155"></a>00155
|
|
<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!size)
|
|
<a name="l00157"></a>00157 <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> = 0;
|
|
<a name="l00158"></a>00158 <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> = <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a>;
|
|
<a name="l00159"></a>00159 }
|
|
<a name="l00160"></a>00160 }
|
|
<a name="l00161"></a>00161 <span class="keyword">public</span>:
|
|
<a name="l00162"></a>00162 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00163"></a><a class="code" href="a00473.html#af607e9139109449206ee7155394cb280">00163</a> <span class="keywordtype">void</span> <a class="code" href="a00473.html#af607e9139109449206ee7155394cb280">resize</a> (<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> size) {
|
|
<a name="l00164"></a>00164 <a class="code" href="a00473.html#a109b6efde62c4f07e0830a4920d6a13c">resize_internal</a> (size, <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a> (), <span class="keyword">false</span>);
|
|
<a name="l00165"></a>00165 }
|
|
<a name="l00166"></a>00166 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00167"></a><a class="code" href="a00473.html#a9e39015a3a7567092fd1761d0de11e01">00167</a> <span class="keywordtype">void</span> <a class="code" href="a00473.html#a9e39015a3a7567092fd1761d0de11e01">resize</a> (<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> size, <a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a> init) {
|
|
<a name="l00168"></a>00168 <a class="code" href="a00473.html#a109b6efde62c4f07e0830a4920d6a13c">resize_internal</a> (size, init, <span class="keyword">true</span>);
|
|
<a name="l00169"></a>00169 }
|
|
<a name="l00170"></a>00170
|
|
<a name="l00171"></a>00171 <span class="comment">// Random Access Container</span>
|
|
<a name="l00172"></a>00172 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00173"></a><a class="code" href="a00473.html#ab25024760ea8c187ac5fc39128c79cc4">00173</a> <a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> <a class="code" href="a00473.html#ab25024760ea8c187ac5fc39128c79cc4">max_size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00174"></a>00174 <span class="keywordflow">return</span> ALLOC ().max_size();
|
|
<a name="l00175"></a>00175 }
|
|
<a name="l00176"></a>00176
|
|
<a name="l00177"></a>00177 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00178"></a><a class="code" href="a00473.html#a94afe4da65552a87cee244deba706b69">00178</a> <span class="keywordtype">bool</span> <a class="code" href="a00473.html#a94afe4da65552a87cee244deba706b69">empty</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00179"></a>00179 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a> == 0;
|
|
<a name="l00180"></a>00180 }
|
|
<a name="l00181"></a>00181
|
|
<a name="l00182"></a>00182 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00183"></a><a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">00183</a> <a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> <a class="code" href="a00473.html#aacde984e23e3da4292f91a3308a84e8d">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00184"></a>00184 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>;
|
|
<a name="l00185"></a>00185 }
|
|
<a name="l00186"></a>00186
|
|
<a name="l00187"></a>00187 <span class="comment">// Element access</span>
|
|
<a name="l00188"></a>00188 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00189"></a><a class="code" href="a00473.html#a77619bd0f3f72db02694ed790c6b2ad7">00189</a> <a class="code" href="a00473.html#a47e03bbacbaae1b934c463c12cfb0d66">const_reference</a> <a class="code" href="a00473.html#a77619bd0f3f72db02694ed790c6b2ad7">operator [] </a>(<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00190"></a>00190 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00191"></a>00191 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> [i];
|
|
<a name="l00192"></a>00192 }
|
|
<a name="l00193"></a>00193 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00194"></a><a class="code" href="a00473.html#a514ad1b4598cf25aa3c0339edb686d4f">00194</a> <a class="code" href="a00473.html#a61335a5b48ef06e0818f596e3bc81ab5">reference</a> <a class="code" href="a00473.html#a77619bd0f3f72db02694ed790c6b2ad7">operator [] </a>(<a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> i) {
|
|
<a name="l00195"></a>00195 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00196"></a>00196 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> [i];
|
|
<a name="l00197"></a>00197 }
|
|
<a name="l00198"></a>00198
|
|
<a name="l00199"></a>00199 <span class="comment">// Assignment</span>
|
|
<a name="l00200"></a>00200 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00201"></a><a class="code" href="a00473.html#a2133a3d4e3f3bcc8af632256d618adcc">00201</a> <a class="code" href="a00473.html">unbounded_array</a> &<a class="code" href="a00473.html#a2133a3d4e3f3bcc8af632256d618adcc">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00473.html">unbounded_array</a> &a) {
|
|
<a name="l00202"></a>00202 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00203"></a>00203 <a class="code" href="a00473.html#af607e9139109449206ee7155394cb280">resize</a> (a.<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00204"></a>00204 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (a.<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>, a.<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + a.<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>, <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>);
|
|
<a name="l00205"></a>00205 }
|
|
<a name="l00206"></a>00206 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00207"></a>00207 }
|
|
<a name="l00208"></a>00208 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00209"></a><a class="code" href="a00473.html#afe217fefc03f96fe7638bac54f2939be">00209</a> <a class="code" href="a00473.html">unbounded_array</a> &<a class="code" href="a00473.html#afe217fefc03f96fe7638bac54f2939be">assign_temporary</a> (<a class="code" href="a00473.html">unbounded_array</a> &a) {
|
|
<a name="l00210"></a>00210 <a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">swap</a> (a);
|
|
<a name="l00211"></a>00211 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00212"></a>00212 }
|
|
<a name="l00213"></a>00213
|
|
<a name="l00214"></a>00214 <span class="comment">// Swapping</span>
|
|
<a name="l00215"></a>00215 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00216"></a><a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">00216</a> <span class="keywordtype">void</span> <a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">swap</a> (<a class="code" href="a00473.html">unbounded_array</a> &a) {
|
|
<a name="l00217"></a>00217 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00218"></a>00218 <a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">std::swap</a> (<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>, a.<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00219"></a>00219 <a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">std::swap</a> (<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>, a.<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>);
|
|
<a name="l00220"></a>00220 }
|
|
<a name="l00221"></a>00221 }
|
|
<a name="l00222"></a>00222 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00223"></a><a class="code" href="a00473.html#a551e19b2b4f037128f5303fc6c501f42">00223</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00473.html#a551e19b2b4f037128f5303fc6c501f42">swap</a> (<a class="code" href="a00473.html">unbounded_array</a> &a1, <a class="code" href="a00473.html">unbounded_array</a> &a2) {
|
|
<a name="l00224"></a>00224 a1.<a class="code" href="a00473.html#ae2513a346921b5130005484256bcb097">swap</a> (a2);
|
|
<a name="l00225"></a>00225 }
|
|
<a name="l00226"></a>00226
|
|
<a name="l00227"></a>00227 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00228"></a><a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">00228</a> <a class="code" href="a00473.html#aa84cc0ded229ad24a573b71a2f85f196">const_iterator</a> <a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00229"></a>00229 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>;
|
|
<a name="l00230"></a>00230 }
|
|
<a name="l00231"></a>00231 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00232"></a><a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">00232</a> <a class="code" href="a00473.html#aa84cc0ded229ad24a573b71a2f85f196">const_iterator</a> <a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00233"></a>00233 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>;
|
|
<a name="l00234"></a>00234 }
|
|
<a name="l00235"></a>00235
|
|
<a name="l00236"></a>00236 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00237"></a><a class="code" href="a00473.html#a7e3accd6cd33e146fa3971b7b1ac6bb0">00237</a> <a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a> <a class="code" href="a00473.html#a7e3accd6cd33e146fa3971b7b1ac6bb0">begin</a> () {
|
|
<a name="l00238"></a>00238 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>;
|
|
<a name="l00239"></a>00239 }
|
|
<a name="l00240"></a>00240 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00241"></a><a class="code" href="a00473.html#a4603f082fdaa0887a6085220cf0827f6">00241</a> <a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a> <a class="code" href="a00473.html#a4603f082fdaa0887a6085220cf0827f6">end</a> () {
|
|
<a name="l00242"></a>00242 <span class="keywordflow">return</span> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a> + <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>;
|
|
<a name="l00243"></a>00243 }
|
|
<a name="l00244"></a>00244
|
|
<a name="l00245"></a>00245 <span class="comment">// Reverse iterators</span>
|
|
<a name="l00246"></a><a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">00246</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">const_reverse_iterator</a>;
|
|
<a name="l00247"></a><a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">00247</a> <span class="keyword">typedef</span> std::reverse_iterator<iterator> <a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">reverse_iterator</a>;
|
|
<a name="l00248"></a>00248
|
|
<a name="l00249"></a>00249 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00250"></a><a class="code" href="a00473.html#ab32cb47ece0c2bafddf25927ddfd6f17">00250</a> <a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">const_reverse_iterator</a> <a class="code" href="a00473.html#ab32cb47ece0c2bafddf25927ddfd6f17">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00251"></a>00251 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">const_reverse_iterator</a> (<a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a> ());
|
|
<a name="l00252"></a>00252 }
|
|
<a name="l00253"></a>00253 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00254"></a><a class="code" href="a00473.html#ab9906a2c1648d7e43601fe118508cad9">00254</a> <a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">const_reverse_iterator</a> <a class="code" href="a00473.html#ab9906a2c1648d7e43601fe118508cad9">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00255"></a>00255 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a3da4be52eb1912d369948a2a5a0406d3">const_reverse_iterator</a> (<a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a> ());
|
|
<a name="l00256"></a>00256 }
|
|
<a name="l00257"></a>00257 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00258"></a><a class="code" href="a00473.html#a1eb4ff3af5cfdc65e8e7f1994158d3a0">00258</a> <a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">reverse_iterator</a> <a class="code" href="a00473.html#a1eb4ff3af5cfdc65e8e7f1994158d3a0">rbegin</a> () {
|
|
<a name="l00259"></a>00259 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">reverse_iterator</a> (<a class="code" href="a00473.html#a831f6bebda1e34430c221c5061b58eab">end</a> ());
|
|
<a name="l00260"></a>00260 }
|
|
<a name="l00261"></a>00261 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00262"></a><a class="code" href="a00473.html#a494c69470aa6a82d8fbdaa904a3083c0">00262</a> <a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">reverse_iterator</a> <a class="code" href="a00473.html#a494c69470aa6a82d8fbdaa904a3083c0">rend</a> () {
|
|
<a name="l00263"></a>00263 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a4845a73ef067b1f1b5a47fd62183391e">reverse_iterator</a> (<a class="code" href="a00473.html#a4898d63666b37f72a0a6a6672111a265">begin</a> ());
|
|
<a name="l00264"></a>00264 }
|
|
<a name="l00265"></a>00265
|
|
<a name="l00266"></a>00266 <span class="comment">// Allocator</span>
|
|
<a name="l00267"></a><a class="code" href="a00473.html#ae8d41734ad31cdaacc4c0b71d0a95115">00267</a> <a class="code" href="a00473.html#aa7ec3ca0b24f2a993574a83ef1790386">allocator_type</a> <a class="code" href="a00473.html#ae8d41734ad31cdaacc4c0b71d0a95115">get_allocator</a> () {
|
|
<a name="l00268"></a>00268 <span class="keywordflow">return</span> <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>;
|
|
<a name="l00269"></a>00269 }
|
|
<a name="l00270"></a>00270
|
|
<a name="l00271"></a>00271 <span class="keyword">private</span>:
|
|
<a name="l00272"></a><a class="code" href="a00473.html#ac98d07dd8f7b70e16ccb9a01abf56b9c">00272</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00473.html#ac98d07dd8f7b70e16ccb9a01abf56b9c">boost::serialization::access</a>;
|
|
<a name="l00273"></a>00273
|
|
<a name="l00274"></a>00274 <span class="comment">// Serialization</span>
|
|
<a name="l00275"></a>00275 <span class="keyword">template</span><<span class="keyword">class</span> Archive>
|
|
<a name="l00276"></a><a class="code" href="a00473.html#a002af56eb2c204f178f081fe5fa56ac3">00276</a> <span class="keywordtype">void</span> <a class="code" href="a00473.html#a002af56eb2c204f178f081fe5fa56ac3">serialize</a>(Archive & ar, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version)
|
|
<a name="l00277"></a>00277 {
|
|
<a name="l00278"></a>00278 serialization::collection_size_type s(<a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>);
|
|
<a name="l00279"></a>00279 ar & serialization::make_nvp(<span class="stringliteral">"size"</span>,s);
|
|
<a name="l00280"></a>00280 <span class="keywordflow">if</span> ( Archive::is_loading::value ) {
|
|
<a name="l00281"></a>00281 <a class="code" href="a00473.html#af607e9139109449206ee7155394cb280">resize</a>(s);
|
|
<a name="l00282"></a>00282 }
|
|
<a name="l00283"></a>00283 ar & serialization::make_array(<a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>, s);
|
|
<a name="l00284"></a>00284 }
|
|
<a name="l00285"></a>00285
|
|
<a name="l00286"></a>00286 <span class="keyword">private</span>:
|
|
<a name="l00287"></a>00287 <span class="comment">// Handle explict destroy on a (possibly indexed) iterator</span>
|
|
<a name="l00288"></a>00288 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00289"></a><a class="code" href="a00473.html#a360e52d807a1be9045d8c8ede3551698">00289</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="a00473.html#a360e52d807a1be9045d8c8ede3551698">iterator_destroy</a> (<a class="code" href="a00473.html#a5e8b7d4314813456618dc72da96c4dbc">iterator</a> &i) {
|
|
<a name="l00290"></a>00290 (&(*i)) -> ~<a class="code" href="a00473.html#a54946c8a6596ae14f118fb501a0cebec">value_type</a> ();
|
|
<a name="l00291"></a>00291 }
|
|
<a name="l00292"></a><a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">00292</a> ALLOC <a class="code" href="a00473.html#a68b2c44feba717a710677adc8a006211">alloc_</a>;
|
|
<a name="l00293"></a><a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">00293</a> <a class="code" href="a00473.html#ab2893fe17145415b187bf59c838e26d6">size_type</a> <a class="code" href="a00473.html#a0864b912dca0fdaaf8481d96f07d648e">size_</a>;
|
|
<a name="l00294"></a><a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">00294</a> <a class="code" href="a00473.html#a002e242a70e16c05e76b87274703cfa1">pointer</a> <a class="code" href="a00473.html#afc1ff2ce5fb1531a38ac0cf1618ea8ff">data_</a>;
|
|
<a name="l00295"></a>00295 };
|
|
<a name="l00296"></a>00296
|
|
<a name="l00297"></a>00297 <span class="comment">// Bounded array - with allocator for size_type and difference_type</span>
|
|
<a name="l00298"></a>00298 <span class="keyword">template</span><<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> N, <span class="keyword">class</span> ALLOC>
|
|
<a name="l00299"></a><a class="code" href="a00040.html">00299</a> <span class="keyword">class </span><a class="code" href="a00040.html">bounded_array</a>:
|
|
<a name="l00300"></a>00300 <span class="keyword">public</span> <a class="code" href="a00417.html">storage_array</a><bounded_array<T, N, ALLOC> > {
|
|
<a name="l00301"></a>00301
|
|
<a name="l00302"></a><a class="code" href="a00040.html#a82a143765e24306a9c8fd814970783b2">00302</a> <span class="keyword">typedef</span> <a class="code" href="a00040.html">bounded_array<T, N, ALLOC></a> <a class="code" href="a00040.html#a82a143765e24306a9c8fd814970783b2">self_type</a>;
|
|
<a name="l00303"></a>00303 <span class="keyword">public</span>:
|
|
<a name="l00304"></a>00304 <span class="comment">// No allocator_type as ALLOC is not used for allocation</span>
|
|
<a name="l00305"></a><a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">00305</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ALLOC::size_type <a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a>;
|
|
<a name="l00306"></a><a class="code" href="a00040.html#a797e3142b66219c9168799920eee4357">00306</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> ALLOC::difference_type <a class="code" href="a00040.html#a797e3142b66219c9168799920eee4357">difference_type</a>;
|
|
<a name="l00307"></a><a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">00307</a> <span class="keyword">typedef</span> T <a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">value_type</a>;
|
|
<a name="l00308"></a><a class="code" href="a00040.html#aea7a2a58a3cb024409743459553e9eba">00308</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00040.html#aea7a2a58a3cb024409743459553e9eba">const_reference</a>;
|
|
<a name="l00309"></a><a class="code" href="a00040.html#af891d225e36cf79b9e5dd64406fc34e7">00309</a> <span class="keyword">typedef</span> T &<a class="code" href="a00040.html#af891d225e36cf79b9e5dd64406fc34e7">reference</a>;
|
|
<a name="l00310"></a><a class="code" href="a00040.html#a2004ddbf7b81e5304b5d365c42d81c8e">00310</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T *<a class="code" href="a00040.html#a2004ddbf7b81e5304b5d365c42d81c8e">const_pointer</a>;
|
|
<a name="l00311"></a><a class="code" href="a00040.html#ade82faec337ded87670bcd528a3a47dd">00311</a> <span class="keyword">typedef</span> T *<a class="code" href="a00040.html#ade82faec337ded87670bcd528a3a47dd">pointer</a>;
|
|
<a name="l00312"></a><a class="code" href="a00040.html#af2c1400729944fe0dbd415061fdc4e4d">00312</a> <span class="keyword">typedef</span> <a class="code" href="a00040.html#a2004ddbf7b81e5304b5d365c42d81c8e">const_pointer</a> <a class="code" href="a00040.html#af2c1400729944fe0dbd415061fdc4e4d">const_iterator</a>;
|
|
<a name="l00313"></a><a class="code" href="a00040.html#a322c7cc0cfcf56807dc4e3d8a8040763">00313</a> <span class="keyword">typedef</span> <a class="code" href="a00040.html#ade82faec337ded87670bcd528a3a47dd">pointer</a> <a class="code" href="a00040.html#a322c7cc0cfcf56807dc4e3d8a8040763">iterator</a>;
|
|
<a name="l00314"></a>00314
|
|
<a name="l00315"></a>00315 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00316"></a>00316 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00317"></a><a class="code" href="a00040.html#a30ee689a86c585a1b780b10258017123">00317</a> <a class="code" href="a00040.html#a30ee689a86c585a1b780b10258017123">bounded_array</a> ():
|
|
<a name="l00318"></a>00318 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> (0) <span class="comment">/*, data_ ()*/</span> { <span class="comment">// size 0 - use bounded_vector to default construct with size N</span>
|
|
<a name="l00319"></a>00319 }
|
|
<a name="l00320"></a>00320 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00321"></a><a class="code" href="a00040.html#a8cde3d9b8f37af3617d45fe3091ab5e9">00321</a> <a class="code" href="a00040.html#a30ee689a86c585a1b780b10258017123">bounded_array</a> (<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> size):
|
|
<a name="l00322"></a>00322 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> (size) <span class="comment">/*, data_ ()*/</span> {
|
|
<a name="l00323"></a>00323 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> <= N, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00324"></a>00324 <span class="comment">// data_ (an array) elements are already default constructed</span>
|
|
<a name="l00325"></a>00325 }
|
|
<a name="l00326"></a>00326 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00327"></a><a class="code" href="a00040.html#a5548197625132f66b9a8fd6be77b23aa">00327</a> <a class="code" href="a00040.html#a30ee689a86c585a1b780b10258017123">bounded_array</a> (<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> size, <span class="keyword">const</span> <a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">value_type</a> &init):
|
|
<a name="l00328"></a>00328 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> (size) <span class="comment">/*, data_ ()*/</span> {
|
|
<a name="l00329"></a>00329 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> <= N, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00330"></a>00330 <span class="comment">// ISSUE elements should be value constructed here, but we must fill instead as already default constructed</span>
|
|
<a name="l00331"></a>00331 std::fill (<a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a>(), <a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">end</a>(), init) ;
|
|
<a name="l00332"></a>00332 }
|
|
<a name="l00333"></a>00333 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00334"></a><a class="code" href="a00040.html#a42b1257dfcc44659dbeb4d9e1730a3ff">00334</a> <a class="code" href="a00040.html#a30ee689a86c585a1b780b10258017123">bounded_array</a> (<span class="keyword">const</span> <a class="code" href="a00040.html">bounded_array</a> &c):
|
|
<a name="l00335"></a>00335 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> (c.<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>) {
|
|
<a name="l00336"></a>00336 <span class="comment">// ISSUE elements should be copy constructed here, but we must copy instead as already default constructed</span>
|
|
<a name="l00337"></a>00337 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (c.<a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a>(), c.<a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">end</a>(), <a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a>());
|
|
<a name="l00338"></a>00338 }
|
|
<a name="l00339"></a>00339
|
|
<a name="l00340"></a>00340 <span class="comment">// Resizing</span>
|
|
<a name="l00341"></a>00341 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00342"></a><a class="code" href="a00040.html#ac0df6d6b95d929e24ca8d9cf59c843fa">00342</a> <span class="keywordtype">void</span> <a class="code" href="a00040.html#ac0df6d6b95d929e24ca8d9cf59c843fa">resize</a> (<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> size) {
|
|
<a name="l00343"></a>00343 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (size <= N, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00344"></a>00344 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> = <a class="code" href="a00040.html#a9baeb6af213c42e2e9ed2258aec209d8">size</a>;
|
|
<a name="l00345"></a>00345 }
|
|
<a name="l00346"></a>00346 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00347"></a><a class="code" href="a00040.html#a87543983f3b8ac7a4733ff1a5c0408da">00347</a> <span class="keywordtype">void</span> <a class="code" href="a00040.html#a87543983f3b8ac7a4733ff1a5c0408da">resize</a> (<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> size, <a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">value_type</a> init) {
|
|
<a name="l00348"></a>00348 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (size <= N, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00349"></a>00349 <span class="keywordflow">if</span> (size > <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>)
|
|
<a name="l00350"></a>00350 std::fill (<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + size, init);
|
|
<a name="l00351"></a>00351 <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> = <a class="code" href="a00040.html#a9baeb6af213c42e2e9ed2258aec209d8">size</a>;
|
|
<a name="l00352"></a>00352 }
|
|
<a name="l00353"></a>00353
|
|
<a name="l00354"></a>00354 <span class="comment">// Random Access Container</span>
|
|
<a name="l00355"></a>00355 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00356"></a><a class="code" href="a00040.html#a8a2d843876637bdc235283cb158fc988">00356</a> <a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> <a class="code" href="a00040.html#a8a2d843876637bdc235283cb158fc988">max_size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00357"></a>00357 <span class="keywordflow">return</span> ALLOC ().max_size();
|
|
<a name="l00358"></a>00358 }
|
|
<a name="l00359"></a>00359
|
|
<a name="l00360"></a>00360 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00361"></a><a class="code" href="a00040.html#a714cca51d1e1b3e95ae8a163b596740b">00361</a> <span class="keywordtype">bool</span> <a class="code" href="a00040.html#a714cca51d1e1b3e95ae8a163b596740b">empty</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00362"></a>00362 <span class="keywordflow">return</span> <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a> == 0;
|
|
<a name="l00363"></a>00363 }
|
|
<a name="l00364"></a>00364
|
|
<a name="l00365"></a>00365 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00366"></a><a class="code" href="a00040.html#a9baeb6af213c42e2e9ed2258aec209d8">00366</a> <a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> <a class="code" href="a00040.html#a9baeb6af213c42e2e9ed2258aec209d8">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00367"></a>00367 <span class="keywordflow">return</span> <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>;
|
|
<a name="l00368"></a>00368 }
|
|
<a name="l00369"></a>00369
|
|
<a name="l00370"></a>00370 <span class="comment">// Element access</span>
|
|
<a name="l00371"></a>00371 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00372"></a><a class="code" href="a00040.html#ac47f5ce5aee36da721b56d66976bc457">00372</a> <a class="code" href="a00040.html#aea7a2a58a3cb024409743459553e9eba">const_reference</a> <a class="code" href="a00040.html#ac47f5ce5aee36da721b56d66976bc457">operator [] </a>(<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00373"></a>00373 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00374"></a>00374 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> [i];
|
|
<a name="l00375"></a>00375 }
|
|
<a name="l00376"></a>00376 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00377"></a><a class="code" href="a00040.html#ac243d36e3b0d86a046242a9143b8c1b6">00377</a> <a class="code" href="a00040.html#af891d225e36cf79b9e5dd64406fc34e7">reference</a> <a class="code" href="a00040.html#ac47f5ce5aee36da721b56d66976bc457">operator [] </a>(<a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> i) {
|
|
<a name="l00378"></a>00378 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00379"></a>00379 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> [i];
|
|
<a name="l00380"></a>00380 }
|
|
<a name="l00381"></a>00381
|
|
<a name="l00382"></a>00382 <span class="comment">// Assignment</span>
|
|
<a name="l00383"></a>00383 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00384"></a><a class="code" href="a00040.html#a4cae10b56bed88a6d2ec3e0df3abaeac">00384</a> <a class="code" href="a00040.html">bounded_array</a> &<a class="code" href="a00040.html#a4cae10b56bed88a6d2ec3e0df3abaeac">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00040.html">bounded_array</a> &a) {
|
|
<a name="l00385"></a>00385 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00386"></a>00386 <a class="code" href="a00040.html#ac0df6d6b95d929e24ca8d9cf59c843fa">resize</a> (a.<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>);
|
|
<a name="l00387"></a>00387 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (a.<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>, a.<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + a.<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>);
|
|
<a name="l00388"></a>00388 }
|
|
<a name="l00389"></a>00389 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00390"></a>00390 }
|
|
<a name="l00391"></a>00391 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00392"></a><a class="code" href="a00040.html#a2c30895bde555e317074202a5ce4dc44">00392</a> <a class="code" href="a00040.html">bounded_array</a> &<a class="code" href="a00040.html#a2c30895bde555e317074202a5ce4dc44">assign_temporary</a> (<a class="code" href="a00040.html">bounded_array</a> &a) {
|
|
<a name="l00393"></a>00393 *<span class="keyword">this</span> = a;
|
|
<a name="l00394"></a>00394 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00395"></a>00395 }
|
|
<a name="l00396"></a>00396
|
|
<a name="l00397"></a>00397 <span class="comment">// Swapping</span>
|
|
<a name="l00398"></a>00398 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00399"></a><a class="code" href="a00040.html#a01bd75791ff92895a99d79729f0bb40d">00399</a> <span class="keywordtype">void</span> <a class="code" href="a00040.html#a01bd75791ff92895a99d79729f0bb40d">swap</a> (<a class="code" href="a00040.html">bounded_array</a> &a) {
|
|
<a name="l00400"></a>00400 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00401"></a>00401 <a class="code" href="a00040.html#a01bd75791ff92895a99d79729f0bb40d">std::swap</a> (<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, a.<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>);
|
|
<a name="l00402"></a>00402 std::swap_ranges (<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>, <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + (std::max) (<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>, a.<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>), a.<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>);
|
|
<a name="l00403"></a>00403 }
|
|
<a name="l00404"></a>00404 }
|
|
<a name="l00405"></a>00405 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00406"></a><a class="code" href="a00040.html#a3b26f9564903a4b2bbdc19f41e11ee9f">00406</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00040.html#a3b26f9564903a4b2bbdc19f41e11ee9f">swap</a> (<a class="code" href="a00040.html">bounded_array</a> &a1, <a class="code" href="a00040.html">bounded_array</a> &a2) {
|
|
<a name="l00407"></a>00407 a1.<a class="code" href="a00040.html#a01bd75791ff92895a99d79729f0bb40d">swap</a> (a2);
|
|
<a name="l00408"></a>00408 }
|
|
<a name="l00409"></a>00409
|
|
<a name="l00410"></a>00410 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00411"></a><a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">00411</a> <a class="code" href="a00040.html#af2c1400729944fe0dbd415061fdc4e4d">const_iterator</a> <a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00412"></a>00412 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>;
|
|
<a name="l00413"></a>00413 }
|
|
<a name="l00414"></a>00414 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00415"></a><a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">00415</a> <a class="code" href="a00040.html#af2c1400729944fe0dbd415061fdc4e4d">const_iterator</a> <a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00416"></a>00416 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>;
|
|
<a name="l00417"></a>00417 }
|
|
<a name="l00418"></a>00418
|
|
<a name="l00419"></a>00419 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00420"></a><a class="code" href="a00040.html#a1b6371797c60746d45f30c2034f70f54">00420</a> <a class="code" href="a00040.html#a322c7cc0cfcf56807dc4e3d8a8040763">iterator</a> <a class="code" href="a00040.html#a1b6371797c60746d45f30c2034f70f54">begin</a> () {
|
|
<a name="l00421"></a>00421 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>;
|
|
<a name="l00422"></a>00422 }
|
|
<a name="l00423"></a>00423 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00424"></a><a class="code" href="a00040.html#ae7106879f91425924b2d45244a07e93d">00424</a> <a class="code" href="a00040.html#a322c7cc0cfcf56807dc4e3d8a8040763">iterator</a> <a class="code" href="a00040.html#ae7106879f91425924b2d45244a07e93d">end</a> () {
|
|
<a name="l00425"></a>00425 <span class="keywordflow">return</span> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> + <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>;
|
|
<a name="l00426"></a>00426 }
|
|
<a name="l00427"></a>00427
|
|
<a name="l00428"></a>00428 <span class="comment">// Reverse iterators</span>
|
|
<a name="l00429"></a><a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">00429</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">const_reverse_iterator</a>;
|
|
<a name="l00430"></a><a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">00430</a> <span class="keyword">typedef</span> std::reverse_iterator<iterator> <a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">reverse_iterator</a>;
|
|
<a name="l00431"></a>00431
|
|
<a name="l00432"></a>00432 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00433"></a><a class="code" href="a00040.html#a4d968283ff89ead30f193fcb17029cb4">00433</a> <a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">const_reverse_iterator</a> <a class="code" href="a00040.html#a4d968283ff89ead30f193fcb17029cb4">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00434"></a>00434 <span class="keywordflow">return</span> <a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">const_reverse_iterator</a> (<a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">end</a> ());
|
|
<a name="l00435"></a>00435 }
|
|
<a name="l00436"></a>00436 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00437"></a><a class="code" href="a00040.html#ad2b5e6de43a0bac388e1972d2d6d48e7">00437</a> <a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">const_reverse_iterator</a> <a class="code" href="a00040.html#ad2b5e6de43a0bac388e1972d2d6d48e7">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00438"></a>00438 <span class="keywordflow">return</span> <a class="code" href="a00040.html#afb8e6c3791117f614a820df20d432a68">const_reverse_iterator</a> (<a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a> ());
|
|
<a name="l00439"></a>00439 }
|
|
<a name="l00440"></a>00440 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00441"></a><a class="code" href="a00040.html#afc436c8a00533cdbaaea99a3f9787273">00441</a> <a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">reverse_iterator</a> <a class="code" href="a00040.html#afc436c8a00533cdbaaea99a3f9787273">rbegin</a> () {
|
|
<a name="l00442"></a>00442 <span class="keywordflow">return</span> <a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">reverse_iterator</a> (<a class="code" href="a00040.html#a15c906d50971155251b6ce159ac1d147">end</a> ());
|
|
<a name="l00443"></a>00443 }
|
|
<a name="l00444"></a>00444 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00445"></a><a class="code" href="a00040.html#aaaf78080b146656fddca0c7e5402894e">00445</a> <a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">reverse_iterator</a> <a class="code" href="a00040.html#aaaf78080b146656fddca0c7e5402894e">rend</a> () {
|
|
<a name="l00446"></a>00446 <span class="keywordflow">return</span> <a class="code" href="a00040.html#a5067f4b27318249e0501f9b7eabe80f2">reverse_iterator</a> (<a class="code" href="a00040.html#ac7ed5414e4733634148570352dc86b8d">begin</a> ());
|
|
<a name="l00447"></a>00447 }
|
|
<a name="l00448"></a>00448
|
|
<a name="l00449"></a>00449 <span class="keyword">private</span>:
|
|
<a name="l00450"></a>00450 <span class="comment">// Serialization</span>
|
|
<a name="l00451"></a><a class="code" href="a00040.html#ac98d07dd8f7b70e16ccb9a01abf56b9c">00451</a> <span class="keyword">friend</span> <span class="keyword">class </span>boost::serialization::access;
|
|
<a name="l00452"></a>00452
|
|
<a name="l00453"></a>00453 <span class="keyword">template</span><<span class="keyword">class</span> Archive>
|
|
<a name="l00454"></a><a class="code" href="a00040.html#a27719c757a59ff5d848ca6bf84c583e1">00454</a> <span class="keywordtype">void</span> <a class="code" href="a00040.html#a27719c757a59ff5d848ca6bf84c583e1">serialize</a>(Archive & ar, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version)
|
|
<a name="l00455"></a>00455 {
|
|
<a name="l00456"></a>00456 serialization::collection_size_type s(<a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>);
|
|
<a name="l00457"></a>00457 ar & serialization::make_nvp(<span class="stringliteral">"size"</span>, s);
|
|
<a name="l00458"></a>00458 <span class="keywordflow">if</span> ( Archive::is_loading::value ) {
|
|
<a name="l00459"></a>00459 <span class="keywordflow">if</span> (s > N) <a class="code" href="a00016.html">bad_size</a>(<span class="stringliteral">"too large size in bounded_array::load()\n"</span>).<a class="code" href="a00016.html#a00338404f646152e4401e7929824adf2">raise</a>();
|
|
<a name="l00460"></a>00460 <a class="code" href="a00040.html#ac0df6d6b95d929e24ca8d9cf59c843fa">resize</a>(s);
|
|
<a name="l00461"></a>00461 }
|
|
<a name="l00462"></a>00462 ar & serialization::make_array(<a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a>, s);
|
|
<a name="l00463"></a>00463 }
|
|
<a name="l00464"></a>00464
|
|
<a name="l00465"></a>00465 <span class="keyword">private</span>:
|
|
<a name="l00466"></a><a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">00466</a> <a class="code" href="a00040.html#a5f1d4831a966393bdc84db2c1bfcc240">size_type</a> <a class="code" href="a00040.html#a026b8283333a0b10c90023ae65f33707">size_</a>;
|
|
<a name="l00467"></a>00467 <span class="comment">// MSVC does not like arrays of size 0 in base classes. Hence, this conditionally changes the size to 1</span>
|
|
<a name="l00468"></a>00468 <span class="preprocessor">#ifdef _MSC_VER</span>
|
|
<a name="l00469"></a>00469 <span class="preprocessor"></span> <a class="code" href="a00603.html#af3635b2cc4ceb61fd48dcbc030168202">BOOST_UBLAS_BOUNDED_ARRAY_ALIGN</a> <a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">value_type</a> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> [(N>0)?N:1];
|
|
<a name="l00470"></a>00470 <span class="preprocessor">#else</span>
|
|
<a name="l00471"></a><a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">00471</a> <span class="preprocessor"></span> <a class="code" href="a00603.html#af3635b2cc4ceb61fd48dcbc030168202">BOOST_UBLAS_BOUNDED_ARRAY_ALIGN</a> <a class="code" href="a00040.html#aa3bf588e2d56d59eaeb6f43df9b72872">value_type</a> <a class="code" href="a00040.html#aada434b1e1d74a090a42dde994069c9c">data_</a> [N];
|
|
<a name="l00472"></a>00472 <span class="preprocessor">#endif</span>
|
|
<a name="l00473"></a>00473 <span class="preprocessor"></span> };
|
|
<a name="l00474"></a>00474
|
|
<a name="l00475"></a>00475
|
|
<a name="l00476"></a>00476 <span class="comment">// Array adaptor with normal deep copy semantics of elements</span>
|
|
<a name="l00477"></a>00477 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00478"></a><a class="code" href="a00012.html">00478</a> <span class="keyword">class </span><a class="code" href="a00012.html">array_adaptor</a>:
|
|
<a name="l00479"></a>00479 <span class="keyword">public</span> <a class="code" href="a00417.html">storage_array</a><array_adaptor<T> > {
|
|
<a name="l00480"></a>00480
|
|
<a name="l00481"></a><a class="code" href="a00012.html#a3a10df6476edc6fc21b79b2ad99e5d93">00481</a> <span class="keyword">typedef</span> <a class="code" href="a00012.html">array_adaptor<T></a> <a class="code" href="a00012.html#a3a10df6476edc6fc21b79b2ad99e5d93">self_type</a>;
|
|
<a name="l00482"></a>00482 <span class="keyword">public</span>:
|
|
<a name="l00483"></a><a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">00483</a> <span class="keyword">typedef</span> std::size_t <a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a>;
|
|
<a name="l00484"></a><a class="code" href="a00012.html#a57a6ab84c5e93efdaae41e2ef5018424">00484</a> <span class="keyword">typedef</span> std::ptrdiff_t <a class="code" href="a00012.html#a57a6ab84c5e93efdaae41e2ef5018424">difference_type</a>;
|
|
<a name="l00485"></a><a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">00485</a> <span class="keyword">typedef</span> T <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a>;
|
|
<a name="l00486"></a><a class="code" href="a00012.html#a3153d6dd8a9d7466ce70e40ef9da1e1e">00486</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00012.html#a3153d6dd8a9d7466ce70e40ef9da1e1e">const_reference</a>;
|
|
<a name="l00487"></a><a class="code" href="a00012.html#a2bd7416821d6bf226817d9e5b9b56f7f">00487</a> <span class="keyword">typedef</span> T &<a class="code" href="a00012.html#a2bd7416821d6bf226817d9e5b9b56f7f">reference</a>;
|
|
<a name="l00488"></a><a class="code" href="a00012.html#a0383d5d1cf6f34d8a0e83b9200b37a2d">00488</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T *<a class="code" href="a00012.html#a0383d5d1cf6f34d8a0e83b9200b37a2d">const_pointer</a>;
|
|
<a name="l00489"></a><a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">00489</a> <span class="keyword">typedef</span> T *<a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a>;
|
|
<a name="l00490"></a>00490
|
|
<a name="l00491"></a>00491 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00492"></a>00492 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00493"></a><a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">00493</a> <a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">array_adaptor</a> ():
|
|
<a name="l00494"></a>00494 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> (0), <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> (true), <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> (new <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> [0]) {
|
|
<a name="l00495"></a>00495 }
|
|
<a name="l00496"></a>00496 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00497"></a><a class="code" href="a00012.html#a31551ae4a02e5f902e081da23dc392a4">00497</a> <a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">array_adaptor</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size):
|
|
<a name="l00498"></a>00498 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> (size), <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> (true), <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> (new <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> [size]) {
|
|
<a name="l00499"></a>00499 }
|
|
<a name="l00500"></a>00500 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00501"></a><a class="code" href="a00012.html#ae27ead7d4e36d17aceca9155d63f44fa">00501</a> <a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">array_adaptor</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <span class="keyword">const</span> <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> &init):
|
|
<a name="l00502"></a>00502 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> (size), <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> (true), <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> (new <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> [size]) {
|
|
<a name="l00503"></a>00503 std::fill (<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>, <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>, init);
|
|
<a name="l00504"></a>00504 }
|
|
<a name="l00505"></a>00505 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00506"></a><a class="code" href="a00012.html#a32471985afd30fe119a398d02ffcb67b">00506</a> <a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">array_adaptor</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>):
|
|
<a name="l00507"></a>00507 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> (size), <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> (false), <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> (data) {}
|
|
<a name="l00508"></a>00508 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00509"></a><a class="code" href="a00012.html#a19cae58e6210fff695e7b1f3ed5cb453">00509</a> <a class="code" href="a00012.html#a73d6e40a12422f10e4efa5cf97847c42">array_adaptor</a> (<span class="keyword">const</span> <a class="code" href="a00012.html">array_adaptor</a> &a):
|
|
<a name="l00510"></a>00510 <a class="code" href="a00417.html">storage_array</a><<a class="code" href="a00012.html">self_type</a>> (),
|
|
<a name="l00511"></a>00511 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> (a.<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> (true), <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> (new <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> [a.<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>]) {
|
|
<a name="l00512"></a>00512 *<span class="keyword">this</span> = a;
|
|
<a name="l00513"></a>00513 }
|
|
<a name="l00514"></a>00514 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00515"></a><a class="code" href="a00012.html#a44c0287219131b641099b922f7c5b951">00515</a> <a class="code" href="a00012.html#a44c0287219131b641099b922f7c5b951">~array_adaptor</a> () {
|
|
<a name="l00516"></a>00516 <span class="keywordflow">if</span> (<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>) {
|
|
<a name="l00517"></a>00517 <span class="keyword">delete</span> [] <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00518"></a>00518 }
|
|
<a name="l00519"></a>00519 }
|
|
<a name="l00520"></a>00520
|
|
<a name="l00521"></a>00521 <span class="comment">// Resizing</span>
|
|
<a name="l00522"></a>00522 <span class="keyword">private</span>:
|
|
<a name="l00523"></a>00523 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00524"></a><a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">00524</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">resize_internal</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> init, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>) {
|
|
<a name="l00525"></a>00525 <span class="keywordflow">if</span> (size != <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>) {
|
|
<a name="l00526"></a>00526 <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a> = <span class="keyword">new</span> <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> [<a class="code" href="a00012.html#af8005c647ae52aa6f8af9dd739f05ec6">size</a>];
|
|
<a name="l00527"></a>00527 <span class="keywordflow">if</span> (preserve) {
|
|
<a name="l00528"></a>00528 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>, <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + (std::min) (size, <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), data);
|
|
<a name="l00529"></a>00529 std::fill (data + (std::min) (size, <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), data + size, init);
|
|
<a name="l00530"></a>00530 }
|
|
<a name="l00531"></a>00531 <span class="keywordflow">if</span> (<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>)
|
|
<a name="l00532"></a>00532 <span class="keyword">delete</span> [] <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00533"></a>00533 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> = <a class="code" href="a00012.html#af8005c647ae52aa6f8af9dd739f05ec6">size</a>;
|
|
<a name="l00534"></a>00534 <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> = <span class="keyword">true</span>;
|
|
<a name="l00535"></a>00535 <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> = <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>;
|
|
<a name="l00536"></a>00536 }
|
|
<a name="l00537"></a>00537 }
|
|
<a name="l00538"></a>00538 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00539"></a><a class="code" href="a00012.html#a1aee7674916bc61ee63c7f9cf0661ecb">00539</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a1aee7674916bc61ee63c7f9cf0661ecb">resize_internal</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> init, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>) {
|
|
<a name="l00540"></a>00540 <span class="keywordflow">if</span> (data != <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>) {
|
|
<a name="l00541"></a>00541 <span class="keywordflow">if</span> (preserve) {
|
|
<a name="l00542"></a>00542 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>, <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + (std::min) (size, <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), data);
|
|
<a name="l00543"></a>00543 std::fill (data + (std::min) (size, <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), data + size, init);
|
|
<a name="l00544"></a>00544 }
|
|
<a name="l00545"></a>00545 <span class="keywordflow">if</span> (<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>)
|
|
<a name="l00546"></a>00546 <span class="keyword">delete</span> [] <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00547"></a>00547 <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> = <span class="keyword">false</span>;
|
|
<a name="l00548"></a>00548 <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> = <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>;
|
|
<a name="l00549"></a>00549 }
|
|
<a name="l00550"></a>00550 <span class="keywordflow">else</span> {
|
|
<a name="l00551"></a>00551 std::fill (data + (std::min) (size, <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>), data + size, init);
|
|
<a name="l00552"></a>00552 }
|
|
<a name="l00553"></a>00553 <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a> = <a class="code" href="a00012.html#af8005c647ae52aa6f8af9dd739f05ec6">size</a>;
|
|
<a name="l00554"></a>00554 }
|
|
<a name="l00555"></a>00555 <span class="keyword">public</span>:
|
|
<a name="l00556"></a>00556 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00557"></a><a class="code" href="a00012.html#abbcb6752a8f1078a6f5d610796c8ad60">00557</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#abbcb6752a8f1078a6f5d610796c8ad60">resize</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size) {
|
|
<a name="l00558"></a>00558 <a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">resize_internal</a> (size, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> (), <span class="keyword">false</span>);
|
|
<a name="l00559"></a>00559 }
|
|
<a name="l00560"></a>00560 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00561"></a><a class="code" href="a00012.html#a64944b8dfc42bbe2e6c8e5f8acd8eb37">00561</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a64944b8dfc42bbe2e6c8e5f8acd8eb37">resize</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> init) {
|
|
<a name="l00562"></a>00562 <a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">resize_internal</a> (size, init, <span class="keyword">true</span>);
|
|
<a name="l00563"></a>00563 }
|
|
<a name="l00564"></a>00564 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00565"></a><a class="code" href="a00012.html#a83809367afd40f34d7da595eb4dea8d8">00565</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a83809367afd40f34d7da595eb4dea8d8">resize</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>) {
|
|
<a name="l00566"></a>00566 <a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">resize_internal</a> (size, data, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> (), <span class="keyword">false</span>);
|
|
<a name="l00567"></a>00567 }
|
|
<a name="l00568"></a>00568 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00569"></a><a class="code" href="a00012.html#a54e797c8c9d571a3295560a1f06c124d">00569</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a54e797c8c9d571a3295560a1f06c124d">resize</a> (<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> size, <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <a class="code" href="a00012.html#a86bfd4849064c7e93c9fb1187c3cffa9">value_type</a> init) {
|
|
<a name="l00570"></a>00570 <a class="code" href="a00012.html#a53204d7257644071ec40bac150e327d5">resize_internal</a> (size, data, init, <span class="keyword">true</span>);
|
|
<a name="l00571"></a>00571 }
|
|
<a name="l00572"></a>00572
|
|
<a name="l00573"></a>00573 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00574"></a><a class="code" href="a00012.html#af8005c647ae52aa6f8af9dd739f05ec6">00574</a> <a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> <a class="code" href="a00012.html#af8005c647ae52aa6f8af9dd739f05ec6">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00575"></a>00575 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>;
|
|
<a name="l00576"></a>00576 }
|
|
<a name="l00577"></a>00577
|
|
<a name="l00578"></a>00578 <span class="comment">// Element access</span>
|
|
<a name="l00579"></a>00579 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00580"></a><a class="code" href="a00012.html#a02f1dd1db74d635251320cad7b74343d">00580</a> <a class="code" href="a00012.html#a3153d6dd8a9d7466ce70e40ef9da1e1e">const_reference</a> <a class="code" href="a00012.html#a02f1dd1db74d635251320cad7b74343d">operator [] </a>(<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00581"></a>00581 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00582"></a>00582 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> [i];
|
|
<a name="l00583"></a>00583 }
|
|
<a name="l00584"></a>00584 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00585"></a><a class="code" href="a00012.html#a044e955cff90e76abfa113370fe9b9d8">00585</a> <a class="code" href="a00012.html#a2bd7416821d6bf226817d9e5b9b56f7f">reference</a> <a class="code" href="a00012.html#a02f1dd1db74d635251320cad7b74343d">operator [] </a>(<a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> i) {
|
|
<a name="l00586"></a>00586 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00587"></a>00587 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> [i];
|
|
<a name="l00588"></a>00588 }
|
|
<a name="l00589"></a>00589
|
|
<a name="l00590"></a>00590 <span class="comment">// Assignment</span>
|
|
<a name="l00591"></a>00591 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00592"></a><a class="code" href="a00012.html#a06ee325600c58d4947f47e20fb3bdb82">00592</a> <a class="code" href="a00012.html">array_adaptor</a> &<a class="code" href="a00012.html#a06ee325600c58d4947f47e20fb3bdb82">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00012.html">array_adaptor</a> &a) {
|
|
<a name="l00593"></a>00593 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00594"></a>00594 <a class="code" href="a00012.html#abbcb6752a8f1078a6f5d610796c8ad60">resize</a> (a.<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>);
|
|
<a name="l00595"></a>00595 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (a.<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>, a.<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + a.<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>, <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>);
|
|
<a name="l00596"></a>00596 }
|
|
<a name="l00597"></a>00597 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00598"></a>00598 }
|
|
<a name="l00599"></a>00599 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00600"></a><a class="code" href="a00012.html#a6f90d982872a7beab268ed8c40b20038">00600</a> <a class="code" href="a00012.html">array_adaptor</a> &<a class="code" href="a00012.html#a6f90d982872a7beab268ed8c40b20038">assign_temporary</a> (<a class="code" href="a00012.html">array_adaptor</a> &a) {
|
|
<a name="l00601"></a>00601 <span class="keywordflow">if</span> (<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a> && a.<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>)
|
|
<a name="l00602"></a>00602 <a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">swap</a> (a);
|
|
<a name="l00603"></a>00603 <span class="keywordflow">else</span>
|
|
<a name="l00604"></a>00604 *<span class="keyword">this</span> = a;
|
|
<a name="l00605"></a>00605 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00606"></a>00606 }
|
|
<a name="l00607"></a>00607
|
|
<a name="l00608"></a>00608 <span class="comment">// Swapping</span>
|
|
<a name="l00609"></a>00609 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00610"></a><a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">00610</a> <span class="keywordtype">void</span> <a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">swap</a> (<a class="code" href="a00012.html">array_adaptor</a> &a) {
|
|
<a name="l00611"></a>00611 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00612"></a>00612 <a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">std::swap</a> (<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>, a.<a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>);
|
|
<a name="l00613"></a>00613 <a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">std::swap</a> (<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>, a.<a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>);
|
|
<a name="l00614"></a>00614 <a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">std::swap</a> (<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>, a.<a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>);
|
|
<a name="l00615"></a>00615 }
|
|
<a name="l00616"></a>00616 }
|
|
<a name="l00617"></a>00617 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00618"></a><a class="code" href="a00012.html#a38c3838819ab83bd8526912a2f1e5bd7">00618</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00012.html#a38c3838819ab83bd8526912a2f1e5bd7">swap</a> (<a class="code" href="a00012.html">array_adaptor</a> &a1, <a class="code" href="a00012.html">array_adaptor</a> &a2) {
|
|
<a name="l00619"></a>00619 a1.<a class="code" href="a00012.html#aef4962f289caf91fbfd7537c78adc71b">swap</a> (a2);
|
|
<a name="l00620"></a>00620 }
|
|
<a name="l00621"></a>00621
|
|
<a name="l00622"></a>00622 <span class="comment">// Iterators simply are pointers.</span>
|
|
<a name="l00623"></a>00623
|
|
<a name="l00624"></a><a class="code" href="a00012.html#a75199806da1849a40984f6751e603f98">00624</a> <span class="keyword">typedef</span> <a class="code" href="a00012.html#a0383d5d1cf6f34d8a0e83b9200b37a2d">const_pointer</a> <a class="code" href="a00012.html#a75199806da1849a40984f6751e603f98">const_iterator</a>;
|
|
<a name="l00625"></a>00625
|
|
<a name="l00626"></a>00626 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00627"></a><a class="code" href="a00012.html#a836064056dbaf35ecf0320dd2edd410a">00627</a> <a class="code" href="a00012.html#a75199806da1849a40984f6751e603f98">const_iterator</a> <a class="code" href="a00012.html#a836064056dbaf35ecf0320dd2edd410a">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00628"></a>00628 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00629"></a>00629 }
|
|
<a name="l00630"></a>00630 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00631"></a><a class="code" href="a00012.html#a3f37c9129e8e7717db3710d24b6cd03b">00631</a> <a class="code" href="a00012.html#a75199806da1849a40984f6751e603f98">const_iterator</a> <a class="code" href="a00012.html#a3f37c9129e8e7717db3710d24b6cd03b">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00632"></a>00632 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>;
|
|
<a name="l00633"></a>00633 }
|
|
<a name="l00634"></a>00634
|
|
<a name="l00635"></a><a class="code" href="a00012.html#ade1aec04e408f130384cfabd645fa4af">00635</a> <span class="keyword">typedef</span> <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00012.html#ade1aec04e408f130384cfabd645fa4af">iterator</a>;
|
|
<a name="l00636"></a>00636
|
|
<a name="l00637"></a>00637 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00638"></a><a class="code" href="a00012.html#a9f93bc081cee427b26f40d48d3e03cc9">00638</a> <a class="code" href="a00012.html#ade1aec04e408f130384cfabd645fa4af">iterator</a> <a class="code" href="a00012.html#a9f93bc081cee427b26f40d48d3e03cc9">begin</a> () {
|
|
<a name="l00639"></a>00639 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00640"></a>00640 }
|
|
<a name="l00641"></a>00641 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00642"></a><a class="code" href="a00012.html#a5156f3eb6f30c1886c7321fc478c8f1e">00642</a> <a class="code" href="a00012.html#ade1aec04e408f130384cfabd645fa4af">iterator</a> <a class="code" href="a00012.html#a5156f3eb6f30c1886c7321fc478c8f1e">end</a> () {
|
|
<a name="l00643"></a>00643 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a> + <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>;
|
|
<a name="l00644"></a>00644 }
|
|
<a name="l00645"></a>00645
|
|
<a name="l00646"></a>00646 <span class="comment">// Reverse iterators</span>
|
|
<a name="l00647"></a><a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">00647</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">const_reverse_iterator</a>;
|
|
<a name="l00648"></a><a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">00648</a> <span class="keyword">typedef</span> std::reverse_iterator<iterator> <a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">reverse_iterator</a>;
|
|
<a name="l00649"></a>00649
|
|
<a name="l00650"></a>00650 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00651"></a><a class="code" href="a00012.html#aa1efa2aafae141486e2df31112bdce3a">00651</a> <a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">const_reverse_iterator</a> <a class="code" href="a00012.html#aa1efa2aafae141486e2df31112bdce3a">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00652"></a>00652 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">const_reverse_iterator</a> (<a class="code" href="a00012.html#a3f37c9129e8e7717db3710d24b6cd03b">end</a> ());
|
|
<a name="l00653"></a>00653 }
|
|
<a name="l00654"></a>00654 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00655"></a><a class="code" href="a00012.html#ad719124ec859db4794589f67fc8552a1">00655</a> <a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">const_reverse_iterator</a> <a class="code" href="a00012.html#ad719124ec859db4794589f67fc8552a1">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00656"></a>00656 <span class="keywordflow">return</span> <a class="code" href="a00012.html#a538c391a4b291c4ab09a5507a3aa29b8">const_reverse_iterator</a> (<a class="code" href="a00012.html#a836064056dbaf35ecf0320dd2edd410a">begin</a> ());
|
|
<a name="l00657"></a>00657 }
|
|
<a name="l00658"></a>00658 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00659"></a><a class="code" href="a00012.html#a1d1d0c1b8f78725a800123c16db35ac8">00659</a> <a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">reverse_iterator</a> <a class="code" href="a00012.html#a1d1d0c1b8f78725a800123c16db35ac8">rbegin</a> () {
|
|
<a name="l00660"></a>00660 <span class="keywordflow">return</span> <a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">reverse_iterator</a> (<a class="code" href="a00012.html#a3f37c9129e8e7717db3710d24b6cd03b">end</a> ());
|
|
<a name="l00661"></a>00661 }
|
|
<a name="l00662"></a>00662 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00663"></a><a class="code" href="a00012.html#a99495ca18b0b336b47d16d11cbb925ae">00663</a> <a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">reverse_iterator</a> <a class="code" href="a00012.html#a99495ca18b0b336b47d16d11cbb925ae">rend</a> () {
|
|
<a name="l00664"></a>00664 <span class="keywordflow">return</span> <a class="code" href="a00012.html#aaa5e6cb38199bf30db91e4fc10d28412">reverse_iterator</a> (<a class="code" href="a00012.html#a836064056dbaf35ecf0320dd2edd410a">begin</a> ());
|
|
<a name="l00665"></a>00665 }
|
|
<a name="l00666"></a>00666
|
|
<a name="l00667"></a>00667 <span class="keyword">private</span>:
|
|
<a name="l00668"></a><a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">00668</a> <a class="code" href="a00012.html#aff132ba11bee492fccbe3c5cbff4b02a">size_type</a> <a class="code" href="a00012.html#a9c3fcf6ae7e6d15336baf5ccc9e79f12">size_</a>;
|
|
<a name="l00669"></a><a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">00669</a> <span class="keywordtype">bool</span> <a class="code" href="a00012.html#a76e02f58dc89d8271852a5a5773c3d1a">own_</a>;
|
|
<a name="l00670"></a><a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">00670</a> <a class="code" href="a00012.html#a802863eac0656843efd600e8b2c144fd">pointer</a> <a class="code" href="a00012.html#a664dae7565e8a00425808d2f948b374e">data_</a>;
|
|
<a name="l00671"></a>00671 };
|
|
<a name="l00672"></a>00672
|
|
<a name="l00673"></a>00673 <span class="preprocessor">#ifdef BOOST_UBLAS_SHALLOW_ARRAY_ADAPTOR</span>
|
|
<a name="l00674"></a>00674 <span class="preprocessor"></span> <span class="comment">// Array adaptor with shallow (reference) copy semantics of elements.</span>
|
|
<a name="l00675"></a>00675 <span class="comment">// shared_array is used to maintain reference counts.</span>
|
|
<a name="l00676"></a>00676 <span class="comment">// This class breaks the normal copy semantics for a storage container and is very dangerous!</span>
|
|
<a name="l00677"></a>00677 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00678"></a>00678 <span class="keyword">class </span>shallow_array_adaptor:
|
|
<a name="l00679"></a>00679 <span class="keyword">public</span> <a class="code" href="a00417.html">storage_array</a><shallow_array_adaptor<T> > {
|
|
<a name="l00680"></a>00680
|
|
<a name="l00681"></a>00681 <span class="keyword">typedef</span> shallow_array_adaptor<T> self_type;
|
|
<a name="l00682"></a>00682
|
|
<a name="l00683"></a>00683 <span class="keyword">template</span><<span class="keyword">class</span> TT>
|
|
<a name="l00684"></a>00684 <span class="keyword">struct </span>leaker {
|
|
<a name="l00685"></a>00685 <span class="keyword">typedef</span> <span class="keywordtype">void</span> result_type;
|
|
<a name="l00686"></a>00686 <span class="keyword">typedef</span> TT *argument_type;
|
|
<a name="l00687"></a>00687
|
|
<a name="l00688"></a>00688 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00689"></a>00689 result_type operator () (argument_type x) {}
|
|
<a name="l00690"></a>00690 };
|
|
<a name="l00691"></a>00691
|
|
<a name="l00692"></a>00692 <span class="keyword">public</span>:
|
|
<a name="l00693"></a>00693 <span class="keyword">typedef</span> std::size_t size_type;
|
|
<a name="l00694"></a>00694 <span class="keyword">typedef</span> std::ptrdiff_t difference_type;
|
|
<a name="l00695"></a>00695 <span class="keyword">typedef</span> T value_type;
|
|
<a name="l00696"></a>00696 <span class="keyword">typedef</span> <span class="keyword">const</span> T &const_reference;
|
|
<a name="l00697"></a>00697 <span class="keyword">typedef</span> T &reference;
|
|
<a name="l00698"></a>00698 <span class="keyword">typedef</span> <span class="keyword">const</span> T *const_pointer;
|
|
<a name="l00699"></a>00699 <span class="keyword">typedef</span> T *pointer;
|
|
<a name="l00700"></a>00700
|
|
<a name="l00701"></a>00701 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00702"></a>00702 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00703"></a>00703 shallow_array_adaptor ():
|
|
<a name="l00704"></a>00704 size_ (0), own_ (true), data_ (new value_type [0]) {
|
|
<a name="l00705"></a>00705 }
|
|
<a name="l00706"></a>00706 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00707"></a>00707 shallow_array_adaptor (size_type size):
|
|
<a name="l00708"></a>00708 size_ (size), own_ (true), data_ (new value_type [size]) {
|
|
<a name="l00709"></a>00709 }
|
|
<a name="l00710"></a>00710 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00711"></a>00711 shallow_array_adaptor (size_type size, <span class="keyword">const</span> value_type &init):
|
|
<a name="l00712"></a>00712 size_ (size), own_ (true), data_ (new value_type [size]) {
|
|
<a name="l00713"></a>00713 std::fill (data_.get (), data_.get () + size_, init);
|
|
<a name="l00714"></a>00714 }
|
|
<a name="l00715"></a>00715 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00716"></a>00716 shallow_array_adaptor (size_type size, pointer <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>):
|
|
<a name="l00717"></a>00717 size_ (size), own_ (false), data_ (data, leaker<value_type> ()) {}
|
|
<a name="l00718"></a>00718
|
|
<a name="l00719"></a>00719 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00720"></a>00720 shallow_array_adaptor (<span class="keyword">const</span> shallow_array_adaptor &a):
|
|
<a name="l00721"></a>00721 storage_array<self_type> (),
|
|
<a name="l00722"></a>00722 size_ (a.size_), own_ (a.own_), data_ (a.data_) {}
|
|
<a name="l00723"></a>00723
|
|
<a name="l00724"></a>00724 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00725"></a>00725 ~shallow_array_adaptor () {
|
|
<a name="l00726"></a>00726 }
|
|
<a name="l00727"></a>00727
|
|
<a name="l00728"></a>00728 <span class="comment">// Resizing</span>
|
|
<a name="l00729"></a>00729 <span class="keyword">private</span>:
|
|
<a name="l00730"></a>00730 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00731"></a>00731 <span class="keywordtype">void</span> resize_internal (size_type size, value_type init, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>) {
|
|
<a name="l00732"></a>00732 <span class="keywordflow">if</span> (size != size_) {
|
|
<a name="l00733"></a>00733 shared_array<value_type> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a> (<span class="keyword">new</span> value_type [size]);
|
|
<a name="l00734"></a>00734 <span class="keywordflow">if</span> (preserve) {
|
|
<a name="l00735"></a>00735 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (data_.get (), data_.get () + (std::min) (size, size_), <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>.get ());
|
|
<a name="l00736"></a>00736 std::fill (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>.get () + (std::min) (size, size_), <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>.get () + <a class="code" href="a00595.html#a21019ef1d90c1854094dffa247fe1daf" title="Return the number of columns.">size</a>, init);
|
|
<a name="l00737"></a>00737 }
|
|
<a name="l00738"></a>00738 size_ = <a class="code" href="a00595.html#a21019ef1d90c1854094dffa247fe1daf" title="Return the number of columns.">size</a>;
|
|
<a name="l00739"></a>00739 data_ = <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>;
|
|
<a name="l00740"></a>00740 }
|
|
<a name="l00741"></a>00741 }
|
|
<a name="l00742"></a>00742 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00743"></a>00743 <span class="keywordtype">void</span> resize_internal (size_type size, pointer <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, value_type init, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>) {
|
|
<a name="l00744"></a>00744 <span class="keywordflow">if</span> (preserve) {
|
|
<a name="l00745"></a>00745 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (data_.get (), data_.get () + (std::min) (size, size_), <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>);
|
|
<a name="l00746"></a>00746 std::fill (data + (std::min) (size, size_), data + size, init);
|
|
<a name="l00747"></a>00747 }
|
|
<a name="l00748"></a>00748 size_ = <a class="code" href="a00595.html#a21019ef1d90c1854094dffa247fe1daf" title="Return the number of columns.">size</a>;
|
|
<a name="l00749"></a>00749 data_ = <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>;
|
|
<a name="l00750"></a>00750 }
|
|
<a name="l00751"></a>00751 <span class="keyword">public</span>:
|
|
<a name="l00752"></a>00752 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00753"></a>00753 <span class="keywordtype">void</span> resize (size_type size) {
|
|
<a name="l00754"></a>00754 resize_internal (size, value_type (), <span class="keyword">false</span>);
|
|
<a name="l00755"></a>00755 }
|
|
<a name="l00756"></a>00756 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00757"></a>00757 <span class="keywordtype">void</span> resize (size_type size, value_type init) {
|
|
<a name="l00758"></a>00758 resize_internal (size, init, <span class="keyword">true</span>);
|
|
<a name="l00759"></a>00759 }
|
|
<a name="l00760"></a>00760 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00761"></a>00761 <span class="keywordtype">void</span> resize (size_type size, pointer data) {
|
|
<a name="l00762"></a>00762 resize_internal (size, data, value_type (), <span class="keyword">false</span>);
|
|
<a name="l00763"></a>00763 }
|
|
<a name="l00764"></a>00764 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00765"></a>00765 <span class="keywordtype">void</span> resize (size_type size, pointer data, value_type init) {
|
|
<a name="l00766"></a>00766 resize_internal (size, data, init, <span class="keyword">true</span>);
|
|
<a name="l00767"></a>00767 }
|
|
<a name="l00768"></a>00768
|
|
<a name="l00769"></a>00769 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00770"></a>00770 size_type <a class="code" href="a00595.html#a21019ef1d90c1854094dffa247fe1daf" title="Return the number of columns.">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00771"></a>00771 <span class="keywordflow">return</span> size_;
|
|
<a name="l00772"></a>00772 }
|
|
<a name="l00773"></a>00773
|
|
<a name="l00774"></a>00774 <span class="comment">// Element access</span>
|
|
<a name="l00775"></a>00775 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00776"></a>00776 const_reference operator [] (size_type i)<span class="keyword"> const </span>{
|
|
<a name="l00777"></a>00777 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < size_, bad_index ());
|
|
<a name="l00778"></a>00778 <span class="keywordflow">return</span> data_ [i];
|
|
<a name="l00779"></a>00779 }
|
|
<a name="l00780"></a>00780 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00781"></a>00781 reference operator [] (size_type i) {
|
|
<a name="l00782"></a>00782 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < size_, bad_index ());
|
|
<a name="l00783"></a>00783 <span class="keywordflow">return</span> data_ [i];
|
|
<a name="l00784"></a>00784 }
|
|
<a name="l00785"></a>00785
|
|
<a name="l00786"></a>00786 <span class="comment">// Assignment</span>
|
|
<a name="l00787"></a>00787 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00788"></a>00788 shallow_array_adaptor &operator = (<span class="keyword">const</span> shallow_array_adaptor &a) {
|
|
<a name="l00789"></a>00789 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00790"></a>00790 resize (a.size_);
|
|
<a name="l00791"></a>00791 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (a.data_.get (), a.data_.get () + a.size_, data_.get ());
|
|
<a name="l00792"></a>00792 }
|
|
<a name="l00793"></a>00793 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00794"></a>00794 }
|
|
<a name="l00795"></a>00795 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00796"></a>00796 shallow_array_adaptor &assign_temporary (shallow_array_adaptor &a) {
|
|
<a name="l00797"></a>00797 <span class="keywordflow">if</span> (own_ && a.own_)
|
|
<a name="l00798"></a>00798 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">swap</a> (a);
|
|
<a name="l00799"></a>00799 <span class="keywordflow">else</span>
|
|
<a name="l00800"></a>00800 *<span class="keyword">this</span> = a;
|
|
<a name="l00801"></a>00801 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00802"></a>00802 }
|
|
<a name="l00803"></a>00803
|
|
<a name="l00804"></a>00804 <span class="comment">// Swapping</span>
|
|
<a name="l00805"></a>00805 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00806"></a>00806 <span class="keywordtype">void</span> <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">swap</a> (shallow_array_adaptor &a) {
|
|
<a name="l00807"></a>00807 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &a) {
|
|
<a name="l00808"></a>00808 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a> (size_, a.size_);
|
|
<a name="l00809"></a>00809 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a> (own_, a.own_);
|
|
<a name="l00810"></a>00810 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a> (data_, a.data_);
|
|
<a name="l00811"></a>00811 }
|
|
<a name="l00812"></a>00812 }
|
|
<a name="l00813"></a>00813 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00814"></a>00814 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">swap</a> (shallow_array_adaptor &a1, shallow_array_adaptor &a2) {
|
|
<a name="l00815"></a>00815 a1.swap (a2);
|
|
<a name="l00816"></a>00816 }
|
|
<a name="l00817"></a>00817
|
|
<a name="l00818"></a>00818 <span class="comment">// Iterators simply are pointers.</span>
|
|
<a name="l00819"></a>00819
|
|
<a name="l00820"></a>00820 <span class="keyword">typedef</span> const_pointer const_iterator;
|
|
<a name="l00821"></a>00821
|
|
<a name="l00822"></a>00822 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00823"></a>00823 const_iterator <a class="code" href="a00595.html#ae2297dd9051333c2ec1d0f63175f66fe" title="An iterator to the first element of the given vector expression.">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00824"></a>00824 <span class="keywordflow">return</span> data_.get ();
|
|
<a name="l00825"></a>00825 }
|
|
<a name="l00826"></a>00826 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00827"></a>00827 const_iterator <a class="code" href="a00595.html#a5e8a7fc1352cd3e148064608dad9f38d" title="An iterator to the last element of the given vector expression.">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00828"></a>00828 <span class="keywordflow">return</span> data_.get () + size_;
|
|
<a name="l00829"></a>00829 }
|
|
<a name="l00830"></a>00830
|
|
<a name="l00831"></a>00831 <span class="keyword">typedef</span> pointer <a class="code" href="a00593.html">iterator</a>;
|
|
<a name="l00832"></a>00832
|
|
<a name="l00833"></a>00833 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00834"></a>00834 <a class="code" href="a00593.html">iterator</a> <a class="code" href="a00595.html#ae2297dd9051333c2ec1d0f63175f66fe" title="An iterator to the first element of the given vector expression.">begin</a> () {
|
|
<a name="l00835"></a>00835 <span class="keywordflow">return</span> data_.get ();
|
|
<a name="l00836"></a>00836 }
|
|
<a name="l00837"></a>00837 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00838"></a>00838 <a class="code" href="a00593.html">iterator</a> <a class="code" href="a00595.html#a5e8a7fc1352cd3e148064608dad9f38d" title="An iterator to the last element of the given vector expression.">end</a> () {
|
|
<a name="l00839"></a>00839 <span class="keywordflow">return</span> data_.get () + size_;
|
|
<a name="l00840"></a>00840 }
|
|
<a name="l00841"></a>00841
|
|
<a name="l00842"></a>00842 <span class="comment">// Reverse iterators</span>
|
|
<a name="l00843"></a>00843 <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> const_reverse_iterator;
|
|
<a name="l00844"></a>00844 <span class="keyword">typedef</span> std::reverse_iterator<iterator> reverse_iterator;
|
|
<a name="l00845"></a>00845
|
|
<a name="l00846"></a>00846 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00847"></a>00847 const_reverse_iterator rbegin ()<span class="keyword"> const </span>{
|
|
<a name="l00848"></a>00848 <span class="keywordflow">return</span> const_reverse_iterator (<a class="code" href="a00595.html#a5e8a7fc1352cd3e148064608dad9f38d" title="An iterator to the last element of the given vector expression.">end</a> ());
|
|
<a name="l00849"></a>00849 }
|
|
<a name="l00850"></a>00850 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00851"></a>00851 const_reverse_iterator rend ()<span class="keyword"> const </span>{
|
|
<a name="l00852"></a>00852 <span class="keywordflow">return</span> const_reverse_iterator (<a class="code" href="a00595.html#ae2297dd9051333c2ec1d0f63175f66fe" title="An iterator to the first element of the given vector expression.">begin</a> ());
|
|
<a name="l00853"></a>00853 }
|
|
<a name="l00854"></a>00854 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00855"></a>00855 reverse_iterator rbegin () {
|
|
<a name="l00856"></a>00856 <span class="keywordflow">return</span> reverse_iterator (<a class="code" href="a00595.html#a5e8a7fc1352cd3e148064608dad9f38d" title="An iterator to the last element of the given vector expression.">end</a> ());
|
|
<a name="l00857"></a>00857 }
|
|
<a name="l00858"></a>00858 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00859"></a>00859 reverse_iterator rend () {
|
|
<a name="l00860"></a>00860 <span class="keywordflow">return</span> reverse_iterator (<a class="code" href="a00595.html#ae2297dd9051333c2ec1d0f63175f66fe" title="An iterator to the first element of the given vector expression.">begin</a> ());
|
|
<a name="l00861"></a>00861 }
|
|
<a name="l00862"></a>00862
|
|
<a name="l00863"></a>00863 <span class="keyword">private</span>:
|
|
<a name="l00864"></a>00864 size_type size_;
|
|
<a name="l00865"></a>00865 <span class="keywordtype">bool</span> own_;
|
|
<a name="l00866"></a>00866 shared_array<value_type> data_;
|
|
<a name="l00867"></a>00867 };
|
|
<a name="l00868"></a>00868
|
|
<a name="l00869"></a>00869 <span class="preprocessor">#endif</span>
|
|
<a name="l00870"></a>00870 <span class="preprocessor"></span>
|
|
<a name="l00871"></a>00871
|
|
<a name="l00872"></a>00872 <span class="comment">// Range class</span>
|
|
<a name="l00873"></a>00873 <span class="keyword">template</span> <<span class="keyword">class</span> Z, <span class="keyword">class</span> D>
|
|
<a name="l00874"></a><a class="code" href="a00001.html">00874</a> <span class="keyword">class </span><a class="code" href="a00001.html">basic_range</a> {
|
|
<a name="l00875"></a><a class="code" href="a00001.html#a976d0efb58e90af169c623eb3932d1d3">00875</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<Z, D></a> <a class="code" href="a00001.html#a976d0efb58e90af169c623eb3932d1d3">self_type</a>;
|
|
<a name="l00876"></a>00876 <span class="keyword">public</span>:
|
|
<a name="l00877"></a><a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">00877</a> <span class="keyword">typedef</span> Z <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a>;
|
|
<a name="l00878"></a><a class="code" href="a00001.html#ac40cb54ae2225063ccb83c37fd362bc4">00878</a> <span class="keyword">typedef</span> D <a class="code" href="a00001.html#ac40cb54ae2225063ccb83c37fd362bc4">difference_type</a>;
|
|
<a name="l00879"></a><a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">00879</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">value_type</a>;
|
|
<a name="l00880"></a><a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">00880</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">value_type</a> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">const_reference</a>;
|
|
<a name="l00881"></a><a class="code" href="a00001.html#a06bf9018931ec179e1da7029583a046d">00881</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">const_reference</a> <a class="code" href="a00001.html#a06bf9018931ec179e1da7029583a046d">reference</a>;
|
|
<a name="l00882"></a><a class="code" href="a00001.html#a48940fc76e239a38c4b1ea3bd89f1366">00882</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">value_type</a> *<a class="code" href="a00001.html#a48940fc76e239a38c4b1ea3bd89f1366">const_pointer</a>;
|
|
<a name="l00883"></a><a class="code" href="a00001.html#a598a969570369b2acb81aa5cfdbd9378">00883</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">value_type</a> *<a class="code" href="a00001.html#a598a969570369b2acb81aa5cfdbd9378">pointer</a>;
|
|
<a name="l00884"></a>00884
|
|
<a name="l00885"></a>00885 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00886"></a>00886 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00887"></a><a class="code" href="a00001.html#a0006c13a93f79acccbcec876530f546b">00887</a> <a class="code" href="a00001.html#a0006c13a93f79acccbcec876530f546b">basic_range</a> ():
|
|
<a name="l00888"></a>00888 <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> (0), <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a> (0) {}
|
|
<a name="l00889"></a>00889 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00890"></a><a class="code" href="a00001.html#a67c5794faa3d68dba22d4e6e831f2926">00890</a> <a class="code" href="a00001.html#a0006c13a93f79acccbcec876530f546b">basic_range</a> (<a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a>, <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> stop):
|
|
<a name="l00891"></a>00891 <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> (start), <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a> (stop - start) {
|
|
<a name="l00892"></a>00892 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> <= stop, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00893"></a>00893 }
|
|
<a name="l00894"></a>00894
|
|
<a name="l00895"></a>00895 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00896"></a><a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">00896</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00897"></a>00897 <span class="keywordflow">return</span> <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a>;
|
|
<a name="l00898"></a>00898 }
|
|
<a name="l00899"></a>00899 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00900"></a><a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">00900</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00901"></a>00901 <span class="keywordflow">return</span> <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>;
|
|
<a name="l00902"></a>00902 }
|
|
<a name="l00903"></a>00903
|
|
<a name="l00904"></a>00904 <span class="comment">// Random Access Container</span>
|
|
<a name="l00905"></a>00905 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00906"></a><a class="code" href="a00001.html#ae907b7b2345491b62449dfbec979a756">00906</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#ae907b7b2345491b62449dfbec979a756">max_size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00907"></a>00907 <span class="keywordflow">return</span> <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>;
|
|
<a name="l00908"></a>00908 }
|
|
<a name="l00909"></a>00909
|
|
<a name="l00910"></a>00910 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00911"></a><a class="code" href="a00001.html#a9821d5576078b0c196512f2f3519f05f">00911</a> <span class="keywordtype">bool</span> <a class="code" href="a00001.html#a9821d5576078b0c196512f2f3519f05f">empty</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00912"></a>00912 <span class="keywordflow">return</span> <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a> == 0;
|
|
<a name="l00913"></a>00913 }
|
|
<a name="l00914"></a>00914
|
|
<a name="l00915"></a>00915 <span class="comment">// Element access</span>
|
|
<a name="l00916"></a>00916 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00917"></a><a class="code" href="a00001.html#a9ceb9b80dd297612ece32f3ec16bff94">00917</a> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">const_reference</a> <a class="code" href="a00001.html#a9ceb9b80dd297612ece32f3ec16bff94">operator () </a>(<a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00918"></a>00918 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00919"></a>00919 <span class="keywordflow">return</span> <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> + i;
|
|
<a name="l00920"></a>00920 }
|
|
<a name="l00921"></a>00921
|
|
<a name="l00922"></a>00922 <span class="comment">// Composition</span>
|
|
<a name="l00923"></a>00923 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00924"></a><a class="code" href="a00001.html#a73386775dd57343cbceae3fcf6d30815">00924</a> <a class="code" href="a00001.html">basic_range</a> <a class="code" href="a00001.html#a73386775dd57343cbceae3fcf6d30815">compose</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> &r)<span class="keyword"> const </span>{
|
|
<a name="l00925"></a>00925 <span class="keywordflow">return</span> <a class="code" href="a00001.html#a0006c13a93f79acccbcec876530f546b">basic_range</a> (<a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> + r.<a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a>, <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> + r.<a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> + r.<a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>);
|
|
<a name="l00926"></a>00926 }
|
|
<a name="l00927"></a>00927
|
|
<a name="l00928"></a>00928 <span class="comment">// Comparison</span>
|
|
<a name="l00929"></a>00929 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00930"></a><a class="code" href="a00001.html#a66380c5cf9a0c86c98196a4392116206">00930</a> <span class="keywordtype">bool</span> <a class="code" href="a00001.html#a66380c5cf9a0c86c98196a4392116206">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> &r)<span class="keyword"> const </span>{
|
|
<a name="l00931"></a>00931 <span class="keywordflow">return</span> <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> == r.<a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> && <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a> == r.<a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>;
|
|
<a name="l00932"></a>00932 }
|
|
<a name="l00933"></a>00933 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00934"></a><a class="code" href="a00001.html#a76bc0beb54ed6eefbb3baa1fe5fb2623">00934</a> <span class="keywordtype">bool</span> <a class="code" href="a00001.html#a76bc0beb54ed6eefbb3baa1fe5fb2623">operator != </a>(<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> &r)<span class="keyword"> const </span>{
|
|
<a name="l00935"></a>00935 <span class="keywordflow">return</span> ! (*<span class="keyword">this</span> == r);
|
|
<a name="l00936"></a>00936 }
|
|
<a name="l00937"></a>00937
|
|
<a name="l00938"></a>00938 <span class="comment">// Iterator types</span>
|
|
<a name="l00939"></a>00939 <span class="keyword">private</span>:
|
|
<a name="l00940"></a>00940 <span class="comment">// Use and index</span>
|
|
<a name="l00941"></a><a class="code" href="a00001.html#a281ad5c0c14e5681d6195b25826912e2">00941</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#a281ad5c0c14e5681d6195b25826912e2">const_subiterator_type</a>;
|
|
<a name="l00942"></a>00942
|
|
<a name="l00943"></a>00943 <span class="keyword">public</span>:
|
|
<a name="l00944"></a>00944 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00945"></a>00945 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<self_type, std::random_access_iterator_tag></a> const_iterator;
|
|
<a name="l00946"></a>00946 <span class="preprocessor">#else</span>
|
|
<a name="l00947"></a><a class="code" href="a00030.html">00947</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00030.html">const_iterator</a>:
|
|
<a name="l00948"></a>00948 <span class="keyword">public</span> <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><basic_range>,
|
|
<a name="l00949"></a>00949 <span class="keyword">public</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base</a><std::random_access_iterator_tag,
|
|
<a name="l00950"></a>00950 const_iterator, value_type> {
|
|
<a name="l00951"></a>00951 <span class="keyword">public</span>:
|
|
<a name="l00952"></a><a class="code" href="a00030.html#a35cba1a32eafc92a94f1011808428115">00952</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00001.html#abe8b1b4970b67a2cd103d766f699280b">basic_range::value_type</a> <a class="code" href="a00030.html#a35cba1a32eafc92a94f1011808428115">value_type</a>;
|
|
<a name="l00953"></a><a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">00953</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00001.html#ac40cb54ae2225063ccb83c37fd362bc4">basic_range::difference_type</a> <a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">difference_type</a>;
|
|
<a name="l00954"></a><a class="code" href="a00030.html#a17682daf8503beb0d5f84399fa3bf18b">00954</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">basic_range::const_reference</a> <a class="code" href="a00030.html#a17682daf8503beb0d5f84399fa3bf18b">reference</a>;
|
|
<a name="l00955"></a><a class="code" href="a00030.html#aa458512e0f2f4075be76d96e4dd82069">00955</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00001.html#a48940fc76e239a38c4b1ea3bd89f1366">basic_range::const_pointer</a> <a class="code" href="a00030.html#aa458512e0f2f4075be76d96e4dd82069">pointer</a>;
|
|
<a name="l00956"></a>00956
|
|
<a name="l00957"></a>00957 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00958"></a>00958 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00959"></a><a class="code" href="a00030.html#a9d4f10fd6e23ebd7fd92064f2c81ae94">00959</a> <a class="code" href="a00030.html#a9d4f10fd6e23ebd7fd92064f2c81ae94">const_iterator</a> ():
|
|
<a name="l00960"></a>00960 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00001.html">basic_range</a>> (), <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> () {}
|
|
<a name="l00961"></a>00961 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00962"></a><a class="code" href="a00030.html#ad0e72225c2eda1b7bb4c1079226a80a2">00962</a> <a class="code" href="a00030.html#a9d4f10fd6e23ebd7fd92064f2c81ae94">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> &r, <span class="keyword">const</span> <a class="code" href="a00001.html#a281ad5c0c14e5681d6195b25826912e2">const_subiterator_type</a> &it):
|
|
<a name="l00963"></a>00963 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00001.html">basic_range</a>> (r), <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> (it) {}
|
|
<a name="l00964"></a>00964
|
|
<a name="l00965"></a>00965 <span class="comment">// Arithmetic</span>
|
|
<a name="l00966"></a>00966 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00967"></a><a class="code" href="a00030.html#afd00248b1ce016e062c8a63d96aca0ee">00967</a> <a class="code" href="a00030.html">const_iterator</a> &<a class="code" href="a00030.html#afd00248b1ce016e062c8a63d96aca0ee">operator ++ </a>() {
|
|
<a name="l00968"></a>00968 ++ <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l00969"></a>00969 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00970"></a>00970 }
|
|
<a name="l00971"></a>00971 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00972"></a><a class="code" href="a00030.html#a303fc1b946bdffb13003681215101459">00972</a> <a class="code" href="a00030.html">const_iterator</a> &<a class="code" href="a00030.html#a303fc1b946bdffb13003681215101459">operator -- </a>() {
|
|
<a name="l00973"></a>00973 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> > 0, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00974"></a>00974 -- <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l00975"></a>00975 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00976"></a>00976 }
|
|
<a name="l00977"></a>00977 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00978"></a><a class="code" href="a00030.html#aaa3bf26c0f1d091daaac31d5a81c8b8a">00978</a> <a class="code" href="a00030.html">const_iterator</a> &<a class="code" href="a00030.html#aaa3bf26c0f1d091daaac31d5a81c8b8a">operator += </a>(<a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">difference_type</a> n) {
|
|
<a name="l00979"></a>00979 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (n >= 0 || <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> >= <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a>(-n), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00980"></a>00980 <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> += n;
|
|
<a name="l00981"></a>00981 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00982"></a>00982 }
|
|
<a name="l00983"></a>00983 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00984"></a><a class="code" href="a00030.html#aa3b8c1c0d485fdb687159729dbc29698">00984</a> <a class="code" href="a00030.html">const_iterator</a> &<a class="code" href="a00030.html#aa3b8c1c0d485fdb687159729dbc29698">operator -= </a>(<a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">difference_type</a> n) {
|
|
<a name="l00985"></a>00985 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (n <= 0 || it_ >= <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a>(n), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00986"></a>00986 <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> -= n;
|
|
<a name="l00987"></a>00987 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00988"></a>00988 }
|
|
<a name="l00989"></a>00989 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00990"></a><a class="code" href="a00030.html#aab5425595e22e77cab2929614348a566">00990</a> <a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">difference_type</a> <a class="code" href="a00030.html#aab5425595e22e77cab2929614348a566">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00030.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00991"></a>00991 <span class="keywordflow">return</span> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> - it.<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l00992"></a>00992 }
|
|
<a name="l00993"></a>00993
|
|
<a name="l00994"></a>00994 <span class="comment">// Dereference</span>
|
|
<a name="l00995"></a>00995 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00996"></a><a class="code" href="a00030.html#ab152ef9407ec09b1ce2d885b24b201c7">00996</a> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">const_reference</a> <a class="code" href="a00030.html#ab152ef9407ec09b1ce2d885b24b201c7">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l00997"></a>00997 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () <= <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00998"></a>00998 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> < (*<span class="keyword">this</span>) ().<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () + (*<span class="keyword">this</span>) ().size (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00999"></a>00999 <span class="keywordflow">return</span> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l01000"></a>01000 }
|
|
<a name="l01001"></a>01001
|
|
<a name="l01002"></a>01002 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01003"></a><a class="code" href="a00030.html#a7c87f83717c7ce73fbf3f1928c665053">01003</a> <a class="code" href="a00001.html#aaed4faf01677b08ebc00a06afaabc9bd">const_reference</a> <a class="code" href="a00030.html#a7c87f83717c7ce73fbf3f1928c665053">operator [] </a>(<a class="code" href="a00030.html#af30a98b8c00b065b24f2ef357735b87f">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01004"></a>01004 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01005"></a>01005 }
|
|
<a name="l01006"></a>01006
|
|
<a name="l01007"></a>01007 <span class="comment">// Index</span>
|
|
<a name="l01008"></a>01008 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01009"></a><a class="code" href="a00030.html#a9854d1d23d0693b4165859f0392f00b9">01009</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00030.html#a9854d1d23d0693b4165859f0392f00b9">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01010"></a>01010 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () <= <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01011"></a>01011 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> < (*<span class="keyword">this</span>) ().<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () + (*<span class="keyword">this</span>) ().size (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01012"></a>01012 <span class="keywordflow">return</span> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> - (*this) ().<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ();
|
|
<a name="l01013"></a>01013 }
|
|
<a name="l01014"></a>01014
|
|
<a name="l01015"></a>01015 <span class="comment">// Assignment</span>
|
|
<a name="l01016"></a>01016 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01017"></a><a class="code" href="a00030.html#a4da4ceacb46b6ce420a18c2b04128c16">01017</a> <a class="code" href="a00030.html">const_iterator</a> &<a class="code" href="a00030.html#a4da4ceacb46b6ce420a18c2b04128c16">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00030.html">const_iterator</a> &it) {
|
|
<a name="l01018"></a>01018 <span class="comment">// Comeau recommends...</span>
|
|
<a name="l01019"></a>01019 this-><a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">assign</a> (&it ());
|
|
<a name="l01020"></a>01020 <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> = it.<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l01021"></a>01021 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01022"></a>01022 }
|
|
<a name="l01023"></a>01023
|
|
<a name="l01024"></a>01024 <span class="comment">// Comparison</span>
|
|
<a name="l01025"></a>01025 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01026"></a><a class="code" href="a00030.html#a878de084c1f6b98766935ad843ce61bd">01026</a> <span class="keywordtype">bool</span> <a class="code" href="a00030.html#a878de084c1f6b98766935ad843ce61bd">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00030.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01027"></a>01027 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01028"></a>01028 <span class="keywordflow">return</span> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> == it.<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l01029"></a>01029 }
|
|
<a name="l01030"></a>01030 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01031"></a><a class="code" href="a00030.html#a8c0e067e809fee4f70b8a56c3ea90723">01031</a> <span class="keywordtype">bool</span> <a class="code" href="a00030.html#a8c0e067e809fee4f70b8a56c3ea90723">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00030.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01032"></a>01032 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01033"></a>01033 <span class="keywordflow">return</span> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a> < it.<a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l01034"></a>01034 }
|
|
<a name="l01035"></a>01035
|
|
<a name="l01036"></a>01036 <span class="keyword">private</span>:
|
|
<a name="l01037"></a><a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">01037</a> <a class="code" href="a00001.html#a281ad5c0c14e5681d6195b25826912e2">const_subiterator_type</a> <a class="code" href="a00030.html#adaee48ab03abc208b7b7f37dae62779f">it_</a>;
|
|
<a name="l01038"></a>01038 };
|
|
<a name="l01039"></a>01039 <span class="preprocessor">#endif</span>
|
|
<a name="l01040"></a>01040 <span class="preprocessor"></span>
|
|
<a name="l01041"></a>01041 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01042"></a><a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">01042</a> const_iterator <a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01043"></a>01043 <span class="keywordflow">return</span> const_iterator (*<span class="keyword">this</span>, <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a>);
|
|
<a name="l01044"></a>01044 }
|
|
<a name="l01045"></a>01045 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01046"></a><a class="code" href="a00001.html#ac89f548b6c3f4244800a34af07e2e00e">01046</a> const_iterator <a class="code" href="a00001.html#ac89f548b6c3f4244800a34af07e2e00e">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01047"></a>01047 <span class="keywordflow">return</span> const_iterator (*<span class="keyword">this</span>, <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a> + <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>);
|
|
<a name="l01048"></a>01048 }
|
|
<a name="l01049"></a>01049
|
|
<a name="l01050"></a>01050 <span class="comment">// Reverse iterator</span>
|
|
<a name="l01051"></a><a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">01051</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">const_reverse_iterator</a>;
|
|
<a name="l01052"></a>01052
|
|
<a name="l01053"></a>01053 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01054"></a><a class="code" href="a00001.html#a86b45dab0b309ec864d879a18ff0deba">01054</a> <a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">const_reverse_iterator</a> <a class="code" href="a00001.html#a86b45dab0b309ec864d879a18ff0deba">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01055"></a>01055 <span class="keywordflow">return</span> <a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">const_reverse_iterator</a> (<a class="code" href="a00001.html#ac89f548b6c3f4244800a34af07e2e00e">end</a> ());
|
|
<a name="l01056"></a>01056 }
|
|
<a name="l01057"></a>01057 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01058"></a><a class="code" href="a00001.html#a99804d25a9a9ee12afafb6a709bd251c">01058</a> <a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">const_reverse_iterator</a> <a class="code" href="a00001.html#a99804d25a9a9ee12afafb6a709bd251c">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01059"></a>01059 <span class="keywordflow">return</span> <a class="code" href="a00001.html#ae76587d757cd714f99aac4a59e1537ad">const_reverse_iterator</a> (<a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> ());
|
|
<a name="l01060"></a>01060 }
|
|
<a name="l01061"></a>01061
|
|
<a name="l01062"></a>01062 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01063"></a><a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">01063</a> <a class="code" href="a00001.html">basic_range</a> <a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (<a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> size)<span class="keyword"> const </span>{
|
|
<a name="l01064"></a>01064 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &<a class="code" href="a00001.html#a93d7230df561963c35ba574c935fa1dd">all_</a>)
|
|
<a name="l01065"></a>01065 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01066"></a>01066 <span class="keywordflow">return</span> <a class="code" href="a00001.html#a0006c13a93f79acccbcec876530f546b">basic_range</a> (0, size);
|
|
<a name="l01067"></a>01067 }
|
|
<a name="l01068"></a>01068 <span class="keyword">static</span>
|
|
<a name="l01069"></a>01069 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01070"></a><a class="code" href="a00001.html#ac927f1a59d94857fec864f723272928e">01070</a> <span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> &<a class="code" href="a00001.html#ac927f1a59d94857fec864f723272928e">all</a> () {
|
|
<a name="l01071"></a>01071 <span class="keywordflow">return</span> <a class="code" href="a00001.html#a93d7230df561963c35ba574c935fa1dd">all_</a>;
|
|
<a name="l01072"></a>01072 }
|
|
<a name="l01073"></a>01073
|
|
<a name="l01074"></a>01074 <span class="keyword">private</span>:
|
|
<a name="l01075"></a><a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">01075</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#acaedbb0f8dadbd18fa91c0a3bc7b235c">start_</a>;
|
|
<a name="l01076"></a><a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">01076</a> <a class="code" href="a00001.html#adbe6aa3a55bc6a529741fc714bef515d">size_type</a> <a class="code" href="a00001.html#ab732c7cb04347f75ce3cb658a2048381">size_</a>;
|
|
<a name="l01077"></a><a class="code" href="a00001.html#a93d7230df561963c35ba574c935fa1dd">01077</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00001.html">basic_range</a> <a class="code" href="a00001.html#a93d7230df561963c35ba574c935fa1dd">all_</a>;
|
|
<a name="l01078"></a>01078 };
|
|
<a name="l01079"></a>01079
|
|
<a name="l01080"></a>01080 <span class="keyword">template</span> <<span class="keyword">class</span> Z, <span class="keyword">class</span> D>
|
|
<a name="l01081"></a>01081 <span class="keyword">const</span> <a class="code" href="a00001.html">basic_range<Z,D></a> <a class="code" href="a00001.html#a93d7230df561963c35ba574c935fa1dd">basic_range<Z,D>::all_</a> (0, size_type (-1));
|
|
<a name="l01082"></a>01082
|
|
<a name="l01083"></a>01083
|
|
<a name="l01084"></a>01084 <span class="comment">// Slice class</span>
|
|
<a name="l01085"></a>01085 <span class="keyword">template</span> <<span class="keyword">class</span> Z, <span class="keyword">class</span> D>
|
|
<a name="l01086"></a><a class="code" href="a00002.html">01086</a> <span class="keyword">class </span><a class="code" href="a00002.html">basic_slice</a> {
|
|
<a name="l01087"></a><a class="code" href="a00002.html#acc911471b73d41c4021813ef2227a678">01087</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<Z, D></a> <a class="code" href="a00002.html#acc911471b73d41c4021813ef2227a678">self_type</a>;
|
|
<a name="l01088"></a>01088 <span class="keyword">public</span>:
|
|
<a name="l01089"></a><a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">01089</a> <span class="keyword">typedef</span> Z <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a>;
|
|
<a name="l01090"></a><a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">01090</a> <span class="keyword">typedef</span> D <a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">difference_type</a>;
|
|
<a name="l01091"></a><a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">01091</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">value_type</a>;
|
|
<a name="l01092"></a><a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">01092</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">value_type</a> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">const_reference</a>;
|
|
<a name="l01093"></a><a class="code" href="a00002.html#aff1db77134e8305624e6718e1d2a551c">01093</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">const_reference</a> <a class="code" href="a00002.html#aff1db77134e8305624e6718e1d2a551c">reference</a>;
|
|
<a name="l01094"></a><a class="code" href="a00002.html#ac7d38ff677de1ec46411bc08a29d06dc">01094</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">value_type</a> *<a class="code" href="a00002.html#ac7d38ff677de1ec46411bc08a29d06dc">const_pointer</a>;
|
|
<a name="l01095"></a><a class="code" href="a00002.html#afbb770852a8be1f8a11880089b5743b1">01095</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">value_type</a> *<a class="code" href="a00002.html#afbb770852a8be1f8a11880089b5743b1">pointer</a>;
|
|
<a name="l01096"></a>01096
|
|
<a name="l01097"></a>01097 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01098"></a>01098 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01099"></a><a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">01099</a> <a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">basic_slice</a> ():
|
|
<a name="l01100"></a>01100 <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> (0), <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> (0), <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a> (0) {}
|
|
<a name="l01101"></a>01101 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01102"></a><a class="code" href="a00002.html#ab85bb3920b9b8184ee1b67dbfa11a7e8">01102</a> <a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">basic_slice</a> (<a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a>, <a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">difference_type</a> <a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a>, <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> size):
|
|
<a name="l01103"></a>01103 <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> (start), <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> (stride), <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a> (size) {}
|
|
<a name="l01104"></a>01104
|
|
<a name="l01105"></a>01105 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01106"></a><a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">01106</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01107"></a>01107 <span class="keywordflow">return</span> <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a>;
|
|
<a name="l01108"></a>01108 }
|
|
<a name="l01109"></a>01109 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01110"></a><a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">01110</a> <a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">difference_type</a> <a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01111"></a>01111 <span class="keywordflow">return</span> <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>;
|
|
<a name="l01112"></a>01112 }
|
|
<a name="l01113"></a>01113 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01114"></a><a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">01114</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01115"></a>01115 <span class="keywordflow">return</span> <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>;
|
|
<a name="l01116"></a>01116 }
|
|
<a name="l01117"></a>01117
|
|
<a name="l01118"></a>01118 <span class="comment">// Random Access Container</span>
|
|
<a name="l01119"></a>01119 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01120"></a><a class="code" href="a00002.html#adaf59c647d2f4d84af022d09257cc22d">01120</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#adaf59c647d2f4d84af022d09257cc22d">max_size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01121"></a>01121 <span class="keywordflow">return</span> <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>;
|
|
<a name="l01122"></a>01122 }
|
|
<a name="l01123"></a>01123
|
|
<a name="l01124"></a>01124 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01125"></a><a class="code" href="a00002.html#ac34c886e9bfcb3d88d255b3b587cabfe">01125</a> <span class="keywordtype">bool</span> <a class="code" href="a00002.html#ac34c886e9bfcb3d88d255b3b587cabfe">empty</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01126"></a>01126 <span class="keywordflow">return</span> <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a> == 0;
|
|
<a name="l01127"></a>01127 }
|
|
<a name="l01128"></a>01128
|
|
<a name="l01129"></a>01129 <span class="comment">// Element access</span>
|
|
<a name="l01130"></a>01130 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01131"></a><a class="code" href="a00002.html#ade2d9c4d49d3602518f05edaa2d8a620">01131</a> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">const_reference</a> <a class="code" href="a00002.html#ade2d9c4d49d3602518f05edaa2d8a620">operator () </a>(<a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01132"></a>01132 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01133"></a>01133 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> >= 0 || <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> >= i * -<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01134"></a>01134 <span class="keywordflow">return</span> <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> + i * <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>;
|
|
<a name="l01135"></a>01135 }
|
|
<a name="l01136"></a>01136
|
|
<a name="l01137"></a>01137 <span class="comment">// Composition</span>
|
|
<a name="l01138"></a>01138 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01139"></a><a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">01139</a> <a class="code" href="a00002.html">basic_slice</a> <a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">compose</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> &r)<span class="keyword"> const </span>{
|
|
<a name="l01140"></a>01140 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> >=0 || <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> >= -<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> * r.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a>(), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01141"></a>01141 <span class="keywordflow">return</span> <a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">basic_slice</a> (<a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> + <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> * r.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> (), <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>, r.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ());
|
|
<a name="l01142"></a>01142 }
|
|
<a name="l01143"></a>01143 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01144"></a><a class="code" href="a00002.html#ad7b4e55412d3f96363263ed82a60db5f">01144</a> <a class="code" href="a00002.html">basic_slice</a> <a class="code" href="a00002.html#ad7b4e55412d3f96363263ed82a60db5f">compose</a> (<span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> &s)<span class="keyword"> const </span>{
|
|
<a name="l01145"></a>01145 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> >=0 || <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> >= -<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> * s.<a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01146"></a>01146 <span class="keywordflow">return</span> <a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">basic_slice</a> (<a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> + <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> * s.<a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a>, <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> * s.<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>, s.<a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>);
|
|
<a name="l01147"></a>01147 }
|
|
<a name="l01148"></a>01148
|
|
<a name="l01149"></a>01149 <span class="comment">// Comparison</span>
|
|
<a name="l01150"></a>01150 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01151"></a><a class="code" href="a00002.html#a6ff1797963a7967bf4e04b6aa30123d2">01151</a> <span class="keywordtype">bool</span> <a class="code" href="a00002.html#a6ff1797963a7967bf4e04b6aa30123d2">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> &s)<span class="keyword"> const </span>{
|
|
<a name="l01152"></a>01152 <span class="keywordflow">return</span> <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> == s.<a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a> && <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> == s.<a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a> && <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a> == s.<a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>;
|
|
<a name="l01153"></a>01153 }
|
|
<a name="l01154"></a>01154 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01155"></a><a class="code" href="a00002.html#ada83a7230530235d68fd1e322c5e245e">01155</a> <span class="keywordtype">bool</span> <a class="code" href="a00002.html#ada83a7230530235d68fd1e322c5e245e">operator != </a>(<span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> &s)<span class="keyword"> const </span>{
|
|
<a name="l01156"></a>01156 <span class="keywordflow">return</span> ! (*<span class="keyword">this</span> == s);
|
|
<a name="l01157"></a>01157 }
|
|
<a name="l01158"></a>01158
|
|
<a name="l01159"></a>01159 <span class="comment">// Iterator types</span>
|
|
<a name="l01160"></a>01160 <span class="keyword">private</span>:
|
|
<a name="l01161"></a>01161 <span class="comment">// Use and index</span>
|
|
<a name="l01162"></a><a class="code" href="a00002.html#a13bdffe7fd88e602f5bbe10cb6766f26">01162</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#a13bdffe7fd88e602f5bbe10cb6766f26">const_subiterator_type</a>;
|
|
<a name="l01163"></a>01163
|
|
<a name="l01164"></a>01164 <span class="keyword">public</span>:
|
|
<a name="l01165"></a>01165 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l01166"></a>01166 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<self_type, std::random_access_iterator_tag></a> const_iterator;
|
|
<a name="l01167"></a>01167 <span class="preprocessor">#else</span>
|
|
<a name="l01168"></a><a class="code" href="a00032.html">01168</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00032.html">const_iterator</a>:
|
|
<a name="l01169"></a>01169 <span class="keyword">public</span> <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><basic_slice>,
|
|
<a name="l01170"></a>01170 <span class="keyword">public</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base</a><std::random_access_iterator_tag,
|
|
<a name="l01171"></a>01171 const_iterator, value_type> {
|
|
<a name="l01172"></a>01172 <span class="keyword">public</span>:
|
|
<a name="l01173"></a><a class="code" href="a00032.html#a50f354cf707a9bd8b59d9e8571c4e573">01173</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00002.html#aa2132592164b0470b9df4de196215021">basic_slice::value_type</a> <a class="code" href="a00032.html#a50f354cf707a9bd8b59d9e8571c4e573">value_type</a>;
|
|
<a name="l01174"></a><a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">01174</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">basic_slice::difference_type</a> <a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">difference_type</a>;
|
|
<a name="l01175"></a><a class="code" href="a00032.html#a3b14c9245031922bdf812728f5e22c76">01175</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">basic_slice::const_reference</a> <a class="code" href="a00032.html#a3b14c9245031922bdf812728f5e22c76">reference</a>;
|
|
<a name="l01176"></a><a class="code" href="a00032.html#a5aa02a37118d84d9fa7c75d4ea6cf71d">01176</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00002.html#ac7d38ff677de1ec46411bc08a29d06dc">basic_slice::const_pointer</a> <a class="code" href="a00032.html#a5aa02a37118d84d9fa7c75d4ea6cf71d">pointer</a>;
|
|
<a name="l01177"></a>01177
|
|
<a name="l01178"></a>01178 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01179"></a>01179 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01180"></a><a class="code" href="a00032.html#a1b12a4e08f0d1c71b62d339b67f6fae0">01180</a> <a class="code" href="a00032.html#a1b12a4e08f0d1c71b62d339b67f6fae0">const_iterator</a> ():
|
|
<a name="l01181"></a>01181 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00002.html">basic_slice</a>> (), <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> () {}
|
|
<a name="l01182"></a>01182 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01183"></a><a class="code" href="a00032.html#af57493c6e51bd8bf60c71f81d0302b15">01183</a> <a class="code" href="a00032.html#a1b12a4e08f0d1c71b62d339b67f6fae0">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> &s, <span class="keyword">const</span> <a class="code" href="a00002.html#a13bdffe7fd88e602f5bbe10cb6766f26">const_subiterator_type</a> &it):
|
|
<a name="l01184"></a>01184 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00002.html">basic_slice</a>> (s), <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> (it) {}
|
|
<a name="l01185"></a>01185
|
|
<a name="l01186"></a>01186 <span class="comment">// Arithmetic</span>
|
|
<a name="l01187"></a>01187 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01188"></a><a class="code" href="a00032.html#af8dcee14715c4325bfa351cf6605701e">01188</a> <a class="code" href="a00032.html">const_iterator</a> &<a class="code" href="a00032.html#af8dcee14715c4325bfa351cf6605701e">operator ++ </a>() {
|
|
<a name="l01189"></a>01189 ++<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01190"></a>01190 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01191"></a>01191 }
|
|
<a name="l01192"></a>01192 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01193"></a><a class="code" href="a00032.html#a2514efa5957ac9443b74776041fa63e9">01193</a> <a class="code" href="a00032.html">const_iterator</a> &<a class="code" href="a00032.html#a2514efa5957ac9443b74776041fa63e9">operator -- </a>() {
|
|
<a name="l01194"></a>01194 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> > 0, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01195"></a>01195 --<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01196"></a>01196 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01197"></a>01197 }
|
|
<a name="l01198"></a>01198 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01199"></a><a class="code" href="a00032.html#a1889a01941b53b728f2b16c646d44948">01199</a> <a class="code" href="a00032.html">const_iterator</a> &<a class="code" href="a00032.html#a1889a01941b53b728f2b16c646d44948">operator += </a>(<a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">difference_type</a> n) {
|
|
<a name="l01200"></a>01200 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (n >= 0 || <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> >= <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a>(-n), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01201"></a>01201 <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> += n;
|
|
<a name="l01202"></a>01202 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01203"></a>01203 }
|
|
<a name="l01204"></a>01204 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01205"></a><a class="code" href="a00032.html#a5ab5a9439cd9bf83cc9aa9fec8623022">01205</a> <a class="code" href="a00032.html">const_iterator</a> &<a class="code" href="a00032.html#a5ab5a9439cd9bf83cc9aa9fec8623022">operator -= </a>(<a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">difference_type</a> n) {
|
|
<a name="l01206"></a>01206 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (n <= 0 || it_ >= <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a>(n), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01207"></a>01207 <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> -= n;
|
|
<a name="l01208"></a>01208 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01209"></a>01209 }
|
|
<a name="l01210"></a>01210 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01211"></a><a class="code" href="a00032.html#a8ff3dacc5d7a68fc751b5e12f3983c1a">01211</a> <a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">difference_type</a> <a class="code" href="a00032.html#a8ff3dacc5d7a68fc751b5e12f3983c1a">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00032.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01212"></a>01212 <span class="keywordflow">return</span> <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> - it.<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01213"></a>01213 }
|
|
<a name="l01214"></a>01214
|
|
<a name="l01215"></a>01215 <span class="comment">// Dereference</span>
|
|
<a name="l01216"></a>01216 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01217"></a><a class="code" href="a00032.html#a0e9cb70c8ee5704902f713355f454bf0">01217</a> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">const_reference</a> <a class="code" href="a00032.html#a0e9cb70c8ee5704902f713355f454bf0">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01218"></a>01218 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> < (*<span class="keyword">this</span>) ().size (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01219"></a>01219 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> () + <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>* (*this) ().<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ();
|
|
<a name="l01220"></a>01220 }
|
|
<a name="l01221"></a>01221
|
|
<a name="l01222"></a>01222 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01223"></a><a class="code" href="a00032.html#a45519795caf973548e2ed4044dd82080">01223</a> <a class="code" href="a00002.html#ad115b5ddbe5143ba7d744475c30712d5">const_reference</a> <a class="code" href="a00032.html#a45519795caf973548e2ed4044dd82080">operator [] </a>(<a class="code" href="a00032.html#ac776f8b07b99970d5894429221e000e8">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01224"></a>01224 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01225"></a>01225 }
|
|
<a name="l01226"></a>01226
|
|
<a name="l01227"></a>01227 <span class="comment">// Index</span>
|
|
<a name="l01228"></a>01228 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01229"></a><a class="code" href="a00032.html#a28d31c57885c899baec29c3514e2b2e7">01229</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00032.html#a28d31c57885c899baec29c3514e2b2e7">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01230"></a>01230 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> < (*<span class="keyword">this</span>) ().size (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01231"></a>01231 <span class="keywordflow">return</span> <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01232"></a>01232 }
|
|
<a name="l01233"></a>01233
|
|
<a name="l01234"></a>01234 <span class="comment">// Assignment</span>
|
|
<a name="l01235"></a>01235 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01236"></a><a class="code" href="a00032.html#ad9a3f4b39d3d4079cb0989a194348029">01236</a> <a class="code" href="a00032.html">const_iterator</a> &<a class="code" href="a00032.html#ad9a3f4b39d3d4079cb0989a194348029">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00032.html">const_iterator</a> &it) {
|
|
<a name="l01237"></a>01237 <span class="comment">// Comeau recommends...</span>
|
|
<a name="l01238"></a>01238 this-><a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">assign</a> (&it ());
|
|
<a name="l01239"></a>01239 <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> = it.<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01240"></a>01240 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01241"></a>01241 }
|
|
<a name="l01242"></a>01242
|
|
<a name="l01243"></a>01243 <span class="comment">// Comparison</span>
|
|
<a name="l01244"></a>01244 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01245"></a><a class="code" href="a00032.html#a1defb137b2ce20e0995676d5cb976e18">01245</a> <span class="keywordtype">bool</span> <a class="code" href="a00032.html#a1defb137b2ce20e0995676d5cb976e18">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00032.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01246"></a>01246 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01247"></a>01247 <span class="keywordflow">return</span> <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> == it.<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01248"></a>01248 }
|
|
<a name="l01249"></a>01249 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01250"></a><a class="code" href="a00032.html#a95006177c454c44a26f10dd898fcc08c">01250</a> <span class="keywordtype">bool</span> <a class="code" href="a00032.html#a95006177c454c44a26f10dd898fcc08c">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00032.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01251"></a>01251 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01252"></a>01252 <span class="keywordflow">return</span> <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a> < it.<a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01253"></a>01253 }
|
|
<a name="l01254"></a>01254
|
|
<a name="l01255"></a>01255 <span class="keyword">private</span>:
|
|
<a name="l01256"></a><a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">01256</a> <a class="code" href="a00002.html#a13bdffe7fd88e602f5bbe10cb6766f26">const_subiterator_type</a> <a class="code" href="a00032.html#a5c68413c3c57aa604be89b53ea9f8301">it_</a>;
|
|
<a name="l01257"></a>01257 };
|
|
<a name="l01258"></a>01258 <span class="preprocessor">#endif</span>
|
|
<a name="l01259"></a>01259 <span class="preprocessor"></span>
|
|
<a name="l01260"></a>01260 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01261"></a><a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">01261</a> const_iterator <a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01262"></a>01262 <span class="keywordflow">return</span> const_iterator (*<span class="keyword">this</span>, 0);
|
|
<a name="l01263"></a>01263 }
|
|
<a name="l01264"></a>01264 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01265"></a><a class="code" href="a00002.html#a4fd83ed537aa798018b688a8bba3f2da">01265</a> const_iterator <a class="code" href="a00002.html#a4fd83ed537aa798018b688a8bba3f2da">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01266"></a>01266 <span class="keywordflow">return</span> const_iterator (*<span class="keyword">this</span>, <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>);
|
|
<a name="l01267"></a>01267 }
|
|
<a name="l01268"></a>01268
|
|
<a name="l01269"></a>01269 <span class="comment">// Reverse iterator</span>
|
|
<a name="l01270"></a><a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">01270</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">const_reverse_iterator</a>;
|
|
<a name="l01271"></a>01271
|
|
<a name="l01272"></a>01272 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01273"></a><a class="code" href="a00002.html#ab3c2d69c730dcac8ad14a3e741a51ef3">01273</a> <a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">const_reverse_iterator</a> <a class="code" href="a00002.html#ab3c2d69c730dcac8ad14a3e741a51ef3">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01274"></a>01274 <span class="keywordflow">return</span> <a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">const_reverse_iterator</a> (<a class="code" href="a00002.html#a4fd83ed537aa798018b688a8bba3f2da">end</a> ());
|
|
<a name="l01275"></a>01275 }
|
|
<a name="l01276"></a>01276 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01277"></a><a class="code" href="a00002.html#abc5dfd1df9fecd0fca03b85ab7123fba">01277</a> <a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">const_reverse_iterator</a> <a class="code" href="a00002.html#abc5dfd1df9fecd0fca03b85ab7123fba">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01278"></a>01278 <span class="keywordflow">return</span> <a class="code" href="a00002.html#af9c69619a3dd53426806eb3ff7422166">const_reverse_iterator</a> (<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> ());
|
|
<a name="l01279"></a>01279 }
|
|
<a name="l01280"></a>01280
|
|
<a name="l01281"></a>01281 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01282"></a><a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">01282</a> <a class="code" href="a00002.html">basic_slice</a> <a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">preprocess</a> (<a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> size)<span class="keyword"> const </span>{
|
|
<a name="l01283"></a>01283 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &<a class="code" href="a00002.html#a304ade72e0e1611fe1f88f178630e3f5">all_</a>)
|
|
<a name="l01284"></a>01284 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01285"></a>01285 <span class="keywordflow">return</span> <a class="code" href="a00002.html#a386ebd06c4905288a7d7aaa1b1b1622b">basic_slice</a> (0, 1, size);
|
|
<a name="l01286"></a>01286 }
|
|
<a name="l01287"></a>01287 <span class="keyword">static</span>
|
|
<a name="l01288"></a>01288 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01289"></a><a class="code" href="a00002.html#a5d84372042cbd75577d6d0120e7bd83a">01289</a> <span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> &<a class="code" href="a00002.html#a5d84372042cbd75577d6d0120e7bd83a">all</a> () {
|
|
<a name="l01290"></a>01290 <span class="keywordflow">return</span> <a class="code" href="a00002.html#a304ade72e0e1611fe1f88f178630e3f5">all_</a>;
|
|
<a name="l01291"></a>01291 }
|
|
<a name="l01292"></a>01292
|
|
<a name="l01293"></a>01293 <span class="keyword">private</span>:
|
|
<a name="l01294"></a><a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">01294</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#abf28e301f338a91111511aa3790273a8">start_</a>;
|
|
<a name="l01295"></a><a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">01295</a> <a class="code" href="a00002.html#a1d9cdfff2e9503c45c1e44449f6f9471">difference_type</a> <a class="code" href="a00002.html#aeb56c1a49b7d5117853a5e9e9e7e6aa2">stride_</a>;
|
|
<a name="l01296"></a><a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">01296</a> <a class="code" href="a00002.html#a1a7d7b951af0b9f2b3b48952a2ad0ad8">size_type</a> <a class="code" href="a00002.html#accde4c5d990b1ed03db9fe0dc9747580">size_</a>;
|
|
<a name="l01297"></a><a class="code" href="a00002.html#a304ade72e0e1611fe1f88f178630e3f5">01297</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice</a> <a class="code" href="a00002.html#a304ade72e0e1611fe1f88f178630e3f5">all_</a>;
|
|
<a name="l01298"></a>01298 };
|
|
<a name="l01299"></a>01299
|
|
<a name="l01300"></a>01300 <span class="keyword">template</span> <<span class="keyword">class</span> Z, <span class="keyword">class</span> D>
|
|
<a name="l01301"></a>01301 <span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice<Z,D></a> <a class="code" href="a00002.html#a304ade72e0e1611fe1f88f178630e3f5">basic_slice<Z,D>::all_</a> (0, 1, size_type (-1));
|
|
<a name="l01302"></a>01302
|
|
<a name="l01303"></a>01303
|
|
<a name="l01304"></a>01304 <span class="comment">// Indirect array class</span>
|
|
<a name="l01305"></a>01305 <span class="keyword">template</span><<span class="keyword">class</span> A>
|
|
<a name="l01306"></a><a class="code" href="a00176.html">01306</a> <span class="keyword">class </span><a class="code" href="a00176.html">indirect_array</a> {
|
|
<a name="l01307"></a><a class="code" href="a00176.html#a1754118fb20e4e9bc732ca15e9aa0415">01307</a> <span class="keyword">typedef</span> <a class="code" href="a00176.html">indirect_array<A></a> <a class="code" href="a00176.html#a1754118fb20e4e9bc732ca15e9aa0415">self_type</a>;
|
|
<a name="l01308"></a>01308 <span class="keyword">public</span>:
|
|
<a name="l01309"></a><a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">01309</a> <span class="keyword">typedef</span> A <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a>;
|
|
<a name="l01310"></a><a class="code" href="a00176.html#aa9aa4ff4222e4c0c00541f8f3f18e4d4">01310</a> <span class="keyword">typedef</span> <span class="keyword">const</span> A <a class="code" href="a00176.html#aa9aa4ff4222e4c0c00541f8f3f18e4d4">const_array_type</a>;
|
|
<a name="l01311"></a><a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">01311</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::size_type <a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a>;
|
|
<a name="l01312"></a><a class="code" href="a00176.html#aefd0e9e277507a3c744439221e16a43f">01312</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::difference_type <a class="code" href="a00176.html#aefd0e9e277507a3c744439221e16a43f">difference_type</a>;
|
|
<a name="l01313"></a><a class="code" href="a00176.html#a4997c9ff7728c3786a1616a2aabb4cba">01313</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::value_type <a class="code" href="a00176.html#a4997c9ff7728c3786a1616a2aabb4cba">value_type</a>;
|
|
<a name="l01314"></a><a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">01314</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::const_reference <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">const_reference</a>;
|
|
<a name="l01315"></a><a class="code" href="a00176.html#aba648b192905c8fbb82719315774b309">01315</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::reference <a class="code" href="a00176.html#aba648b192905c8fbb82719315774b309">reference</a>;
|
|
<a name="l01316"></a><a class="code" href="a00176.html#a49848723c753c701b79214b06a8202ca">01316</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::const_pointer <a class="code" href="a00176.html#a49848723c753c701b79214b06a8202ca">const_pointer</a>;
|
|
<a name="l01317"></a><a class="code" href="a00176.html#a9bbdbd5d4b609d05acc5fec2e6612c9c">01317</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> A::pointer <a class="code" href="a00176.html#a9bbdbd5d4b609d05acc5fec2e6612c9c">pointer</a>;
|
|
<a name="l01318"></a>01318
|
|
<a name="l01319"></a>01319 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01320"></a>01320 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01321"></a><a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">01321</a> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> ():
|
|
<a name="l01322"></a>01322 <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a> (), <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> () {}
|
|
<a name="l01323"></a>01323 <span class="keyword">explicit</span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01324"></a><a class="code" href="a00176.html#aad7aa580bbf263fc495e0c23b86feb4f">01324</a> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> size):
|
|
<a name="l01325"></a>01325 <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a> (size), <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> (size) {}
|
|
<a name="l01326"></a>01326 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01327"></a><a class="code" href="a00176.html#a9a5d140313cadac986e2d7537ff1cbcc">01327</a> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> size, <span class="keyword">const</span> <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> &data):
|
|
<a name="l01328"></a>01328 <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a> (size), <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> (data) {}
|
|
<a name="l01329"></a>01329 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01330"></a><a class="code" href="a00176.html#a7a04921bf5cb23f00c40bb849ea7d0cb">01330</a> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (<a class="code" href="a00176.html#a9bbdbd5d4b609d05acc5fec2e6612c9c">pointer</a> <a class="code" href="a00658.html#afb06f0d950bfaf824a8f63cf92f1125a">start</a>, <a class="code" href="a00176.html#a9bbdbd5d4b609d05acc5fec2e6612c9c">pointer</a> stop):
|
|
<a name="l01331"></a>01331 <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a> (stop - start), <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> (stop - start) {
|
|
<a name="l01332"></a>01332 <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">std::copy</a> (start, stop, <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a>.begin ());
|
|
<a name="l01333"></a>01333 }
|
|
<a name="l01334"></a>01334
|
|
<a name="l01335"></a>01335 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01336"></a><a class="code" href="a00176.html#a7d848130b283b2fa6de444b313b6bb08">01336</a> <a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> <a class="code" href="a00176.html#a7d848130b283b2fa6de444b313b6bb08">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01337"></a>01337 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>;
|
|
<a name="l01338"></a>01338 }
|
|
<a name="l01339"></a>01339 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01340"></a><a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">01340</a> <a class="code" href="a00176.html#aa9aa4ff4222e4c0c00541f8f3f18e4d4">const_array_type</a> <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01341"></a>01341 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a>;
|
|
<a name="l01342"></a>01342 }
|
|
<a name="l01343"></a>01343 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01344"></a><a class="code" href="a00176.html#a1ae1fe5fb8fdc11d2fe9d5ef7bfa1ff8">01344</a> <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> <a class="code" href="a00176.html#a1ae1fe5fb8fdc11d2fe9d5ef7bfa1ff8">data</a> () {
|
|
<a name="l01345"></a>01345 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a>;
|
|
<a name="l01346"></a>01346 }
|
|
<a name="l01347"></a>01347
|
|
<a name="l01348"></a>01348 <span class="comment">// Random Access Container</span>
|
|
<a name="l01349"></a>01349 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01350"></a><a class="code" href="a00176.html#a9544ff2afeceaca4108af38cf86674b2">01350</a> <a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> <a class="code" href="a00176.html#a9544ff2afeceaca4108af38cf86674b2">max_size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01351"></a>01351 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>;
|
|
<a name="l01352"></a>01352 }
|
|
<a name="l01353"></a>01353
|
|
<a name="l01354"></a>01354 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01355"></a><a class="code" href="a00176.html#a46d7f5e971f7c90b650f17521879dfe8">01355</a> <span class="keywordtype">bool</span> <a class="code" href="a00176.html#a46d7f5e971f7c90b650f17521879dfe8">empty</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01356"></a>01356 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a>.size () == 0;
|
|
<a name="l01357"></a>01357 }
|
|
<a name="l01358"></a>01358
|
|
<a name="l01359"></a>01359 <span class="comment">// Element access</span>
|
|
<a name="l01360"></a>01360 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01361"></a><a class="code" href="a00176.html#ad926200c966c08017d04b89691cc2d54">01361</a> <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">const_reference</a> <a class="code" href="a00176.html#ad926200c966c08017d04b89691cc2d54">operator () </a>(<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01362"></a>01362 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01363"></a>01363 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i];
|
|
<a name="l01364"></a>01364 }
|
|
<a name="l01365"></a>01365 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01366"></a><a class="code" href="a00176.html#a1a544ab3ad553efab9149eb105356ff6">01366</a> <a class="code" href="a00176.html#aba648b192905c8fbb82719315774b309">reference</a> <a class="code" href="a00176.html#ad926200c966c08017d04b89691cc2d54">operator () </a>(<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i) {
|
|
<a name="l01367"></a>01367 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (i < <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l01368"></a>01368 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i];
|
|
<a name="l01369"></a>01369 }
|
|
<a name="l01370"></a>01370
|
|
<a name="l01371"></a>01371 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01372"></a><a class="code" href="a00176.html#a916a06848f795f1ac97587d0d0cf5886">01372</a> <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">const_reference</a> <a class="code" href="a00176.html#a916a06848f795f1ac97587d0d0cf5886">operator [] </a>(<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01373"></a>01373 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01374"></a>01374 }
|
|
<a name="l01375"></a>01375 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01376"></a><a class="code" href="a00176.html#ae45fb0eb887ee4030f6354d94383aab6">01376</a> <a class="code" href="a00176.html#aba648b192905c8fbb82719315774b309">reference</a> <a class="code" href="a00176.html#a916a06848f795f1ac97587d0d0cf5886">operator [] </a>(<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i) {
|
|
<a name="l01377"></a>01377 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01378"></a>01378 }
|
|
<a name="l01379"></a>01379
|
|
<a name="l01380"></a>01380 <span class="comment">// Composition</span>
|
|
<a name="l01381"></a>01381 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01382"></a><a class="code" href="a00176.html#ada6b6f2a91c0bb61d330bd8862b3df31">01382</a> <a class="code" href="a00176.html">indirect_array</a> <a class="code" href="a00176.html#ada6b6f2a91c0bb61d330bd8862b3df31">compose</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> &r)<span class="keyword"> const </span>{
|
|
<a name="l01383"></a>01383 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (r.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () + r.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> () <= <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l01384"></a>01384 <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a> (r.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ());
|
|
<a name="l01385"></a>01385 <span class="keywordflow">for</span> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i = 0; i < r.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> (); ++ i)
|
|
<a name="l01386"></a>01386 data [i] = <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [r.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> () + i];
|
|
<a name="l01387"></a>01387 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (r.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> (), <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a>);
|
|
<a name="l01388"></a>01388 }
|
|
<a name="l01389"></a>01389 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01390"></a><a class="code" href="a00176.html#ae158c8dbb4b4b954625ff4da7794e73a">01390</a> <a class="code" href="a00176.html">indirect_array</a> <a class="code" href="a00176.html#ae158c8dbb4b4b954625ff4da7794e73a">compose</a> (<span class="keyword">const</span> <a class="code" href="a00002.html">basic_slice<size_type, difference_type></a> &s)<span class="keyword"> const </span>{
|
|
<a name="l01391"></a>01391 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (s.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> () + s.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> () * (s.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> () - (s.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> () > 0)) <= <a class="code" href="a00176.html#a7d848130b283b2fa6de444b313b6bb08">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l01392"></a>01392 <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a> (s.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> ());
|
|
<a name="l01393"></a>01393 <span class="keywordflow">for</span> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i = 0; i < s.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> (); ++ i)
|
|
<a name="l01394"></a>01394 data [i] = <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [s.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> () + s.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> () * i];
|
|
<a name="l01395"></a>01395 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (s.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> (), <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a>);
|
|
<a name="l01396"></a>01396 }
|
|
<a name="l01397"></a>01397 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01398"></a><a class="code" href="a00176.html#a9c5df234127042526cfec9db79ad409e">01398</a> <a class="code" href="a00176.html">indirect_array</a> <a class="code" href="a00176.html#a9c5df234127042526cfec9db79ad409e">compose</a> (<span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array</a> &ia)<span class="keyword"> const </span>{
|
|
<a name="l01399"></a>01399 <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> <a class="code" href="a00176.html#aef64f027bd019db8c4ae330bbf5d8629">data</a> (ia.<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>);
|
|
<a name="l01400"></a>01400 <span class="keywordflow">for</span> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i = 0; i < ia.<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>; ++ i) {
|
|
<a name="l01401"></a>01401 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (ia.<a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i] <= <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l01402"></a>01402 data [i] = <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [ia.<a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i]];
|
|
<a name="l01403"></a>01403 }
|
|
<a name="l01404"></a>01404 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a6ab28d712a2e5fbfaffbd7fea298ac5b">indirect_array</a> (ia.<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, data);
|
|
<a name="l01405"></a>01405 }
|
|
<a name="l01406"></a>01406
|
|
<a name="l01407"></a>01407 <span class="comment">// Comparison</span>
|
|
<a name="l01408"></a>01408 <span class="keyword">template</span><<span class="keyword">class</span> OA>
|
|
<a name="l01409"></a>01409 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01410"></a><a class="code" href="a00176.html#adad344a17c02e7b77771ac6df6eb319d">01410</a> <span class="keywordtype">bool</span> <a class="code" href="a00176.html#adad344a17c02e7b77771ac6df6eb319d">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<OA></a> &ia)<span class="keyword"> const </span>{
|
|
<a name="l01411"></a>01411 <span class="keywordflow">if</span> (<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a> != ia.<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>)
|
|
<a name="l01412"></a>01412 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
|
<a name="l01413"></a>01413 <span class="keywordflow">for</span> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i = 0; i < <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>, ia.<a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>); ++ i)
|
|
<a name="l01414"></a>01414 <span class="keywordflow">if</span> (<a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i] != ia.<a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a> [i])
|
|
<a name="l01415"></a>01415 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
|
<a name="l01416"></a>01416 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
|
<a name="l01417"></a>01417 }
|
|
<a name="l01418"></a>01418 <span class="keyword">template</span><<span class="keyword">class</span> OA>
|
|
<a name="l01419"></a>01419 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01420"></a><a class="code" href="a00176.html#a5f707f240873b4dc036b953f135f37f0">01420</a> <span class="keywordtype">bool</span> <a class="code" href="a00176.html#a5f707f240873b4dc036b953f135f37f0">operator != </a>(<span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<OA></a> &ia)<span class="keyword"> const </span>{
|
|
<a name="l01421"></a>01421 <span class="keywordflow">return</span> ! (*<span class="keyword">this</span> == ia);
|
|
<a name="l01422"></a>01422 }
|
|
<a name="l01423"></a>01423
|
|
<a name="l01424"></a>01424 <span class="comment">// Iterator types</span>
|
|
<a name="l01425"></a>01425 <span class="keyword">private</span>:
|
|
<a name="l01426"></a>01426 <span class="comment">// Use a index difference</span>
|
|
<a name="l01427"></a><a class="code" href="a00176.html#a4604b9492982e097089fc30bb3995df8">01427</a> <span class="keyword">typedef</span> <a class="code" href="a00176.html#aefd0e9e277507a3c744439221e16a43f">difference_type</a> <a class="code" href="a00176.html#a4604b9492982e097089fc30bb3995df8">const_subiterator_type</a>;
|
|
<a name="l01428"></a>01428
|
|
<a name="l01429"></a>01429 <span class="keyword">public</span>:
|
|
<a name="l01430"></a>01430 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l01431"></a>01431 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<indirect_array, std::random_access_iterator_tag></a> <a class="code" href="a00177.html">const_iterator</a>;
|
|
<a name="l01432"></a>01432 <span class="preprocessor">#else</span>
|
|
<a name="l01433"></a><a class="code" href="a00177.html">01433</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00177.html">const_iterator</a>:
|
|
<a name="l01434"></a>01434 <span class="keyword">public</span> <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><indirect_array>,
|
|
<a name="l01435"></a>01435 <span class="keyword">public</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base</a><std::random_access_iterator_tag,
|
|
<a name="l01436"></a>01436 const_iterator, value_type> {
|
|
<a name="l01437"></a>01437 <span class="keyword">public</span>:
|
|
<a name="l01438"></a><a class="code" href="a00177.html#a8350fe24d5d4953265c1d59e49e8bb16">01438</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00176.html#a4997c9ff7728c3786a1616a2aabb4cba">indirect_array::value_type</a> <a class="code" href="a00177.html#a8350fe24d5d4953265c1d59e49e8bb16">value_type</a>;
|
|
<a name="l01439"></a><a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">01439</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00176.html#aefd0e9e277507a3c744439221e16a43f">indirect_array::difference_type</a> <a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">difference_type</a>;
|
|
<a name="l01440"></a><a class="code" href="a00177.html#afe381c64b1ccf9008a4c236c1fc8e812">01440</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">indirect_array::const_reference</a> <a class="code" href="a00177.html#afe381c64b1ccf9008a4c236c1fc8e812">reference</a>;
|
|
<a name="l01441"></a><a class="code" href="a00177.html#a5674589d3d6088dbe418f59875c557eb">01441</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00176.html#a49848723c753c701b79214b06a8202ca">indirect_array::const_pointer</a> <a class="code" href="a00177.html#a5674589d3d6088dbe418f59875c557eb">pointer</a>;
|
|
<a name="l01442"></a>01442
|
|
<a name="l01443"></a>01443 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01444"></a>01444 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01445"></a><a class="code" href="a00177.html#aa1bb107601a7b454c230e3f85b313849">01445</a> <a class="code" href="a00177.html#aa1bb107601a7b454c230e3f85b313849">const_iterator</a> ():
|
|
<a name="l01446"></a>01446 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00176.html">indirect_array</a>> (), <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> () {}
|
|
<a name="l01447"></a>01447 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01448"></a><a class="code" href="a00177.html#aba93ed503539b45172b76f0284698709">01448</a> <a class="code" href="a00177.html#aa1bb107601a7b454c230e3f85b313849">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array</a> &ia, <span class="keyword">const</span> <a class="code" href="a00176.html#a4604b9492982e097089fc30bb3995df8">const_subiterator_type</a> &it):
|
|
<a name="l01449"></a>01449 <a class="code" href="a00069.html" title="Base class of all proxy classes that contain a (redirectable) reference to an immutable object...">container_const_reference</a><<a class="code" href="a00176.html">indirect_array</a>> (ia), <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> (it) {}
|
|
<a name="l01450"></a>01450
|
|
<a name="l01451"></a>01451 <span class="comment">// Arithmetic</span>
|
|
<a name="l01452"></a>01452 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01453"></a><a class="code" href="a00177.html#aba1bfa3fffe1d4877f0f856bc501c7d9">01453</a> <a class="code" href="a00177.html">const_iterator</a> &<a class="code" href="a00177.html#aba1bfa3fffe1d4877f0f856bc501c7d9">operator ++ </a>() {
|
|
<a name="l01454"></a>01454 ++ <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01455"></a>01455 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01456"></a>01456 }
|
|
<a name="l01457"></a>01457 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01458"></a><a class="code" href="a00177.html#a76a112c3ea77e7f8413bb073f4084d99">01458</a> <a class="code" href="a00177.html">const_iterator</a> &<a class="code" href="a00177.html#a76a112c3ea77e7f8413bb073f4084d99">operator -- </a>() {
|
|
<a name="l01459"></a>01459 -- <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01460"></a>01460 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01461"></a>01461 }
|
|
<a name="l01462"></a>01462 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01463"></a><a class="code" href="a00177.html#acce95025df5840aa3831dc5b5740fd21">01463</a> <a class="code" href="a00177.html">const_iterator</a> &<a class="code" href="a00177.html#acce95025df5840aa3831dc5b5740fd21">operator += </a>(<a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">difference_type</a> n) {
|
|
<a name="l01464"></a>01464 <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> += n;
|
|
<a name="l01465"></a>01465 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01466"></a>01466 }
|
|
<a name="l01467"></a>01467 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01468"></a><a class="code" href="a00177.html#a064c11ae10417ae1f607327bd52f948b">01468</a> <a class="code" href="a00177.html">const_iterator</a> &<a class="code" href="a00177.html#a064c11ae10417ae1f607327bd52f948b">operator -= </a>(<a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">difference_type</a> n) {
|
|
<a name="l01469"></a>01469 <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> -= n;
|
|
<a name="l01470"></a>01470 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01471"></a>01471 }
|
|
<a name="l01472"></a>01472 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01473"></a><a class="code" href="a00177.html#a46440571c5a3efed2d82271381221e50">01473</a> <a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">difference_type</a> <a class="code" href="a00177.html#a46440571c5a3efed2d82271381221e50">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00177.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01474"></a>01474 <span class="keywordflow">return</span> <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> - it.<a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01475"></a>01475 }
|
|
<a name="l01476"></a>01476
|
|
<a name="l01477"></a>01477 <span class="comment">// Dereference</span>
|
|
<a name="l01478"></a>01478 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01479"></a><a class="code" href="a00177.html#ade0b855cf90d360c922ce25d55c1d193">01479</a> <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">const_reference</a> <a class="code" href="a00177.html#ade0b855cf90d360c922ce25d55c1d193">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01480"></a>01480 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) () (<a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>);
|
|
<a name="l01481"></a>01481 }
|
|
<a name="l01482"></a>01482
|
|
<a name="l01483"></a>01483 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01484"></a><a class="code" href="a00177.html#a38a768dd788a6a3f9552fc8ea4f3d544">01484</a> <a class="code" href="a00176.html#a788185ba08ccacfd28d8eff2657a1390">const_reference</a> <a class="code" href="a00177.html#a38a768dd788a6a3f9552fc8ea4f3d544">operator [] </a>(<a class="code" href="a00177.html#a9cecf232c241e1c125dba711e369221f">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01485"></a>01485 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01486"></a>01486 }
|
|
<a name="l01487"></a>01487
|
|
<a name="l01488"></a>01488 <span class="comment">// Index</span>
|
|
<a name="l01489"></a>01489 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01490"></a><a class="code" href="a00177.html#a8fa226cb4f4cf3b2fd8ba4bf685562b4">01490</a> <a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> <a class="code" href="a00177.html#a8fa226cb4f4cf3b2fd8ba4bf685562b4">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01491"></a>01491 <span class="keywordflow">return</span> <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01492"></a>01492 }
|
|
<a name="l01493"></a>01493
|
|
<a name="l01494"></a>01494 <span class="comment">// Assignment</span>
|
|
<a name="l01495"></a>01495 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01496"></a><a class="code" href="a00177.html#acece2b082a16389d7ab66165cdeee998">01496</a> <a class="code" href="a00177.html">const_iterator</a> &<a class="code" href="a00177.html#acece2b082a16389d7ab66165cdeee998">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00177.html">const_iterator</a> &it) {
|
|
<a name="l01497"></a>01497 <span class="comment">// Comeau recommends...</span>
|
|
<a name="l01498"></a>01498 this-><a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">assign</a> (&it ());
|
|
<a name="l01499"></a>01499 <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> = it.<a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01500"></a>01500 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01501"></a>01501 }
|
|
<a name="l01502"></a>01502
|
|
<a name="l01503"></a>01503 <span class="comment">// Comparison</span>
|
|
<a name="l01504"></a>01504 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01505"></a><a class="code" href="a00177.html#afd0823d06ae2c35f0a32a0f7db7f510f">01505</a> <span class="keywordtype">bool</span> <a class="code" href="a00177.html#afd0823d06ae2c35f0a32a0f7db7f510f">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00177.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01506"></a>01506 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01507"></a>01507 <span class="keywordflow">return</span> <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> == it.<a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01508"></a>01508 }
|
|
<a name="l01509"></a>01509 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01510"></a><a class="code" href="a00177.html#a757c3bf0fde425fb5b28590e5476af43">01510</a> <span class="keywordtype">bool</span> <a class="code" href="a00177.html#a757c3bf0fde425fb5b28590e5476af43">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00177.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01511"></a>01511 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) () == it (), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01512"></a>01512 <span class="keywordflow">return</span> <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a> < it.<a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01513"></a>01513 }
|
|
<a name="l01514"></a>01514
|
|
<a name="l01515"></a>01515 <span class="keyword">private</span>:
|
|
<a name="l01516"></a><a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">01516</a> <a class="code" href="a00176.html#a4604b9492982e097089fc30bb3995df8">const_subiterator_type</a> <a class="code" href="a00177.html#a73577bc8ef37e99b9987d7bb99eded7d">it_</a>;
|
|
<a name="l01517"></a>01517 };
|
|
<a name="l01518"></a>01518 <span class="preprocessor">#endif</span>
|
|
<a name="l01519"></a>01519 <span class="preprocessor"></span>
|
|
<a name="l01520"></a>01520 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01521"></a><a class="code" href="a00176.html#a68c9df25c6f33f490bcd72305f282431">01521</a> <a class="code" href="a00177.html">const_iterator</a> <a class="code" href="a00176.html#a68c9df25c6f33f490bcd72305f282431">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01522"></a>01522 <span class="keywordflow">return</span> <a class="code" href="a00177.html">const_iterator</a> (*<span class="keyword">this</span>, 0);
|
|
<a name="l01523"></a>01523 }
|
|
<a name="l01524"></a>01524 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01525"></a><a class="code" href="a00176.html#ae5c22572bb73056f3a0e8dd19dda8647">01525</a> <a class="code" href="a00177.html">const_iterator</a> <a class="code" href="a00176.html#ae5c22572bb73056f3a0e8dd19dda8647">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01526"></a>01526 <span class="keywordflow">return</span> <a class="code" href="a00177.html">const_iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>);
|
|
<a name="l01527"></a>01527 }
|
|
<a name="l01528"></a>01528
|
|
<a name="l01529"></a>01529 <span class="comment">// Reverse iterator</span>
|
|
<a name="l01530"></a><a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">01530</a> <span class="keyword">typedef</span> std::reverse_iterator<const_iterator> <a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">const_reverse_iterator</a>;
|
|
<a name="l01531"></a>01531
|
|
<a name="l01532"></a>01532 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01533"></a><a class="code" href="a00176.html#ab252d7dd96d1f161f615e05c35ed41ea">01533</a> <a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">const_reverse_iterator</a> <a class="code" href="a00176.html#ab252d7dd96d1f161f615e05c35ed41ea">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01534"></a>01534 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">const_reverse_iterator</a> (<a class="code" href="a00176.html#ae5c22572bb73056f3a0e8dd19dda8647">end</a> ());
|
|
<a name="l01535"></a>01535 }
|
|
<a name="l01536"></a>01536 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01537"></a><a class="code" href="a00176.html#ad07390b92b39375333befa94cb6a7e25">01537</a> <a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">const_reverse_iterator</a> <a class="code" href="a00176.html#ad07390b92b39375333befa94cb6a7e25">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01538"></a>01538 <span class="keywordflow">return</span> <a class="code" href="a00176.html#a0617a3ed807c812c81c467aaf7e2e309">const_reverse_iterator</a> (<a class="code" href="a00176.html#a68c9df25c6f33f490bcd72305f282431">begin</a> ());
|
|
<a name="l01539"></a>01539 }
|
|
<a name="l01540"></a>01540
|
|
<a name="l01541"></a>01541 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01542"></a><a class="code" href="a00176.html#a28d2b8a199c11c03f396bedeb95cc558">01542</a> <a class="code" href="a00176.html">indirect_array</a> <a class="code" href="a00176.html#a28d2b8a199c11c03f396bedeb95cc558">preprocess</a> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> size)<span class="keyword"> const </span>{
|
|
<a name="l01543"></a>01543 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &<a class="code" href="a00176.html#abd7a18f4e34e6d473b853ee2aa3890b8">all_</a>)
|
|
<a name="l01544"></a>01544 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01545"></a>01545 <a class="code" href="a00176.html">indirect_array</a> ia (size);
|
|
<a name="l01546"></a>01546 <span class="keywordflow">for</span> (<a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> i = 0; i < <a class="code" href="a00176.html#a7d848130b283b2fa6de444b313b6bb08">size</a>; ++ i)
|
|
<a name="l01547"></a>01547 ia (i) = i;
|
|
<a name="l01548"></a>01548 <span class="keywordflow">return</span> ia;
|
|
<a name="l01549"></a>01549 }
|
|
<a name="l01550"></a>01550 <span class="keyword">static</span>
|
|
<a name="l01551"></a>01551 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01552"></a><a class="code" href="a00176.html#a021d8097ce6ccb5b0a5b6f5cd1cf3ed3">01552</a> <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array</a> &<a class="code" href="a00176.html#a021d8097ce6ccb5b0a5b6f5cd1cf3ed3">all</a> () {
|
|
<a name="l01553"></a>01553 <span class="keywordflow">return</span> <a class="code" href="a00176.html#abd7a18f4e34e6d473b853ee2aa3890b8">all_</a>;
|
|
<a name="l01554"></a>01554 }
|
|
<a name="l01555"></a>01555
|
|
<a name="l01556"></a>01556 <span class="keyword">private</span>:
|
|
<a name="l01557"></a><a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">01557</a> <a class="code" href="a00176.html#a195417fb61dddd9f414fa6376c8011c3">size_type</a> <a class="code" href="a00176.html#a3e572c0c34926f6018ded478d98165f2">size_</a>;
|
|
<a name="l01558"></a><a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">01558</a> <a class="code" href="a00176.html#acd39f7b4d6860fffae8af680c3dd2aa9">array_type</a> <a class="code" href="a00176.html#a2b9b06f93d1f06d957e0f16cb235f902">data_</a>;
|
|
<a name="l01559"></a><a class="code" href="a00176.html#abd7a18f4e34e6d473b853ee2aa3890b8">01559</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array</a> <a class="code" href="a00176.html#abd7a18f4e34e6d473b853ee2aa3890b8">all_</a>;
|
|
<a name="l01560"></a>01560 };
|
|
<a name="l01561"></a>01561
|
|
<a name="l01562"></a>01562 <span class="keyword">template</span><<span class="keyword">class</span> A>
|
|
<a name="l01563"></a>01563 <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> <a class="code" href="a00176.html">indirect_array<A>::all_</a>;
|
|
<a name="l01564"></a>01564
|
|
<a name="l01565"></a>01565
|
|
<a name="l01566"></a>01566
|
|
<a name="l01567"></a>01567 <span class="comment">// Gunter Winkler contributed the classes index_pair, index_pair_array,</span>
|
|
<a name="l01568"></a>01568 <span class="comment">// index_triple and index_triple_array to enable inplace sort of parallel arrays.</span>
|
|
<a name="l01569"></a>01569
|
|
<a name="l01570"></a>01570 <span class="keyword">template</span> <<span class="keyword">class</span> V>
|
|
<a name="l01571"></a><a class="code" href="a00159.html">01571</a> <span class="keyword">class </span><a class="code" href="a00159.html">index_pair</a> :
|
|
<a name="l01572"></a>01572 <span class="keyword">private</span> boost::noncopyable,
|
|
<a name="l01573"></a>01573 <span class="keyword">public</span> <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><V> {
|
|
<a name="l01574"></a>01574
|
|
<a name="l01575"></a><a class="code" href="a00159.html#a50cf1de7dfc4354b5533c329ddb889a3">01575</a> <span class="keyword">typedef</span> <a class="code" href="a00159.html">index_pair<V></a> <a class="code" href="a00159.html#a50cf1de7dfc4354b5533c329ddb889a3">self_type</a>;
|
|
<a name="l01576"></a>01576 <span class="keyword">public</span>:
|
|
<a name="l01577"></a><a class="code" href="a00159.html#a117761848e0db71f57f857e7b8a279a5">01577</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V::size_type <a class="code" href="a00159.html#a117761848e0db71f57f857e7b8a279a5">size_type</a>;
|
|
<a name="l01578"></a>01578
|
|
<a name="l01579"></a>01579 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01580"></a><a class="code" href="a00159.html#ab72def76f131fe18d05f4cabf3d42bbe">01580</a> <a class="code" href="a00159.html#ab72def76f131fe18d05f4cabf3d42bbe">index_pair</a>(V& v, <a class="code" href="a00159.html#a117761848e0db71f57f857e7b8a279a5">size_type</a> i) :
|
|
<a name="l01581"></a>01581 <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><V>(v), <a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">i_</a>(i),
|
|
<a name="l01582"></a>01582 <a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>(v.data1_[i]), <a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>(v.data2_[i]),
|
|
<a name="l01583"></a>01583 <a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">dirty_</a>(false), <a class="code" href="a00159.html#a1b50a997665052705db38f4e6f64de63">is_copy_</a>(false) {}
|
|
<a name="l01584"></a>01584 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01585"></a><a class="code" href="a00159.html#ac68cc912d1d7d44c5d21465897e586a4">01585</a> <a class="code" href="a00159.html#ab72def76f131fe18d05f4cabf3d42bbe">index_pair</a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) :
|
|
<a name="l01586"></a>01586 <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><V>(rhs()), <a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">i_</a>(0),
|
|
<a name="l01587"></a>01587 <a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>(rhs.<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>), <a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>(rhs.<a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>),
|
|
<a name="l01588"></a>01588 <a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">dirty_</a>(false), <a class="code" href="a00159.html#a1b50a997665052705db38f4e6f64de63">is_copy_</a>(true) {}
|
|
<a name="l01589"></a>01589 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01590"></a><a class="code" href="a00159.html#a7ccfb4fcccf75eb68abf79202f3a8130">01590</a> <a class="code" href="a00159.html#a7ccfb4fcccf75eb68abf79202f3a8130">~index_pair</a>() {
|
|
<a name="l01591"></a>01591 <span class="keywordflow">if</span> (<a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">dirty_</a> && (!<a class="code" href="a00159.html#a1b50a997665052705db38f4e6f64de63">is_copy_</a>) ) {
|
|
<a name="l01592"></a>01592 (*this)().data1_[<a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">i_</a>] = <a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>;
|
|
<a name="l01593"></a>01593 (*this)().data2_[<a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">i_</a>] = <a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>;
|
|
<a name="l01594"></a>01594 }
|
|
<a name="l01595"></a>01595 }
|
|
<a name="l01596"></a>01596
|
|
<a name="l01597"></a>01597 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01598"></a><a class="code" href="a00159.html#ac8b5c45439d221e9d5f5e3c389654600">01598</a> <a class="code" href="a00159.html">self_type</a>& <a class="code" href="a00159.html#ac8b5c45439d221e9d5f5e3c389654600">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01599"></a>01599 <a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a> = rhs.<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>;
|
|
<a name="l01600"></a>01600 <a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a> = rhs.<a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>;
|
|
<a name="l01601"></a>01601 <a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">dirty_</a> = <span class="keyword">true</span>;
|
|
<a name="l01602"></a>01602 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01603"></a>01603 }
|
|
<a name="l01604"></a>01604
|
|
<a name="l01605"></a>01605 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01606"></a><a class="code" href="a00159.html#a5d9515593fcc2a3e8933e541ed37cbb7">01606</a> <span class="keywordtype">void</span> <a class="code" href="a00159.html#a5d9515593fcc2a3e8933e541ed37cbb7">swap</a>(<a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01607"></a>01607 <a class="code" href="a00159.html">self_type</a> tmp(rhs);
|
|
<a name="l01608"></a>01608 rhs = *<span class="keyword">this</span>;
|
|
<a name="l01609"></a>01609 *<span class="keyword">this</span> = tmp;
|
|
<a name="l01610"></a>01610 }
|
|
<a name="l01611"></a>01611 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01612"></a><a class="code" href="a00159.html#acbf6caff1e555178060437e00ccfa76d">01612</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00159.html#acbf6caff1e555178060437e00ccfa76d">swap</a>(<a class="code" href="a00159.html">self_type</a>& lhs, <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01613"></a>01613 lhs.<a class="code" href="a00159.html#a5d9515593fcc2a3e8933e541ed37cbb7">swap</a>(rhs);
|
|
<a name="l01614"></a>01614 }
|
|
<a name="l01615"></a>01615
|
|
<a name="l01616"></a>01616 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01617"></a><a class="code" href="a00159.html#acaf6b54dd180eaf0554d0fd2c35c0bc1">01617</a> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#acaf6b54dd180eaf0554d0fd2c35c0bc1">equal</a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs)<span class="keyword"> const </span>{
|
|
<a name="l01618"></a>01618 <span class="keywordflow">return</span> (<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a> == rhs.<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>);
|
|
<a name="l01619"></a>01619 }
|
|
<a name="l01620"></a>01620 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01621"></a><a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">01621</a> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">less</a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs)<span class="keyword"> const </span>{
|
|
<a name="l01622"></a>01622 <span class="keywordflow">return</span> (<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a> < rhs.<a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>);
|
|
<a name="l01623"></a>01623 }
|
|
<a name="l01624"></a>01624 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01625"></a><a class="code" href="a00159.html#a220f839dd4067f290b33b21251078960">01625</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a220f839dd4067f290b33b21251078960">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01626"></a>01626 <span class="keywordflow">return</span> lhs.<a class="code" href="a00159.html#acaf6b54dd180eaf0554d0fd2c35c0bc1">equal</a>(rhs);
|
|
<a name="l01627"></a>01627 }
|
|
<a name="l01628"></a>01628 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01629"></a><a class="code" href="a00159.html#ab80c34d4934ef05b5f3dede02075df4d">01629</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#ab80c34d4934ef05b5f3dede02075df4d">operator != </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01630"></a>01630 <span class="keywordflow">return</span> !lhs.<a class="code" href="a00159.html#acaf6b54dd180eaf0554d0fd2c35c0bc1">equal</a>(rhs);
|
|
<a name="l01631"></a>01631 }
|
|
<a name="l01632"></a>01632 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01633"></a><a class="code" href="a00159.html#af725eb4bd6cdb026914c82565b64155f">01633</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#af725eb4bd6cdb026914c82565b64155f">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01634"></a>01634 <span class="keywordflow">return</span> lhs.<a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">less</a>(rhs);
|
|
<a name="l01635"></a>01635 }
|
|
<a name="l01636"></a>01636 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01637"></a><a class="code" href="a00159.html#a4561e69cf81bea4003c887609835b603">01637</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a4561e69cf81bea4003c887609835b603">operator >= </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01638"></a>01638 <span class="keywordflow">return</span> !lhs.<a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">less</a>(rhs);
|
|
<a name="l01639"></a>01639 }
|
|
<a name="l01640"></a>01640 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01641"></a><a class="code" href="a00159.html#ac840b5a7adc33c4cba8f881dbf00a573">01641</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#ac840b5a7adc33c4cba8f881dbf00a573">operator > </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01642"></a>01642 <span class="keywordflow">return</span> rhs.<a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">less</a>(lhs);
|
|
<a name="l01643"></a>01643 }
|
|
<a name="l01644"></a>01644 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01645"></a><a class="code" href="a00159.html#a2009d42e6ed28337eefc25c15ecf21da">01645</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a2009d42e6ed28337eefc25c15ecf21da">operator <= </a>(<span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00159.html">self_type</a>& rhs) {
|
|
<a name="l01646"></a>01646 <span class="keywordflow">return</span> !rhs.<a class="code" href="a00159.html#a9d68751a973bc1547eeac362338f48cd">less</a>(lhs);
|
|
<a name="l01647"></a>01647 }
|
|
<a name="l01648"></a>01648
|
|
<a name="l01649"></a>01649 <span class="keyword">private</span>:
|
|
<a name="l01650"></a><a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">01650</a> <a class="code" href="a00159.html#a117761848e0db71f57f857e7b8a279a5">size_type</a> <a class="code" href="a00159.html#a3e098a570cff9096c05c9ed73a07e002">i_</a>;
|
|
<a name="l01651"></a><a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">01651</a> <span class="keyword">typename</span> V::value1_type <a class="code" href="a00159.html#aa827389785427996df605ed534a6abc5">v1_</a>;
|
|
<a name="l01652"></a><a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">01652</a> <span class="keyword">typename</span> V::value2_type <a class="code" href="a00159.html#ab37aa0cb4c6c420bba6f433cfe949f15">v2_</a>;
|
|
<a name="l01653"></a><a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">01653</a> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a2a8ef5b6379b990acad8ef5c3926388b">dirty_</a>;
|
|
<a name="l01654"></a><a class="code" href="a00159.html#a1b50a997665052705db38f4e6f64de63">01654</a> <span class="keywordtype">bool</span> <a class="code" href="a00159.html#a1b50a997665052705db38f4e6f64de63">is_copy_</a>;
|
|
<a name="l01655"></a>01655 };
|
|
<a name="l01656"></a>01656
|
|
<a name="l01657"></a>01657 <span class="keyword">template</span> <<span class="keyword">class</span> V1, <span class="keyword">class</span> V2>
|
|
<a name="l01658"></a><a class="code" href="a00160.html">01658</a> <span class="keyword">class </span><a class="code" href="a00160.html">index_pair_array</a>:
|
|
<a name="l01659"></a>01659 <span class="keyword">private</span> boost::noncopyable {
|
|
<a name="l01660"></a>01660
|
|
<a name="l01661"></a><a class="code" href="a00160.html#a83f4152db63c48509f71fc6e5b9dfcc2">01661</a> <span class="keyword">typedef</span> <a class="code" href="a00160.html">index_pair_array<V1, V2></a> <a class="code" href="a00160.html#a83f4152db63c48509f71fc6e5b9dfcc2">self_type</a>;
|
|
<a name="l01662"></a>01662 <span class="keyword">public</span>:
|
|
<a name="l01663"></a><a class="code" href="a00160.html#a504e4b428f1a26d293b2ead3dcf3d25c">01663</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::value_type <a class="code" href="a00160.html#a504e4b428f1a26d293b2ead3dcf3d25c">value1_type</a>;
|
|
<a name="l01664"></a><a class="code" href="a00160.html#a58c6e391de36090220463163f91d77d7">01664</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V2::value_type <a class="code" href="a00160.html#a58c6e391de36090220463163f91d77d7">value2_type</a>;
|
|
<a name="l01665"></a>01665
|
|
<a name="l01666"></a><a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">01666</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::size_type <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a>;
|
|
<a name="l01667"></a><a class="code" href="a00160.html#a8f967ffec2b725debd68ecdd246c4562">01667</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::difference_type <a class="code" href="a00160.html#a8f967ffec2b725debd68ecdd246c4562">difference_type</a>;
|
|
<a name="l01668"></a><a class="code" href="a00160.html#a8474ecd32f623174cf6e02063f0b77c6">01668</a> <span class="keyword">typedef</span> <a class="code" href="a00159.html">index_pair<self_type></a> <a class="code" href="a00160.html#a8474ecd32f623174cf6e02063f0b77c6">value_type</a>;
|
|
<a name="l01669"></a>01669 <span class="comment">// There is nothing that can be referenced directly. Always return a copy of the index_pair</span>
|
|
<a name="l01670"></a><a class="code" href="a00160.html#a480bd4801e3ee402a43847589e1103e6">01670</a> <span class="keyword">typedef</span> <a class="code" href="a00159.html">value_type</a> <a class="code" href="a00160.html#a480bd4801e3ee402a43847589e1103e6">reference</a>;
|
|
<a name="l01671"></a><a class="code" href="a00160.html#ac70720dc046af5a7d2de06ebdc7ff0b9">01671</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00159.html">value_type</a> <a class="code" href="a00160.html#ac70720dc046af5a7d2de06ebdc7ff0b9">const_reference</a>;
|
|
<a name="l01672"></a>01672
|
|
<a name="l01673"></a>01673 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01674"></a><a class="code" href="a00160.html#a8256fb678c808d6826f64e0370a3e1e1">01674</a> <a class="code" href="a00160.html#a8256fb678c808d6826f64e0370a3e1e1">index_pair_array</a>(<a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> size, V1& data1, V2& data2) :
|
|
<a name="l01675"></a>01675 <a class="code" href="a00160.html#aff3eb016206f5c1dc222fcbae1e462d8">size_</a>(size),<a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>(data1),<a class="code" href="a00160.html#a5fcfd180d6d450e450ee42fbfdc03468">data2_</a>(data2) {}
|
|
<a name="l01676"></a>01676
|
|
<a name="l01677"></a>01677 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01678"></a><a class="code" href="a00160.html#a9b8c3ff5a71e23e1a158f3e155c54fec">01678</a> <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> <a class="code" href="a00160.html#a9b8c3ff5a71e23e1a158f3e155c54fec">size</a>()<span class="keyword"> const </span>{
|
|
<a name="l01679"></a>01679 <span class="keywordflow">return</span> <a class="code" href="a00160.html#aff3eb016206f5c1dc222fcbae1e462d8">size_</a>;
|
|
<a name="l01680"></a>01680 }
|
|
<a name="l01681"></a>01681
|
|
<a name="l01682"></a>01682 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01683"></a><a class="code" href="a00160.html#abb4bce3dd546e97f341fffc1560bc4ba">01683</a> <a class="code" href="a00159.html">const_reference</a> <a class="code" href="a00160.html#abb4bce3dd546e97f341fffc1560bc4ba">operator () </a>(<a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01684"></a>01684 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a8474ecd32f623174cf6e02063f0b77c6">value_type</a>((*<span class="keyword">this</span>), i);
|
|
<a name="l01685"></a>01685 }
|
|
<a name="l01686"></a>01686 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01687"></a><a class="code" href="a00160.html#a9ce4eef6bdfec9d0bf270fc55a220d63">01687</a> <a class="code" href="a00159.html">reference</a> <a class="code" href="a00160.html#abb4bce3dd546e97f341fffc1560bc4ba">operator () </a>(<a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i) {
|
|
<a name="l01688"></a>01688 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a8474ecd32f623174cf6e02063f0b77c6">value_type</a>((*<span class="keyword">this</span>), i);
|
|
<a name="l01689"></a>01689 }
|
|
<a name="l01690"></a>01690
|
|
<a name="l01691"></a><a class="code" href="a00160.html#ad0c7436d0a9dd8c2f76a0962e6e7c47f">01691</a> <span class="keyword">typedef</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">indexed_iterator<self_type, std::random_access_iterator_tag></a> <a class="code" href="a00160.html#ad0c7436d0a9dd8c2f76a0962e6e7c47f">iterator</a>;
|
|
<a name="l01692"></a><a class="code" href="a00160.html#a928549cf44d3ed87b12ec8404a867241">01692</a> <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<self_type, std::random_access_iterator_tag></a> <a class="code" href="a00160.html#a928549cf44d3ed87b12ec8404a867241">const_iterator</a>;
|
|
<a name="l01693"></a>01693
|
|
<a name="l01694"></a>01694 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01695"></a><a class="code" href="a00160.html#a5fb1fabbfc06558e39c06af327bfe1f5">01695</a> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a> <a class="code" href="a00160.html#a5fb1fabbfc06558e39c06af327bfe1f5">begin</a>() {
|
|
<a name="l01696"></a>01696 <span class="keywordflow">return</span> <a class="code" href="a00160.html#ad0c7436d0a9dd8c2f76a0962e6e7c47f">iterator</a>( (*<span class="keyword">this</span>), 0);
|
|
<a name="l01697"></a>01697 }
|
|
<a name="l01698"></a>01698 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01699"></a><a class="code" href="a00160.html#a7a57386c146893908ddc76656a0ed7ee">01699</a> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a> <a class="code" href="a00160.html#a7a57386c146893908ddc76656a0ed7ee">end</a>() {
|
|
<a name="l01700"></a>01700 <span class="keywordflow">return</span> <a class="code" href="a00160.html#ad0c7436d0a9dd8c2f76a0962e6e7c47f">iterator</a>( (*<span class="keyword">this</span>), <a class="code" href="a00160.html#a9b8c3ff5a71e23e1a158f3e155c54fec">size</a>());
|
|
<a name="l01701"></a>01701 }
|
|
<a name="l01702"></a>01702
|
|
<a name="l01703"></a>01703 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01704"></a><a class="code" href="a00160.html#a914d7b89d47667c91eeb97d02b22d72c">01704</a> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">const_iterator</a> <a class="code" href="a00160.html#a914d7b89d47667c91eeb97d02b22d72c">begin</a>()<span class="keyword"> const </span>{
|
|
<a name="l01705"></a>01705 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a928549cf44d3ed87b12ec8404a867241">const_iterator</a>( (*<span class="keyword">this</span>), 0);
|
|
<a name="l01706"></a>01706 }
|
|
<a name="l01707"></a>01707 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01708"></a><a class="code" href="a00160.html#aff750c0b8abb7085dac485cfb7685694">01708</a> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">const_iterator</a> <a class="code" href="a00160.html#aff750c0b8abb7085dac485cfb7685694">end</a>()<span class="keyword"> const </span>{
|
|
<a name="l01709"></a>01709 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a928549cf44d3ed87b12ec8404a867241">const_iterator</a>( (*<span class="keyword">this</span>), <a class="code" href="a00160.html#a9b8c3ff5a71e23e1a158f3e155c54fec">size</a>());
|
|
<a name="l01710"></a>01710 }
|
|
<a name="l01711"></a>01711
|
|
<a name="l01712"></a>01712 <span class="comment">// unnecessary function:</span>
|
|
<a name="l01713"></a>01713 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01714"></a><a class="code" href="a00160.html#acd7125e06be0e195598d1c1590de1f6b">01714</a> <span class="keywordtype">bool</span> <a class="code" href="a00160.html#acd7125e06be0e195598d1c1590de1f6b">equal</a>(<a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i1, <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i2)<span class="keyword"> const </span>{
|
|
<a name="l01715"></a>01715 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i1] == <a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i2];
|
|
<a name="l01716"></a>01716 }
|
|
<a name="l01717"></a>01717 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01718"></a><a class="code" href="a00160.html#a7eb4f21512b6c27463e9fe446c0b00ea">01718</a> <span class="keywordtype">bool</span> <a class="code" href="a00160.html#a7eb4f21512b6c27463e9fe446c0b00ea">less</a>(<a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i1, <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i2)<span class="keyword"> const </span>{
|
|
<a name="l01719"></a>01719 <span class="keywordflow">return</span> <a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i1] < <a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i2];
|
|
<a name="l01720"></a>01720 }
|
|
<a name="l01721"></a>01721
|
|
<a name="l01722"></a>01722 <span class="comment">// gives a large speedup</span>
|
|
<a name="l01723"></a>01723 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01724"></a><a class="code" href="a00160.html#a9225fbed1de319ca4aed97c5cf26a42d">01724</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00160.html#a9225fbed1de319ca4aed97c5cf26a42d">iter_swap</a>(<span class="keyword">const</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a>& rhs) {
|
|
<a name="l01725"></a>01725 <span class="keyword">const</span> <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i1 = lhs.<a class="code" href="a00168.html#a3eb0ee035ebd0aa6a7c726b503cdd3ac">index</a>();
|
|
<a name="l01726"></a>01726 <span class="keyword">const</span> <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> i2 = rhs.<a class="code" href="a00168.html#a3eb0ee035ebd0aa6a7c726b503cdd3ac">index</a>();
|
|
<a name="l01727"></a>01727 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a>(lhs().<a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i1], rhs().<a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>[i2]);
|
|
<a name="l01728"></a>01728 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a>(lhs().<a class="code" href="a00160.html#a5fcfd180d6d450e450ee42fbfdc03468">data2_</a>[i1], rhs().<a class="code" href="a00160.html#a5fcfd180d6d450e450ee42fbfdc03468">data2_</a>[i2]);
|
|
<a name="l01729"></a>01729 }
|
|
<a name="l01730"></a>01730
|
|
<a name="l01731"></a>01731 <span class="keyword">private</span>:
|
|
<a name="l01732"></a><a class="code" href="a00160.html#aff3eb016206f5c1dc222fcbae1e462d8">01732</a> <a class="code" href="a00160.html#a521569aaebe4c6ba8c400531cde50cdd">size_type</a> <a class="code" href="a00160.html#aff3eb016206f5c1dc222fcbae1e462d8">size_</a>;
|
|
<a name="l01733"></a><a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">01733</a> V1& <a class="code" href="a00160.html#a84f29d2ac89ba3d2ce00ae3907dc8639">data1_</a>;
|
|
<a name="l01734"></a><a class="code" href="a00160.html#a5fcfd180d6d450e450ee42fbfdc03468">01734</a> V2& <a class="code" href="a00160.html#a5fcfd180d6d450e450ee42fbfdc03468">data2_</a>;
|
|
<a name="l01735"></a>01735
|
|
<a name="l01736"></a>01736 <span class="comment">// friend class value_type;</span>
|
|
<a name="l01737"></a><a class="code" href="a00160.html#a7b90053a71650b99c39b3ad1421a1c1c">01737</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00159.html">index_pair</a><<a class="code" href="a00160.html">self_type</a>>;
|
|
<a name="l01738"></a>01738 };
|
|
<a name="l01739"></a>01739
|
|
<a name="l01740"></a>01740 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l01741"></a><a class="code" href="a00161.html">01741</a> <span class="keyword">class </span><a class="code" href="a00161.html">index_triple</a> :
|
|
<a name="l01742"></a>01742 <span class="keyword">private</span> boost::noncopyable,
|
|
<a name="l01743"></a>01743 <span class="keyword">public</span> <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><M> {
|
|
<a name="l01744"></a>01744
|
|
<a name="l01745"></a><a class="code" href="a00161.html#ae1eaaef0c420cc99ad3d94f8ecf017ef">01745</a> <span class="keyword">typedef</span> <a class="code" href="a00161.html">index_triple<M></a> <a class="code" href="a00161.html#ae1eaaef0c420cc99ad3d94f8ecf017ef">self_type</a>;
|
|
<a name="l01746"></a>01746 <span class="keyword">public</span>:
|
|
<a name="l01747"></a><a class="code" href="a00161.html#a1e46d2f989d4f676be8cf5952409c86c">01747</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00161.html#a1e46d2f989d4f676be8cf5952409c86c">size_type</a>;
|
|
<a name="l01748"></a>01748
|
|
<a name="l01749"></a>01749 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01750"></a><a class="code" href="a00161.html#a602f25d2cc46e9394e4bd74390038844">01750</a> <a class="code" href="a00161.html#a602f25d2cc46e9394e4bd74390038844">index_triple</a>(M& m, <a class="code" href="a00161.html#a1e46d2f989d4f676be8cf5952409c86c">size_type</a> i) :
|
|
<a name="l01751"></a>01751 <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><M>(m), <a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>(i),
|
|
<a name="l01752"></a>01752 <a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>(m.data1_[i]), <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>(m.data2_[i]), <a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>(m.data3_[i]),
|
|
<a name="l01753"></a>01753 <a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">dirty_</a>(false), <a class="code" href="a00161.html#af193bc7b156daaf42be85365468d5c0d">is_copy_</a>(false) {}
|
|
<a name="l01754"></a>01754 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01755"></a><a class="code" href="a00161.html#a7b8e0e56d56f7711d74a1a88bb59f2c3">01755</a> <a class="code" href="a00161.html#a602f25d2cc46e9394e4bd74390038844">index_triple</a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) :
|
|
<a name="l01756"></a>01756 <a class="code" href="a00070.html" title="Base class of all proxy classes that contain a (redirectable) reference to a mutable object...">container_reference</a><M>(rhs()), <a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>(0),
|
|
<a name="l01757"></a>01757 <a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>(rhs.<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>), <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>(rhs.<a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>), <a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>(rhs.<a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>),
|
|
<a name="l01758"></a>01758 <a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">dirty_</a>(false), <a class="code" href="a00161.html#af193bc7b156daaf42be85365468d5c0d">is_copy_</a>(true) {}
|
|
<a name="l01759"></a>01759 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01760"></a><a class="code" href="a00161.html#aa58fcdcee25089e593c5b82f725ddf37">01760</a> <a class="code" href="a00161.html#aa58fcdcee25089e593c5b82f725ddf37">~index_triple</a>() {
|
|
<a name="l01761"></a>01761 <span class="keywordflow">if</span> (<a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">dirty_</a> && (!<a class="code" href="a00161.html#af193bc7b156daaf42be85365468d5c0d">is_copy_</a>) ) {
|
|
<a name="l01762"></a>01762 (*this)().data1_[<a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>] = <a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>;
|
|
<a name="l01763"></a>01763 (*this)().data2_[<a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>] = <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>;
|
|
<a name="l01764"></a>01764 (*this)().data3_[<a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>] = <a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>;
|
|
<a name="l01765"></a>01765 }
|
|
<a name="l01766"></a>01766 }
|
|
<a name="l01767"></a>01767
|
|
<a name="l01768"></a>01768 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01769"></a><a class="code" href="a00161.html#a03e5bfb9f8deb0da0dd61ac988ba570b">01769</a> <a class="code" href="a00161.html">self_type</a>& <a class="code" href="a00161.html#a03e5bfb9f8deb0da0dd61ac988ba570b">operator=</a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01770"></a>01770 <a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a> = rhs.<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>;
|
|
<a name="l01771"></a>01771 <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a> = rhs.<a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>;
|
|
<a name="l01772"></a>01772 <a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a> = rhs.<a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>;
|
|
<a name="l01773"></a>01773 <a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">dirty_</a> = <span class="keyword">true</span>;
|
|
<a name="l01774"></a>01774 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01775"></a>01775 }
|
|
<a name="l01776"></a>01776
|
|
<a name="l01777"></a>01777 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01778"></a><a class="code" href="a00161.html#a5ff8a61f677f76639d7dec80d800995b">01778</a> <span class="keywordtype">void</span> <a class="code" href="a00161.html#a5ff8a61f677f76639d7dec80d800995b">swap</a>(<a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01779"></a>01779 <a class="code" href="a00161.html">self_type</a> tmp(rhs);
|
|
<a name="l01780"></a>01780 rhs = *<span class="keyword">this</span>;
|
|
<a name="l01781"></a>01781 *<span class="keyword">this</span> = tmp;
|
|
<a name="l01782"></a>01782 }
|
|
<a name="l01783"></a>01783 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01784"></a><a class="code" href="a00161.html#acbf6caff1e555178060437e00ccfa76d">01784</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00161.html#acbf6caff1e555178060437e00ccfa76d">swap</a>(<a class="code" href="a00161.html">self_type</a>& lhs, <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01785"></a>01785 lhs.<a class="code" href="a00161.html#a5ff8a61f677f76639d7dec80d800995b">swap</a>(rhs);
|
|
<a name="l01786"></a>01786 }
|
|
<a name="l01787"></a>01787
|
|
<a name="l01788"></a>01788 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01789"></a><a class="code" href="a00161.html#afe13a4fe8bb3c24cf00d743ddcd9da70">01789</a> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#afe13a4fe8bb3c24cf00d743ddcd9da70">equal</a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs)<span class="keyword"> const </span>{
|
|
<a name="l01790"></a>01790 <span class="keywordflow">return</span> ((<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a> == rhs.<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>) && (<a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a> == rhs.<a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>));
|
|
<a name="l01791"></a>01791 }
|
|
<a name="l01792"></a>01792 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01793"></a><a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">01793</a> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">less</a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs)<span class="keyword"> const </span>{
|
|
<a name="l01794"></a>01794 <span class="keywordflow">return</span> ((<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a> < rhs.<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>) ||
|
|
<a name="l01795"></a>01795 (<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a> == rhs.<a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a> && <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a> < rhs.<a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>));
|
|
<a name="l01796"></a>01796 }
|
|
<a name="l01797"></a>01797 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01798"></a><a class="code" href="a00161.html#a220f839dd4067f290b33b21251078960">01798</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#a220f839dd4067f290b33b21251078960">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01799"></a>01799 <span class="keywordflow">return</span> lhs.<a class="code" href="a00161.html#afe13a4fe8bb3c24cf00d743ddcd9da70">equal</a>(rhs);
|
|
<a name="l01800"></a>01800 }
|
|
<a name="l01801"></a>01801 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01802"></a><a class="code" href="a00161.html#ab80c34d4934ef05b5f3dede02075df4d">01802</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#ab80c34d4934ef05b5f3dede02075df4d">operator != </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01803"></a>01803 <span class="keywordflow">return</span> !lhs.<a class="code" href="a00161.html#afe13a4fe8bb3c24cf00d743ddcd9da70">equal</a>(rhs);
|
|
<a name="l01804"></a>01804 }
|
|
<a name="l01805"></a>01805 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01806"></a><a class="code" href="a00161.html#af725eb4bd6cdb026914c82565b64155f">01806</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#af725eb4bd6cdb026914c82565b64155f">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01807"></a>01807 <span class="keywordflow">return</span> lhs.<a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">less</a>(rhs);
|
|
<a name="l01808"></a>01808 }
|
|
<a name="l01809"></a>01809 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01810"></a><a class="code" href="a00161.html#a4561e69cf81bea4003c887609835b603">01810</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#a4561e69cf81bea4003c887609835b603">operator >= </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01811"></a>01811 <span class="keywordflow">return</span> !lhs.<a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">less</a>(rhs);
|
|
<a name="l01812"></a>01812 }
|
|
<a name="l01813"></a>01813 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01814"></a><a class="code" href="a00161.html#ac840b5a7adc33c4cba8f881dbf00a573">01814</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#ac840b5a7adc33c4cba8f881dbf00a573">operator > </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01815"></a>01815 <span class="keywordflow">return</span> rhs.<a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">less</a>(lhs);
|
|
<a name="l01816"></a>01816 }
|
|
<a name="l01817"></a>01817 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01818"></a><a class="code" href="a00161.html#a2009d42e6ed28337eefc25c15ecf21da">01818</a> <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#a2009d42e6ed28337eefc25c15ecf21da">operator <= </a>(<span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00161.html">self_type</a>& rhs) {
|
|
<a name="l01819"></a>01819 <span class="keywordflow">return</span> !rhs.<a class="code" href="a00161.html#a9e5d573f8e8fb64e9e3674091d001ccb">less</a>(lhs);
|
|
<a name="l01820"></a>01820 }
|
|
<a name="l01821"></a>01821
|
|
<a name="l01822"></a>01822 <span class="keyword">private</span>:
|
|
<a name="l01823"></a><a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">01823</a> <a class="code" href="a00161.html#a1e46d2f989d4f676be8cf5952409c86c">size_type</a> <a class="code" href="a00161.html#a05fd5fb5868dfc21c1aa209edf1699ad">i_</a>;
|
|
<a name="l01824"></a><a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">01824</a> <span class="keyword">typename</span> M::value1_type <a class="code" href="a00161.html#a3d8aca6ec91b8629200f9582bed1326a">v1_</a>;
|
|
<a name="l01825"></a><a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">01825</a> <span class="keyword">typename</span> M::value2_type <a class="code" href="a00161.html#a8c327acb46c152fbafbb73274ba5a131">v2_</a>;
|
|
<a name="l01826"></a><a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">01826</a> <span class="keyword">typename</span> M::value3_type <a class="code" href="a00161.html#ae08f93066d53fa24c5a1bc80f135160d">v3_</a>;
|
|
<a name="l01827"></a><a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">01827</a> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#a6d117a92574b6722c2c9e387596bacf2">dirty_</a>;
|
|
<a name="l01828"></a><a class="code" href="a00161.html#af193bc7b156daaf42be85365468d5c0d">01828</a> <span class="keywordtype">bool</span> <a class="code" href="a00161.html#af193bc7b156daaf42be85365468d5c0d">is_copy_</a>;
|
|
<a name="l01829"></a>01829 };
|
|
<a name="l01830"></a>01830
|
|
<a name="l01831"></a>01831 <span class="keyword">template</span> <<span class="keyword">class</span> V1, <span class="keyword">class</span> V2, <span class="keyword">class</span> V3>
|
|
<a name="l01832"></a><a class="code" href="a00162.html">01832</a> <span class="keyword">class </span><a class="code" href="a00162.html">index_triple_array</a>:
|
|
<a name="l01833"></a>01833 <span class="keyword">private</span> boost::noncopyable {
|
|
<a name="l01834"></a>01834
|
|
<a name="l01835"></a><a class="code" href="a00162.html#af46e5c78eb4c048254696a09b7e1f468">01835</a> <span class="keyword">typedef</span> <a class="code" href="a00162.html">index_triple_array<V1, V2, V3></a> <a class="code" href="a00162.html#af46e5c78eb4c048254696a09b7e1f468">self_type</a>;
|
|
<a name="l01836"></a>01836 <span class="keyword">public</span>:
|
|
<a name="l01837"></a><a class="code" href="a00162.html#a4057914fd88f0ef737b48035749149ff">01837</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::value_type <a class="code" href="a00162.html#a4057914fd88f0ef737b48035749149ff">value1_type</a>;
|
|
<a name="l01838"></a><a class="code" href="a00162.html#a9cf46bf09381e2d0316c416f2cbbb5e8">01838</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V2::value_type <a class="code" href="a00162.html#a9cf46bf09381e2d0316c416f2cbbb5e8">value2_type</a>;
|
|
<a name="l01839"></a><a class="code" href="a00162.html#aac53c353a1877e91e9839744ff2f2c3f">01839</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V3::value_type <a class="code" href="a00162.html#aac53c353a1877e91e9839744ff2f2c3f">value3_type</a>;
|
|
<a name="l01840"></a>01840
|
|
<a name="l01841"></a><a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">01841</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::size_type <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a>;
|
|
<a name="l01842"></a><a class="code" href="a00162.html#ad3e43e67ea825718745e83ad33bd92d7">01842</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> V1::difference_type <a class="code" href="a00162.html#ad3e43e67ea825718745e83ad33bd92d7">difference_type</a>;
|
|
<a name="l01843"></a><a class="code" href="a00162.html#abe5dc244d01cc369c49ebf4f3bcd9600">01843</a> <span class="keyword">typedef</span> <a class="code" href="a00161.html">index_triple<self_type></a> <a class="code" href="a00162.html#abe5dc244d01cc369c49ebf4f3bcd9600">value_type</a>;
|
|
<a name="l01844"></a>01844 <span class="comment">// There is nothing that can be referenced directly. Always return a copy of the index_triple</span>
|
|
<a name="l01845"></a><a class="code" href="a00162.html#a319e985abc516de53e8934ac06696746">01845</a> <span class="keyword">typedef</span> <a class="code" href="a00161.html">value_type</a> <a class="code" href="a00162.html#a319e985abc516de53e8934ac06696746">reference</a>;
|
|
<a name="l01846"></a><a class="code" href="a00162.html#a0ff2bd8c2483a9e2a92897f9e2908c3f">01846</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00161.html">value_type</a> <a class="code" href="a00162.html#a0ff2bd8c2483a9e2a92897f9e2908c3f">const_reference</a>;
|
|
<a name="l01847"></a>01847
|
|
<a name="l01848"></a>01848 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01849"></a><a class="code" href="a00162.html#ac9754902217a65fd47dd808f4d7ab31d">01849</a> <a class="code" href="a00162.html#ac9754902217a65fd47dd808f4d7ab31d">index_triple_array</a>(<a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> size, V1& data1, V2& data2, V3& data3) :
|
|
<a name="l01850"></a>01850 <a class="code" href="a00162.html#afa40b739aece91437c08ee5f24ec56e5">size_</a>(size),<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>(data1),<a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>(data2),<a class="code" href="a00162.html#a556110af37a3ed6784616cce8ed3b6c2">data3_</a>(data3) {}
|
|
<a name="l01851"></a>01851
|
|
<a name="l01852"></a>01852 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01853"></a><a class="code" href="a00162.html#a79eb4c317d1e57057bc79b1860903c9c">01853</a> <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> <a class="code" href="a00162.html#a79eb4c317d1e57057bc79b1860903c9c">size</a>()<span class="keyword"> const </span>{
|
|
<a name="l01854"></a>01854 <span class="keywordflow">return</span> <a class="code" href="a00162.html#afa40b739aece91437c08ee5f24ec56e5">size_</a>;
|
|
<a name="l01855"></a>01855 }
|
|
<a name="l01856"></a>01856
|
|
<a name="l01857"></a>01857 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01858"></a><a class="code" href="a00162.html#ad4d8149b099a8027a9382132c5c39d59">01858</a> <a class="code" href="a00161.html">const_reference</a> <a class="code" href="a00162.html#ad4d8149b099a8027a9382132c5c39d59">operator () </a>(<a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01859"></a>01859 <span class="keywordflow">return</span> <a class="code" href="a00162.html#abe5dc244d01cc369c49ebf4f3bcd9600">value_type</a>((*<span class="keyword">this</span>), i);
|
|
<a name="l01860"></a>01860 }
|
|
<a name="l01861"></a>01861 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01862"></a><a class="code" href="a00162.html#a5d9d53a76846918372afec499da2b2c5">01862</a> <a class="code" href="a00161.html">reference</a> <a class="code" href="a00162.html#ad4d8149b099a8027a9382132c5c39d59">operator () </a>(<a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i) {
|
|
<a name="l01863"></a>01863 <span class="keywordflow">return</span> <a class="code" href="a00162.html#abe5dc244d01cc369c49ebf4f3bcd9600">value_type</a>((*<span class="keyword">this</span>), i);
|
|
<a name="l01864"></a>01864 }
|
|
<a name="l01865"></a>01865
|
|
<a name="l01866"></a><a class="code" href="a00162.html#a4819ec2353e9a0f5e0dba0fbd9017116">01866</a> <span class="keyword">typedef</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">indexed_iterator<self_type, std::random_access_iterator_tag></a> <a class="code" href="a00162.html#a4819ec2353e9a0f5e0dba0fbd9017116">iterator</a>;
|
|
<a name="l01867"></a><a class="code" href="a00162.html#a4db7b89b95af931bbadf92d681be9b1a">01867</a> <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<self_type, std::random_access_iterator_tag></a> <a class="code" href="a00162.html#a4db7b89b95af931bbadf92d681be9b1a">const_iterator</a>;
|
|
<a name="l01868"></a>01868
|
|
<a name="l01869"></a>01869 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01870"></a><a class="code" href="a00162.html#af1649dc7b58d918807adeffbe0ed9da2">01870</a> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a> <a class="code" href="a00162.html#af1649dc7b58d918807adeffbe0ed9da2">begin</a>() {
|
|
<a name="l01871"></a>01871 <span class="keywordflow">return</span> <a class="code" href="a00162.html#a4819ec2353e9a0f5e0dba0fbd9017116">iterator</a>( (*<span class="keyword">this</span>), 0);
|
|
<a name="l01872"></a>01872 }
|
|
<a name="l01873"></a>01873 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01874"></a><a class="code" href="a00162.html#a3ccc33858f0a9d516b64300961953178">01874</a> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a> <a class="code" href="a00162.html#a3ccc33858f0a9d516b64300961953178">end</a>() {
|
|
<a name="l01875"></a>01875 <span class="keywordflow">return</span> <a class="code" href="a00162.html#a4819ec2353e9a0f5e0dba0fbd9017116">iterator</a>( (*<span class="keyword">this</span>), <a class="code" href="a00162.html#a79eb4c317d1e57057bc79b1860903c9c">size</a>());
|
|
<a name="l01876"></a>01876 }
|
|
<a name="l01877"></a>01877
|
|
<a name="l01878"></a>01878 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01879"></a><a class="code" href="a00162.html#ada4aec2f90d040dd0ee4a9ffdaf4e090">01879</a> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">const_iterator</a> <a class="code" href="a00162.html#ada4aec2f90d040dd0ee4a9ffdaf4e090">begin</a>()<span class="keyword"> const </span>{
|
|
<a name="l01880"></a>01880 <span class="keywordflow">return</span> <a class="code" href="a00162.html#a4db7b89b95af931bbadf92d681be9b1a">const_iterator</a>( (*<span class="keyword">this</span>), 0);
|
|
<a name="l01881"></a>01881 }
|
|
<a name="l01882"></a>01882 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01883"></a><a class="code" href="a00162.html#af7c321e0b853fa557235bbdb3c1ffa9c">01883</a> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">const_iterator</a> <a class="code" href="a00162.html#af7c321e0b853fa557235bbdb3c1ffa9c">end</a>()<span class="keyword"> const </span>{
|
|
<a name="l01884"></a>01884 <span class="keywordflow">return</span> <a class="code" href="a00162.html#a4db7b89b95af931bbadf92d681be9b1a">const_iterator</a>( (*<span class="keyword">this</span>), <a class="code" href="a00162.html#a79eb4c317d1e57057bc79b1860903c9c">size</a>());
|
|
<a name="l01885"></a>01885 }
|
|
<a name="l01886"></a>01886
|
|
<a name="l01887"></a>01887 <span class="comment">// unnecessary function:</span>
|
|
<a name="l01888"></a>01888 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01889"></a><a class="code" href="a00162.html#a8b4335ae9aaf770b8809fe86e6aed3f3">01889</a> <span class="keywordtype">bool</span> <a class="code" href="a00162.html#a8b4335ae9aaf770b8809fe86e6aed3f3">equal</a>(<a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i1, <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i2)<span class="keyword"> const </span>{
|
|
<a name="l01890"></a>01890 <span class="keywordflow">return</span> ((<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i1] == <a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i2]) && (<a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i1] == <a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i2]));
|
|
<a name="l01891"></a>01891 }
|
|
<a name="l01892"></a>01892 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01893"></a><a class="code" href="a00162.html#ae5007d24b29572f97f4c4a056aa6190d">01893</a> <span class="keywordtype">bool</span> <a class="code" href="a00162.html#ae5007d24b29572f97f4c4a056aa6190d">less</a>(<a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i1, <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i2)<span class="keyword"> const </span>{
|
|
<a name="l01894"></a>01894 <span class="keywordflow">return</span> ((<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i1] < <a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i2]) ||
|
|
<a name="l01895"></a>01895 (<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i1] == <a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i2] && <a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i1] < <a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i2]));
|
|
<a name="l01896"></a>01896 }
|
|
<a name="l01897"></a>01897
|
|
<a name="l01898"></a>01898 <span class="comment">// gives a large speedup</span>
|
|
<a name="l01899"></a>01899 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01900"></a><a class="code" href="a00162.html#a9225fbed1de319ca4aed97c5cf26a42d">01900</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00162.html#a9225fbed1de319ca4aed97c5cf26a42d">iter_swap</a>(<span class="keyword">const</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a>& lhs, <span class="keyword">const</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">iterator</a>& rhs) {
|
|
<a name="l01901"></a>01901 <span class="keyword">const</span> <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i1 = lhs.<a class="code" href="a00168.html#a3eb0ee035ebd0aa6a7c726b503cdd3ac">index</a>();
|
|
<a name="l01902"></a>01902 <span class="keyword">const</span> <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> i2 = rhs.<a class="code" href="a00168.html#a3eb0ee035ebd0aa6a7c726b503cdd3ac">index</a>();
|
|
<a name="l01903"></a>01903 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a>(lhs().<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i1], rhs().<a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>[i2]);
|
|
<a name="l01904"></a>01904 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a>(lhs().<a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i1], rhs().<a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>[i2]);
|
|
<a name="l01905"></a>01905 <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">std::swap</a>(lhs().<a class="code" href="a00162.html#a556110af37a3ed6784616cce8ed3b6c2">data3_</a>[i1], rhs().<a class="code" href="a00162.html#a556110af37a3ed6784616cce8ed3b6c2">data3_</a>[i2]);
|
|
<a name="l01906"></a>01906 }
|
|
<a name="l01907"></a>01907
|
|
<a name="l01908"></a>01908 <span class="keyword">private</span>:
|
|
<a name="l01909"></a><a class="code" href="a00162.html#afa40b739aece91437c08ee5f24ec56e5">01909</a> <a class="code" href="a00162.html#a139384d05ffe075079d55414285bdcac">size_type</a> <a class="code" href="a00162.html#afa40b739aece91437c08ee5f24ec56e5">size_</a>;
|
|
<a name="l01910"></a><a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">01910</a> V1& <a class="code" href="a00162.html#a28f3c8042c1f3140abe9752be7b4033a">data1_</a>;
|
|
<a name="l01911"></a><a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">01911</a> V2& <a class="code" href="a00162.html#ad1e26a180c966def0d7ff891be011f76">data2_</a>;
|
|
<a name="l01912"></a><a class="code" href="a00162.html#a556110af37a3ed6784616cce8ed3b6c2">01912</a> V3& <a class="code" href="a00162.html#a556110af37a3ed6784616cce8ed3b6c2">data3_</a>;
|
|
<a name="l01913"></a>01913
|
|
<a name="l01914"></a>01914 <span class="comment">// friend class value_type;</span>
|
|
<a name="l01915"></a><a class="code" href="a00162.html#adc1a3aabd42ed46d897b579654f62b1f">01915</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00161.html">index_triple</a><<a class="code" href="a00162.html">self_type</a>>;
|
|
<a name="l01916"></a>01916 };
|
|
<a name="l01917"></a>01917
|
|
<a name="l01918"></a>01918 }}}
|
|
<a name="l01919"></a>01919
|
|
<a name="l01920"></a>01920 <span class="preprocessor">#endif</span>
|
|
</pre></div></div>
|
|
</div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="a00634.html">storage.hpp</a> </li>
|
|
<!--- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<small>
|
|
<small>
|
|
<small>
|
|
<table width="100%">
|
|
<tr>
|
|
<td align="right">
|
|
Copyright © 2010-2011 David Bellot - Distributed under the <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">Boost Software License, Version 1.0.</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</small>
|
|
</small>
|
|
</small>
|