mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-21 03:22:14 +00:00
5248 lines
882 KiB
HTML
5248 lines
882 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: matrix_proxy.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('a00622.html','');
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<h1>matrix_proxy.hpp</h1> </div>
|
|
</div>
|
|
<div class="contents">
|
|
<a href="a00622.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_MATRIX_PROXY_</span>
|
|
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define _BOOST_UBLAS_MATRIX_PROXY_</span>
|
|
<a name="l00015"></a>00015 <span class="preprocessor"></span>
|
|
<a name="l00016"></a>00016 <span class="preprocessor">#include <boost/numeric/ublas/matrix_expression.hpp></span>
|
|
<a name="l00017"></a>00017 <span class="preprocessor">#include <boost/numeric/ublas/detail/vector_assign.hpp></span>
|
|
<a name="l00018"></a>00018 <span class="preprocessor">#include <boost/numeric/ublas/detail/matrix_assign.hpp></span>
|
|
<a name="l00019"></a>00019 <span class="preprocessor">#include <boost/numeric/ublas/detail/temporary.hpp></span>
|
|
<a name="l00020"></a>00020
|
|
<a name="l00021"></a>00021 <span class="comment">// Iterators based on ideas of Jeremy Siek</span>
|
|
<a name="l00022"></a>00022
|
|
<a name="l00023"></a>00023 <span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>numeric { <span class="keyword">namespace </span>ublas {
|
|
<a name="l00024"></a>00024
|
|
<a name="l00027"></a>00027 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00028"></a><a class="code" href="a00276.html">00028</a> <span class="keyword">class </span><a class="code" href="a00276.html">matrix_row</a>:
|
|
<a name="l00029"></a>00029 <span class="keyword">public</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression</a><matrix_row<M> > {
|
|
<a name="l00030"></a>00030
|
|
<a name="l00031"></a><a class="code" href="a00276.html#a00afc265bc9464eaa5cd9dbd63c36e0e">00031</a> <span class="keyword">typedef</span> <a class="code" href="a00276.html">matrix_row<M></a> <a class="code" href="a00276.html#a00afc265bc9464eaa5cd9dbd63c36e0e">self_type</a>;
|
|
<a name="l00032"></a>00032 <span class="keyword">public</span>:
|
|
<a name="l00033"></a>00033 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l00034"></a>00034 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<self_type>::operator </a>();
|
|
<a name="l00035"></a>00035 <span class="preprocessor">#endif</span>
|
|
<a name="l00036"></a><a class="code" href="a00276.html#ad03b5fcc60f176a7a28549631dce134e">00036</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00276.html#ad03b5fcc60f176a7a28549631dce134e">matrix_type</a>;
|
|
<a name="l00037"></a><a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">00037</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a>;
|
|
<a name="l00038"></a><a class="code" href="a00276.html#aa8aa58f913cbf0958124003df77f7c5c">00038</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00276.html#aa8aa58f913cbf0958124003df77f7c5c">difference_type</a>;
|
|
<a name="l00039"></a><a class="code" href="a00276.html#a0c60ffd08cc39d1ab89e218d5e8fafcc">00039</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00276.html#a0c60ffd08cc39d1ab89e218d5e8fafcc">value_type</a>;
|
|
<a name="l00040"></a><a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">00040</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">const_reference</a>;
|
|
<a name="l00041"></a>00041 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00042"></a>00042 <span class="keyword">typename</span> <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">M::const_reference</a>,
|
|
<a name="l00043"></a><a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">00043</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">reference</a>;
|
|
<a name="l00044"></a>00044 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00045"></a>00045 <span class="keyword">typename</span> <a class="code" href="a00276.html#a3f279b5a9380775766396833dad515b7">M::const_closure_type</a>,
|
|
<a name="l00046"></a><a class="code" href="a00276.html#a85b94d8f38357556f70ac18cee288a0d">00046</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00276.html#a85b94d8f38357556f70ac18cee288a0d">matrix_closure_type</a>;
|
|
<a name="l00047"></a><a class="code" href="a00276.html#a3f279b5a9380775766396833dad515b7">00047</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00276.html">self_type</a> <a class="code" href="a00276.html#a3f279b5a9380775766396833dad515b7">const_closure_type</a>;
|
|
<a name="l00048"></a><a class="code" href="a00276.html#ab44ffb89b06cdc3e626e3494fd42d40d">00048</a> <span class="keyword">typedef</span> <a class="code" href="a00276.html">self_type</a> <a class="code" href="a00276.html#ab44ffb89b06cdc3e626e3494fd42d40d">closure_type</a>;
|
|
<a name="l00049"></a>00049 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00276.html#a83d86c12f5c9ffb14cdaf8f7db38a93a">M::storage_category</a>,
|
|
<a name="l00050"></a><a class="code" href="a00276.html#a83d86c12f5c9ffb14cdaf8f7db38a93a">00050</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00276.html#a83d86c12f5c9ffb14cdaf8f7db38a93a">::storage_category</a> <a class="code" href="a00276.html#a83d86c12f5c9ffb14cdaf8f7db38a93a">storage_category</a>;
|
|
<a name="l00051"></a>00051
|
|
<a name="l00052"></a>00052 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00053"></a>00053 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00054"></a><a class="code" href="a00276.html#a8188553ee51ab8fc8360fed6c43f1ad0">00054</a> <a class="code" href="a00276.html#a8188553ee51ab8fc8360fed6c43f1ad0">matrix_row</a> (<a class="code" href="a00276.html#ad03b5fcc60f176a7a28549631dce134e">matrix_type</a> &<a class="code" href="a00276.html#a7b45ed14a4fa661d3d8b241a14f7270b">data</a>, <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> i):
|
|
<a name="l00055"></a>00055 <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a> (data), <a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a> (i) {
|
|
<a name="l00056"></a>00056 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l00057"></a>00057 <span class="comment">// BOOST_UBLAS_CHECK (i_ < data_.size1 (), bad_index ());</span>
|
|
<a name="l00058"></a>00058 }
|
|
<a name="l00059"></a>00059
|
|
<a name="l00060"></a>00060 <span class="comment">// Accessors</span>
|
|
<a name="l00061"></a>00061 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00062"></a><a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">00062</a> <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> <a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00063"></a>00063 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>.size2 ();
|
|
<a name="l00064"></a>00064 }
|
|
<a name="l00065"></a>00065 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00066"></a><a class="code" href="a00276.html#a756278b7d0b4cc32fe73de6078952e62">00066</a> <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> <a class="code" href="a00276.html#a756278b7d0b4cc32fe73de6078952e62">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00067"></a>00067 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>;
|
|
<a name="l00068"></a>00068 }
|
|
<a name="l00069"></a>00069
|
|
<a name="l00070"></a>00070 <span class="comment">// Storage accessors</span>
|
|
<a name="l00071"></a>00071 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00072"></a><a class="code" href="a00276.html#a7b45ed14a4fa661d3d8b241a14f7270b">00072</a> <span class="keyword">const</span> <a class="code" href="a00276.html#a85b94d8f38357556f70ac18cee288a0d">matrix_closure_type</a> &<a class="code" href="a00276.html#a7b45ed14a4fa661d3d8b241a14f7270b">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00073"></a>00073 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>;
|
|
<a name="l00074"></a>00074 }
|
|
<a name="l00075"></a>00075 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00076"></a><a class="code" href="a00276.html#ad8446bd29475b72c997fbfeba4d4380d">00076</a> <a class="code" href="a00276.html#a85b94d8f38357556f70ac18cee288a0d">matrix_closure_type</a> &<a class="code" href="a00276.html#ad8446bd29475b72c997fbfeba4d4380d">data</a> () {
|
|
<a name="l00077"></a>00077 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>;
|
|
<a name="l00078"></a>00078 }
|
|
<a name="l00079"></a>00079
|
|
<a name="l00080"></a>00080 <span class="comment">// Element access</span>
|
|
<a name="l00081"></a>00081 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l00082"></a>00082 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00083"></a><a class="code" href="a00276.html#afe22e9c8adb5e6c007448302c8f6592b">00083</a> <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">const_reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l00084"></a>00084 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a> (<a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>, j);
|
|
<a name="l00085"></a>00085 }
|
|
<a name="l00086"></a>00086 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00087"></a><a class="code" href="a00276.html#ac7d89ced65a7cc256db01429cbb839bb">00087</a> <a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j) {
|
|
<a name="l00088"></a>00088 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a> (<a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>, j);
|
|
<a name="l00089"></a>00089 }
|
|
<a name="l00090"></a>00090
|
|
<a name="l00091"></a>00091 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00092"></a><a class="code" href="a00276.html#a1f6b21978f3bdf250154c47a4f89bb4c">00092</a> <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">const_reference</a> <a class="code" href="a00276.html#a1f6b21978f3bdf250154c47a4f89bb4c">operator [] </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l00093"></a>00093 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (j);
|
|
<a name="l00094"></a>00094 }
|
|
<a name="l00095"></a>00095 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00096"></a><a class="code" href="a00276.html#acbbe22d9bee5ab1997a9a26da2729ff5">00096</a> <a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">reference</a> <a class="code" href="a00276.html#a1f6b21978f3bdf250154c47a4f89bb4c">operator [] </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j) {
|
|
<a name="l00097"></a>00097 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (j);
|
|
<a name="l00098"></a>00098 }
|
|
<a name="l00099"></a>00099 <span class="preprocessor">#else</span>
|
|
<a name="l00100"></a>00100 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00101"></a>00101 <a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a> (<a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>, j);
|
|
<a name="l00103"></a>00103 }
|
|
<a name="l00104"></a>00104
|
|
<a name="l00105"></a>00105 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00106"></a>00106 <a class="code" href="a00276.html#a11aa674144ec1bbbad7ef5f11f695ac0">reference</a> <a class="code" href="a00276.html#a1f6b21978f3bdf250154c47a4f89bb4c">operator [] </a>(<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l00107"></a>00107 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (j);
|
|
<a name="l00108"></a>00108 }
|
|
<a name="l00109"></a>00109 <span class="preprocessor">#endif</span>
|
|
<a name="l00110"></a>00110 <span class="preprocessor"></span>
|
|
<a name="l00111"></a>00111 <span class="comment">// Assignment</span>
|
|
<a name="l00112"></a>00112 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00113"></a><a class="code" href="a00276.html#abe01c62ae332b8dcd305f577c6f78b45">00113</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#abe01c62ae332b8dcd305f577c6f78b45">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00276.html">matrix_row</a> &mr) {
|
|
<a name="l00114"></a>00114 <span class="comment">// ISSUE need a temporary, proxy can be overlaping alias</span>
|
|
<a name="l00115"></a>00115 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (mr));
|
|
<a name="l00116"></a>00116 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00117"></a>00117 }
|
|
<a name="l00118"></a>00118 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00119"></a><a class="code" href="a00276.html#ad7807f91dd0292299f295e279b2dd092">00119</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#ad7807f91dd0292299f295e279b2dd092">assign_temporary</a> (<a class="code" href="a00276.html">matrix_row</a> &mr) {
|
|
<a name="l00120"></a>00120 <span class="comment">// assign elements, proxied container remains the same</span>
|
|
<a name="l00121"></a>00121 vector_assign<scalar_assign> (*<span class="keyword">this</span>, mr);
|
|
<a name="l00122"></a>00122 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00123"></a>00123 }
|
|
<a name="l00124"></a>00124 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00125"></a>00125 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00126"></a><a class="code" href="a00276.html#ad77e5ae5e295f78cd25604c6213b5cdd">00126</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#abe01c62ae332b8dcd305f577c6f78b45">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00127"></a>00127 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (ae));
|
|
<a name="l00128"></a>00128 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00129"></a>00129 }
|
|
<a name="l00130"></a>00130 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00131"></a>00131 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00132"></a><a class="code" href="a00276.html#aa4891427d9f09627c30dee09a373e854">00132</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#aa4891427d9f09627c30dee09a373e854">assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00133"></a>00133 vector_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00134"></a>00134 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00135"></a>00135 }
|
|
<a name="l00136"></a>00136 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00137"></a>00137 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00138"></a><a class="code" href="a00276.html#a5edf88af2ee15f032e14c59a34fc4676">00138</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a5edf88af2ee15f032e14c59a34fc4676">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00139"></a>00139 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l00140"></a>00140 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00141"></a>00141 }
|
|
<a name="l00142"></a>00142 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00143"></a>00143 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00144"></a><a class="code" href="a00276.html#a19e119b724cfb45cc7c3756228f8de02">00144</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a19e119b724cfb45cc7c3756228f8de02">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00145"></a>00145 vector_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00146"></a>00146 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00147"></a>00147 }
|
|
<a name="l00148"></a>00148 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00149"></a>00149 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00150"></a><a class="code" href="a00276.html#a7f97718d2164f27e523407e9900246df">00150</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a7f97718d2164f27e523407e9900246df">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00151"></a>00151 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l00152"></a>00152 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00153"></a>00153 }
|
|
<a name="l00154"></a>00154 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00155"></a>00155 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00156"></a><a class="code" href="a00276.html#a568ee3b89797c37eab4586aaf1adb983">00156</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a568ee3b89797c37eab4586aaf1adb983">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00157"></a>00157 vector_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00158"></a>00158 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00159"></a>00159 }
|
|
<a name="l00160"></a>00160 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l00161"></a>00161 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00162"></a><a class="code" href="a00276.html#a80ee06c0b3bd4b9bff96fe166efcfe98">00162</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a80ee06c0b3bd4b9bff96fe166efcfe98">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l00163"></a>00163 vector_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l00164"></a>00164 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00165"></a>00165 }
|
|
<a name="l00166"></a>00166 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l00167"></a>00167 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00168"></a><a class="code" href="a00276.html#a81a98a132cd6189b60087a4db2877240">00168</a> <a class="code" href="a00276.html">matrix_row</a> &<a class="code" href="a00276.html#a81a98a132cd6189b60087a4db2877240">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l00169"></a>00169 vector_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l00170"></a>00170 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00171"></a>00171 }
|
|
<a name="l00172"></a>00172
|
|
<a name="l00173"></a>00173 <span class="comment">// Closure comparison</span>
|
|
<a name="l00174"></a>00174 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00175"></a><a class="code" href="a00276.html#a4b4000a64ff98d8cb97ec58ec0206949">00175</a> <span class="keywordtype">bool</span> <a class="code" href="a00276.html#a4b4000a64ff98d8cb97ec58ec0206949">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00276.html">matrix_row</a> &mr)<span class="keyword"> const </span>{
|
|
<a name="l00176"></a>00176 <span class="keywordflow">return</span> (*this).data_.same_closure (mr.<a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>);
|
|
<a name="l00177"></a>00177 }
|
|
<a name="l00178"></a>00178
|
|
<a name="l00179"></a>00179 <span class="comment">// Comparison</span>
|
|
<a name="l00180"></a>00180 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00181"></a><a class="code" href="a00276.html#aeed8c796e443e2e25631d266be59ee25">00181</a> <span class="keywordtype">bool</span> <a class="code" href="a00276.html#aeed8c796e443e2e25631d266be59ee25">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00276.html">matrix_row</a> &mr)<span class="keyword"> const </span>{
|
|
<a name="l00182"></a>00182 <span class="keywordflow">return</span> (*this).data_ == mr.<a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a> && <a class="code" href="a00276.html#a756278b7d0b4cc32fe73de6078952e62">index</a> () == mr.<a class="code" href="a00276.html#a756278b7d0b4cc32fe73de6078952e62">index</a> ();
|
|
<a name="l00183"></a>00183 }
|
|
<a name="l00184"></a>00184
|
|
<a name="l00185"></a>00185 <span class="comment">// Swapping</span>
|
|
<a name="l00186"></a>00186 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00187"></a><a class="code" href="a00276.html#aca53b82f3507614caccc8eb01ee2adc9">00187</a> <span class="keywordtype">void</span> <a class="code" href="a00276.html#aca53b82f3507614caccc8eb01ee2adc9">swap</a> (<a class="code" href="a00276.html">matrix_row</a> mr) {
|
|
<a name="l00188"></a>00188 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mr) {
|
|
<a name="l00189"></a>00189 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> () == mr.<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00190"></a>00190 <span class="comment">// Sparse ranges may be nonconformant now.</span>
|
|
<a name="l00191"></a>00191 <span class="comment">// std::swap_ranges (begin (), end (), mr.begin ());</span>
|
|
<a name="l00192"></a>00192 vector_swap<scalar_swap> (*<span class="keyword">this</span>, mr);
|
|
<a name="l00193"></a>00193 }
|
|
<a name="l00194"></a>00194 }
|
|
<a name="l00195"></a>00195 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00196"></a><a class="code" href="a00276.html#a0a169796f961e0c0b852de0b84f74595">00196</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00276.html#a0a169796f961e0c0b852de0b84f74595">swap</a> (<a class="code" href="a00276.html">matrix_row</a> mr1, <a class="code" href="a00276.html">matrix_row</a> mr2) {
|
|
<a name="l00197"></a>00197 mr1.<a class="code" href="a00276.html#aca53b82f3507614caccc8eb01ee2adc9">swap</a> (mr2);
|
|
<a name="l00198"></a>00198 }
|
|
<a name="l00199"></a>00199
|
|
<a name="l00200"></a>00200 <span class="comment">// Iterator types</span>
|
|
<a name="l00201"></a>00201 <span class="keyword">private</span>:
|
|
<a name="l00202"></a><a class="code" href="a00276.html#ab7cc7d551a1bda659eb7be8ceaa3491d">00202</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2 <a class="code" href="a00276.html#ab7cc7d551a1bda659eb7be8ceaa3491d">const_subiterator_type</a>;
|
|
<a name="l00203"></a>00203 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00204"></a>00204 <span class="keyword">typename</span> M::const_iterator2,
|
|
<a name="l00205"></a><a class="code" href="a00276.html#a8922ac4cb7246bf39cb4d09bd0c2c0c5">00205</a> <span class="keyword">typename</span> M::iterator2>::type <a class="code" href="a00276.html#a8922ac4cb7246bf39cb4d09bd0c2c0c5">subiterator_type</a>;
|
|
<a name="l00206"></a>00206
|
|
<a name="l00207"></a>00207 <span class="keyword">public</span>:
|
|
<a name="l00208"></a>00208 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00209"></a>00209 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">indexed_iterator<matrix_row<matrix_type></a>,
|
|
<a name="l00210"></a>00210 <span class="keyword">typename</span> subiterator_type::iterator_category> <a class="code" href="a00278.html">iterator</a>;
|
|
<a name="l00211"></a>00211 <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<matrix_row<matrix_type></a>,
|
|
<a name="l00212"></a>00212 <span class="keyword">typename</span> const_subiterator_type::iterator_category> <a class="code" href="a00277.html">const_iterator</a>;
|
|
<a name="l00213"></a>00213 <span class="preprocessor">#else</span>
|
|
<a name="l00214"></a>00214 <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00277.html">const_iterator</a>;
|
|
<a name="l00215"></a>00215 <span class="keyword">class </span><a class="code" href="a00278.html">iterator</a>;
|
|
<a name="l00216"></a>00216 <span class="preprocessor">#endif</span>
|
|
<a name="l00217"></a>00217 <span class="preprocessor"></span>
|
|
<a name="l00218"></a>00218 <span class="comment">// Element lookup</span>
|
|
<a name="l00219"></a>00219 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00220"></a><a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">00220</a> <a class="code" href="a00277.html">const_iterator</a> <a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">find</a> (<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l00221"></a>00221 <a class="code" href="a00276.html#ab7cc7d551a1bda659eb7be8ceaa3491d">const_subiterator_type</a> it2 (<a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>.find2 (1, <a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>, j));
|
|
<a name="l00222"></a>00222 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00223"></a>00223 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00277.html">const_iterator</a> (*<span class="keyword">this</span>, it2.index2 ());
|
|
<a name="l00224"></a>00224 <span class="preprocessor">#else</span>
|
|
<a name="l00225"></a>00225 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00277.html">const_iterator</a> (*<span class="keyword">this</span>, it2);
|
|
<a name="l00226"></a>00226 <span class="preprocessor">#endif</span>
|
|
<a name="l00227"></a>00227 <span class="preprocessor"></span> }
|
|
<a name="l00228"></a>00228 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00229"></a><a class="code" href="a00276.html#a83c65b5e57ef10c6735708ae4e077ae5">00229</a> <a class="code" href="a00278.html">iterator</a> <a class="code" href="a00276.html#a83c65b5e57ef10c6735708ae4e077ae5">find</a> (<a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> j) {
|
|
<a name="l00230"></a>00230 <a class="code" href="a00276.html#a8922ac4cb7246bf39cb4d09bd0c2c0c5">subiterator_type</a> it2 (<a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>.find2 (1, <a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>, j));
|
|
<a name="l00231"></a>00231 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00232"></a>00232 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00278.html">iterator</a> (*<span class="keyword">this</span>, it2.index2 ());
|
|
<a name="l00233"></a>00233 <span class="preprocessor">#else</span>
|
|
<a name="l00234"></a>00234 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00278.html">iterator</a> (*<span class="keyword">this</span>, it2);
|
|
<a name="l00235"></a>00235 <span class="preprocessor">#endif</span>
|
|
<a name="l00236"></a>00236 <span class="preprocessor"></span> }
|
|
<a name="l00237"></a>00237
|
|
<a name="l00238"></a>00238 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00239"></a><a class="code" href="a00277.html">00239</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00277.html">const_iterator</a>:
|
|
<a name="l00240"></a>00240 <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><matrix_row>,
|
|
<a name="l00241"></a>00241 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename const_subiterator_type::iterator_category>::template
|
|
<a name="l00242"></a>00242 iterator_base<const_iterator, value_type>::type {
|
|
<a name="l00243"></a>00243 <span class="keyword">public</span>:
|
|
<a name="l00244"></a><a class="code" href="a00277.html#addf56ace8db5b74c625c32664894fa84">00244</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::value_type <a class="code" href="a00277.html#addf56ace8db5b74c625c32664894fa84">value_type</a>;
|
|
<a name="l00245"></a><a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">00245</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::difference_type <a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">difference_type</a>;
|
|
<a name="l00246"></a><a class="code" href="a00277.html#abe8435b867853b07395176461d766dad">00246</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::reference <a class="code" href="a00277.html#abe8435b867853b07395176461d766dad">reference</a>;
|
|
<a name="l00247"></a><a class="code" href="a00277.html#a3d3eb10d137a3128662f1c1712b07ef3">00247</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::pointer <a class="code" href="a00277.html#a3d3eb10d137a3128662f1c1712b07ef3">pointer</a>;
|
|
<a name="l00248"></a>00248
|
|
<a name="l00249"></a>00249 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00250"></a>00250 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00251"></a><a class="code" href="a00277.html#ab6851949117cdef5ff682062d74a67ae">00251</a> <a class="code" href="a00277.html#ab6851949117cdef5ff682062d74a67ae">const_iterator</a> ():
|
|
<a name="l00252"></a>00252 <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="a00276.html">self_type</a>> (), <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> () {}
|
|
<a name="l00253"></a>00253 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00254"></a><a class="code" href="a00277.html#a37d251687890ee9cb468371b80ee8986">00254</a> <a class="code" href="a00277.html#ab6851949117cdef5ff682062d74a67ae">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00276.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00276.html#ab7cc7d551a1bda659eb7be8ceaa3491d">const_subiterator_type</a> &it):
|
|
<a name="l00255"></a>00255 <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="a00276.html">self_type</a>> (mr), <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> (it) {}
|
|
<a name="l00256"></a>00256 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00257"></a><a class="code" href="a00277.html#ac4dd30a6673e7c6729ff6f67573765b2">00257</a> <a class="code" href="a00277.html#ab6851949117cdef5ff682062d74a67ae">const_iterator</a> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00278.html">self_type::iterator</a> &it): <span class="comment">// ISSUE self_type:: stops VC8 using std::iterator here</span>
|
|
<a name="l00258"></a>00258 <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="a00276.html">self_type</a>> (it ()), <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> (it.<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>) {}
|
|
<a name="l00259"></a>00259
|
|
<a name="l00260"></a>00260 <span class="comment">// Arithmetic</span>
|
|
<a name="l00261"></a>00261 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00262"></a><a class="code" href="a00277.html#aca1546f659eacbc31f484d691f55b0c3">00262</a> <a class="code" href="a00277.html">const_iterator</a> &<a class="code" href="a00277.html#aca1546f659eacbc31f484d691f55b0c3">operator ++ </a>() {
|
|
<a name="l00263"></a>00263 ++ <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00264"></a>00264 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00265"></a>00265 }
|
|
<a name="l00266"></a>00266 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00267"></a><a class="code" href="a00277.html#a3d5343032c4b6dcbfa8186f2ece5ab1d">00267</a> <a class="code" href="a00277.html">const_iterator</a> &<a class="code" href="a00277.html#a3d5343032c4b6dcbfa8186f2ece5ab1d">operator -- </a>() {
|
|
<a name="l00268"></a>00268 -- <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00269"></a>00269 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00270"></a>00270 }
|
|
<a name="l00271"></a>00271 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00272"></a><a class="code" href="a00277.html#ab1b87c33b241dfec3e6d039fb9f8f054">00272</a> <a class="code" href="a00277.html">const_iterator</a> &<a class="code" href="a00277.html#ab1b87c33b241dfec3e6d039fb9f8f054">operator += </a>(<a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">difference_type</a> n) {
|
|
<a name="l00273"></a>00273 <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> += n;
|
|
<a name="l00274"></a>00274 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00275"></a>00275 }
|
|
<a name="l00276"></a>00276 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00277"></a><a class="code" href="a00277.html#ac7c18fa54cf44a47af470446fe13fca1">00277</a> <a class="code" href="a00277.html">const_iterator</a> &<a class="code" href="a00277.html#ac7c18fa54cf44a47af470446fe13fca1">operator -= </a>(<a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">difference_type</a> n) {
|
|
<a name="l00278"></a>00278 <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> -= n;
|
|
<a name="l00279"></a>00279 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00280"></a>00280 }
|
|
<a name="l00281"></a>00281 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00282"></a><a class="code" href="a00277.html#a6199e6dae476dd1cab7407542dc56da8">00282</a> <a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">difference_type</a> <a class="code" href="a00277.html#a6199e6dae476dd1cab7407542dc56da8">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00277.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00283"></a>00283 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00284"></a>00284 <span class="keywordflow">return</span> <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> - it.<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00285"></a>00285 }
|
|
<a name="l00286"></a>00286
|
|
<a name="l00287"></a>00287 <span class="comment">// Dereference</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="a00277.html#aa85a414b724ed9810e9e3c8387488398">00289</a> <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">const_reference</a> <a class="code" href="a00277.html#aa85a414b724ed9810e9e3c8387488398">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l00290"></a>00290 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00277.html#a7799c9c85d7a840f745b33a7493b4aed">index</a> () < (*<span class="keyword">this</span>) ().<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00291"></a>00291 <span class="keywordflow">return</span> *<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00292"></a>00292 }
|
|
<a name="l00293"></a>00293 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00294"></a><a class="code" href="a00277.html#a483fbbdfbca34c82d826627828a1f5a4">00294</a> <a class="code" href="a00276.html#ab963783d6935941aaeec2ce1ef02daab">const_reference</a> <a class="code" href="a00277.html#a483fbbdfbca34c82d826627828a1f5a4">operator [] </a>(<a class="code" href="a00277.html#a3ca6044e1be26cdf1c92818744f040e9">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l00295"></a>00295 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l00296"></a>00296 }
|
|
<a name="l00297"></a>00297
|
|
<a name="l00298"></a>00298 <span class="comment">// Index</span>
|
|
<a name="l00299"></a>00299 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00300"></a><a class="code" href="a00277.html#a7799c9c85d7a840f745b33a7493b4aed">00300</a> <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> <a class="code" href="a00277.html#a7799c9c85d7a840f745b33a7493b4aed">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00301"></a>00301 <span class="keywordflow">return</span> <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>.index2 ();
|
|
<a name="l00302"></a>00302 }
|
|
<a name="l00303"></a>00303
|
|
<a name="l00304"></a>00304 <span class="comment">// Assignment</span>
|
|
<a name="l00305"></a>00305 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00306"></a><a class="code" href="a00277.html#aa3c3074bf062d91be9196043881fbe6a">00306</a> <a class="code" href="a00277.html">const_iterator</a> &<a class="code" href="a00277.html#aa3c3074bf062d91be9196043881fbe6a">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00277.html">const_iterator</a> &it) {
|
|
<a name="l00307"></a>00307 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l00308"></a>00308 <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> = it.<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00309"></a>00309 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00310"></a>00310 }
|
|
<a name="l00311"></a>00311
|
|
<a name="l00312"></a>00312 <span class="comment">// Comparison</span>
|
|
<a name="l00313"></a>00313 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00314"></a><a class="code" href="a00277.html#a3c74916d2eee8a442dc8c4f6c58e3051">00314</a> <span class="keywordtype">bool</span> <a class="code" href="a00277.html#a3c74916d2eee8a442dc8c4f6c58e3051">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00277.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00315"></a>00315 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00316"></a>00316 <span class="keywordflow">return</span> <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> == it.<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00317"></a>00317 }
|
|
<a name="l00318"></a>00318 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00319"></a><a class="code" href="a00277.html#abd9ce62cea592199ce45dc7e62171a33">00319</a> <span class="keywordtype">bool</span> <a class="code" href="a00277.html#abd9ce62cea592199ce45dc7e62171a33">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00277.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00320"></a>00320 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00321"></a>00321 <span class="keywordflow">return</span> <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a> < it.<a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00322"></a>00322 }
|
|
<a name="l00323"></a>00323
|
|
<a name="l00324"></a>00324 <span class="keyword">private</span>:
|
|
<a name="l00325"></a><a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">00325</a> <a class="code" href="a00276.html#ab7cc7d551a1bda659eb7be8ceaa3491d">const_subiterator_type</a> <a class="code" href="a00277.html#a0fb1beb26987695054fcf6ac756d6e4b">it_</a>;
|
|
<a name="l00326"></a>00326 };
|
|
<a name="l00327"></a>00327 <span class="preprocessor">#endif</span>
|
|
<a name="l00328"></a>00328 <span class="preprocessor"></span>
|
|
<a name="l00329"></a>00329 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00330"></a><a class="code" href="a00276.html#a4943c9be142894b478aa6eb8602caa00">00330</a> <a class="code" href="a00277.html">const_iterator</a> <a class="code" href="a00276.html#a4943c9be142894b478aa6eb8602caa00">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00331"></a>00331 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">find</a> (0);
|
|
<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="a00276.html#a432e4ddd2e306a0fc0dde5e42f4fe3c9">00334</a> <a class="code" href="a00277.html">const_iterator</a> <a class="code" href="a00276.html#a432e4ddd2e306a0fc0dde5e42f4fe3c9">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00335"></a>00335 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">find</a> (<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> ());
|
|
<a name="l00336"></a>00336 }
|
|
<a name="l00337"></a>00337
|
|
<a name="l00338"></a>00338 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00339"></a><a class="code" href="a00278.html">00339</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00278.html">iterator</a>:
|
|
<a name="l00340"></a>00340 <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><matrix_row>,
|
|
<a name="l00341"></a>00341 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename subiterator_type::iterator_category>::template
|
|
<a name="l00342"></a>00342 iterator_base<iterator, value_type>::type {
|
|
<a name="l00343"></a>00343 <span class="keyword">public</span>:
|
|
<a name="l00344"></a><a class="code" href="a00278.html#a058f9e030f94fee0dac2de2b6090c351">00344</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::value_type <a class="code" href="a00278.html#a058f9e030f94fee0dac2de2b6090c351">value_type</a>;
|
|
<a name="l00345"></a><a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">00345</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::difference_type <a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">difference_type</a>;
|
|
<a name="l00346"></a><a class="code" href="a00278.html#ad80d14a8417678b1abc5f8bcafe22342">00346</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::reference <a class="code" href="a00278.html#ad80d14a8417678b1abc5f8bcafe22342">reference</a>;
|
|
<a name="l00347"></a><a class="code" href="a00278.html#a30af83a47919523df7bc118223c28028">00347</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::pointer <a class="code" href="a00278.html#a30af83a47919523df7bc118223c28028">pointer</a>;
|
|
<a name="l00348"></a>00348
|
|
<a name="l00349"></a>00349 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00350"></a>00350 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00351"></a><a class="code" href="a00278.html#ae10ebfb27280d04e9907eac9025b79ff">00351</a> <a class="code" href="a00278.html#ae10ebfb27280d04e9907eac9025b79ff">iterator</a> ():
|
|
<a name="l00352"></a>00352 <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><<a class="code" href="a00276.html">self_type</a>> (), <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> () {}
|
|
<a name="l00353"></a>00353 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00354"></a><a class="code" href="a00278.html#a5dbffe266cb9134e45fc184ad1637bcc">00354</a> <a class="code" href="a00278.html#ae10ebfb27280d04e9907eac9025b79ff">iterator</a> (<a class="code" href="a00276.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00276.html#a8922ac4cb7246bf39cb4d09bd0c2c0c5">subiterator_type</a> &it):
|
|
<a name="l00355"></a>00355 <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><<a class="code" href="a00276.html">self_type</a>> (mr), <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> (it) {}
|
|
<a name="l00356"></a>00356
|
|
<a name="l00357"></a>00357 <span class="comment">// Arithmetic</span>
|
|
<a name="l00358"></a>00358 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00359"></a><a class="code" href="a00278.html#a48194ab1ed8ccd1e988c371cc98fadd5">00359</a> <a class="code" href="a00278.html">iterator</a> &<a class="code" href="a00278.html#a48194ab1ed8ccd1e988c371cc98fadd5">operator ++ </a>() {
|
|
<a name="l00360"></a>00360 ++ <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00361"></a>00361 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00362"></a>00362 }
|
|
<a name="l00363"></a>00363 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00364"></a><a class="code" href="a00278.html#adf8daef4f55ed10cda91fe967863780e">00364</a> <a class="code" href="a00278.html">iterator</a> &<a class="code" href="a00278.html#adf8daef4f55ed10cda91fe967863780e">operator -- </a>() {
|
|
<a name="l00365"></a>00365 -- <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00366"></a>00366 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00367"></a>00367 }
|
|
<a name="l00368"></a>00368 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00369"></a><a class="code" href="a00278.html#a8b35a2878efd4425ed7cc5e889eadbc8">00369</a> <a class="code" href="a00278.html">iterator</a> &<a class="code" href="a00278.html#a8b35a2878efd4425ed7cc5e889eadbc8">operator += </a>(<a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">difference_type</a> n) {
|
|
<a name="l00370"></a>00370 <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> += n;
|
|
<a name="l00371"></a>00371 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00372"></a>00372 }
|
|
<a name="l00373"></a>00373 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00374"></a><a class="code" href="a00278.html#a0b3d75e9cc363e25c5f5ddf0c28e985d">00374</a> <a class="code" href="a00278.html">iterator</a> &<a class="code" href="a00278.html#a0b3d75e9cc363e25c5f5ddf0c28e985d">operator -= </a>(<a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">difference_type</a> n) {
|
|
<a name="l00375"></a>00375 <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> -= n;
|
|
<a name="l00376"></a>00376 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00377"></a>00377 }
|
|
<a name="l00378"></a>00378 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00379"></a><a class="code" href="a00278.html#aac5c9d2b0a17a5fe196a9b6d01c37ca0">00379</a> <a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">difference_type</a> <a class="code" href="a00278.html#aac5c9d2b0a17a5fe196a9b6d01c37ca0">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00278.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00380"></a>00380 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00381"></a>00381 <span class="keywordflow">return</span> <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> - it.<a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00382"></a>00382 }
|
|
<a name="l00383"></a>00383
|
|
<a name="l00384"></a>00384 <span class="comment">// Dereference</span>
|
|
<a name="l00385"></a>00385 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00386"></a><a class="code" href="a00278.html#a02343135e551edbe3deaefb6f7cc7286">00386</a> <a class="code" href="a00278.html#ad80d14a8417678b1abc5f8bcafe22342">reference</a> <a class="code" href="a00278.html#a02343135e551edbe3deaefb6f7cc7286">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l00387"></a>00387 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00278.html#a70ccc7b54b0fddbaa2c3f54f4980a111">index</a> () < (*<span class="keyword">this</span>) ().<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00388"></a>00388 <span class="keywordflow">return</span> *<a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00389"></a>00389 }
|
|
<a name="l00390"></a>00390 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00391"></a><a class="code" href="a00278.html#a08d597d0f62d2345c21709a26d18c786">00391</a> <a class="code" href="a00278.html#ad80d14a8417678b1abc5f8bcafe22342">reference</a> <a class="code" href="a00278.html#a08d597d0f62d2345c21709a26d18c786">operator [] </a>(<a class="code" href="a00278.html#a237f4eed942adaf115a53d5e18e3c945">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l00392"></a>00392 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l00393"></a>00393 }
|
|
<a name="l00394"></a>00394
|
|
<a name="l00395"></a>00395 <span class="comment">// Index</span>
|
|
<a name="l00396"></a>00396 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00397"></a><a class="code" href="a00278.html#a70ccc7b54b0fddbaa2c3f54f4980a111">00397</a> <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> <a class="code" href="a00278.html#a70ccc7b54b0fddbaa2c3f54f4980a111">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00398"></a>00398 <span class="keywordflow">return</span> <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>.index2 ();
|
|
<a name="l00399"></a>00399 }
|
|
<a name="l00400"></a>00400
|
|
<a name="l00401"></a>00401 <span class="comment">// Assignment</span>
|
|
<a name="l00402"></a>00402 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00403"></a><a class="code" href="a00278.html#a98d197c9c3f4a06727d59cbf734032c3">00403</a> <a class="code" href="a00278.html">iterator</a> &<a class="code" href="a00278.html#a98d197c9c3f4a06727d59cbf734032c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00278.html">iterator</a> &it) {
|
|
<a name="l00404"></a>00404 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l00405"></a>00405 <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> = it.<a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00406"></a>00406 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00407"></a>00407 }
|
|
<a name="l00408"></a>00408
|
|
<a name="l00409"></a>00409 <span class="comment">// Comparison</span>
|
|
<a name="l00410"></a>00410 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00411"></a><a class="code" href="a00278.html#a06b10d4dfaadbc445877ae2ad9f7b144">00411</a> <span class="keywordtype">bool</span> <a class="code" href="a00278.html#a06b10d4dfaadbc445877ae2ad9f7b144">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00278.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00412"></a>00412 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00413"></a>00413 <span class="keywordflow">return</span> <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> == it.<a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00414"></a>00414 }
|
|
<a name="l00415"></a>00415 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00416"></a><a class="code" href="a00278.html#a75045a01922066ad86660a534a5fe46b">00416</a> <span class="keywordtype">bool</span> <a class="code" href="a00278.html#a75045a01922066ad86660a534a5fe46b">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00278.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00417"></a>00417 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00418"></a>00418 <span class="keywordflow">return</span> <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a> < it.<a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00419"></a>00419 }
|
|
<a name="l00420"></a>00420
|
|
<a name="l00421"></a>00421 <span class="keyword">private</span>:
|
|
<a name="l00422"></a><a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">00422</a> <a class="code" href="a00276.html#a8922ac4cb7246bf39cb4d09bd0c2c0c5">subiterator_type</a> <a class="code" href="a00278.html#acb9aed247814fea43dd556483ab9bd47">it_</a>;
|
|
<a name="l00423"></a>00423
|
|
<a name="l00424"></a><a class="code" href="a00278.html#ac220ce1c155db1ac44146c12d178056f">00424</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00277.html">const_iterator</a>;
|
|
<a name="l00425"></a>00425 };
|
|
<a name="l00426"></a>00426 <span class="preprocessor">#endif</span>
|
|
<a name="l00427"></a>00427 <span class="preprocessor"></span>
|
|
<a name="l00428"></a>00428 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00429"></a><a class="code" href="a00276.html#a33fe3fda4e1a1edade05c308f14709b9">00429</a> <a class="code" href="a00278.html">iterator</a> <a class="code" href="a00276.html#a33fe3fda4e1a1edade05c308f14709b9">begin</a> () {
|
|
<a name="l00430"></a>00430 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">find</a> (0);
|
|
<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="a00276.html#a4abeb92b3fe3c6727fd96067671915f0">00433</a> <a class="code" href="a00278.html">iterator</a> <a class="code" href="a00276.html#a4abeb92b3fe3c6727fd96067671915f0">end</a> () {
|
|
<a name="l00434"></a>00434 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aa45ba38bedaacdfaf36b237f4957c2f6">find</a> (<a class="code" href="a00276.html#a5e8759b6cbd63a2d75b88d95bf3fd1e8">size</a> ());
|
|
<a name="l00435"></a>00435 }
|
|
<a name="l00436"></a>00436
|
|
<a name="l00437"></a>00437 <span class="comment">// Reverse iterator</span>
|
|
<a name="l00438"></a><a class="code" href="a00276.html#aaad45d24329429f3d3e794f841f34621">00438</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<const_iterator></a> <a class="code" href="a00276.html#aaad45d24329429f3d3e794f841f34621">const_reverse_iterator</a>;
|
|
<a name="l00439"></a><a class="code" href="a00276.html#a339b0f017d853b10914e9ac3d1509032">00439</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<iterator></a> <a class="code" href="a00276.html#a339b0f017d853b10914e9ac3d1509032">reverse_iterator</a>;
|
|
<a name="l00440"></a>00440
|
|
<a name="l00441"></a>00441 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00442"></a><a class="code" href="a00276.html#a37b98838cf336a617ad4a73104341d3c">00442</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00276.html#a37b98838cf336a617ad4a73104341d3c">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00443"></a>00443 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aaad45d24329429f3d3e794f841f34621">const_reverse_iterator</a> (<a class="code" href="a00276.html#a432e4ddd2e306a0fc0dde5e42f4fe3c9">end</a> ());
|
|
<a name="l00444"></a>00444 }
|
|
<a name="l00445"></a>00445 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00446"></a><a class="code" href="a00276.html#a9b012ad47e28629aa037fe16dc984033">00446</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00276.html#a9b012ad47e28629aa037fe16dc984033">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00447"></a>00447 <span class="keywordflow">return</span> <a class="code" href="a00276.html#aaad45d24329429f3d3e794f841f34621">const_reverse_iterator</a> (<a class="code" href="a00276.html#a4943c9be142894b478aa6eb8602caa00">begin</a> ());
|
|
<a name="l00448"></a>00448 }
|
|
<a name="l00449"></a>00449 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00450"></a><a class="code" href="a00276.html#a6905b2c31830fba106f121af2d85089e">00450</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00276.html#a6905b2c31830fba106f121af2d85089e">rbegin</a> () {
|
|
<a name="l00451"></a>00451 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a339b0f017d853b10914e9ac3d1509032">reverse_iterator</a> (<a class="code" href="a00276.html#a432e4ddd2e306a0fc0dde5e42f4fe3c9">end</a> ());
|
|
<a name="l00452"></a>00452 }
|
|
<a name="l00453"></a>00453 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00454"></a><a class="code" href="a00276.html#a641c28e1ab899c0d8289e9118e2f05b6">00454</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00276.html#a641c28e1ab899c0d8289e9118e2f05b6">rend</a> () {
|
|
<a name="l00455"></a>00455 <span class="keywordflow">return</span> <a class="code" href="a00276.html#a339b0f017d853b10914e9ac3d1509032">reverse_iterator</a> (<a class="code" href="a00276.html#a4943c9be142894b478aa6eb8602caa00">begin</a> ());
|
|
<a name="l00456"></a>00456 }
|
|
<a name="l00457"></a>00457
|
|
<a name="l00458"></a>00458 <span class="keyword">private</span>:
|
|
<a name="l00459"></a><a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">00459</a> <a class="code" href="a00276.html#a85b94d8f38357556f70ac18cee288a0d">matrix_closure_type</a> <a class="code" href="a00276.html#a847d22fa7726f77451879b560fa3034b">data_</a>;
|
|
<a name="l00460"></a><a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">00460</a> <a class="code" href="a00276.html#ae7331960efaf66f0b85e475077591f46">size_type</a> <a class="code" href="a00276.html#a267fca1056e3d3b38e16ce6eaccccb5e">i_</a>;
|
|
<a name="l00461"></a>00461 };
|
|
<a name="l00462"></a>00462
|
|
<a name="l00463"></a>00463 <span class="comment">// Projections</span>
|
|
<a name="l00464"></a>00464 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00465"></a>00465 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00466"></a><a class="code" href="a00595.html#af8da104f49e2652e2c036c431dec2879">00466</a> <a class="code" href="a00276.html">matrix_row<M></a> <a class="code" href="a00595.html#af8da104f49e2652e2c036c431dec2879">row</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type i) {
|
|
<a name="l00467"></a>00467 <span class="keywordflow">return</span> <a class="code" href="a00276.html">matrix_row<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, i);
|
|
<a name="l00468"></a>00468 }
|
|
<a name="l00469"></a>00469 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00470"></a>00470 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00471"></a><a class="code" href="a00595.html#a9518a90fa8b72d0be83a0a5e77da2daa">00471</a> <span class="keyword">const</span> <a class="code" href="a00276.html">matrix_row<const M></a> <a class="code" href="a00595.html#af8da104f49e2652e2c036c431dec2879">row</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type i) {
|
|
<a name="l00472"></a>00472 <span class="keywordflow">return</span> <a class="code" href="a00276.html">matrix_row<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, i);
|
|
<a name="l00473"></a>00473 }
|
|
<a name="l00474"></a>00474
|
|
<a name="l00475"></a>00475 <span class="comment">// Specialize temporary</span>
|
|
<a name="l00476"></a>00476 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l00477"></a><a class="code" href="a00569.html">00477</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00276.html">matrix_row</a><M> >
|
|
<a name="l00478"></a>00478 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l00479"></a>00479 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l00480"></a><a class="code" href="a00555.html">00480</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00276.html">matrix_row</a><M> >
|
|
<a name="l00481"></a>00481 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l00482"></a>00482
|
|
<a name="l00483"></a>00483 <span class="comment">// Matrix based column vector class</span>
|
|
<a name="l00484"></a>00484 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00485"></a><a class="code" href="a00247.html">00485</a> <span class="keyword">class </span><a class="code" href="a00247.html">matrix_column</a>:
|
|
<a name="l00486"></a>00486 <span class="keyword">public</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression</a><matrix_column<M> > {
|
|
<a name="l00487"></a>00487
|
|
<a name="l00488"></a><a class="code" href="a00247.html#a9838a420aed00eb75787afbedf926f45">00488</a> <span class="keyword">typedef</span> <a class="code" href="a00247.html">matrix_column<M></a> <a class="code" href="a00247.html#a9838a420aed00eb75787afbedf926f45">self_type</a>;
|
|
<a name="l00489"></a>00489 <span class="keyword">public</span>:
|
|
<a name="l00490"></a>00490 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l00491"></a>00491 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<self_type>::operator </a>();
|
|
<a name="l00492"></a>00492 <span class="preprocessor">#endif</span>
|
|
<a name="l00493"></a><a class="code" href="a00247.html#acee2acbb9c889f2bab194fbee60df411">00493</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00247.html#acee2acbb9c889f2bab194fbee60df411">matrix_type</a>;
|
|
<a name="l00494"></a><a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">00494</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a>;
|
|
<a name="l00495"></a><a class="code" href="a00247.html#a7b7db219318470f3962921d59f95bfb7">00495</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00247.html#a7b7db219318470f3962921d59f95bfb7">difference_type</a>;
|
|
<a name="l00496"></a><a class="code" href="a00247.html#a502c58ec810be0604a697a582c79702d">00496</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00247.html#a502c58ec810be0604a697a582c79702d">value_type</a>;
|
|
<a name="l00497"></a><a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">00497</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">const_reference</a>;
|
|
<a name="l00498"></a>00498 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00499"></a>00499 <span class="keyword">typename</span> <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">M::const_reference</a>,
|
|
<a name="l00500"></a><a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">00500</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">reference</a>;
|
|
<a name="l00501"></a>00501 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00502"></a>00502 <span class="keyword">typename</span> <a class="code" href="a00247.html#ac8976c876d8f510a31b8f7e8ce8aa786">M::const_closure_type</a>,
|
|
<a name="l00503"></a><a class="code" href="a00247.html#a362f485e6d507b0d2fa9fad41e345adf">00503</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00247.html#a362f485e6d507b0d2fa9fad41e345adf">matrix_closure_type</a>;
|
|
<a name="l00504"></a><a class="code" href="a00247.html#ac8976c876d8f510a31b8f7e8ce8aa786">00504</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00247.html">self_type</a> <a class="code" href="a00247.html#ac8976c876d8f510a31b8f7e8ce8aa786">const_closure_type</a>;
|
|
<a name="l00505"></a><a class="code" href="a00247.html#a316a9f7519b3731433b29f9a359af120">00505</a> <span class="keyword">typedef</span> <a class="code" href="a00247.html">self_type</a> <a class="code" href="a00247.html#a316a9f7519b3731433b29f9a359af120">closure_type</a>;
|
|
<a name="l00506"></a>00506 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00247.html#ac89c1a030e2fd3a146e9becf2bc93ebe">M::storage_category</a>,
|
|
<a name="l00507"></a><a class="code" href="a00247.html#ac89c1a030e2fd3a146e9becf2bc93ebe">00507</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00247.html#ac89c1a030e2fd3a146e9becf2bc93ebe">::storage_category</a> <a class="code" href="a00247.html#ac89c1a030e2fd3a146e9becf2bc93ebe">storage_category</a>;
|
|
<a name="l00508"></a>00508
|
|
<a name="l00509"></a>00509 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00510"></a>00510 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00511"></a><a class="code" href="a00247.html#a32f57c35ddc970b5dcc97ad4d7f20d21">00511</a> <a class="code" href="a00247.html#a32f57c35ddc970b5dcc97ad4d7f20d21">matrix_column</a> (<a class="code" href="a00247.html#acee2acbb9c889f2bab194fbee60df411">matrix_type</a> &<a class="code" href="a00247.html#a389cf39605a33b25939c3e4f1fa3c3ef">data</a>, <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> j):
|
|
<a name="l00512"></a>00512 <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a> (data), <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a> (j) {
|
|
<a name="l00513"></a>00513 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l00514"></a>00514 <span class="comment">// BOOST_UBLAS_CHECK (j_ < data_.size2 (), bad_index ());</span>
|
|
<a name="l00515"></a>00515 }
|
|
<a name="l00516"></a>00516
|
|
<a name="l00517"></a>00517 <span class="comment">// Accessors</span>
|
|
<a name="l00518"></a>00518 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00519"></a><a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">00519</a> <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> <a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00520"></a>00520 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>.size1 ();
|
|
<a name="l00521"></a>00521 }
|
|
<a name="l00522"></a>00522 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00523"></a><a class="code" href="a00247.html#accbc693dc55d45fe1db3b9b897a27ed2">00523</a> <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> <a class="code" href="a00247.html#accbc693dc55d45fe1db3b9b897a27ed2">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00524"></a>00524 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>;
|
|
<a name="l00525"></a>00525 }
|
|
<a name="l00526"></a>00526
|
|
<a name="l00527"></a>00527 <span class="comment">// Storage accessors</span>
|
|
<a name="l00528"></a>00528 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00529"></a><a class="code" href="a00247.html#a389cf39605a33b25939c3e4f1fa3c3ef">00529</a> <span class="keyword">const</span> <a class="code" href="a00247.html#a362f485e6d507b0d2fa9fad41e345adf">matrix_closure_type</a> &<a class="code" href="a00247.html#a389cf39605a33b25939c3e4f1fa3c3ef">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00530"></a>00530 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>;
|
|
<a name="l00531"></a>00531 }
|
|
<a name="l00532"></a>00532 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00533"></a><a class="code" href="a00247.html#a01b661804774cb49daa9518e9393845e">00533</a> <a class="code" href="a00247.html#a362f485e6d507b0d2fa9fad41e345adf">matrix_closure_type</a> &<a class="code" href="a00247.html#a01b661804774cb49daa9518e9393845e">data</a> () {
|
|
<a name="l00534"></a>00534 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>;
|
|
<a name="l00535"></a>00535 }
|
|
<a name="l00536"></a>00536
|
|
<a name="l00537"></a>00537 <span class="comment">// Element access</span>
|
|
<a name="l00538"></a>00538 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l00539"></a>00539 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00540"></a><a class="code" href="a00247.html#ac84deb17d88097f9e2feb52486d6fc61">00540</a> <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">const_reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00541"></a>00541 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a> (i, <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>);
|
|
<a name="l00542"></a>00542 }
|
|
<a name="l00543"></a>00543 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00544"></a><a class="code" href="a00247.html#a391cec5e82f2069b71a4da4a51ef6aba">00544</a> <a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i) {
|
|
<a name="l00545"></a>00545 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a> (i, <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>);
|
|
<a name="l00546"></a>00546 }
|
|
<a name="l00547"></a>00547
|
|
<a name="l00548"></a>00548 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00549"></a><a class="code" href="a00247.html#a1983ae26abe65a42e2ae4157821a85ce">00549</a> <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">const_reference</a> <a class="code" href="a00247.html#a1983ae26abe65a42e2ae4157821a85ce">operator [] </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00550"></a>00550 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l00551"></a>00551 }
|
|
<a name="l00552"></a>00552 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00553"></a><a class="code" href="a00247.html#ae0245a515de9d80f82be7c6a17677910">00553</a> <a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">reference</a> <a class="code" href="a00247.html#a1983ae26abe65a42e2ae4157821a85ce">operator [] </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i) {
|
|
<a name="l00554"></a>00554 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l00555"></a>00555 }
|
|
<a name="l00556"></a>00556 <span class="preprocessor">#else</span>
|
|
<a name="l00557"></a>00557 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00558"></a>00558 <a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00559"></a>00559 <span class="keywordflow">return</span> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a> (i, <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>);
|
|
<a name="l00560"></a>00560 }
|
|
<a name="l00561"></a>00561
|
|
<a name="l00562"></a>00562 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00563"></a>00563 <a class="code" href="a00247.html#acad4f098aa635d078ceadb0f58f09691">reference</a> <a class="code" href="a00247.html#a1983ae26abe65a42e2ae4157821a85ce">operator [] </a>(<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00564"></a>00564 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l00565"></a>00565 }
|
|
<a name="l00566"></a>00566 <span class="preprocessor">#endif</span>
|
|
<a name="l00567"></a>00567 <span class="preprocessor"></span>
|
|
<a name="l00568"></a>00568 <span class="comment">// Assignment</span>
|
|
<a name="l00569"></a>00569 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00570"></a><a class="code" href="a00247.html#a198b8dd7e117a789fcea0dc4c1186e61">00570</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#a198b8dd7e117a789fcea0dc4c1186e61">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00247.html">matrix_column</a> &mc) {
|
|
<a name="l00571"></a>00571 <span class="comment">// ISSUE need a temporary, proxy can be overlaping alias</span>
|
|
<a name="l00572"></a>00572 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (mc));
|
|
<a name="l00573"></a>00573 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00574"></a>00574 }
|
|
<a name="l00575"></a>00575 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00576"></a><a class="code" href="a00247.html#ae2e9914465f9def7d2bdda53f17a6dca">00576</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#ae2e9914465f9def7d2bdda53f17a6dca">assign_temporary</a> (<a class="code" href="a00247.html">matrix_column</a> &mc) {
|
|
<a name="l00577"></a>00577 <span class="comment">// assign elements, proxied container remains the same</span>
|
|
<a name="l00578"></a>00578 vector_assign<scalar_assign> (*<span class="keyword">this</span>, mc);
|
|
<a name="l00579"></a>00579 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00580"></a>00580 }
|
|
<a name="l00581"></a>00581 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00582"></a>00582 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00583"></a><a class="code" href="a00247.html#a61f402969ba0e276e3b0dd2b2ccd0a96">00583</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#a198b8dd7e117a789fcea0dc4c1186e61">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00584"></a>00584 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (ae));
|
|
<a name="l00585"></a>00585 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00586"></a>00586 }
|
|
<a name="l00587"></a>00587 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00588"></a>00588 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00589"></a><a class="code" href="a00247.html#aab7d9aa91f2ddf04de067672537090a2">00589</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#aab7d9aa91f2ddf04de067672537090a2">assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00590"></a>00590 vector_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00591"></a>00591 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00592"></a>00592 }
|
|
<a name="l00593"></a>00593 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00594"></a>00594 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00595"></a><a class="code" href="a00247.html#af00667fdde1cf99ecf3760c072026d37">00595</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#af00667fdde1cf99ecf3760c072026d37">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00596"></a>00596 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<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 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00600"></a>00600 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00601"></a><a class="code" href="a00247.html#aa2b6601095f7b625b8432c3cdd3e0042">00601</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#aa2b6601095f7b625b8432c3cdd3e0042">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00602"></a>00602 vector_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00603"></a>00603 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00604"></a>00604 }
|
|
<a name="l00605"></a>00605 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00606"></a>00606 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00607"></a><a class="code" href="a00247.html#ae4b4ba7e0769a7f0e9bc0904901451d8">00607</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#ae4b4ba7e0769a7f0e9bc0904901451d8">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00608"></a>00608 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l00609"></a>00609 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00610"></a>00610 }
|
|
<a name="l00611"></a>00611 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l00612"></a>00612 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00613"></a><a class="code" href="a00247.html#a9d8b42076322f1957317e3a20c2ea72d">00613</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#a9d8b42076322f1957317e3a20c2ea72d">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l00614"></a>00614 vector_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l00615"></a>00615 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00616"></a>00616 }
|
|
<a name="l00617"></a>00617 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l00618"></a>00618 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00619"></a><a class="code" href="a00247.html#a953555c9caf887bac13812722ec3dbd4">00619</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#a953555c9caf887bac13812722ec3dbd4">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l00620"></a>00620 vector_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l00621"></a>00621 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00622"></a>00622 }
|
|
<a name="l00623"></a>00623 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l00624"></a>00624 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00625"></a><a class="code" href="a00247.html#a50cf527f54d609528c2dfcdb5c17aa76">00625</a> <a class="code" href="a00247.html">matrix_column</a> &<a class="code" href="a00247.html#a50cf527f54d609528c2dfcdb5c17aa76">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l00626"></a>00626 vector_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l00627"></a>00627 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00628"></a>00628 }
|
|
<a name="l00629"></a>00629
|
|
<a name="l00630"></a>00630 <span class="comment">// Closure comparison</span>
|
|
<a name="l00631"></a>00631 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00632"></a><a class="code" href="a00247.html#ac086fccc8787ef7bb44c5efc2de22fef">00632</a> <span class="keywordtype">bool</span> <a class="code" href="a00247.html#ac086fccc8787ef7bb44c5efc2de22fef">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00247.html">matrix_column</a> &mc)<span class="keyword"> const </span>{
|
|
<a name="l00633"></a>00633 <span class="keywordflow">return</span> (*this).data_.same_closure (mc.<a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>);
|
|
<a name="l00634"></a>00634 }
|
|
<a name="l00635"></a>00635
|
|
<a name="l00636"></a>00636 <span class="comment">// Comparison</span>
|
|
<a name="l00637"></a>00637 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00638"></a><a class="code" href="a00247.html#abe8338748f6281c190a09c96a4e5bcd8">00638</a> <span class="keywordtype">bool</span> <a class="code" href="a00247.html#abe8338748f6281c190a09c96a4e5bcd8">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00247.html">matrix_column</a> &mc)<span class="keyword"> const </span>{
|
|
<a name="l00639"></a>00639 <span class="keywordflow">return</span> (*this).data_ == mc.<a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a> && <a class="code" href="a00247.html#accbc693dc55d45fe1db3b9b897a27ed2">index</a> () == mc.<a class="code" href="a00247.html#accbc693dc55d45fe1db3b9b897a27ed2">index</a> ();
|
|
<a name="l00640"></a>00640 }
|
|
<a name="l00641"></a>00641
|
|
<a name="l00642"></a>00642 <span class="comment">// Swapping</span>
|
|
<a name="l00643"></a>00643 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00644"></a><a class="code" href="a00247.html#af1a7ce24725e89239a57f2240a973e64">00644</a> <span class="keywordtype">void</span> <a class="code" href="a00247.html#af1a7ce24725e89239a57f2240a973e64">swap</a> (<a class="code" href="a00247.html">matrix_column</a> mc) {
|
|
<a name="l00645"></a>00645 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mc) {
|
|
<a name="l00646"></a>00646 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> () == mc.<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l00647"></a>00647 <span class="comment">// Sparse ranges may be nonconformant now.</span>
|
|
<a name="l00648"></a>00648 <span class="comment">// std::swap_ranges (begin (), end (), mc.begin ());</span>
|
|
<a name="l00649"></a>00649 vector_swap<scalar_swap> (*<span class="keyword">this</span>, mc);
|
|
<a name="l00650"></a>00650 }
|
|
<a name="l00651"></a>00651 }
|
|
<a name="l00652"></a>00652 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00653"></a><a class="code" href="a00247.html#a31cd402a890e95d8bd01ebe749528218">00653</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00247.html#a31cd402a890e95d8bd01ebe749528218">swap</a> (<a class="code" href="a00247.html">matrix_column</a> mc1, <a class="code" href="a00247.html">matrix_column</a> mc2) {
|
|
<a name="l00654"></a>00654 mc1.<a class="code" href="a00247.html#af1a7ce24725e89239a57f2240a973e64">swap</a> (mc2);
|
|
<a name="l00655"></a>00655 }
|
|
<a name="l00656"></a>00656
|
|
<a name="l00657"></a>00657 <span class="comment">// Iterator types</span>
|
|
<a name="l00658"></a>00658 <span class="keyword">private</span>:
|
|
<a name="l00659"></a><a class="code" href="a00247.html#a7292ce6b166dd0900726d9beddd39d9b">00659</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1 <a class="code" href="a00247.html#a7292ce6b166dd0900726d9beddd39d9b">const_subiterator_type</a>;
|
|
<a name="l00660"></a>00660 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00661"></a>00661 <span class="keyword">typename</span> M::const_iterator1,
|
|
<a name="l00662"></a><a class="code" href="a00247.html#a557e9c31a1868e4e05aa433e7b1634a9">00662</a> <span class="keyword">typename</span> M::iterator1>::type <a class="code" href="a00247.html#a557e9c31a1868e4e05aa433e7b1634a9">subiterator_type</a>;
|
|
<a name="l00663"></a>00663
|
|
<a name="l00664"></a>00664 <span class="keyword">public</span>:
|
|
<a name="l00665"></a>00665 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00666"></a>00666 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00168.html" title="A class implementing an indexed random access iterator.">indexed_iterator<matrix_column<matrix_type></a>,
|
|
<a name="l00667"></a>00667 <span class="keyword">typename</span> subiterator_type::iterator_category> <a class="code" href="a00249.html">iterator</a>;
|
|
<a name="l00668"></a>00668 <span class="keyword">typedef</span> <a class="code" href="a00165.html" title="A class implementing an indexed random access iterator.">indexed_const_iterator<matrix_column<matrix_type></a>,
|
|
<a name="l00669"></a>00669 <span class="keyword">typename</span> const_subiterator_type::iterator_category> <a class="code" href="a00248.html">const_iterator</a>;
|
|
<a name="l00670"></a>00670 <span class="preprocessor">#else</span>
|
|
<a name="l00671"></a>00671 <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00248.html">const_iterator</a>;
|
|
<a name="l00672"></a>00672 <span class="keyword">class </span><a class="code" href="a00249.html">iterator</a>;
|
|
<a name="l00673"></a>00673 <span class="preprocessor">#endif</span>
|
|
<a name="l00674"></a>00674 <span class="preprocessor"></span>
|
|
<a name="l00675"></a>00675 <span class="comment">// Element lookup</span>
|
|
<a name="l00676"></a>00676 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00677"></a><a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">00677</a> <a class="code" href="a00248.html">const_iterator</a> <a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">find</a> (<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l00678"></a>00678 <a class="code" href="a00247.html#a7292ce6b166dd0900726d9beddd39d9b">const_subiterator_type</a> it1 (<a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>.find1 (1, i, <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>));
|
|
<a name="l00679"></a>00679 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00680"></a>00680 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00248.html">const_iterator</a> (*<span class="keyword">this</span>, it1.index1 ());
|
|
<a name="l00681"></a>00681 <span class="preprocessor">#else</span>
|
|
<a name="l00682"></a>00682 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00248.html">const_iterator</a> (*<span class="keyword">this</span>, it1);
|
|
<a name="l00683"></a>00683 <span class="preprocessor">#endif</span>
|
|
<a name="l00684"></a>00684 <span class="preprocessor"></span> }
|
|
<a name="l00685"></a>00685 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00686"></a><a class="code" href="a00247.html#af62713db9bb8e18db9a309ff58fc90ec">00686</a> <a class="code" href="a00249.html">iterator</a> <a class="code" href="a00247.html#af62713db9bb8e18db9a309ff58fc90ec">find</a> (<a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> i) {
|
|
<a name="l00687"></a>00687 <a class="code" href="a00247.html#a557e9c31a1868e4e05aa433e7b1634a9">subiterator_type</a> it1 (<a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>.find1 (1, i, <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>));
|
|
<a name="l00688"></a>00688 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00689"></a>00689 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00249.html">iterator</a> (*<span class="keyword">this</span>, it1.index1 ());
|
|
<a name="l00690"></a>00690 <span class="preprocessor">#else</span>
|
|
<a name="l00691"></a>00691 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00249.html">iterator</a> (*<span class="keyword">this</span>, it1);
|
|
<a name="l00692"></a>00692 <span class="preprocessor">#endif</span>
|
|
<a name="l00693"></a>00693 <span class="preprocessor"></span> }
|
|
<a name="l00694"></a>00694
|
|
<a name="l00695"></a>00695 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00696"></a><a class="code" href="a00248.html">00696</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00248.html">const_iterator</a>:
|
|
<a name="l00697"></a>00697 <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><matrix_column>,
|
|
<a name="l00698"></a>00698 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename const_subiterator_type::iterator_category>::template
|
|
<a name="l00699"></a>00699 iterator_base<const_iterator, value_type>::type {
|
|
<a name="l00700"></a>00700 <span class="keyword">public</span>:
|
|
<a name="l00701"></a><a class="code" href="a00248.html#ad3f97e0a6f8eb683d6de1540b1d011cd">00701</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::value_type <a class="code" href="a00248.html#ad3f97e0a6f8eb683d6de1540b1d011cd">value_type</a>;
|
|
<a name="l00702"></a><a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">00702</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::difference_type <a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">difference_type</a>;
|
|
<a name="l00703"></a><a class="code" href="a00248.html#a60c05b5e0d2c2fcd1a063a946b83c259">00703</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::reference <a class="code" href="a00248.html#a60c05b5e0d2c2fcd1a063a946b83c259">reference</a>;
|
|
<a name="l00704"></a><a class="code" href="a00248.html#a437639177462fdca02e3b940367b935b">00704</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator_type::pointer <a class="code" href="a00248.html#a437639177462fdca02e3b940367b935b">pointer</a>;
|
|
<a name="l00705"></a>00705
|
|
<a name="l00706"></a>00706 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00707"></a>00707 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00708"></a><a class="code" href="a00248.html#a6d05609075fa3ab1fc5e4a8ad7aaec18">00708</a> <a class="code" href="a00248.html#a6d05609075fa3ab1fc5e4a8ad7aaec18">const_iterator</a> ():
|
|
<a name="l00709"></a>00709 <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="a00247.html">self_type</a>> (), <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> () {}
|
|
<a name="l00710"></a>00710 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00711"></a><a class="code" href="a00248.html#aac1ee86a3a817f9c9fc7009423012a9c">00711</a> <a class="code" href="a00248.html#a6d05609075fa3ab1fc5e4a8ad7aaec18">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00247.html">self_type</a> &mc, <span class="keyword">const</span> <a class="code" href="a00247.html#a7292ce6b166dd0900726d9beddd39d9b">const_subiterator_type</a> &it):
|
|
<a name="l00712"></a>00712 <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="a00247.html">self_type</a>> (mc), <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> (it) {}
|
|
<a name="l00713"></a>00713 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00714"></a><a class="code" href="a00248.html#a1daf39274fbfa6173c2f9d0bdcca3b7f">00714</a> <a class="code" href="a00248.html#a6d05609075fa3ab1fc5e4a8ad7aaec18">const_iterator</a> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00249.html">self_type::iterator</a> &it): <span class="comment">// ISSUE self_type:: stops VC8 using std::iterator here</span>
|
|
<a name="l00715"></a>00715 <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="a00247.html">self_type</a>> (it ()), <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> (it.<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>) {}
|
|
<a name="l00716"></a>00716
|
|
<a name="l00717"></a>00717 <span class="comment">// Arithmetic</span>
|
|
<a name="l00718"></a>00718 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00719"></a><a class="code" href="a00248.html#adbf2f63f467c599042e09ca56b5c7790">00719</a> <a class="code" href="a00248.html">const_iterator</a> &<a class="code" href="a00248.html#adbf2f63f467c599042e09ca56b5c7790">operator ++ </a>() {
|
|
<a name="l00720"></a>00720 ++ <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00721"></a>00721 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00722"></a>00722 }
|
|
<a name="l00723"></a>00723 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00724"></a><a class="code" href="a00248.html#afae7b06a3663a090c3e2fa4b4382ac17">00724</a> <a class="code" href="a00248.html">const_iterator</a> &<a class="code" href="a00248.html#afae7b06a3663a090c3e2fa4b4382ac17">operator -- </a>() {
|
|
<a name="l00725"></a>00725 -- <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00726"></a>00726 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00727"></a>00727 }
|
|
<a name="l00728"></a>00728 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00729"></a><a class="code" href="a00248.html#a1136d911139582a3b9bde0b29848f8d7">00729</a> <a class="code" href="a00248.html">const_iterator</a> &<a class="code" href="a00248.html#a1136d911139582a3b9bde0b29848f8d7">operator += </a>(<a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">difference_type</a> n) {
|
|
<a name="l00730"></a>00730 <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> += n;
|
|
<a name="l00731"></a>00731 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00732"></a>00732 }
|
|
<a name="l00733"></a>00733 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00734"></a><a class="code" href="a00248.html#a68abdabbf0293a7dbdeeb515d2aeeb6d">00734</a> <a class="code" href="a00248.html">const_iterator</a> &<a class="code" href="a00248.html#a68abdabbf0293a7dbdeeb515d2aeeb6d">operator -= </a>(<a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">difference_type</a> n) {
|
|
<a name="l00735"></a>00735 <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> -= n;
|
|
<a name="l00736"></a>00736 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00737"></a>00737 }
|
|
<a name="l00738"></a>00738 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00739"></a><a class="code" href="a00248.html#af97888017c5fe68a638da2c861b21756">00739</a> <a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">difference_type</a> <a class="code" href="a00248.html#af97888017c5fe68a638da2c861b21756">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00248.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00740"></a>00740 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00741"></a>00741 <span class="keywordflow">return</span> <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> - it.<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00742"></a>00742 }
|
|
<a name="l00743"></a>00743
|
|
<a name="l00744"></a>00744 <span class="comment">// Dereference</span>
|
|
<a name="l00745"></a>00745 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00746"></a><a class="code" href="a00248.html#a8f8f33b5ef61483a827a208c347d2deb">00746</a> <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">const_reference</a> <a class="code" href="a00248.html#a8f8f33b5ef61483a827a208c347d2deb">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l00747"></a>00747 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00248.html#ab98a19927c0f0296e742d9f91b71ee4c">index</a> () < (*<span class="keyword">this</span>) ().<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00748"></a>00748 <span class="keywordflow">return</span> *<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00749"></a>00749 }
|
|
<a name="l00750"></a>00750 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00751"></a><a class="code" href="a00248.html#aaf22c72366fba04a8dec4bb89682347b">00751</a> <a class="code" href="a00247.html#a978b60c3c53815ea74fd05cc24b33a1a">const_reference</a> <a class="code" href="a00248.html#aaf22c72366fba04a8dec4bb89682347b">operator [] </a>(<a class="code" href="a00248.html#abf5eb3cf85b7eb548cee886d9f5cbc17">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l00752"></a>00752 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l00753"></a>00753 }
|
|
<a name="l00754"></a>00754
|
|
<a name="l00755"></a>00755 <span class="comment">// Index</span>
|
|
<a name="l00756"></a>00756 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00757"></a><a class="code" href="a00248.html#ab98a19927c0f0296e742d9f91b71ee4c">00757</a> <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> <a class="code" href="a00248.html#ab98a19927c0f0296e742d9f91b71ee4c">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00758"></a>00758 <span class="keywordflow">return</span> <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>.index1 ();
|
|
<a name="l00759"></a>00759 }
|
|
<a name="l00760"></a>00760
|
|
<a name="l00761"></a>00761 <span class="comment">// Assignment</span>
|
|
<a name="l00762"></a>00762 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00763"></a><a class="code" href="a00248.html#ac07e7d3421f7da3683f6bd05beadaa60">00763</a> <a class="code" href="a00248.html">const_iterator</a> &<a class="code" href="a00248.html#ac07e7d3421f7da3683f6bd05beadaa60">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00248.html">const_iterator</a> &it) {
|
|
<a name="l00764"></a>00764 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l00765"></a>00765 <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> = it.<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00766"></a>00766 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00767"></a>00767 }
|
|
<a name="l00768"></a>00768
|
|
<a name="l00769"></a>00769 <span class="comment">// Comparison</span>
|
|
<a name="l00770"></a>00770 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00771"></a><a class="code" href="a00248.html#a4610affa3e893ebc08ff850997cafd4c">00771</a> <span class="keywordtype">bool</span> <a class="code" href="a00248.html#a4610affa3e893ebc08ff850997cafd4c">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00248.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00772"></a>00772 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00773"></a>00773 <span class="keywordflow">return</span> <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> == it.<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00774"></a>00774 }
|
|
<a name="l00775"></a>00775 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00776"></a><a class="code" href="a00248.html#a69cb5474d0354e30716b41040090c93e">00776</a> <span class="keywordtype">bool</span> <a class="code" href="a00248.html#a69cb5474d0354e30716b41040090c93e">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00248.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00777"></a>00777 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00778"></a>00778 <span class="keywordflow">return</span> <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a> < it.<a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00779"></a>00779 }
|
|
<a name="l00780"></a>00780
|
|
<a name="l00781"></a>00781 <span class="keyword">private</span>:
|
|
<a name="l00782"></a><a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">00782</a> <a class="code" href="a00247.html#a7292ce6b166dd0900726d9beddd39d9b">const_subiterator_type</a> <a class="code" href="a00248.html#a7f58d6132662f041dce4f10a14a170be">it_</a>;
|
|
<a name="l00783"></a>00783 };
|
|
<a name="l00784"></a>00784 <span class="preprocessor">#endif</span>
|
|
<a name="l00785"></a>00785 <span class="preprocessor"></span>
|
|
<a name="l00786"></a>00786 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00787"></a><a class="code" href="a00247.html#a6e3744dbc012a862e11da1b3f8b0ae32">00787</a> <a class="code" href="a00248.html">const_iterator</a> <a class="code" href="a00247.html#a6e3744dbc012a862e11da1b3f8b0ae32">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00788"></a>00788 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">find</a> (0);
|
|
<a name="l00789"></a>00789 }
|
|
<a name="l00790"></a>00790 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00791"></a><a class="code" href="a00247.html#ae76318a69823f72d59c3d40e5ccc9de9">00791</a> <a class="code" href="a00248.html">const_iterator</a> <a class="code" href="a00247.html#ae76318a69823f72d59c3d40e5ccc9de9">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00792"></a>00792 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">find</a> (<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> ());
|
|
<a name="l00793"></a>00793 }
|
|
<a name="l00794"></a>00794
|
|
<a name="l00795"></a>00795 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l00796"></a><a class="code" href="a00249.html">00796</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00249.html">iterator</a>:
|
|
<a name="l00797"></a>00797 <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><matrix_column>,
|
|
<a name="l00798"></a>00798 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename subiterator_type::iterator_category>::template
|
|
<a name="l00799"></a>00799 iterator_base<iterator, value_type>::type {
|
|
<a name="l00800"></a>00800 <span class="keyword">public</span>:
|
|
<a name="l00801"></a><a class="code" href="a00249.html#a0ac838f19ba1823137f52c0f5249860c">00801</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::value_type <a class="code" href="a00249.html#a0ac838f19ba1823137f52c0f5249860c">value_type</a>;
|
|
<a name="l00802"></a><a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">00802</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::difference_type <a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">difference_type</a>;
|
|
<a name="l00803"></a><a class="code" href="a00249.html#a592856efa74b289d3b951531e34ec243">00803</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::reference <a class="code" href="a00249.html#a592856efa74b289d3b951531e34ec243">reference</a>;
|
|
<a name="l00804"></a><a class="code" href="a00249.html#aa7ce9cdb9b9bafb879dc23af77d40257">00804</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator_type::pointer <a class="code" href="a00249.html#aa7ce9cdb9b9bafb879dc23af77d40257">pointer</a>;
|
|
<a name="l00805"></a>00805
|
|
<a name="l00806"></a>00806 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00807"></a>00807 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00808"></a><a class="code" href="a00249.html#a6ff3320660fcbaf04157e8a4740c24b3">00808</a> <a class="code" href="a00249.html#a6ff3320660fcbaf04157e8a4740c24b3">iterator</a> ():
|
|
<a name="l00809"></a>00809 <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><<a class="code" href="a00247.html">self_type</a>> (), <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> () {}
|
|
<a name="l00810"></a>00810 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00811"></a><a class="code" href="a00249.html#a0eaa4db156c9aafe2453d194eb19804b">00811</a> <a class="code" href="a00249.html#a6ff3320660fcbaf04157e8a4740c24b3">iterator</a> (<a class="code" href="a00247.html">self_type</a> &mc, <span class="keyword">const</span> <a class="code" href="a00247.html#a557e9c31a1868e4e05aa433e7b1634a9">subiterator_type</a> &it):
|
|
<a name="l00812"></a>00812 <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><<a class="code" href="a00247.html">self_type</a>> (mc), <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> (it) {}
|
|
<a name="l00813"></a>00813
|
|
<a name="l00814"></a>00814 <span class="comment">// Arithmetic</span>
|
|
<a name="l00815"></a>00815 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00816"></a><a class="code" href="a00249.html#ac5557cb8ca1709da6ec240ca1b494a90">00816</a> <a class="code" href="a00249.html">iterator</a> &<a class="code" href="a00249.html#ac5557cb8ca1709da6ec240ca1b494a90">operator ++ </a>() {
|
|
<a name="l00817"></a>00817 ++ <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00818"></a>00818 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00819"></a>00819 }
|
|
<a name="l00820"></a>00820 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00821"></a><a class="code" href="a00249.html#ad97eef36760585155ccd0ce3c814a019">00821</a> <a class="code" href="a00249.html">iterator</a> &<a class="code" href="a00249.html#ad97eef36760585155ccd0ce3c814a019">operator -- </a>() {
|
|
<a name="l00822"></a>00822 -- <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00823"></a>00823 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00824"></a>00824 }
|
|
<a name="l00825"></a>00825 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00826"></a><a class="code" href="a00249.html#ae9215ffc136f895ec39808390f446407">00826</a> <a class="code" href="a00249.html">iterator</a> &<a class="code" href="a00249.html#ae9215ffc136f895ec39808390f446407">operator += </a>(<a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">difference_type</a> n) {
|
|
<a name="l00827"></a>00827 <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> += n;
|
|
<a name="l00828"></a>00828 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00829"></a>00829 }
|
|
<a name="l00830"></a>00830 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00831"></a><a class="code" href="a00249.html#a5a4854b9c30ace626e3a92fbb973a6c0">00831</a> <a class="code" href="a00249.html">iterator</a> &<a class="code" href="a00249.html#a5a4854b9c30ace626e3a92fbb973a6c0">operator -= </a>(<a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">difference_type</a> n) {
|
|
<a name="l00832"></a>00832 <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> -= n;
|
|
<a name="l00833"></a>00833 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00834"></a>00834 }
|
|
<a name="l00835"></a>00835 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00836"></a><a class="code" href="a00249.html#adee0df5db62373517b4671708db78ffb">00836</a> <a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">difference_type</a> <a class="code" href="a00249.html#adee0df5db62373517b4671708db78ffb">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00249.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00837"></a>00837 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00838"></a>00838 <span class="keywordflow">return</span> <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> - it.<a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00839"></a>00839 }
|
|
<a name="l00840"></a>00840
|
|
<a name="l00841"></a>00841 <span class="comment">// Dereference</span>
|
|
<a name="l00842"></a>00842 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00843"></a><a class="code" href="a00249.html#a3814a87903eb4bfe046d88b1c386ead1">00843</a> <a class="code" href="a00249.html#a592856efa74b289d3b951531e34ec243">reference</a> <a class="code" href="a00249.html#a3814a87903eb4bfe046d88b1c386ead1">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l00844"></a>00844 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00249.html#a1b6f0ec1f08b1346ec7ad10b54659c1d">index</a> () < (*<span class="keyword">this</span>) ().<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> (), <a class="code" href="a00015.html">bad_index</a> ());
|
|
<a name="l00845"></a>00845 <span class="keywordflow">return</span> *<a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00846"></a>00846 }
|
|
<a name="l00847"></a>00847 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00848"></a><a class="code" href="a00249.html#a1c739dcde07b630fa6ef834970fc33f4">00848</a> <a class="code" href="a00249.html#a592856efa74b289d3b951531e34ec243">reference</a> <a class="code" href="a00249.html#a1c739dcde07b630fa6ef834970fc33f4">operator [] </a>(<a class="code" href="a00249.html#a734dadb5a2bd5cc8dd0a964a54c23edb">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l00849"></a>00849 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l00850"></a>00850 }
|
|
<a name="l00851"></a>00851
|
|
<a name="l00852"></a>00852 <span class="comment">// Index</span>
|
|
<a name="l00853"></a>00853 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00854"></a><a class="code" href="a00249.html#a1b6f0ec1f08b1346ec7ad10b54659c1d">00854</a> <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> <a class="code" href="a00249.html#a1b6f0ec1f08b1346ec7ad10b54659c1d">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00855"></a>00855 <span class="keywordflow">return</span> <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>.index1 ();
|
|
<a name="l00856"></a>00856 }
|
|
<a name="l00857"></a>00857
|
|
<a name="l00858"></a>00858 <span class="comment">// Assignment</span>
|
|
<a name="l00859"></a>00859 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00860"></a><a class="code" href="a00249.html#a6ae5ec55a5a7e818083481532c60590b">00860</a> <a class="code" href="a00249.html">iterator</a> &<a class="code" href="a00249.html#a6ae5ec55a5a7e818083481532c60590b">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00249.html">iterator</a> &it) {
|
|
<a name="l00861"></a>00861 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l00862"></a>00862 <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> = it.<a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00863"></a>00863 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l00864"></a>00864 }
|
|
<a name="l00865"></a>00865
|
|
<a name="l00866"></a>00866 <span class="comment">// Comparison</span>
|
|
<a name="l00867"></a>00867 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00868"></a><a class="code" href="a00249.html#a14e467fae12b426aaac98fdf0a7e0c87">00868</a> <span class="keywordtype">bool</span> <a class="code" href="a00249.html#a14e467fae12b426aaac98fdf0a7e0c87">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00249.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00869"></a>00869 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00870"></a>00870 <span class="keywordflow">return</span> <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> == it.<a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00871"></a>00871 }
|
|
<a name="l00872"></a>00872 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00873"></a><a class="code" href="a00249.html#a5d0696a85e3398af719cef85d6f21f1a">00873</a> <span class="keywordtype">bool</span> <a class="code" href="a00249.html#a5d0696a85e3398af719cef85d6f21f1a">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00249.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l00874"></a>00874 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l00875"></a>00875 <span class="keywordflow">return</span> <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a> < it.<a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00876"></a>00876 }
|
|
<a name="l00877"></a>00877
|
|
<a name="l00878"></a>00878 <span class="keyword">private</span>:
|
|
<a name="l00879"></a><a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">00879</a> <a class="code" href="a00247.html#a557e9c31a1868e4e05aa433e7b1634a9">subiterator_type</a> <a class="code" href="a00249.html#a25f620e4540eb171ba16dbae96070102">it_</a>;
|
|
<a name="l00880"></a>00880
|
|
<a name="l00881"></a><a class="code" href="a00249.html#ac220ce1c155db1ac44146c12d178056f">00881</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00248.html">const_iterator</a>;
|
|
<a name="l00882"></a>00882 };
|
|
<a name="l00883"></a>00883 <span class="preprocessor">#endif</span>
|
|
<a name="l00884"></a>00884 <span class="preprocessor"></span>
|
|
<a name="l00885"></a>00885 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00886"></a><a class="code" href="a00247.html#ae5edd158f6cc424ca4515f33b5b16193">00886</a> <a class="code" href="a00249.html">iterator</a> <a class="code" href="a00247.html#ae5edd158f6cc424ca4515f33b5b16193">begin</a> () {
|
|
<a name="l00887"></a>00887 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">find</a> (0);
|
|
<a name="l00888"></a>00888 }
|
|
<a name="l00889"></a>00889 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00890"></a><a class="code" href="a00247.html#a5c33c18067c0fe7badcc9f6385bea233">00890</a> <a class="code" href="a00249.html">iterator</a> <a class="code" href="a00247.html#a5c33c18067c0fe7badcc9f6385bea233">end</a> () {
|
|
<a name="l00891"></a>00891 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a36f629b9f864b3e40f73c6d54d66f4e9">find</a> (<a class="code" href="a00247.html#a9b006fef5cac0db751b40134646a5de9">size</a> ());
|
|
<a name="l00892"></a>00892 }
|
|
<a name="l00893"></a>00893
|
|
<a name="l00894"></a>00894 <span class="comment">// Reverse iterator</span>
|
|
<a name="l00895"></a><a class="code" href="a00247.html#a739fe793fb1c81c473a934b52b6d38f3">00895</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<const_iterator></a> <a class="code" href="a00247.html#a739fe793fb1c81c473a934b52b6d38f3">const_reverse_iterator</a>;
|
|
<a name="l00896"></a><a class="code" href="a00247.html#a527085cfd076dd6a2736dafe37415569">00896</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<iterator></a> <a class="code" href="a00247.html#a527085cfd076dd6a2736dafe37415569">reverse_iterator</a>;
|
|
<a name="l00897"></a>00897
|
|
<a name="l00898"></a>00898 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00899"></a><a class="code" href="a00247.html#a5774fffab93c629612501ee10dbd7e39">00899</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00247.html#a5774fffab93c629612501ee10dbd7e39">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00900"></a>00900 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a739fe793fb1c81c473a934b52b6d38f3">const_reverse_iterator</a> (<a class="code" href="a00247.html#ae76318a69823f72d59c3d40e5ccc9de9">end</a> ());
|
|
<a name="l00901"></a>00901 }
|
|
<a name="l00902"></a>00902 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00903"></a><a class="code" href="a00247.html#ae7f293dc87064fec98d7d5b6563e077b">00903</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00247.html#ae7f293dc87064fec98d7d5b6563e077b">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00904"></a>00904 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a739fe793fb1c81c473a934b52b6d38f3">const_reverse_iterator</a> (<a class="code" href="a00247.html#a6e3744dbc012a862e11da1b3f8b0ae32">begin</a> ());
|
|
<a name="l00905"></a>00905 }
|
|
<a name="l00906"></a><a class="code" href="a00247.html#a8c7cdc28bc281562f0f8fda5ee439ed2">00906</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00247.html#a8c7cdc28bc281562f0f8fda5ee439ed2">rbegin</a> () {
|
|
<a name="l00907"></a>00907 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a527085cfd076dd6a2736dafe37415569">reverse_iterator</a> (<a class="code" href="a00247.html#ae76318a69823f72d59c3d40e5ccc9de9">end</a> ());
|
|
<a name="l00908"></a>00908 }
|
|
<a name="l00909"></a>00909 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00910"></a><a class="code" href="a00247.html#a80ef3011317d4609496c73f758dfdc69">00910</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00247.html#a80ef3011317d4609496c73f758dfdc69">rend</a> () {
|
|
<a name="l00911"></a>00911 <span class="keywordflow">return</span> <a class="code" href="a00247.html#a527085cfd076dd6a2736dafe37415569">reverse_iterator</a> (<a class="code" href="a00247.html#a6e3744dbc012a862e11da1b3f8b0ae32">begin</a> ());
|
|
<a name="l00912"></a>00912 }
|
|
<a name="l00913"></a>00913
|
|
<a name="l00914"></a>00914 <span class="keyword">private</span>:
|
|
<a name="l00915"></a><a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">00915</a> <a class="code" href="a00247.html#a362f485e6d507b0d2fa9fad41e345adf">matrix_closure_type</a> <a class="code" href="a00247.html#aac65c8cc6e027e127f71627316890646">data_</a>;
|
|
<a name="l00916"></a><a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">00916</a> <a class="code" href="a00247.html#aeeb06354f25199c749eb7492f48c8736">size_type</a> <a class="code" href="a00247.html#a81b6a68871bd9c9c758b5c5a61cebe4e">j_</a>;
|
|
<a name="l00917"></a>00917 };
|
|
<a name="l00918"></a>00918
|
|
<a name="l00919"></a>00919 <span class="comment">// Projections</span>
|
|
<a name="l00920"></a>00920 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00921"></a>00921 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00922"></a><a class="code" href="a00595.html#a401950b707ff8a1209616085404065c8">00922</a> <a class="code" href="a00247.html">matrix_column<M></a> <a class="code" href="a00595.html#a401950b707ff8a1209616085404065c8">column</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type j) {
|
|
<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="a00247.html">matrix_column<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, j);
|
|
<a name="l00924"></a>00924 }
|
|
<a name="l00925"></a>00925 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00926"></a>00926 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00927"></a><a class="code" href="a00595.html#a6c3534403ea4a99972d76e620b2188c8">00927</a> <span class="keyword">const</span> <a class="code" href="a00247.html">matrix_column<const M></a> <a class="code" href="a00595.html#a401950b707ff8a1209616085404065c8">column</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type j) {
|
|
<a name="l00928"></a>00928 <span class="keywordflow">return</span> <a class="code" href="a00247.html">matrix_column<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, j);
|
|
<a name="l00929"></a>00929 }
|
|
<a name="l00930"></a>00930
|
|
<a name="l00931"></a>00931 <span class="comment">// Specialize temporary</span>
|
|
<a name="l00932"></a>00932 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l00933"></a><a class="code" href="a00566.html">00933</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00247.html">matrix_column</a><M> >
|
|
<a name="l00934"></a>00934 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l00935"></a>00935 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l00936"></a><a class="code" href="a00552.html">00936</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00247.html">matrix_column</a><M> >
|
|
<a name="l00937"></a>00937 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l00938"></a>00938
|
|
<a name="l00939"></a>00939 <span class="comment">// Matrix based vector range class</span>
|
|
<a name="l00940"></a>00940 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l00941"></a><a class="code" href="a00327.html">00941</a> <span class="keyword">class </span><a class="code" href="a00327.html">matrix_vector_range</a>:
|
|
<a name="l00942"></a>00942 <span class="keyword">public</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression</a><matrix_vector_range<M> > {
|
|
<a name="l00943"></a>00943
|
|
<a name="l00944"></a><a class="code" href="a00327.html#aa7f399e3ff3c67f56c217d8f23df782e">00944</a> <span class="keyword">typedef</span> <a class="code" href="a00327.html">matrix_vector_range<M></a> <a class="code" href="a00327.html#aa7f399e3ff3c67f56c217d8f23df782e">self_type</a>;
|
|
<a name="l00945"></a>00945 <span class="keyword">public</span>:
|
|
<a name="l00946"></a>00946 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l00947"></a>00947 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<self_type>::operator </a>();
|
|
<a name="l00948"></a>00948 <span class="preprocessor">#endif</span>
|
|
<a name="l00949"></a><a class="code" href="a00327.html#a41d85564a9cd4462df326dcdad704a18">00949</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00327.html#a41d85564a9cd4462df326dcdad704a18">matrix_type</a>;
|
|
<a name="l00950"></a><a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">00950</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a>;
|
|
<a name="l00951"></a><a class="code" href="a00327.html#a37d5cfc3cb632406dcfbdbfb281ace03">00951</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00327.html#a37d5cfc3cb632406dcfbdbfb281ace03">difference_type</a>;
|
|
<a name="l00952"></a><a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">00952</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">value_type</a>;
|
|
<a name="l00953"></a><a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">00953</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">const_reference</a>;
|
|
<a name="l00954"></a>00954 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00955"></a>00955 <span class="keyword">typename</span> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">M::const_reference</a>,
|
|
<a name="l00956"></a><a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">00956</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">reference</a>;
|
|
<a name="l00957"></a>00957 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l00958"></a>00958 <span class="keyword">typename</span> <a class="code" href="a00327.html#a7f93043a80717d0daf5072ea3f23de57">M::const_closure_type</a>,
|
|
<a name="l00959"></a><a class="code" href="a00327.html#a61518b36f96e7aff9d7663d1604f4903">00959</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00327.html#a61518b36f96e7aff9d7663d1604f4903">matrix_closure_type</a>;
|
|
<a name="l00960"></a><a class="code" href="a00327.html#a2ccbdabd7de9e67ca9a0f6b043400035">00960</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> <a class="code" href="a00327.html#a2ccbdabd7de9e67ca9a0f6b043400035">range_type</a>;
|
|
<a name="l00961"></a><a class="code" href="a00327.html#a7f93043a80717d0daf5072ea3f23de57">00961</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00327.html">self_type</a> <a class="code" href="a00327.html#a7f93043a80717d0daf5072ea3f23de57">const_closure_type</a>;
|
|
<a name="l00962"></a><a class="code" href="a00327.html#adff4558dac16b4e24204c1dc6307a921">00962</a> <span class="keyword">typedef</span> <a class="code" href="a00327.html">self_type</a> <a class="code" href="a00327.html#adff4558dac16b4e24204c1dc6307a921">closure_type</a>;
|
|
<a name="l00963"></a>00963 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00327.html#af49ff71918a77f48deec6f53cc7f4432">M::storage_category</a>,
|
|
<a name="l00964"></a><a class="code" href="a00327.html#af49ff71918a77f48deec6f53cc7f4432">00964</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00327.html#af49ff71918a77f48deec6f53cc7f4432">::storage_category</a> <a class="code" href="a00327.html#af49ff71918a77f48deec6f53cc7f4432">storage_category</a>;
|
|
<a name="l00965"></a>00965
|
|
<a name="l00966"></a>00966 <span class="comment">// Construction and destruction</span>
|
|
<a name="l00967"></a>00967 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00968"></a><a class="code" href="a00327.html#a1b2ab192842ef4ece0f4d9fd951084d4">00968</a> <a class="code" href="a00327.html#a1b2ab192842ef4ece0f4d9fd951084d4">matrix_vector_range</a> (<a class="code" href="a00327.html#a41d85564a9cd4462df326dcdad704a18">matrix_type</a> &<a class="code" href="a00327.html#aa53f91de19f346c31f923f7cc3b6e495">data</a>, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2):
|
|
<a name="l00969"></a>00969 <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (data), <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> (r1.preprocess (data.<a class="code" href="a00658.html#a979596ba6e2373d596e34c2a73809cf6">size1</a> ())), <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a> (r2.preprocess (data.<a class="code" href="a00658.html#a981c2ed31bf42bd03499d4ee32444141">size2</a> ())) {
|
|
<a name="l00970"></a>00970 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l00971"></a>00971 <span class="comment">// BOOST_UBLAS_CHECK (r1_.start () <= data_.size1 () &&</span>
|
|
<a name="l00972"></a>00972 <span class="comment">// r1_.start () + r1_.size () <= data_.size1 (), bad_index ());</span>
|
|
<a name="l00973"></a>00973 <span class="comment">// BOOST_UBLAS_CHECK (r2_.start () <= data_.size2 () &&</span>
|
|
<a name="l00974"></a>00974 <span class="comment">// r2_.start () + r2_.size () <= data_.size2 (), bad_index ());</span>
|
|
<a name="l00975"></a>00975 <span class="comment">// BOOST_UBLAS_CHECK (r1_.size () == r2_.size (), bad_size ());</span>
|
|
<a name="l00976"></a>00976 }
|
|
<a name="l00977"></a>00977
|
|
<a name="l00978"></a>00978 <span class="comment">// Accessors</span>
|
|
<a name="l00979"></a>00979 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00980"></a><a class="code" href="a00327.html#ace086b2ffcf5a95e369044abaf7f6ebe">00980</a> <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> <a class="code" href="a00327.html#ace086b2ffcf5a95e369044abaf7f6ebe">start1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00981"></a>00981 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a>.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ();
|
|
<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="a00327.html#ab84baa5d9ebea071fdebc1d039e44e5b">00984</a> <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> <a class="code" href="a00327.html#ab84baa5d9ebea071fdebc1d039e44e5b">start2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00985"></a>00985 <span class="keywordflow">return</span> <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ();
|
|
<a name="l00986"></a>00986 }
|
|
<a name="l00987"></a>00987 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00988"></a><a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">00988</a> <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> <a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00989"></a>00989 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a>.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> (), <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ());
|
|
<a name="l00990"></a>00990 }
|
|
<a name="l00991"></a>00991
|
|
<a name="l00992"></a>00992 <span class="comment">// Storage accessors</span>
|
|
<a name="l00993"></a>00993 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00994"></a><a class="code" href="a00327.html#aa53f91de19f346c31f923f7cc3b6e495">00994</a> <span class="keyword">const</span> <a class="code" href="a00327.html#a61518b36f96e7aff9d7663d1604f4903">matrix_closure_type</a> &<a class="code" href="a00327.html#aa53f91de19f346c31f923f7cc3b6e495">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l00995"></a>00995 <span class="keywordflow">return</span> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a>;
|
|
<a name="l00996"></a>00996 }
|
|
<a name="l00997"></a>00997 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00998"></a><a class="code" href="a00327.html#ad5f7bffa09af6eb59a49ba5456b8e7eb">00998</a> <a class="code" href="a00327.html#a61518b36f96e7aff9d7663d1604f4903">matrix_closure_type</a> &<a class="code" href="a00327.html#ad5f7bffa09af6eb59a49ba5456b8e7eb">data</a> () {
|
|
<a name="l00999"></a>00999 <span class="keywordflow">return</span> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a>;
|
|
<a name="l01000"></a>01000 }
|
|
<a name="l01001"></a>01001
|
|
<a name="l01002"></a>01002 <span class="comment">// Element access</span>
|
|
<a name="l01003"></a>01003 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l01004"></a>01004 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01005"></a><a class="code" href="a00327.html#afda91bfcba0a486908243f557dbc6849">01005</a> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">const_reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01006"></a>01006 <span class="keywordflow">return</span> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (<a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> (i), <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a> (i));
|
|
<a name="l01007"></a>01007 }
|
|
<a name="l01008"></a>01008 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01009"></a><a class="code" href="a00327.html#a86e3d5838a0190b369d5ca87c7ad8f2f">01009</a> <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i) {
|
|
<a name="l01010"></a>01010 <span class="keywordflow">return</span> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (<a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> (i), <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a> (i));
|
|
<a name="l01011"></a>01011 }
|
|
<a name="l01012"></a>01012
|
|
<a name="l01013"></a>01013 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01014"></a><a class="code" href="a00327.html#a47fe36f2323c2f8f6b3c6abed1680078">01014</a> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">const_reference</a> <a class="code" href="a00327.html#a47fe36f2323c2f8f6b3c6abed1680078">operator [] </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01015"></a>01015 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01016"></a>01016 }
|
|
<a name="l01017"></a>01017 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01018"></a><a class="code" href="a00327.html#a0ad99010e1d418fd93c140ff9d9f257e">01018</a> <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">reference</a> <a class="code" href="a00327.html#a47fe36f2323c2f8f6b3c6abed1680078">operator [] </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i) {
|
|
<a name="l01019"></a>01019 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01020"></a>01020 }
|
|
<a name="l01021"></a>01021 <span class="preprocessor">#else</span>
|
|
<a name="l01022"></a>01022 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01023"></a>01023 <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01024"></a>01024 <span class="keywordflow">return</span> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (<a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> (i), <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a> (i));
|
|
<a name="l01025"></a>01025 }
|
|
<a name="l01026"></a>01026
|
|
<a name="l01027"></a>01027 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01028"></a>01028 <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">reference</a> <a class="code" href="a00327.html#a47fe36f2323c2f8f6b3c6abed1680078">operator [] </a>(<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01029"></a>01029 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01030"></a>01030 }
|
|
<a name="l01031"></a>01031 <span class="preprocessor">#endif</span>
|
|
<a name="l01032"></a>01032 <span class="preprocessor"></span>
|
|
<a name="l01033"></a>01033 <span class="comment">// Assignment</span>
|
|
<a name="l01034"></a>01034 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01035"></a><a class="code" href="a00327.html#aa7f0623aa923ee5d4d8d00163dff5a19">01035</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#aa7f0623aa923ee5d4d8d00163dff5a19">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00327.html">matrix_vector_range</a> &mvr) {
|
|
<a name="l01036"></a>01036 <span class="comment">// ISSUE need a temporary, proxy can be overlaping alias</span>
|
|
<a name="l01037"></a>01037 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (mvr));
|
|
<a name="l01038"></a>01038 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01039"></a>01039 }
|
|
<a name="l01040"></a>01040 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01041"></a><a class="code" href="a00327.html#a652393b4b596a58edad7cdac15f2f988">01041</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#a652393b4b596a58edad7cdac15f2f988">assign_temporary</a> (<a class="code" href="a00327.html">matrix_vector_range</a> &mvr) {
|
|
<a name="l01042"></a>01042 <span class="comment">// assign elements, proxied container remains the same</span>
|
|
<a name="l01043"></a>01043 vector_assign<scalar_assign> (*<span class="keyword">this</span>, mvr);
|
|
<a name="l01044"></a>01044 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01045"></a>01045 }
|
|
<a name="l01046"></a>01046 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01047"></a>01047 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01048"></a><a class="code" href="a00327.html#ac3d6c33ce4b48079b03cf930438ca6cd">01048</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#aa7f0623aa923ee5d4d8d00163dff5a19">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01049"></a>01049 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (ae));
|
|
<a name="l01050"></a>01050 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01051"></a>01051 }
|
|
<a name="l01052"></a>01052 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01053"></a>01053 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01054"></a><a class="code" href="a00327.html#a5d1c9e8315a13e81a46e1c4ad4b8699c">01054</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#a5d1c9e8315a13e81a46e1c4ad4b8699c">assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01055"></a>01055 vector_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01056"></a>01056 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01057"></a>01057 }
|
|
<a name="l01058"></a>01058 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01059"></a>01059 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01060"></a><a class="code" href="a00327.html#ae133b1f809e0719af16161fc4c865b4a">01060</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#ae133b1f809e0719af16161fc4c865b4a">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01061"></a>01061 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l01062"></a>01062 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01063"></a>01063 }
|
|
<a name="l01064"></a>01064 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01065"></a>01065 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01066"></a><a class="code" href="a00327.html#a805ffd8c0c2024f3cd70b5e2a6099cf7">01066</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#a805ffd8c0c2024f3cd70b5e2a6099cf7">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01067"></a>01067 vector_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01068"></a>01068 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01069"></a>01069 }
|
|
<a name="l01070"></a>01070 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01071"></a>01071 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01072"></a><a class="code" href="a00327.html#a54e50127015519b1062802de7e7e7446">01072</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#a54e50127015519b1062802de7e7e7446">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01073"></a>01073 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l01074"></a>01074 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01075"></a>01075 }
|
|
<a name="l01076"></a>01076 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01077"></a>01077 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01078"></a><a class="code" href="a00327.html#acb70323a102d2cfe18cf7ca97abac0a4">01078</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#acb70323a102d2cfe18cf7ca97abac0a4">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01079"></a>01079 vector_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01080"></a>01080 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01081"></a>01081 }
|
|
<a name="l01082"></a>01082 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l01083"></a>01083 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01084"></a><a class="code" href="a00327.html#ac769637ce6e8977d4a7f3fa453820804">01084</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#ac769637ce6e8977d4a7f3fa453820804">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l01085"></a>01085 vector_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l01086"></a>01086 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01087"></a>01087 }
|
|
<a name="l01088"></a>01088 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l01089"></a>01089 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01090"></a><a class="code" href="a00327.html#a781d19d3da123e609d7a954ccdea6d16">01090</a> <a class="code" href="a00327.html">matrix_vector_range</a> &<a class="code" href="a00327.html#a781d19d3da123e609d7a954ccdea6d16">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l01091"></a>01091 vector_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l01092"></a>01092 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01093"></a>01093 }
|
|
<a name="l01094"></a>01094
|
|
<a name="l01095"></a>01095 <span class="comment">// Closure comparison</span>
|
|
<a name="l01096"></a>01096 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01097"></a><a class="code" href="a00327.html#a3a819e2c8bc6c7d267470eb0f8f58e3d">01097</a> <span class="keywordtype">bool</span> <a class="code" href="a00327.html#a3a819e2c8bc6c7d267470eb0f8f58e3d">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00327.html">matrix_vector_range</a> &mvr)<span class="keyword"> const </span>{
|
|
<a name="l01098"></a>01098 <span class="keywordflow">return</span> (*this).data_.same_closure (mvr.<a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a>);
|
|
<a name="l01099"></a>01099 }
|
|
<a name="l01100"></a>01100
|
|
<a name="l01101"></a>01101 <span class="comment">// Comparison</span>
|
|
<a name="l01102"></a>01102 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01103"></a><a class="code" href="a00327.html#afdcab675f6d10a69523f26cf63d899f3">01103</a> <span class="keywordtype">bool</span> <a class="code" href="a00327.html#afdcab675f6d10a69523f26cf63d899f3">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00327.html">matrix_vector_range</a> &mvr)<span class="keyword"> const </span>{
|
|
<a name="l01104"></a>01104 <span class="keywordflow">return</span> (*this).data_ == mvr.<a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> && <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> == mvr.<a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a> && <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a> == mvr.<a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>;
|
|
<a name="l01105"></a>01105 }
|
|
<a name="l01106"></a>01106
|
|
<a name="l01107"></a>01107 <span class="comment">// Swapping</span>
|
|
<a name="l01108"></a>01108 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01109"></a><a class="code" href="a00327.html#aae8dcc56fa2ea437fe0362f174e37934">01109</a> <span class="keywordtype">void</span> <a class="code" href="a00327.html#aae8dcc56fa2ea437fe0362f174e37934">swap</a> (<a class="code" href="a00327.html">matrix_vector_range</a> mvr) {
|
|
<a name="l01110"></a>01110 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mvr) {
|
|
<a name="l01111"></a>01111 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">size</a> () == mvr.<a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l01112"></a>01112 <span class="comment">// Sparse ranges may be nonconformant now.</span>
|
|
<a name="l01113"></a>01113 <span class="comment">// std::swap_ranges (begin (), end (), mvr.begin ());</span>
|
|
<a name="l01114"></a>01114 vector_swap<scalar_swap> (*<span class="keyword">this</span>, mvr);
|
|
<a name="l01115"></a>01115 }
|
|
<a name="l01116"></a>01116 }
|
|
<a name="l01117"></a>01117 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01118"></a><a class="code" href="a00327.html#aefab66100dda6f30a9160fa9b3f11039">01118</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00327.html#aefab66100dda6f30a9160fa9b3f11039">swap</a> (<a class="code" href="a00327.html">matrix_vector_range</a> mvr1, <a class="code" href="a00327.html">matrix_vector_range</a> mvr2) {
|
|
<a name="l01119"></a>01119 mvr1.<a class="code" href="a00327.html#aae8dcc56fa2ea437fe0362f174e37934">swap</a> (mvr2);
|
|
<a name="l01120"></a>01120 }
|
|
<a name="l01121"></a>01121
|
|
<a name="l01122"></a>01122 <span class="comment">// Iterator types</span>
|
|
<a name="l01123"></a>01123 <span class="keyword">private</span>:
|
|
<a name="l01124"></a>01124 <span class="comment">// Use range as an index - FIXME this fails for packed assignment</span>
|
|
<a name="l01125"></a><a class="code" href="a00327.html#a0dd9139cedceaddd59962005b8b03ea0">01125</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::const_iterator <a class="code" href="a00327.html#a0dd9139cedceaddd59962005b8b03ea0">const_subiterator1_type</a>;
|
|
<a name="l01126"></a><a class="code" href="a00327.html#a24659515f66b178561aa72299929518c">01126</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::const_iterator <a class="code" href="a00327.html#a24659515f66b178561aa72299929518c">subiterator1_type</a>;
|
|
<a name="l01127"></a><a class="code" href="a00327.html#a2700edec92ea8e6190b02b8871c8c334">01127</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::const_iterator <a class="code" href="a00327.html#a2700edec92ea8e6190b02b8871c8c334">const_subiterator2_type</a>;
|
|
<a name="l01128"></a><a class="code" href="a00327.html#ad3f536db25d9b83e29b6c6e125060062">01128</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::const_iterator <a class="code" href="a00327.html#ad3f536db25d9b83e29b6c6e125060062">subiterator2_type</a>;
|
|
<a name="l01129"></a>01129
|
|
<a name="l01130"></a>01130 <span class="keyword">public</span>:
|
|
<a name="l01131"></a>01131 <span class="keyword">class </span><a class="code" href="a00328.html">const_iterator</a>;
|
|
<a name="l01132"></a>01132 <span class="keyword">class </span><a class="code" href="a00329.html">iterator</a>;
|
|
<a name="l01133"></a>01133
|
|
<a name="l01134"></a>01134 <span class="comment">// Element lookup</span>
|
|
<a name="l01135"></a>01135 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01136"></a><a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">01136</a> <a class="code" href="a00328.html">const_iterator</a> <a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">find</a> (<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01137"></a>01137 <span class="keywordflow">return</span> <a class="code" href="a00328.html">const_iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a>.<a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> () + i, <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>.<a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> () + i);
|
|
<a name="l01138"></a>01138 }
|
|
<a name="l01139"></a>01139 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01140"></a><a class="code" href="a00327.html#ad825c4918684973db38668eb2e9baa72">01140</a> <a class="code" href="a00329.html">iterator</a> <a class="code" href="a00327.html#ad825c4918684973db38668eb2e9baa72">find</a> (<a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> i) {
|
|
<a name="l01141"></a>01141 <span class="keywordflow">return</span> <a class="code" href="a00329.html">iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a>.<a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> () + i, <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>.<a class="code" href="a00001.html#a5be74707db227b5e67cb85598138563e">begin</a> () + i);
|
|
<a name="l01142"></a>01142 }
|
|
<a name="l01143"></a>01143
|
|
<a name="l01144"></a><a class="code" href="a00328.html">01144</a> <span class="keyword">class </span><a class="code" href="a00328.html">const_iterator</a>:
|
|
<a name="l01145"></a>01145 <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><matrix_vector_range>,
|
|
<a name="l01146"></a>01146 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator1::iterator_category>::template
|
|
<a name="l01147"></a>01147 iterator_base<const_iterator, value_type>::type {
|
|
<a name="l01148"></a>01148 <span class="keyword">public</span>:
|
|
<a name="l01149"></a>01149 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l01150"></a>01150 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l01151"></a>01151 <a class="code" href="a00328.html#a1cdd3bc97e942b91068c279aa1922d4a">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l01152"></a>01152
|
|
<a name="l01153"></a><a class="code" href="a00328.html#a7b6c9b6063c86b5bc9ddb892a36e6c36">01153</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">matrix_vector_range::value_type</a> <a class="code" href="a00328.html#a7b6c9b6063c86b5bc9ddb892a36e6c36">value_type</a>;
|
|
<a name="l01154"></a><a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">01154</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#a37d5cfc3cb632406dcfbdbfb281ace03">matrix_vector_range::difference_type</a> <a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">difference_type</a>;
|
|
<a name="l01155"></a><a class="code" href="a00328.html#ab647346fc0dbd6d4aa4f2c1e64953e65">01155</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">matrix_vector_range::const_reference</a> <a class="code" href="a00328.html#ab647346fc0dbd6d4aa4f2c1e64953e65">reference</a>;
|
|
<a name="l01156"></a><a class="code" href="a00328.html#a545edd588e6672204487d31d2ea8e0dc">01156</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">matrix_vector_range::value_type</a> *<a class="code" href="a00328.html#a545edd588e6672204487d31d2ea8e0dc">pointer</a>;
|
|
<a name="l01157"></a>01157
|
|
<a name="l01158"></a>01158 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01159"></a>01159 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01160"></a><a class="code" href="a00328.html#ad603eb351c93fafc0b44f4d25773c1ae">01160</a> <a class="code" href="a00328.html#ad603eb351c93fafc0b44f4d25773c1ae">const_iterator</a> ():
|
|
<a name="l01161"></a>01161 <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="a00327.html">self_type</a>> (), <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> (), <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> () {}
|
|
<a name="l01162"></a>01162 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01163"></a><a class="code" href="a00328.html#ae589656bcdfec3a121839d3d422be22d">01163</a> <a class="code" href="a00328.html#ad603eb351c93fafc0b44f4d25773c1ae">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00327.html">self_type</a> &mvr, <span class="keyword">const</span> <a class="code" href="a00327.html#a0dd9139cedceaddd59962005b8b03ea0">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00327.html#a2700edec92ea8e6190b02b8871c8c334">const_subiterator2_type</a> &it2):
|
|
<a name="l01164"></a>01164 <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="a00327.html">self_type</a>> (mvr), <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> (it1), <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> (it2) {}
|
|
<a name="l01165"></a>01165 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01166"></a><a class="code" href="a00328.html#a25b8b6551a59f58313dbc28c5f7d0d46">01166</a> <a class="code" href="a00328.html#ad603eb351c93fafc0b44f4d25773c1ae">const_iterator</a> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00329.html">self_type::iterator</a> &it): <span class="comment">// ISSUE self_type:: stops VC8 using std::iterator here</span>
|
|
<a name="l01167"></a>01167 <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="a00327.html">self_type</a>> (it ()), <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> (it.<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>), <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> (it.<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>) {}
|
|
<a name="l01168"></a>01168
|
|
<a name="l01169"></a>01169 <span class="comment">// Arithmetic</span>
|
|
<a name="l01170"></a>01170 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01171"></a><a class="code" href="a00328.html#a186504f1b8031f9bdc25fb7fa5c3b2da">01171</a> <a class="code" href="a00328.html">const_iterator</a> &<a class="code" href="a00328.html#a186504f1b8031f9bdc25fb7fa5c3b2da">operator ++ </a>() {
|
|
<a name="l01172"></a>01172 ++ <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>;
|
|
<a name="l01173"></a>01173 ++ <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01174"></a>01174 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01175"></a>01175 }
|
|
<a name="l01176"></a>01176 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01177"></a><a class="code" href="a00328.html#abb81d650a517c5a75feb7277fa1ffb0f">01177</a> <a class="code" href="a00328.html">const_iterator</a> &<a class="code" href="a00328.html#abb81d650a517c5a75feb7277fa1ffb0f">operator -- </a>() {
|
|
<a name="l01178"></a>01178 -- <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>;
|
|
<a name="l01179"></a>01179 -- <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01180"></a>01180 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01181"></a>01181 }
|
|
<a name="l01182"></a>01182 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01183"></a><a class="code" href="a00328.html#a902ce7dc5cd50d4a0831a35661a1608a">01183</a> <a class="code" href="a00328.html">const_iterator</a> &<a class="code" href="a00328.html#a902ce7dc5cd50d4a0831a35661a1608a">operator += </a>(<a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">difference_type</a> n) {
|
|
<a name="l01184"></a>01184 <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> += n;
|
|
<a name="l01185"></a>01185 <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> += n;
|
|
<a name="l01186"></a>01186 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01187"></a>01187 }
|
|
<a name="l01188"></a>01188 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01189"></a><a class="code" href="a00328.html#af171e51d7c1df0e9b57d1eb67c4ad96d">01189</a> <a class="code" href="a00328.html">const_iterator</a> &<a class="code" href="a00328.html#af171e51d7c1df0e9b57d1eb67c4ad96d">operator -= </a>(<a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">difference_type</a> n) {
|
|
<a name="l01190"></a>01190 <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> -= n;
|
|
<a name="l01191"></a>01191 <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> -= n;
|
|
<a name="l01192"></a>01192 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01193"></a>01193 }
|
|
<a name="l01194"></a>01194 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01195"></a><a class="code" href="a00328.html#acd19d3d7b6c4bc183476cd3b78ff4685">01195</a> <a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">difference_type</a> <a class="code" href="a00328.html#acd19d3d7b6c4bc183476cd3b78ff4685">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00328.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01196"></a>01196 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01197"></a>01197 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> - it.<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>, <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> - it.<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>);
|
|
<a name="l01198"></a>01198 }
|
|
<a name="l01199"></a>01199
|
|
<a name="l01200"></a>01200 <span class="comment">// Dereference</span>
|
|
<a name="l01201"></a>01201 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01202"></a><a class="code" href="a00328.html#ad4daf62df470e6f64c65a777e2febbe9">01202</a> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">const_reference</a> <a class="code" href="a00328.html#ad4daf62df470e6f64c65a777e2febbe9">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01203"></a>01203 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l01204"></a>01204 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (*<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>, *<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>);
|
|
<a name="l01205"></a>01205 }
|
|
<a name="l01206"></a>01206 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01207"></a><a class="code" href="a00328.html#adbdc631e4e2ae74ecb3f2f4310ad5f67">01207</a> <a class="code" href="a00327.html#a69a8d35b128887250071e38103319fe3">const_reference</a> <a class="code" href="a00328.html#adbdc631e4e2ae74ecb3f2f4310ad5f67">operator [] </a>(<a class="code" href="a00328.html#ab47c2fe8d5df238c4e9010cb81131292">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01208"></a>01208 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01209"></a>01209 }
|
|
<a name="l01210"></a>01210
|
|
<a name="l01211"></a>01211 <span class="comment">// Index</span>
|
|
<a name="l01212"></a>01212 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01213"></a><a class="code" href="a00328.html#abd6857d19d9fcf39c93f49e1aeae6f6b">01213</a> <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> <a class="code" href="a00328.html#abd6857d19d9fcf39c93f49e1aeae6f6b">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01214"></a>01214 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>.index (), <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>.index ());
|
|
<a name="l01215"></a>01215 }
|
|
<a name="l01216"></a>01216
|
|
<a name="l01217"></a>01217 <span class="comment">// Assignment</span>
|
|
<a name="l01218"></a>01218 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01219"></a><a class="code" href="a00328.html#ad2ccbff3a437f6e2b2cbd07cd926a7b7">01219</a> <a class="code" href="a00328.html">const_iterator</a> &<a class="code" href="a00328.html#ad2ccbff3a437f6e2b2cbd07cd926a7b7">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00328.html">const_iterator</a> &it) {
|
|
<a name="l01220"></a>01220 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l01221"></a>01221 <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> = it.<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>;
|
|
<a name="l01222"></a>01222 <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> = it.<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01223"></a>01223 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01224"></a>01224 }
|
|
<a name="l01225"></a>01225
|
|
<a name="l01226"></a>01226 <span class="comment">// Comparison</span>
|
|
<a name="l01227"></a>01227 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01228"></a><a class="code" href="a00328.html#ad0b1bda2c50c8190ec032784ea6bea45">01228</a> <span class="keywordtype">bool</span> <a class="code" href="a00328.html#ad0b1bda2c50c8190ec032784ea6bea45">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00328.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01229"></a>01229 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01230"></a>01230 <span class="keywordflow">return</span> <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> == it.<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> && <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> == it.<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01231"></a>01231 }
|
|
<a name="l01232"></a>01232 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01233"></a><a class="code" href="a00328.html#a4e0856aac9149055a95a5baffd1fa478">01233</a> <span class="keywordtype">bool</span> <a class="code" href="a00328.html#a4e0856aac9149055a95a5baffd1fa478">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00328.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01234"></a>01234 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01235"></a>01235 <span class="keywordflow">return</span> <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> < it.<a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a> && <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a> < it.<a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01236"></a>01236 }
|
|
<a name="l01237"></a>01237
|
|
<a name="l01238"></a>01238 <span class="keyword">private</span>:
|
|
<a name="l01239"></a><a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">01239</a> <a class="code" href="a00327.html#a0dd9139cedceaddd59962005b8b03ea0">const_subiterator1_type</a> <a class="code" href="a00328.html#a186bd687c1756230954ea519b3d03b91">it1_</a>;
|
|
<a name="l01240"></a><a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">01240</a> <a class="code" href="a00327.html#a2700edec92ea8e6190b02b8871c8c334">const_subiterator2_type</a> <a class="code" href="a00328.html#a42ab8d8e9eec516c1527d711ed17b19a">it2_</a>;
|
|
<a name="l01241"></a>01241 };
|
|
<a name="l01242"></a>01242
|
|
<a name="l01243"></a>01243 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01244"></a><a class="code" href="a00327.html#a48f7ec5dbf8d51e12163badea84ae4ec">01244</a> <a class="code" href="a00328.html">const_iterator</a> <a class="code" href="a00327.html#a48f7ec5dbf8d51e12163badea84ae4ec">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01245"></a>01245 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">find</a> (0);
|
|
<a name="l01246"></a>01246 }
|
|
<a name="l01247"></a>01247 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01248"></a><a class="code" href="a00327.html#a240e86f51c0be6abd3b09c5d525ade1f">01248</a> <a class="code" href="a00328.html">const_iterator</a> <a class="code" href="a00327.html#a240e86f51c0be6abd3b09c5d525ade1f">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01249"></a>01249 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">find</a> (<a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">size</a> ());
|
|
<a name="l01250"></a>01250 }
|
|
<a name="l01251"></a>01251
|
|
<a name="l01252"></a><a class="code" href="a00329.html">01252</a> <span class="keyword">class </span><a class="code" href="a00329.html">iterator</a>:
|
|
<a name="l01253"></a>01253 <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><matrix_vector_range>,
|
|
<a name="l01254"></a>01254 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator1::iterator_category>::template
|
|
<a name="l01255"></a>01255 iterator_base<iterator, value_type>::type {
|
|
<a name="l01256"></a>01256 <span class="keyword">public</span>:
|
|
<a name="l01257"></a>01257 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l01258"></a>01258 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l01259"></a>01259 <a class="code" href="a00329.html#a41c0e963bee78d4b18a5326a9e4a0275">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l01260"></a>01260
|
|
<a name="l01261"></a><a class="code" href="a00329.html#a7af2cf31ce800ad7e59db1decbb1e19a">01261</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">matrix_vector_range::value_type</a> <a class="code" href="a00329.html#a7af2cf31ce800ad7e59db1decbb1e19a">value_type</a>;
|
|
<a name="l01262"></a><a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">01262</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#a37d5cfc3cb632406dcfbdbfb281ace03">matrix_vector_range::difference_type</a> <a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">difference_type</a>;
|
|
<a name="l01263"></a><a class="code" href="a00329.html#ab9bb29424bbc2b460a44e8d478b6c04b">01263</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#a9ccfcfaf5895fb1a294ba46e232905dd">matrix_vector_range::reference</a> <a class="code" href="a00329.html#ab9bb29424bbc2b460a44e8d478b6c04b">reference</a>;
|
|
<a name="l01264"></a><a class="code" href="a00329.html#ab81b830b9f0a60f0a3a94b9c5e408ac6">01264</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00327.html#ad4683b61f549f8bf34345dd604caa8d6">matrix_vector_range::value_type</a> *<a class="code" href="a00329.html#ab81b830b9f0a60f0a3a94b9c5e408ac6">pointer</a>;
|
|
<a name="l01265"></a>01265
|
|
<a name="l01266"></a>01266 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01267"></a>01267 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01268"></a><a class="code" href="a00329.html#af22d1b0f7456a9c8086ccf4208626295">01268</a> <a class="code" href="a00329.html#af22d1b0f7456a9c8086ccf4208626295">iterator</a> ():
|
|
<a name="l01269"></a>01269 <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><<a class="code" href="a00327.html">self_type</a>> (), <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> (), <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> () {}
|
|
<a name="l01270"></a>01270 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01271"></a><a class="code" href="a00329.html#a61237a2c05fa2e7f920b3bb2abfa9fe6">01271</a> <a class="code" href="a00329.html#af22d1b0f7456a9c8086ccf4208626295">iterator</a> (<a class="code" href="a00327.html">self_type</a> &mvr, <span class="keyword">const</span> <a class="code" href="a00327.html#a24659515f66b178561aa72299929518c">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00327.html#ad3f536db25d9b83e29b6c6e125060062">subiterator2_type</a> &it2):
|
|
<a name="l01272"></a>01272 <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><<a class="code" href="a00327.html">self_type</a>> (mvr), <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> (it1), <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> (it2) {}
|
|
<a name="l01273"></a>01273
|
|
<a name="l01274"></a>01274 <span class="comment">// Arithmetic</span>
|
|
<a name="l01275"></a>01275 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01276"></a><a class="code" href="a00329.html#ae538ea87856e40a2bc1b48a46c93b605">01276</a> <a class="code" href="a00329.html">iterator</a> &<a class="code" href="a00329.html#ae538ea87856e40a2bc1b48a46c93b605">operator ++ </a>() {
|
|
<a name="l01277"></a>01277 ++ <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>;
|
|
<a name="l01278"></a>01278 ++ <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01279"></a>01279 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<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="a00329.html#a77478a67882a2454fb3a44866829368f">01282</a> <a class="code" href="a00329.html">iterator</a> &<a class="code" href="a00329.html#a77478a67882a2454fb3a44866829368f">operator -- </a>() {
|
|
<a name="l01283"></a>01283 -- <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>;
|
|
<a name="l01284"></a>01284 -- <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01285"></a>01285 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01286"></a>01286 }
|
|
<a name="l01287"></a>01287 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01288"></a><a class="code" href="a00329.html#a679eb5828540b5fe9303e7f1f06637d9">01288</a> <a class="code" href="a00329.html">iterator</a> &<a class="code" href="a00329.html#a679eb5828540b5fe9303e7f1f06637d9">operator += </a>(<a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">difference_type</a> n) {
|
|
<a name="l01289"></a>01289 <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> += n;
|
|
<a name="l01290"></a>01290 <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> += n;
|
|
<a name="l01291"></a>01291 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01292"></a>01292 }
|
|
<a name="l01293"></a>01293 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01294"></a><a class="code" href="a00329.html#a75eef7b92e93d6236eb06b4924fa007e">01294</a> <a class="code" href="a00329.html">iterator</a> &<a class="code" href="a00329.html#a75eef7b92e93d6236eb06b4924fa007e">operator -= </a>(<a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">difference_type</a> n) {
|
|
<a name="l01295"></a>01295 <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> -= n;
|
|
<a name="l01296"></a>01296 <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> -= n;
|
|
<a name="l01297"></a>01297 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01298"></a>01298 }
|
|
<a name="l01299"></a>01299 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01300"></a><a class="code" href="a00329.html#a2687896ad85723a44a5b512a04f98464">01300</a> <a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">difference_type</a> <a class="code" href="a00329.html#a2687896ad85723a44a5b512a04f98464">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00329.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01301"></a>01301 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01302"></a>01302 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> - it.<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>, <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> - it.<a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>);
|
|
<a name="l01303"></a>01303 }
|
|
<a name="l01304"></a>01304
|
|
<a name="l01305"></a>01305 <span class="comment">// Dereference</span>
|
|
<a name="l01306"></a>01306 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01307"></a><a class="code" href="a00329.html#acfc68cfbb91c5867966a76747fbbff88">01307</a> <a class="code" href="a00329.html#ab9bb29424bbc2b460a44e8d478b6c04b">reference</a> <a class="code" href="a00329.html#acfc68cfbb91c5867966a76747fbbff88">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01308"></a>01308 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l01309"></a>01309 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a> (*<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>, *<a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>);
|
|
<a name="l01310"></a>01310 }
|
|
<a name="l01311"></a>01311 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01312"></a><a class="code" href="a00329.html#a6c6f00f0aef8348e2fa2aebe9298fca2">01312</a> <a class="code" href="a00329.html#ab9bb29424bbc2b460a44e8d478b6c04b">reference</a> <a class="code" href="a00329.html#a6c6f00f0aef8348e2fa2aebe9298fca2">operator [] </a>(<a class="code" href="a00329.html#a3164215ea13f14287725b32e21cffef5">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01313"></a>01313 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01314"></a>01314 }
|
|
<a name="l01315"></a>01315
|
|
<a name="l01316"></a>01316 <span class="comment">// Index</span>
|
|
<a name="l01317"></a>01317 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01318"></a><a class="code" href="a00329.html#a9f6c3679de9a78a5b6d825fddb4cef3b">01318</a> <a class="code" href="a00327.html#a4845e7d75e341231fee1773292aa5f98">size_type</a> <a class="code" href="a00329.html#a9f6c3679de9a78a5b6d825fddb4cef3b">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01319"></a>01319 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>.index (), <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>.index ());
|
|
<a name="l01320"></a>01320 }
|
|
<a name="l01321"></a>01321
|
|
<a name="l01322"></a>01322 <span class="comment">// Assignment</span>
|
|
<a name="l01323"></a>01323 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01324"></a><a class="code" href="a00329.html#a9dda3c68db6cf8f5f33dd22a4c453190">01324</a> <a class="code" href="a00329.html">iterator</a> &<a class="code" href="a00329.html#a9dda3c68db6cf8f5f33dd22a4c453190">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00329.html">iterator</a> &it) {
|
|
<a name="l01325"></a>01325 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l01326"></a>01326 <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> = it.<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>;
|
|
<a name="l01327"></a>01327 <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> = it.<a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01328"></a>01328 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01329"></a>01329 }
|
|
<a name="l01330"></a>01330
|
|
<a name="l01331"></a>01331 <span class="comment">// Comparison</span>
|
|
<a name="l01332"></a>01332 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01333"></a><a class="code" href="a00329.html#a14d54825dbf889f1c7dc6d6d63b2c942">01333</a> <span class="keywordtype">bool</span> <a class="code" href="a00329.html#a14d54825dbf889f1c7dc6d6d63b2c942">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00329.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01334"></a>01334 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01335"></a>01335 <span class="keywordflow">return</span> <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> == it.<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> && <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> == it.<a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01336"></a>01336 }
|
|
<a name="l01337"></a>01337 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01338"></a><a class="code" href="a00329.html#a956bc15e16f86d3ac2eb96f605679dcd">01338</a> <span class="keywordtype">bool</span> <a class="code" href="a00329.html#a956bc15e16f86d3ac2eb96f605679dcd">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00329.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01339"></a>01339 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01340"></a>01340 <span class="keywordflow">return</span> <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> < it.<a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a> && <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a> < it.<a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01341"></a>01341 }
|
|
<a name="l01342"></a>01342
|
|
<a name="l01343"></a>01343 <span class="keyword">private</span>:
|
|
<a name="l01344"></a><a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">01344</a> <a class="code" href="a00327.html#a24659515f66b178561aa72299929518c">subiterator1_type</a> <a class="code" href="a00329.html#adf207f91e2a3f185a4282f272834dd80">it1_</a>;
|
|
<a name="l01345"></a><a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">01345</a> <a class="code" href="a00327.html#ad3f536db25d9b83e29b6c6e125060062">subiterator2_type</a> <a class="code" href="a00329.html#a89bf5eed49a3008db01bfb5f1f8502e0">it2_</a>;
|
|
<a name="l01346"></a>01346
|
|
<a name="l01347"></a><a class="code" href="a00329.html#ac220ce1c155db1ac44146c12d178056f">01347</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00328.html">const_iterator</a>;
|
|
<a name="l01348"></a>01348 };
|
|
<a name="l01349"></a>01349
|
|
<a name="l01350"></a>01350 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01351"></a><a class="code" href="a00327.html#a926b9cbf8a2d22101a9a1b758488f13f">01351</a> <a class="code" href="a00329.html">iterator</a> <a class="code" href="a00327.html#a926b9cbf8a2d22101a9a1b758488f13f">begin</a> () {
|
|
<a name="l01352"></a>01352 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">find</a> (0);
|
|
<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="a00327.html#a845499ebf0c08aeeb18beb5913ec5f55">01355</a> <a class="code" href="a00329.html">iterator</a> <a class="code" href="a00327.html#a845499ebf0c08aeeb18beb5913ec5f55">end</a> () {
|
|
<a name="l01356"></a>01356 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a118333e171791f8308d9b8ed50687ccc">find</a> (<a class="code" href="a00327.html#a179ed81a1369c18b1616865b129ae83a">size</a> ());
|
|
<a name="l01357"></a>01357 }
|
|
<a name="l01358"></a>01358
|
|
<a name="l01359"></a>01359 <span class="comment">// Reverse iterator</span>
|
|
<a name="l01360"></a><a class="code" href="a00327.html#a1c2cd8f7d77c8e588f37d93302877253">01360</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<const_iterator></a> <a class="code" href="a00327.html#a1c2cd8f7d77c8e588f37d93302877253">const_reverse_iterator</a>;
|
|
<a name="l01361"></a><a class="code" href="a00327.html#a07dd577faab38b9ca55235a6993e81be">01361</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<iterator></a> <a class="code" href="a00327.html#a07dd577faab38b9ca55235a6993e81be">reverse_iterator</a>;
|
|
<a name="l01362"></a>01362
|
|
<a name="l01363"></a>01363 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01364"></a><a class="code" href="a00327.html#afc280d8fe0135b9d1bdc33b22e53e3c3">01364</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00327.html#afc280d8fe0135b9d1bdc33b22e53e3c3">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01365"></a>01365 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a1c2cd8f7d77c8e588f37d93302877253">const_reverse_iterator</a> (<a class="code" href="a00327.html#a240e86f51c0be6abd3b09c5d525ade1f">end</a> ());
|
|
<a name="l01366"></a>01366 }
|
|
<a name="l01367"></a>01367 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01368"></a><a class="code" href="a00327.html#a822f8023ff76bc57278882d3b6625732">01368</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00327.html#a822f8023ff76bc57278882d3b6625732">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01369"></a>01369 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a1c2cd8f7d77c8e588f37d93302877253">const_reverse_iterator</a> (<a class="code" href="a00327.html#a48f7ec5dbf8d51e12163badea84ae4ec">begin</a> ());
|
|
<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="a00327.html#a9eb6b5ac511d25ba227458e8553e03de">01372</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00327.html#a9eb6b5ac511d25ba227458e8553e03de">rbegin</a> () {
|
|
<a name="l01373"></a>01373 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a07dd577faab38b9ca55235a6993e81be">reverse_iterator</a> (<a class="code" href="a00327.html#a240e86f51c0be6abd3b09c5d525ade1f">end</a> ());
|
|
<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="a00327.html#acea34269b39446981b35b07e23965cd5">01376</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00327.html#acea34269b39446981b35b07e23965cd5">rend</a> () {
|
|
<a name="l01377"></a>01377 <span class="keywordflow">return</span> <a class="code" href="a00327.html#a07dd577faab38b9ca55235a6993e81be">reverse_iterator</a> (<a class="code" href="a00327.html#a48f7ec5dbf8d51e12163badea84ae4ec">begin</a> ());
|
|
<a name="l01378"></a>01378 }
|
|
<a name="l01379"></a>01379
|
|
<a name="l01380"></a>01380 <span class="keyword">private</span>:
|
|
<a name="l01381"></a><a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">01381</a> <a class="code" href="a00327.html#a61518b36f96e7aff9d7663d1604f4903">matrix_closure_type</a> <a class="code" href="a00327.html#aed55b996a5c08009310d04a002ecf7c4">data_</a>;
|
|
<a name="l01382"></a><a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">01382</a> <a class="code" href="a00001.html">range_type</a> <a class="code" href="a00327.html#a97fb9e4fd5aec43e1f65a1bc6ae306c9">r1_</a>;
|
|
<a name="l01383"></a><a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">01383</a> <a class="code" href="a00001.html">range_type</a> <a class="code" href="a00327.html#af188638c0183cbaf1e4f73ad23ef7173">r2_</a>;
|
|
<a name="l01384"></a>01384 };
|
|
<a name="l01385"></a>01385
|
|
<a name="l01386"></a>01386 <span class="comment">// Specialize temporary</span>
|
|
<a name="l01387"></a>01387 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l01388"></a><a class="code" href="a00572.html">01388</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00327.html">matrix_vector_range</a><M> >
|
|
<a name="l01389"></a>01389 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l01390"></a>01390 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l01391"></a><a class="code" href="a00558.html">01391</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00327.html">matrix_vector_range</a><M> >
|
|
<a name="l01392"></a>01392 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l01393"></a>01393
|
|
<a name="l01394"></a>01394 <span class="comment">// Matrix based vector slice class</span>
|
|
<a name="l01395"></a>01395 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l01396"></a><a class="code" href="a00330.html">01396</a> <span class="keyword">class </span><a class="code" href="a00330.html">matrix_vector_slice</a>:
|
|
<a name="l01397"></a>01397 <span class="keyword">public</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression</a><matrix_vector_slice<M> > {
|
|
<a name="l01398"></a>01398
|
|
<a name="l01399"></a><a class="code" href="a00330.html#ab67cf68ed15ddd6481fe01d2f758ec27">01399</a> <span class="keyword">typedef</span> <a class="code" href="a00330.html">matrix_vector_slice<M></a> <a class="code" href="a00330.html#ab67cf68ed15ddd6481fe01d2f758ec27">self_type</a>;
|
|
<a name="l01400"></a>01400 <span class="keyword">public</span>:
|
|
<a name="l01401"></a>01401 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l01402"></a>01402 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<self_type>::operator </a>();
|
|
<a name="l01403"></a>01403 <span class="preprocessor">#endif</span>
|
|
<a name="l01404"></a><a class="code" href="a00330.html#af023f4ea46473472b9a7c11610c4cc76">01404</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00330.html#af023f4ea46473472b9a7c11610c4cc76">matrix_type</a>;
|
|
<a name="l01405"></a><a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">01405</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a>;
|
|
<a name="l01406"></a><a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">01406</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">difference_type</a>;
|
|
<a name="l01407"></a><a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">01407</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">value_type</a>;
|
|
<a name="l01408"></a><a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">01408</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">const_reference</a>;
|
|
<a name="l01409"></a>01409 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l01410"></a>01410 <span class="keyword">typename</span> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">M::const_reference</a>,
|
|
<a name="l01411"></a><a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">01411</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">reference</a>;
|
|
<a name="l01412"></a>01412 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l01413"></a>01413 <span class="keyword">typename</span> <a class="code" href="a00330.html#a6e4fb8af4330b05a7d2da27b8d4ffff1">M::const_closure_type</a>,
|
|
<a name="l01414"></a><a class="code" href="a00330.html#acba866e1685fc276ee68e62a51280245">01414</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00330.html#acba866e1685fc276ee68e62a51280245">matrix_closure_type</a>;
|
|
<a name="l01415"></a><a class="code" href="a00330.html#a8316c01692c78ee55561473c359bb531">01415</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> <a class="code" href="a00330.html#a8316c01692c78ee55561473c359bb531">range_type</a>;
|
|
<a name="l01416"></a><a class="code" href="a00330.html#af07cfc5dba2eb2aeb17faa6ea307d249">01416</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<size_type, difference_type></a> <a class="code" href="a00330.html#af07cfc5dba2eb2aeb17faa6ea307d249">slice_type</a>;
|
|
<a name="l01417"></a><a class="code" href="a00330.html#a6e4fb8af4330b05a7d2da27b8d4ffff1">01417</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00330.html">self_type</a> <a class="code" href="a00330.html#a6e4fb8af4330b05a7d2da27b8d4ffff1">const_closure_type</a>;
|
|
<a name="l01418"></a><a class="code" href="a00330.html#ac3a74cb52999a78d57f4924bad6c2b26">01418</a> <span class="keyword">typedef</span> <a class="code" href="a00330.html">self_type</a> <a class="code" href="a00330.html#ac3a74cb52999a78d57f4924bad6c2b26">closure_type</a>;
|
|
<a name="l01419"></a>01419 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00330.html#a8f4b01e8f9a6439670809cb9d7b9fe8f">M::storage_category</a>,
|
|
<a name="l01420"></a><a class="code" href="a00330.html#a8f4b01e8f9a6439670809cb9d7b9fe8f">01420</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00330.html#a8f4b01e8f9a6439670809cb9d7b9fe8f">::storage_category</a> <a class="code" href="a00330.html#a8f4b01e8f9a6439670809cb9d7b9fe8f">storage_category</a>;
|
|
<a name="l01421"></a>01421
|
|
<a name="l01422"></a>01422 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01423"></a>01423 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01424"></a><a class="code" href="a00330.html#af7dbe5021e236ce7ee6b222cceea6203">01424</a> <a class="code" href="a00330.html#af7dbe5021e236ce7ee6b222cceea6203">matrix_vector_slice</a> (<a class="code" href="a00330.html#af023f4ea46473472b9a7c11610c4cc76">matrix_type</a> &<a class="code" href="a00330.html#ab61fa45187b89405443a6c63a702adfd">data</a>, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s1, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s2):
|
|
<a name="l01425"></a>01425 <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (data), <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> (s1.preprocess (data.<a class="code" href="a00658.html#a979596ba6e2373d596e34c2a73809cf6">size1</a> ())), <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a> (s2.preprocess (data.<a class="code" href="a00658.html#a981c2ed31bf42bd03499d4ee32444141">size2</a> ())) {
|
|
<a name="l01426"></a>01426 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l01427"></a>01427 <span class="comment">// BOOST_UBLAS_CHECK (s1_.start () <= data_.size1 () &&</span>
|
|
<a name="l01428"></a>01428 <span class="comment">// s1_.start () + s1_.stride () * (s1_.size () - (s1_.size () > 0)) <= data_.size1 (), bad_index ());</span>
|
|
<a name="l01429"></a>01429 <span class="comment">// BOOST_UBLAS_CHECK (s2_.start () <= data_.size2 () &&</span>
|
|
<a name="l01430"></a>01430 <span class="comment">// s2_.start () + s2_.stride () * (s2_.size () - (s2_.size () > 0)) <= data_.size2 (), bad_index ());</span>
|
|
<a name="l01431"></a>01431 }
|
|
<a name="l01432"></a>01432
|
|
<a name="l01433"></a>01433 <span class="comment">// Accessors</span>
|
|
<a name="l01434"></a>01434 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01435"></a><a class="code" href="a00330.html#a67813ffa333af9fd4217ed50e7a4bfbe">01435</a> <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> <a class="code" href="a00330.html#a67813ffa333af9fd4217ed50e7a4bfbe">start1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01436"></a>01436 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> ();
|
|
<a name="l01437"></a>01437 }
|
|
<a name="l01438"></a>01438 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01439"></a><a class="code" href="a00330.html#a61b222919e9f448e6928a9803e1e2850">01439</a> <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> <a class="code" href="a00330.html#a61b222919e9f448e6928a9803e1e2850">start2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01440"></a>01440 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> ();
|
|
<a name="l01441"></a>01441 }
|
|
<a name="l01442"></a>01442 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01443"></a><a class="code" href="a00330.html#aaeb247f2616ccf5fb53589dde82334b0">01443</a> <a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">difference_type</a> <a class="code" href="a00330.html#aaeb247f2616ccf5fb53589dde82334b0">stride1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01444"></a>01444 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ();
|
|
<a name="l01445"></a>01445 }
|
|
<a name="l01446"></a>01446 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01447"></a><a class="code" href="a00330.html#a1a280d1bf026da083a1ce963a60d1cb6">01447</a> <a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">difference_type</a> <a class="code" href="a00330.html#a1a280d1bf026da083a1ce963a60d1cb6">stride2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01448"></a>01448 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ();
|
|
<a name="l01449"></a>01449 }
|
|
<a name="l01450"></a>01450 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01451"></a><a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">01451</a> <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> <a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01452"></a>01452 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> (), <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> ());
|
|
<a name="l01453"></a>01453 }
|
|
<a name="l01454"></a>01454
|
|
<a name="l01455"></a>01455 <span class="comment">// Storage accessors</span>
|
|
<a name="l01456"></a>01456 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01457"></a><a class="code" href="a00330.html#ab61fa45187b89405443a6c63a702adfd">01457</a> <span class="keyword">const</span> <a class="code" href="a00330.html#acba866e1685fc276ee68e62a51280245">matrix_closure_type</a> &<a class="code" href="a00330.html#ab61fa45187b89405443a6c63a702adfd">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01458"></a>01458 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a>;
|
|
<a name="l01459"></a>01459 }
|
|
<a name="l01460"></a>01460 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01461"></a><a class="code" href="a00330.html#a0a6834005ac11bb3387a315e4bddead4">01461</a> <a class="code" href="a00330.html#acba866e1685fc276ee68e62a51280245">matrix_closure_type</a> &<a class="code" href="a00330.html#a0a6834005ac11bb3387a315e4bddead4">data</a> () {
|
|
<a name="l01462"></a>01462 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a>;
|
|
<a name="l01463"></a>01463 }
|
|
<a name="l01464"></a>01464
|
|
<a name="l01465"></a>01465 <span class="comment">// Element access</span>
|
|
<a name="l01466"></a>01466 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l01467"></a>01467 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01468"></a><a class="code" href="a00330.html#a682ad4600484c205e0b2658297c292be">01468</a> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">const_reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01469"></a>01469 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (<a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> (i), <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a> (i));
|
|
<a name="l01470"></a>01470 }
|
|
<a name="l01471"></a>01471 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01472"></a><a class="code" href="a00330.html#a9d42ddb7a97bf2f5c4cc1f953bca1240">01472</a> <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i) {
|
|
<a name="l01473"></a>01473 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (<a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> (i), <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a> (i));
|
|
<a name="l01474"></a>01474 }
|
|
<a name="l01475"></a>01475
|
|
<a name="l01476"></a>01476 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01477"></a><a class="code" href="a00330.html#a83f86db1c54d1c615d3b93752f16405b">01477</a> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">const_reference</a> <a class="code" href="a00330.html#a83f86db1c54d1c615d3b93752f16405b">operator [] </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01478"></a>01478 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01479"></a>01479 }
|
|
<a name="l01480"></a>01480 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01481"></a><a class="code" href="a00330.html#aabf294be0283cf099c83f7773d48e0c0">01481</a> <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">reference</a> <a class="code" href="a00330.html#a83f86db1c54d1c615d3b93752f16405b">operator [] </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i) {
|
|
<a name="l01482"></a>01482 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01483"></a>01483 }
|
|
<a name="l01484"></a>01484 <span class="preprocessor">#else</span>
|
|
<a name="l01485"></a>01485 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01486"></a>01486 <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01487"></a>01487 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (<a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> (i), <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a> (i));
|
|
<a name="l01488"></a>01488 }
|
|
<a name="l01489"></a>01489
|
|
<a name="l01490"></a>01490 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01491"></a>01491 <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">reference</a> <a class="code" href="a00330.html#a83f86db1c54d1c615d3b93752f16405b">operator [] </a>(<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01492"></a>01492 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01493"></a>01493 }
|
|
<a name="l01494"></a>01494 <span class="preprocessor">#endif</span>
|
|
<a name="l01495"></a>01495 <span class="preprocessor"></span>
|
|
<a name="l01496"></a>01496 <span class="comment">// Assignment</span>
|
|
<a name="l01497"></a>01497 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01498"></a><a class="code" href="a00330.html#aa0f074be8ccb0fc367b11a23851da3a5">01498</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#aa0f074be8ccb0fc367b11a23851da3a5">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00330.html">matrix_vector_slice</a> &mvs) {
|
|
<a name="l01499"></a>01499 <span class="comment">// ISSUE need a temporary, proxy can be overlaping alias</span>
|
|
<a name="l01500"></a>01500 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (mvs));
|
|
<a name="l01501"></a>01501 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01502"></a>01502 }
|
|
<a name="l01503"></a>01503 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01504"></a><a class="code" href="a00330.html#a6cee48ac9fc9d21569d904342a8bfdb0">01504</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a6cee48ac9fc9d21569d904342a8bfdb0">assign_temporary</a> (<a class="code" href="a00330.html">matrix_vector_slice</a> &mvs) {
|
|
<a name="l01505"></a>01505 <span class="comment">// assign elements, proxied container remains the same</span>
|
|
<a name="l01506"></a>01506 vector_assign<scalar_assign> (*<span class="keyword">this</span>, mvs);
|
|
<a name="l01507"></a>01507 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01508"></a>01508 }
|
|
<a name="l01509"></a>01509 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01510"></a>01510 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01511"></a><a class="code" href="a00330.html#a26f0a01f1d2472638c416943fe96a419">01511</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#aa0f074be8ccb0fc367b11a23851da3a5">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01512"></a>01512 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (ae));
|
|
<a name="l01513"></a>01513 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01514"></a>01514 }
|
|
<a name="l01515"></a>01515 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01516"></a>01516 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01517"></a><a class="code" href="a00330.html#a74af5dc2087140170f7e45a12c1bfeec">01517</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a74af5dc2087140170f7e45a12c1bfeec">assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01518"></a>01518 vector_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01519"></a>01519 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01520"></a>01520 }
|
|
<a name="l01521"></a>01521 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01522"></a>01522 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01523"></a><a class="code" href="a00330.html#afa972876c1628123b8aaac29ce858240">01523</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#afa972876c1628123b8aaac29ce858240">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01524"></a>01524 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l01525"></a>01525 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01526"></a>01526 }
|
|
<a name="l01527"></a>01527 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01528"></a>01528 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01529"></a><a class="code" href="a00330.html#a789e1cfb3e4d3f58daa097b861c04f8b">01529</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a789e1cfb3e4d3f58daa097b861c04f8b">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01530"></a>01530 vector_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01531"></a>01531 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01532"></a>01532 }
|
|
<a name="l01533"></a>01533 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01534"></a>01534 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01535"></a><a class="code" href="a00330.html#a4a521dcf759056dde354a7d34aaadbe8">01535</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a4a521dcf759056dde354a7d34aaadbe8">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01536"></a>01536 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l01537"></a>01537 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01538"></a>01538 }
|
|
<a name="l01539"></a>01539 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01540"></a>01540 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01541"></a><a class="code" href="a00330.html#ae7a2f7ab082c2936a732035ca7096971">01541</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#ae7a2f7ab082c2936a732035ca7096971">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01542"></a>01542 vector_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01543"></a>01543 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01544"></a>01544 }
|
|
<a name="l01545"></a>01545 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l01546"></a>01546 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01547"></a><a class="code" href="a00330.html#a8ffb47a72dbb955734746d25f2d878ae">01547</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a8ffb47a72dbb955734746d25f2d878ae">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l01548"></a>01548 vector_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l01549"></a>01549 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01550"></a>01550 }
|
|
<a name="l01551"></a>01551 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l01552"></a>01552 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01553"></a><a class="code" href="a00330.html#a77af9efebdf1a1851bcfa05a632406f4">01553</a> <a class="code" href="a00330.html">matrix_vector_slice</a> &<a class="code" href="a00330.html#a77af9efebdf1a1851bcfa05a632406f4">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l01554"></a>01554 vector_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l01555"></a>01555 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01556"></a>01556 }
|
|
<a name="l01557"></a>01557
|
|
<a name="l01558"></a>01558 <span class="comment">// Closure comparison</span>
|
|
<a name="l01559"></a>01559 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01560"></a><a class="code" href="a00330.html#a9dd8fde8e1e233f1ad9cfd96fb392038">01560</a> <span class="keywordtype">bool</span> <a class="code" href="a00330.html#a9dd8fde8e1e233f1ad9cfd96fb392038">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00330.html">matrix_vector_slice</a> &mvs)<span class="keyword"> const </span>{
|
|
<a name="l01561"></a>01561 <span class="keywordflow">return</span> (*this).data_.same_closure (mvs.<a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a>);
|
|
<a name="l01562"></a>01562 }
|
|
<a name="l01563"></a>01563
|
|
<a name="l01564"></a>01564 <span class="comment">// Comparison</span>
|
|
<a name="l01565"></a>01565 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01566"></a><a class="code" href="a00330.html#a6ad0393e28fb4fe11ab927798065efe9">01566</a> <span class="keywordtype">bool</span> <a class="code" href="a00330.html#a6ad0393e28fb4fe11ab927798065efe9">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00330.html">matrix_vector_slice</a> &mvs)<span class="keyword"> const </span>{
|
|
<a name="l01567"></a>01567 <span class="keywordflow">return</span> (*this).data_ == mvs.<a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> && <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> == mvs.<a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a> && <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a> == mvs.<a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>;
|
|
<a name="l01568"></a>01568 }
|
|
<a name="l01569"></a>01569
|
|
<a name="l01570"></a>01570 <span class="comment">// Swapping</span>
|
|
<a name="l01571"></a>01571 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01572"></a><a class="code" href="a00330.html#a1eeac5bdf0e77499cbbe13f900dcd175">01572</a> <span class="keywordtype">void</span> <a class="code" href="a00330.html#a1eeac5bdf0e77499cbbe13f900dcd175">swap</a> (<a class="code" href="a00330.html">matrix_vector_slice</a> mvs) {
|
|
<a name="l01573"></a>01573 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mvs) {
|
|
<a name="l01574"></a>01574 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">size</a> () == mvs.<a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l01575"></a>01575 <span class="comment">// Sparse ranges may be nonconformant now.</span>
|
|
<a name="l01576"></a>01576 <span class="comment">// std::swap_ranges (begin (), end (), mvs.begin ());</span>
|
|
<a name="l01577"></a>01577 vector_swap<scalar_swap> (*<span class="keyword">this</span>, mvs);
|
|
<a name="l01578"></a>01578 }
|
|
<a name="l01579"></a>01579 }
|
|
<a name="l01580"></a>01580 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01581"></a><a class="code" href="a00330.html#ae7fd4f2415ef87f81f9aca4cef174466">01581</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00330.html#ae7fd4f2415ef87f81f9aca4cef174466">swap</a> (<a class="code" href="a00330.html">matrix_vector_slice</a> mvs1, <a class="code" href="a00330.html">matrix_vector_slice</a> mvs2) {
|
|
<a name="l01582"></a>01582 mvs1.<a class="code" href="a00330.html#a1eeac5bdf0e77499cbbe13f900dcd175">swap</a> (mvs2);
|
|
<a name="l01583"></a>01583 }
|
|
<a name="l01584"></a>01584
|
|
<a name="l01585"></a>01585 <span class="comment">// Iterator types</span>
|
|
<a name="l01586"></a>01586 <span class="keyword">private</span>:
|
|
<a name="l01587"></a>01587 <span class="comment">// Use slice as an index - FIXME this fails for packed assignment</span>
|
|
<a name="l01588"></a><a class="code" href="a00330.html#a05e883e20aa2a61ebcee81774c7ffc0d">01588</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00330.html#a05e883e20aa2a61ebcee81774c7ffc0d">const_subiterator1_type</a>;
|
|
<a name="l01589"></a><a class="code" href="a00330.html#a51517d20e1af6df501940047127efc19">01589</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00330.html#a51517d20e1af6df501940047127efc19">subiterator1_type</a>;
|
|
<a name="l01590"></a><a class="code" href="a00330.html#a88b4e895fddd50e75512dcf9e835164b">01590</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00330.html#a88b4e895fddd50e75512dcf9e835164b">const_subiterator2_type</a>;
|
|
<a name="l01591"></a><a class="code" href="a00330.html#a457fbf84976f2a26ce693d81f31e43c6">01591</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00330.html#a457fbf84976f2a26ce693d81f31e43c6">subiterator2_type</a>;
|
|
<a name="l01592"></a>01592
|
|
<a name="l01593"></a>01593 <span class="keyword">public</span>:
|
|
<a name="l01594"></a>01594 <span class="keyword">class </span><a class="code" href="a00331.html">const_iterator</a>;
|
|
<a name="l01595"></a>01595 <span class="keyword">class </span><a class="code" href="a00332.html">iterator</a>;
|
|
<a name="l01596"></a>01596
|
|
<a name="l01597"></a>01597 <span class="comment">// Element lookup</span>
|
|
<a name="l01598"></a>01598 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01599"></a><a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">01599</a> <a class="code" href="a00331.html">const_iterator</a> <a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">find</a> (<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01600"></a>01600 <span class="keywordflow">return</span> <a class="code" href="a00331.html">const_iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i);
|
|
<a name="l01601"></a>01601 }
|
|
<a name="l01602"></a>01602 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01603"></a><a class="code" href="a00330.html#a78686dc7003c40fc5496d55e5b9dfd35">01603</a> <a class="code" href="a00332.html">iterator</a> <a class="code" href="a00330.html#a78686dc7003c40fc5496d55e5b9dfd35">find</a> (<a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> i) {
|
|
<a name="l01604"></a>01604 <span class="keywordflow">return</span> <a class="code" href="a00332.html">iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i);
|
|
<a name="l01605"></a>01605 }
|
|
<a name="l01606"></a>01606
|
|
<a name="l01607"></a>01607 <span class="comment">// Iterators simply are indices.</span>
|
|
<a name="l01608"></a>01608
|
|
<a name="l01609"></a><a class="code" href="a00331.html">01609</a> <span class="keyword">class </span><a class="code" href="a00331.html">const_iterator</a>:
|
|
<a name="l01610"></a>01610 <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><matrix_vector_slice>,
|
|
<a name="l01611"></a>01611 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator1::iterator_category>::template
|
|
<a name="l01612"></a>01612 iterator_base<const_iterator, value_type>::type {
|
|
<a name="l01613"></a>01613 <span class="keyword">public</span>:
|
|
<a name="l01614"></a>01614 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l01615"></a>01615 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l01616"></a>01616 <a class="code" href="a00331.html#a1b6a328202d95f172015b0409ef4aaff">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l01617"></a>01617
|
|
<a name="l01618"></a><a class="code" href="a00331.html#a4a67abca8ac805e104650f6652b8ad10">01618</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">matrix_vector_slice::value_type</a> <a class="code" href="a00331.html#a4a67abca8ac805e104650f6652b8ad10">value_type</a>;
|
|
<a name="l01619"></a><a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">01619</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">matrix_vector_slice::difference_type</a> <a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">difference_type</a>;
|
|
<a name="l01620"></a><a class="code" href="a00331.html#a55e7d36b88605eb6e1f21500735f5938">01620</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">matrix_vector_slice::const_reference</a> <a class="code" href="a00331.html#a55e7d36b88605eb6e1f21500735f5938">reference</a>;
|
|
<a name="l01621"></a><a class="code" href="a00331.html#adfa14470a760771eb76de24880300ba1">01621</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">matrix_vector_slice::value_type</a> *<a class="code" href="a00331.html#adfa14470a760771eb76de24880300ba1">pointer</a>;
|
|
<a name="l01622"></a>01622
|
|
<a name="l01623"></a>01623 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01624"></a>01624 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01625"></a><a class="code" href="a00331.html#a8c00e015d35b3a5c4cf5f2d53a46c464">01625</a> <a class="code" href="a00331.html#a8c00e015d35b3a5c4cf5f2d53a46c464">const_iterator</a> ():
|
|
<a name="l01626"></a>01626 <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="a00330.html">self_type</a>> (), <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> (), <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> () {}
|
|
<a name="l01627"></a>01627 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01628"></a><a class="code" href="a00331.html#af8b26f5b24bb3d1537c5aed2528aa85a">01628</a> <a class="code" href="a00331.html#a8c00e015d35b3a5c4cf5f2d53a46c464">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00330.html">self_type</a> &mvs, <span class="keyword">const</span> <a class="code" href="a00330.html#a05e883e20aa2a61ebcee81774c7ffc0d">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00330.html#a88b4e895fddd50e75512dcf9e835164b">const_subiterator2_type</a> &it2):
|
|
<a name="l01629"></a>01629 <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="a00330.html">self_type</a>> (mvs), <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> (it1), <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> (it2) {}
|
|
<a name="l01630"></a>01630 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01631"></a><a class="code" href="a00331.html#aa13ca119583cc3f4f0d029e34c9de8d5">01631</a> <a class="code" href="a00331.html#a8c00e015d35b3a5c4cf5f2d53a46c464">const_iterator</a> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00332.html">self_type::iterator</a> &it): <span class="comment">// ISSUE vector:: stops VC8 using std::iterator here</span>
|
|
<a name="l01632"></a>01632 <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="a00330.html">self_type</a>> (it ()), <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> (it.<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>), <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> (it.<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>) {}
|
|
<a name="l01633"></a>01633
|
|
<a name="l01634"></a>01634 <span class="comment">// Arithmetic</span>
|
|
<a name="l01635"></a>01635 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01636"></a><a class="code" href="a00331.html#a0b6ed3b1bcd09f3b0a91aea37983e9dc">01636</a> <a class="code" href="a00331.html">const_iterator</a> &<a class="code" href="a00331.html#a0b6ed3b1bcd09f3b0a91aea37983e9dc">operator ++ </a>() {
|
|
<a name="l01637"></a>01637 ++ <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>;
|
|
<a name="l01638"></a>01638 ++ <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01639"></a>01639 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01640"></a>01640 }
|
|
<a name="l01641"></a>01641 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01642"></a><a class="code" href="a00331.html#a9d160ab84a2b8c77eb941a7b6c9851ab">01642</a> <a class="code" href="a00331.html">const_iterator</a> &<a class="code" href="a00331.html#a9d160ab84a2b8c77eb941a7b6c9851ab">operator -- </a>() {
|
|
<a name="l01643"></a>01643 -- <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>;
|
|
<a name="l01644"></a>01644 -- <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01645"></a>01645 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01646"></a>01646 }
|
|
<a name="l01647"></a>01647 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01648"></a><a class="code" href="a00331.html#a0db75546a46a7e125e34e03254ab4a28">01648</a> <a class="code" href="a00331.html">const_iterator</a> &<a class="code" href="a00331.html#a0db75546a46a7e125e34e03254ab4a28">operator += </a>(<a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">difference_type</a> n) {
|
|
<a name="l01649"></a>01649 <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> += n;
|
|
<a name="l01650"></a>01650 <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> += n;
|
|
<a name="l01651"></a>01651 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01652"></a>01652 }
|
|
<a name="l01653"></a>01653 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01654"></a><a class="code" href="a00331.html#aad03feec4f9b25a475a82ec33336e1a3">01654</a> <a class="code" href="a00331.html">const_iterator</a> &<a class="code" href="a00331.html#aad03feec4f9b25a475a82ec33336e1a3">operator -= </a>(<a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">difference_type</a> n) {
|
|
<a name="l01655"></a>01655 <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> -= n;
|
|
<a name="l01656"></a>01656 <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> -= n;
|
|
<a name="l01657"></a>01657 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01658"></a>01658 }
|
|
<a name="l01659"></a>01659 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01660"></a><a class="code" href="a00331.html#a91f4383932b8514b4247e8857edf088c">01660</a> <a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">difference_type</a> <a class="code" href="a00331.html#a91f4383932b8514b4247e8857edf088c">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00331.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01661"></a>01661 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01662"></a>01662 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> - it.<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>, <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> - it.<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>);
|
|
<a name="l01663"></a>01663 }
|
|
<a name="l01664"></a>01664
|
|
<a name="l01665"></a>01665 <span class="comment">// Dereference</span>
|
|
<a name="l01666"></a>01666 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01667"></a><a class="code" href="a00331.html#af74d12c9d4b4cca13a4b3053488dc7ee">01667</a> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">const_reference</a> <a class="code" href="a00331.html#af74d12c9d4b4cca13a4b3053488dc7ee">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01668"></a>01668 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l01669"></a>01669 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (*<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>, *<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>);
|
|
<a name="l01670"></a>01670 }
|
|
<a name="l01671"></a>01671 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01672"></a><a class="code" href="a00331.html#a5b47d1c37ff5ff12337082326f37a25c">01672</a> <a class="code" href="a00330.html#a951889da47163b7dfe6ceef0bec6a56f">const_reference</a> <a class="code" href="a00331.html#a5b47d1c37ff5ff12337082326f37a25c">operator [] </a>(<a class="code" href="a00331.html#aa6227a5073a8abc2d6bde1e0bcaa8bc4">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01673"></a>01673 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01674"></a>01674 }
|
|
<a name="l01675"></a>01675
|
|
<a name="l01676"></a>01676 <span class="comment">// Index</span>
|
|
<a name="l01677"></a>01677 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01678"></a><a class="code" href="a00331.html#a9d305c778c40e48d24a927f321ed4771">01678</a> <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> <a class="code" href="a00331.html#a9d305c778c40e48d24a927f321ed4771">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01679"></a>01679 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>.index (), <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>.index ());
|
|
<a name="l01680"></a>01680 }
|
|
<a name="l01681"></a>01681
|
|
<a name="l01682"></a>01682 <span class="comment">// Assignment</span>
|
|
<a name="l01683"></a>01683 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01684"></a><a class="code" href="a00331.html#a9fd8eb8b4ab29fea886e1d4ec89be8d8">01684</a> <a class="code" href="a00331.html">const_iterator</a> &<a class="code" href="a00331.html#a9fd8eb8b4ab29fea886e1d4ec89be8d8">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00331.html">const_iterator</a> &it) {
|
|
<a name="l01685"></a>01685 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l01686"></a>01686 <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> = it.<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>;
|
|
<a name="l01687"></a>01687 <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> = it.<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01688"></a>01688 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01689"></a>01689 }
|
|
<a name="l01690"></a>01690
|
|
<a name="l01691"></a>01691 <span class="comment">// Comparison</span>
|
|
<a name="l01692"></a>01692 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01693"></a><a class="code" href="a00331.html#a73c2f07f7ce97894bab75991e5c2143e">01693</a> <span class="keywordtype">bool</span> <a class="code" href="a00331.html#a73c2f07f7ce97894bab75991e5c2143e">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00331.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01694"></a>01694 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01695"></a>01695 <span class="keywordflow">return</span> <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> == it.<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> && <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> == it.<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01696"></a>01696 }
|
|
<a name="l01697"></a>01697 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01698"></a><a class="code" href="a00331.html#ae7f0e36607245772f3bab956ae518e2f">01698</a> <span class="keywordtype">bool</span> <a class="code" href="a00331.html#ae7f0e36607245772f3bab956ae518e2f">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00331.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01699"></a>01699 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01700"></a>01700 <span class="keywordflow">return</span> <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> < it.<a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a> && <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a> < it.<a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01701"></a>01701 }
|
|
<a name="l01702"></a>01702
|
|
<a name="l01703"></a>01703 <span class="keyword">private</span>:
|
|
<a name="l01704"></a><a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">01704</a> <a class="code" href="a00330.html#a05e883e20aa2a61ebcee81774c7ffc0d">const_subiterator1_type</a> <a class="code" href="a00331.html#a2d9767ced3f3aebd5ffa67b39630b257">it1_</a>;
|
|
<a name="l01705"></a><a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">01705</a> <a class="code" href="a00330.html#a88b4e895fddd50e75512dcf9e835164b">const_subiterator2_type</a> <a class="code" href="a00331.html#ab53510723938453258979bc67a9190a6">it2_</a>;
|
|
<a name="l01706"></a>01706 };
|
|
<a name="l01707"></a>01707
|
|
<a name="l01708"></a>01708 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01709"></a><a class="code" href="a00330.html#a0e8cf9b4f551ec3c0a1207f10c7b0fe2">01709</a> <a class="code" href="a00331.html">const_iterator</a> <a class="code" href="a00330.html#a0e8cf9b4f551ec3c0a1207f10c7b0fe2">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01710"></a>01710 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">find</a> (0);
|
|
<a name="l01711"></a>01711 }
|
|
<a name="l01712"></a>01712 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01713"></a><a class="code" href="a00330.html#a9664a27a3de09d6adfb2c024f4b2d642">01713</a> <a class="code" href="a00331.html">const_iterator</a> <a class="code" href="a00330.html#a9664a27a3de09d6adfb2c024f4b2d642">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01714"></a>01714 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">find</a> (<a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">size</a> ());
|
|
<a name="l01715"></a>01715 }
|
|
<a name="l01716"></a>01716
|
|
<a name="l01717"></a><a class="code" href="a00332.html">01717</a> <span class="keyword">class </span><a class="code" href="a00332.html">iterator</a>:
|
|
<a name="l01718"></a>01718 <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><matrix_vector_slice>,
|
|
<a name="l01719"></a>01719 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator1::iterator_category>::template
|
|
<a name="l01720"></a>01720 iterator_base<iterator, value_type>::type {
|
|
<a name="l01721"></a>01721 <span class="keyword">public</span>:
|
|
<a name="l01722"></a>01722 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l01723"></a>01723 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l01724"></a>01724 <a class="code" href="a00332.html#a838ab16dd660186667ad6ccddc453fdf">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l01725"></a>01725
|
|
<a name="l01726"></a><a class="code" href="a00332.html#a2e331cca408e3f9d217ab645e5f6ebb6">01726</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">matrix_vector_slice::value_type</a> <a class="code" href="a00332.html#a2e331cca408e3f9d217ab645e5f6ebb6">value_type</a>;
|
|
<a name="l01727"></a><a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">01727</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a6fbc2cb7cde1ef88a6d9fcdf0eda5f31">matrix_vector_slice::difference_type</a> <a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">difference_type</a>;
|
|
<a name="l01728"></a><a class="code" href="a00332.html#ab5805fecd7c80cf4b8ba363ecafb4854">01728</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a30928fe11be64653caa69b065de85969">matrix_vector_slice::reference</a> <a class="code" href="a00332.html#ab5805fecd7c80cf4b8ba363ecafb4854">reference</a>;
|
|
<a name="l01729"></a><a class="code" href="a00332.html#aeca67bcafd2f6b60d8b11a7c608099f6">01729</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00330.html#a316e78f85d216e4151cc616844213e8c">matrix_vector_slice::value_type</a> *<a class="code" href="a00332.html#aeca67bcafd2f6b60d8b11a7c608099f6">pointer</a>;
|
|
<a name="l01730"></a>01730
|
|
<a name="l01731"></a>01731 <span class="comment">// Construction and destruction</span>
|
|
<a name="l01732"></a>01732 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01733"></a><a class="code" href="a00332.html#ab30d0b0258b6aa8f9a11fdaf29275637">01733</a> <a class="code" href="a00332.html#ab30d0b0258b6aa8f9a11fdaf29275637">iterator</a> ():
|
|
<a name="l01734"></a>01734 <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><<a class="code" href="a00330.html">self_type</a>> (), <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> (), <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> () {}
|
|
<a name="l01735"></a>01735 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01736"></a><a class="code" href="a00332.html#a1955aedc33f27e4f8db3f22752b0d765">01736</a> <a class="code" href="a00332.html#ab30d0b0258b6aa8f9a11fdaf29275637">iterator</a> (<a class="code" href="a00330.html">self_type</a> &mvs, <span class="keyword">const</span> <a class="code" href="a00330.html#a51517d20e1af6df501940047127efc19">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00330.html#a457fbf84976f2a26ce693d81f31e43c6">subiterator2_type</a> &it2):
|
|
<a name="l01737"></a>01737 <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><<a class="code" href="a00330.html">self_type</a>> (mvs), <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> (it1), <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> (it2) {}
|
|
<a name="l01738"></a>01738
|
|
<a name="l01739"></a>01739 <span class="comment">// Arithmetic</span>
|
|
<a name="l01740"></a>01740 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01741"></a><a class="code" href="a00332.html#a4bb07d87aa4070ed63a74e29e35fdeb1">01741</a> <a class="code" href="a00332.html">iterator</a> &<a class="code" href="a00332.html#a4bb07d87aa4070ed63a74e29e35fdeb1">operator ++ </a>() {
|
|
<a name="l01742"></a>01742 ++ <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>;
|
|
<a name="l01743"></a>01743 ++ <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01744"></a>01744 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01745"></a>01745 }
|
|
<a name="l01746"></a>01746 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01747"></a><a class="code" href="a00332.html#aeecc63e4b390d8a4cdd418dcb02d2876">01747</a> <a class="code" href="a00332.html">iterator</a> &<a class="code" href="a00332.html#aeecc63e4b390d8a4cdd418dcb02d2876">operator -- </a>() {
|
|
<a name="l01748"></a>01748 -- <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>;
|
|
<a name="l01749"></a>01749 -- <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01750"></a>01750 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01751"></a>01751 }
|
|
<a name="l01752"></a>01752 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01753"></a><a class="code" href="a00332.html#a7e3dcbbd0ce74b2d02a5c28ed979828c">01753</a> <a class="code" href="a00332.html">iterator</a> &<a class="code" href="a00332.html#a7e3dcbbd0ce74b2d02a5c28ed979828c">operator += </a>(<a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">difference_type</a> n) {
|
|
<a name="l01754"></a>01754 <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> += n;
|
|
<a name="l01755"></a>01755 <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> += n;
|
|
<a name="l01756"></a>01756 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01757"></a>01757 }
|
|
<a name="l01758"></a>01758 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01759"></a><a class="code" href="a00332.html#a2a1df84edde8e089f1f1123cf4ade5ea">01759</a> <a class="code" href="a00332.html">iterator</a> &<a class="code" href="a00332.html#a2a1df84edde8e089f1f1123cf4ade5ea">operator -= </a>(<a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">difference_type</a> n) {
|
|
<a name="l01760"></a>01760 <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> -= n;
|
|
<a name="l01761"></a>01761 <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> -= n;
|
|
<a name="l01762"></a>01762 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01763"></a>01763 }
|
|
<a name="l01764"></a>01764 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01765"></a><a class="code" href="a00332.html#a9296ee38a9fdb11c28af0080a46f52eb">01765</a> <a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">difference_type</a> <a class="code" href="a00332.html#a9296ee38a9fdb11c28af0080a46f52eb">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00332.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01766"></a>01766 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01767"></a>01767 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> - it.<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>, <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> - it.<a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>);
|
|
<a name="l01768"></a>01768 }
|
|
<a name="l01769"></a>01769
|
|
<a name="l01770"></a>01770 <span class="comment">// Dereference</span>
|
|
<a name="l01771"></a>01771 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01772"></a><a class="code" href="a00332.html#a9372d0d7767e23174a4cee34ade362a3">01772</a> <a class="code" href="a00332.html#ab5805fecd7c80cf4b8ba363ecafb4854">reference</a> <a class="code" href="a00332.html#a9372d0d7767e23174a4cee34ade362a3">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l01773"></a>01773 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l01774"></a>01774 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a> (*<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>, *<a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>);
|
|
<a name="l01775"></a>01775 }
|
|
<a name="l01776"></a>01776 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01777"></a><a class="code" href="a00332.html#a6dc4e1983a260ff0a1b5f6ec8deac02b">01777</a> <a class="code" href="a00332.html#ab5805fecd7c80cf4b8ba363ecafb4854">reference</a> <a class="code" href="a00332.html#a6dc4e1983a260ff0a1b5f6ec8deac02b">operator [] </a>(<a class="code" href="a00332.html#af4af5959da1f98db7f49a0357f0a082d">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l01778"></a>01778 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l01779"></a>01779 }
|
|
<a name="l01780"></a>01780
|
|
<a name="l01781"></a>01781 <span class="comment">// Index</span>
|
|
<a name="l01782"></a>01782 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01783"></a><a class="code" href="a00332.html#a8091e1bdf5d11617492b68633102a12e">01783</a> <a class="code" href="a00330.html#a456555ce9975be2dee578cd8e5d12b8c">size_type</a> <a class="code" href="a00332.html#a8091e1bdf5d11617492b68633102a12e">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01784"></a>01784 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>.index (), <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>.index ());
|
|
<a name="l01785"></a>01785 }
|
|
<a name="l01786"></a>01786
|
|
<a name="l01787"></a>01787 <span class="comment">// Assignment</span>
|
|
<a name="l01788"></a>01788 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01789"></a><a class="code" href="a00332.html#ac29723fd56c483edf5c55ffdbf61c693">01789</a> <a class="code" href="a00332.html">iterator</a> &<a class="code" href="a00332.html#ac29723fd56c483edf5c55ffdbf61c693">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00332.html">iterator</a> &it) {
|
|
<a name="l01790"></a>01790 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l01791"></a>01791 <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> = it.<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>;
|
|
<a name="l01792"></a>01792 <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> = it.<a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01793"></a>01793 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01794"></a>01794 }
|
|
<a name="l01795"></a>01795
|
|
<a name="l01796"></a>01796 <span class="comment">// Comparison</span>
|
|
<a name="l01797"></a>01797 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01798"></a><a class="code" href="a00332.html#a0a1b2eb03c956230c48fb35f73497e13">01798</a> <span class="keywordtype">bool</span> <a class="code" href="a00332.html#a0a1b2eb03c956230c48fb35f73497e13">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00332.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01799"></a>01799 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01800"></a>01800 <span class="keywordflow">return</span> <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> == it.<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> && <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> == it.<a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01801"></a>01801 }
|
|
<a name="l01802"></a>01802 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01803"></a><a class="code" href="a00332.html#a364e23dc1dea0e707085ec01ea410693">01803</a> <span class="keywordtype">bool</span> <a class="code" href="a00332.html#a364e23dc1dea0e707085ec01ea410693">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00332.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l01804"></a>01804 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l01805"></a>01805 <span class="keywordflow">return</span> <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> < it.<a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a> && <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a> < it.<a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01806"></a>01806 }
|
|
<a name="l01807"></a>01807
|
|
<a name="l01808"></a>01808 <span class="keyword">private</span>:
|
|
<a name="l01809"></a><a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">01809</a> <a class="code" href="a00330.html#a51517d20e1af6df501940047127efc19">subiterator1_type</a> <a class="code" href="a00332.html#a252e465f17beb397c562d79414a425e2">it1_</a>;
|
|
<a name="l01810"></a><a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">01810</a> <a class="code" href="a00330.html#a457fbf84976f2a26ce693d81f31e43c6">subiterator2_type</a> <a class="code" href="a00332.html#aea424373982e8c1f87e32f38c57ac10e">it2_</a>;
|
|
<a name="l01811"></a>01811
|
|
<a name="l01812"></a><a class="code" href="a00332.html#ac220ce1c155db1ac44146c12d178056f">01812</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00331.html">const_iterator</a>;
|
|
<a name="l01813"></a>01813 };
|
|
<a name="l01814"></a>01814
|
|
<a name="l01815"></a>01815 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01816"></a><a class="code" href="a00330.html#a9f5a6e680f12abf9069b263a704e44b4">01816</a> <a class="code" href="a00332.html">iterator</a> <a class="code" href="a00330.html#a9f5a6e680f12abf9069b263a704e44b4">begin</a> () {
|
|
<a name="l01817"></a>01817 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">find</a> (0);
|
|
<a name="l01818"></a>01818 }
|
|
<a name="l01819"></a>01819 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01820"></a><a class="code" href="a00330.html#a8d8f17bc0c448f718e124671cfa422a5">01820</a> <a class="code" href="a00332.html">iterator</a> <a class="code" href="a00330.html#a8d8f17bc0c448f718e124671cfa422a5">end</a> () {
|
|
<a name="l01821"></a>01821 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a133d836b1064f0dd294b85ff3dafa848">find</a> (<a class="code" href="a00330.html#a63585438ecf3e411262793922bca849e">size</a> ());
|
|
<a name="l01822"></a>01822 }
|
|
<a name="l01823"></a>01823
|
|
<a name="l01824"></a>01824 <span class="comment">// Reverse iterator</span>
|
|
<a name="l01825"></a><a class="code" href="a00330.html#aa2b5ccf8254213cfcc5a16dea8fdbb13">01825</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<const_iterator></a> <a class="code" href="a00330.html#aa2b5ccf8254213cfcc5a16dea8fdbb13">const_reverse_iterator</a>;
|
|
<a name="l01826"></a><a class="code" href="a00330.html#a30a24bba964ec4f7714b08f47dcd6f23">01826</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<iterator></a> <a class="code" href="a00330.html#a30a24bba964ec4f7714b08f47dcd6f23">reverse_iterator</a>;
|
|
<a name="l01827"></a>01827
|
|
<a name="l01828"></a>01828 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01829"></a><a class="code" href="a00330.html#a94e009a135f18c9dadbbe388b3fd30a0">01829</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00330.html#a94e009a135f18c9dadbbe388b3fd30a0">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01830"></a>01830 <span class="keywordflow">return</span> <a class="code" href="a00330.html#aa2b5ccf8254213cfcc5a16dea8fdbb13">const_reverse_iterator</a> (<a class="code" href="a00330.html#a9664a27a3de09d6adfb2c024f4b2d642">end</a> ());
|
|
<a name="l01831"></a>01831 }
|
|
<a name="l01832"></a>01832 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01833"></a><a class="code" href="a00330.html#a67edfc8d33941879a43140425a4192ef">01833</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00330.html#a67edfc8d33941879a43140425a4192ef">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01834"></a>01834 <span class="keywordflow">return</span> <a class="code" href="a00330.html#aa2b5ccf8254213cfcc5a16dea8fdbb13">const_reverse_iterator</a> (<a class="code" href="a00330.html#a0e8cf9b4f551ec3c0a1207f10c7b0fe2">begin</a> ());
|
|
<a name="l01835"></a>01835 }
|
|
<a name="l01836"></a>01836 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01837"></a><a class="code" href="a00330.html#a8e0ba51ac0b09d9f3be8bffb34113062">01837</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00330.html#a8e0ba51ac0b09d9f3be8bffb34113062">rbegin</a> () {
|
|
<a name="l01838"></a>01838 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a30a24bba964ec4f7714b08f47dcd6f23">reverse_iterator</a> (<a class="code" href="a00330.html#a9664a27a3de09d6adfb2c024f4b2d642">end</a> ());
|
|
<a name="l01839"></a>01839 }
|
|
<a name="l01840"></a>01840 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01841"></a><a class="code" href="a00330.html#a2f4aecdf0260ba427ba53085be0a4e90">01841</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00330.html#a2f4aecdf0260ba427ba53085be0a4e90">rend</a> () {
|
|
<a name="l01842"></a>01842 <span class="keywordflow">return</span> <a class="code" href="a00330.html#a30a24bba964ec4f7714b08f47dcd6f23">reverse_iterator</a> (<a class="code" href="a00330.html#a0e8cf9b4f551ec3c0a1207f10c7b0fe2">begin</a> ());
|
|
<a name="l01843"></a>01843 }
|
|
<a name="l01844"></a>01844
|
|
<a name="l01845"></a>01845 <span class="keyword">private</span>:
|
|
<a name="l01846"></a><a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">01846</a> <a class="code" href="a00330.html#acba866e1685fc276ee68e62a51280245">matrix_closure_type</a> <a class="code" href="a00330.html#a6c8e47a869bdeeed05cbc81b37fd87bb">data_</a>;
|
|
<a name="l01847"></a><a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">01847</a> <a class="code" href="a00002.html">slice_type</a> <a class="code" href="a00330.html#a19e77d7a63ea7f22fff2722ce1ee1acb">s1_</a>;
|
|
<a name="l01848"></a><a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">01848</a> <a class="code" href="a00002.html">slice_type</a> <a class="code" href="a00330.html#a8ece2c49ba5eeb6d738009eb226be188">s2_</a>;
|
|
<a name="l01849"></a>01849 };
|
|
<a name="l01850"></a>01850
|
|
<a name="l01851"></a>01851 <span class="comment">// Specialize temporary</span>
|
|
<a name="l01852"></a>01852 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l01853"></a><a class="code" href="a00573.html">01853</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00330.html">matrix_vector_slice</a><M> >
|
|
<a name="l01854"></a>01854 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l01855"></a>01855 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l01856"></a><a class="code" href="a00559.html">01856</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00330.html">matrix_vector_slice</a><M> >
|
|
<a name="l01857"></a>01857 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l01858"></a>01858
|
|
<a name="l01859"></a>01859 <span class="comment">// Matrix based vector indirection class</span>
|
|
<a name="l01860"></a>01860
|
|
<a name="l01861"></a>01861 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l01862"></a><a class="code" href="a00322.html">01862</a> <span class="keyword">class </span><a class="code" href="a00322.html">matrix_vector_indirect</a>:
|
|
<a name="l01863"></a>01863 <span class="keyword">public</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression</a><matrix_vector_indirect<M, IA> > {
|
|
<a name="l01864"></a>01864
|
|
<a name="l01865"></a><a class="code" href="a00322.html#a3eee193ebc85f2c4e71a0b1e12014c78">01865</a> <span class="keyword">typedef</span> <a class="code" href="a00322.html">matrix_vector_indirect<M, IA></a> <a class="code" href="a00322.html#a3eee193ebc85f2c4e71a0b1e12014c78">self_type</a>;
|
|
<a name="l01866"></a>01866 <span class="keyword">public</span>:
|
|
<a name="l01867"></a>01867 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l01868"></a>01868 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<self_type>::operator </a>();
|
|
<a name="l01869"></a>01869 <span class="preprocessor">#endif</span>
|
|
<a name="l01870"></a><a class="code" href="a00322.html#ad9c95b794aed3901887cd29496c8934e">01870</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00322.html#ad9c95b794aed3901887cd29496c8934e">matrix_type</a>;
|
|
<a name="l01871"></a><a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">01871</a> <span class="keyword">typedef</span> IA <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a>;
|
|
<a name="l01872"></a><a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">01872</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a>;
|
|
<a name="l01873"></a><a class="code" href="a00322.html#a7d2f84c70d389a709cfdc785a74bd921">01873</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00322.html#a7d2f84c70d389a709cfdc785a74bd921">difference_type</a>;
|
|
<a name="l01874"></a><a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">01874</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">value_type</a>;
|
|
<a name="l01875"></a><a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">01875</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">const_reference</a>;
|
|
<a name="l01876"></a>01876 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l01877"></a>01877 <span class="keyword">typename</span> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">M::const_reference</a>,
|
|
<a name="l01878"></a><a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">01878</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">reference</a>;
|
|
<a name="l01879"></a>01879 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l01880"></a>01880 <span class="keyword">typename</span> <a class="code" href="a00322.html#a68171d481515559012c8084839b3baf1">M::const_closure_type</a>,
|
|
<a name="l01881"></a><a class="code" href="a00322.html#a5419328a4d48cf579431afd90fd3eeb9">01881</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00322.html#a5419328a4d48cf579431afd90fd3eeb9">matrix_closure_type</a>;
|
|
<a name="l01882"></a><a class="code" href="a00322.html#a68171d481515559012c8084839b3baf1">01882</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00322.html">self_type</a> <a class="code" href="a00322.html#a68171d481515559012c8084839b3baf1">const_closure_type</a>;
|
|
<a name="l01883"></a><a class="code" href="a00322.html#a2b581088f3ec14a310fcdfd61dfbe7cb">01883</a> <span class="keyword">typedef</span> <a class="code" href="a00322.html">self_type</a> <a class="code" href="a00322.html#a2b581088f3ec14a310fcdfd61dfbe7cb">closure_type</a>;
|
|
<a name="l01884"></a>01884 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00322.html#aba8f9193820de8e8199dd42ec762b746">M::storage_category</a>,
|
|
<a name="l01885"></a><a class="code" href="a00322.html#aba8f9193820de8e8199dd42ec762b746">01885</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00322.html#aba8f9193820de8e8199dd42ec762b746">::storage_category</a> <a class="code" href="a00322.html#aba8f9193820de8e8199dd42ec762b746">storage_category</a>;
|
|
<a name="l01886"></a>01886
|
|
<a name="l01887"></a>01887 <span class="comment">// Construction and destruction</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="a00322.html#a688f402dd26cc80a2f7a9dfa25ce2dc8">01889</a> <a class="code" href="a00322.html#a688f402dd26cc80a2f7a9dfa25ce2dc8">matrix_vector_indirect</a> (<a class="code" href="a00322.html#ad9c95b794aed3901887cd29496c8934e">matrix_type</a> &<a class="code" href="a00322.html#a98c5a000c123a7c6bf8403eb5f10a4fa">data</a>, <a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> <a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a>):
|
|
<a name="l01890"></a>01890 <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (data), <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> (size), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> (size) {}
|
|
<a name="l01891"></a>01891 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01892"></a><a class="code" href="a00322.html#ac5a8e9d4e7fd6edb4c1ed941296f946e">01892</a> <a class="code" href="a00322.html#a688f402dd26cc80a2f7a9dfa25ce2dc8">matrix_vector_indirect</a> (<a class="code" href="a00322.html#ad9c95b794aed3901887cd29496c8934e">matrix_type</a> &<a class="code" href="a00322.html#a98c5a000c123a7c6bf8403eb5f10a4fa">data</a>, <span class="keyword">const</span> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &ia1, <span class="keyword">const</span> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &ia2):
|
|
<a name="l01893"></a>01893 <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (data), <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> (ia1), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> (ia2) {
|
|
<a name="l01894"></a>01894 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l01895"></a>01895 <span class="comment">// BOOST_UBLAS_CHECK (ia1_.size () == ia2_.size (), bad_size ());</span>
|
|
<a name="l01896"></a>01896 }
|
|
<a name="l01897"></a>01897
|
|
<a name="l01898"></a>01898 <span class="comment">// Accessors</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="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">01900</a> <a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> <a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01901"></a>01901 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>.size (), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>.size ());
|
|
<a name="l01902"></a>01902 }
|
|
<a name="l01903"></a>01903 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01904"></a><a class="code" href="a00322.html#a2120e6f2768f2b6bf6ddf64e86b8e503">01904</a> <span class="keyword">const</span> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &<a class="code" href="a00322.html#a2120e6f2768f2b6bf6ddf64e86b8e503">indirect1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01905"></a>01905 <span class="keywordflow">return</span> <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>;
|
|
<a name="l01906"></a>01906 }
|
|
<a name="l01907"></a>01907 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01908"></a><a class="code" href="a00322.html#a382e01d4224afdb4931f7eb9ce98b1e4">01908</a> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &<a class="code" href="a00322.html#a382e01d4224afdb4931f7eb9ce98b1e4">indirect1</a> () {
|
|
<a name="l01909"></a>01909 <span class="keywordflow">return</span> <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>;
|
|
<a name="l01910"></a>01910 }
|
|
<a name="l01911"></a>01911 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01912"></a><a class="code" href="a00322.html#ab9f2048852f429f89611685946750cf2">01912</a> <span class="keyword">const</span> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &<a class="code" href="a00322.html#ab9f2048852f429f89611685946750cf2">indirect2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01913"></a>01913 <span class="keywordflow">return</span> <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>;
|
|
<a name="l01914"></a>01914 }
|
|
<a name="l01915"></a>01915 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01916"></a><a class="code" href="a00322.html#a56914647746eb801c1565ce16c5202d8">01916</a> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> &<a class="code" href="a00322.html#a56914647746eb801c1565ce16c5202d8">indirect2</a> () {
|
|
<a name="l01917"></a>01917 <span class="keywordflow">return</span> <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>;
|
|
<a name="l01918"></a>01918 }
|
|
<a name="l01919"></a>01919
|
|
<a name="l01920"></a>01920 <span class="comment">// Storage accessors</span>
|
|
<a name="l01921"></a>01921 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01922"></a><a class="code" href="a00322.html#a98c5a000c123a7c6bf8403eb5f10a4fa">01922</a> <span class="keyword">const</span> <a class="code" href="a00322.html#a5419328a4d48cf579431afd90fd3eeb9">matrix_closure_type</a> &<a class="code" href="a00322.html#a98c5a000c123a7c6bf8403eb5f10a4fa">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l01923"></a>01923 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a>;
|
|
<a name="l01924"></a>01924 }
|
|
<a name="l01925"></a>01925 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01926"></a><a class="code" href="a00322.html#ac9f6fe77b5442432081745f934b2c0d4">01926</a> <a class="code" href="a00322.html#a5419328a4d48cf579431afd90fd3eeb9">matrix_closure_type</a> &<a class="code" href="a00322.html#ac9f6fe77b5442432081745f934b2c0d4">data</a> () {
|
|
<a name="l01927"></a>01927 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a>;
|
|
<a name="l01928"></a>01928 }
|
|
<a name="l01929"></a>01929
|
|
<a name="l01930"></a>01930 <span class="comment">// Element access</span>
|
|
<a name="l01931"></a>01931 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l01932"></a>01932 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01933"></a><a class="code" href="a00322.html#abcf4b4bb81ac0164a15093deb075ce9c">01933</a> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">const_reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01934"></a>01934 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (<a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> (i), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> (i));
|
|
<a name="l01935"></a>01935 }
|
|
<a name="l01936"></a>01936 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01937"></a><a class="code" href="a00322.html#aabc48ec1cfab5b3b4f0a357bd0625941">01937</a> <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i) {
|
|
<a name="l01938"></a>01938 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (<a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> (i), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> (i));
|
|
<a name="l01939"></a>01939 }
|
|
<a name="l01940"></a>01940
|
|
<a name="l01941"></a>01941 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01942"></a><a class="code" href="a00322.html#a23c1ee61aab7b32c37cdb66382086b3b">01942</a> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">const_reference</a> <a class="code" href="a00322.html#a23c1ee61aab7b32c37cdb66382086b3b">operator [] </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01943"></a>01943 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01944"></a>01944 }
|
|
<a name="l01945"></a>01945 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01946"></a><a class="code" href="a00322.html#afd4dfcc4eee4250824c8d4b03b9579f2">01946</a> <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">reference</a> <a class="code" href="a00322.html#a23c1ee61aab7b32c37cdb66382086b3b">operator [] </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i) {
|
|
<a name="l01947"></a>01947 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01948"></a>01948 }
|
|
<a name="l01949"></a>01949 <span class="preprocessor">#else</span>
|
|
<a name="l01950"></a>01950 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01951"></a>01951 <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">reference</a> <a class="code" href="a00507.html#ae17810bc5cb33cbe6a568bc3b8b2db14">operator () </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01952"></a>01952 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (<a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> (i), <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> (i));
|
|
<a name="l01953"></a>01953 }
|
|
<a name="l01954"></a>01954
|
|
<a name="l01955"></a>01955 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01956"></a>01956 <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">reference</a> <a class="code" href="a00322.html#a23c1ee61aab7b32c37cdb66382086b3b">operator [] </a>(<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l01957"></a>01957 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) (i);
|
|
<a name="l01958"></a>01958 }
|
|
<a name="l01959"></a>01959 <span class="preprocessor">#endif</span>
|
|
<a name="l01960"></a>01960 <span class="preprocessor"></span>
|
|
<a name="l01961"></a>01961 <span class="comment">// Assignment</span>
|
|
<a name="l01962"></a>01962 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01963"></a><a class="code" href="a00322.html#a52a0d30ec10c25b82d58a3b6cce4fa3a">01963</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a52a0d30ec10c25b82d58a3b6cce4fa3a">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00322.html">matrix_vector_indirect</a> &mvi) {
|
|
<a name="l01964"></a>01964 <span class="comment">// ISSUE need a temporary, proxy can be overlaping alias</span>
|
|
<a name="l01965"></a>01965 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (mvi));
|
|
<a name="l01966"></a>01966 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01967"></a>01967 }
|
|
<a name="l01968"></a>01968 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01969"></a><a class="code" href="a00322.html#a34e81ff5851d17d5f65081cc4f73543d">01969</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a34e81ff5851d17d5f65081cc4f73543d">assign_temporary</a> (<a class="code" href="a00322.html">matrix_vector_indirect</a> &mvi) {
|
|
<a name="l01970"></a>01970 <span class="comment">// assign elements, proxied container remains the same</span>
|
|
<a name="l01971"></a>01971 vector_assign<scalar_assign> (*<span class="keyword">this</span>, mvi);
|
|
<a name="l01972"></a>01972 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01973"></a>01973 }
|
|
<a name="l01974"></a>01974 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01975"></a>01975 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01976"></a><a class="code" href="a00322.html#a5c2e6bd1269dedd690b52fad0b2d30e2">01976</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a52a0d30ec10c25b82d58a3b6cce4fa3a">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01977"></a>01977 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (ae));
|
|
<a name="l01978"></a>01978 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01979"></a>01979 }
|
|
<a name="l01980"></a>01980 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01981"></a>01981 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01982"></a><a class="code" href="a00322.html#ab70b12ee1b3b3beefa76a6f0bc1fb5df">01982</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#ab70b12ee1b3b3beefa76a6f0bc1fb5df">assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01983"></a>01983 vector_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01984"></a>01984 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01985"></a>01985 }
|
|
<a name="l01986"></a>01986 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01987"></a>01987 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01988"></a><a class="code" href="a00322.html#a36b9d413bf03d3b7a83f7cdc2122b6d8">01988</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a36b9d413bf03d3b7a83f7cdc2122b6d8">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01989"></a>01989 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l01990"></a>01990 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01991"></a>01991 }
|
|
<a name="l01992"></a>01992 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01993"></a>01993 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l01994"></a><a class="code" href="a00322.html#a0eb8e790be032afc451a594ccad7baca">01994</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a0eb8e790be032afc451a594ccad7baca">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l01995"></a>01995 vector_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l01996"></a>01996 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l01997"></a>01997 }
|
|
<a name="l01998"></a>01998 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l01999"></a>01999 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02000"></a><a class="code" href="a00322.html#ad0442ce27f428b9cd5203940de5fa535">02000</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#ad0442ce27f428b9cd5203940de5fa535">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l02001"></a>02001 vector_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00548.html#a1542ab966397cb64f69bd23c88e4bb5e">vector_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l02002"></a>02002 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02003"></a>02003 }
|
|
<a name="l02004"></a>02004 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02005"></a>02005 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02006"></a><a class="code" href="a00322.html#a04724f4cfb93bf7df5602c7cbc59d9e3">02006</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a04724f4cfb93bf7df5602c7cbc59d9e3">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00507.html" title="Base class for Vector Expression models.">vector_expression<AE></a> &ae) {
|
|
<a name="l02007"></a>02007 vector_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l02008"></a>02008 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02009"></a>02009 }
|
|
<a name="l02010"></a>02010 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l02011"></a>02011 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02012"></a><a class="code" href="a00322.html#a2e6a7b82dc89576396de93c4751e733d">02012</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#a2e6a7b82dc89576396de93c4751e733d">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l02013"></a>02013 vector_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l02014"></a>02014 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02015"></a>02015 }
|
|
<a name="l02016"></a>02016 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l02017"></a>02017 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02018"></a><a class="code" href="a00322.html#ae1f7bf3e9bbf07e104fb0011c0351764">02018</a> <a class="code" href="a00322.html">matrix_vector_indirect</a> &<a class="code" href="a00322.html#ae1f7bf3e9bbf07e104fb0011c0351764">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l02019"></a>02019 vector_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l02020"></a>02020 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02021"></a>02021 }
|
|
<a name="l02022"></a>02022
|
|
<a name="l02023"></a>02023 <span class="comment">// Closure comparison</span>
|
|
<a name="l02024"></a>02024 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02025"></a><a class="code" href="a00322.html#ac975b111a399294da2e8e7c0e47efa27">02025</a> <span class="keywordtype">bool</span> <a class="code" href="a00322.html#ac975b111a399294da2e8e7c0e47efa27">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00322.html">matrix_vector_indirect</a> &mvi)<span class="keyword"> const </span>{
|
|
<a name="l02026"></a>02026 <span class="keywordflow">return</span> (*this).data_.same_closure (mvi.<a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a>);
|
|
<a name="l02027"></a>02027 }
|
|
<a name="l02028"></a>02028
|
|
<a name="l02029"></a>02029 <span class="comment">// Comparison</span>
|
|
<a name="l02030"></a>02030 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02031"></a><a class="code" href="a00322.html#ad5f81bbd43bece0b3cbe9022cb86ded5">02031</a> <span class="keywordtype">bool</span> <a class="code" href="a00322.html#ad5f81bbd43bece0b3cbe9022cb86ded5">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00322.html">matrix_vector_indirect</a> &mvi)<span class="keyword"> const </span>{
|
|
<a name="l02032"></a>02032 <span class="keywordflow">return</span> (*this).data_ == mvi.<a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> && <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> == mvi.<a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a> && <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a> == mvi.<a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>;
|
|
<a name="l02033"></a>02033 }
|
|
<a name="l02034"></a>02034
|
|
<a name="l02035"></a>02035 <span class="comment">// Swapping</span>
|
|
<a name="l02036"></a>02036 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02037"></a><a class="code" href="a00322.html#a6c45f900bfc5b601e4a8853c172af73d">02037</a> <span class="keywordtype">void</span> <a class="code" href="a00322.html#a6c45f900bfc5b601e4a8853c172af73d">swap</a> (<a class="code" href="a00322.html">matrix_vector_indirect</a> mvi) {
|
|
<a name="l02038"></a>02038 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mvi) {
|
|
<a name="l02039"></a>02039 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a> () == mvi.<a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l02040"></a>02040 <span class="comment">// Sparse ranges may be nonconformant now.</span>
|
|
<a name="l02041"></a>02041 <span class="comment">// std::swap_ranges (begin (), end (), mvi.begin ());</span>
|
|
<a name="l02042"></a>02042 vector_swap<scalar_swap> (*<span class="keyword">this</span>, mvi);
|
|
<a name="l02043"></a>02043 }
|
|
<a name="l02044"></a>02044 }
|
|
<a name="l02045"></a>02045 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02046"></a><a class="code" href="a00322.html#aa61ce25bace129c88f71b1386081354e">02046</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00322.html#aa61ce25bace129c88f71b1386081354e">swap</a> (<a class="code" href="a00322.html">matrix_vector_indirect</a> mvi1, <a class="code" href="a00322.html">matrix_vector_indirect</a> mvi2) {
|
|
<a name="l02047"></a>02047 mvi1.<a class="code" href="a00322.html#a6c45f900bfc5b601e4a8853c172af73d">swap</a> (mvi2);
|
|
<a name="l02048"></a>02048 }
|
|
<a name="l02049"></a>02049
|
|
<a name="l02050"></a>02050 <span class="comment">// Iterator types</span>
|
|
<a name="l02051"></a>02051 <span class="keyword">private</span>:
|
|
<a name="l02052"></a>02052 <span class="comment">// Use indirect array as an index - FIXME this fails for packed assignment</span>
|
|
<a name="l02053"></a><a class="code" href="a00322.html#a40deb7dfdf53076a482f7935dd7f8932">02053</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00322.html#a40deb7dfdf53076a482f7935dd7f8932">const_subiterator1_type</a>;
|
|
<a name="l02054"></a><a class="code" href="a00322.html#a8a52d4b1907ac5585e7d101da3ff3858">02054</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00322.html#a8a52d4b1907ac5585e7d101da3ff3858">subiterator1_type</a>;
|
|
<a name="l02055"></a><a class="code" href="a00322.html#a002861c9a2a9f382c57944a7542a74e1">02055</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00322.html#a002861c9a2a9f382c57944a7542a74e1">const_subiterator2_type</a>;
|
|
<a name="l02056"></a><a class="code" href="a00322.html#ad54c3c181d13785d61ec4041182c6304">02056</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00322.html#ad54c3c181d13785d61ec4041182c6304">subiterator2_type</a>;
|
|
<a name="l02057"></a>02057
|
|
<a name="l02058"></a>02058 <span class="keyword">public</span>:
|
|
<a name="l02059"></a>02059 <span class="keyword">class </span><a class="code" href="a00323.html">const_iterator</a>;
|
|
<a name="l02060"></a>02060 <span class="keyword">class </span><a class="code" href="a00324.html">iterator</a>;
|
|
<a name="l02061"></a>02061
|
|
<a name="l02062"></a>02062 <span class="comment">// Element lookup</span>
|
|
<a name="l02063"></a>02063 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02064"></a><a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">02064</a> <a class="code" href="a00323.html">const_iterator</a> <a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">find</a> (<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i)<span class="keyword"> const </span>{
|
|
<a name="l02065"></a>02065 <span class="keywordflow">return</span> <a class="code" href="a00323.html">const_iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>.begin () + i, <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>.begin () + i);
|
|
<a name="l02066"></a>02066 }
|
|
<a name="l02067"></a>02067 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02068"></a><a class="code" href="a00322.html#a6539badd0ee2c3e13132c6c3f296e0bb">02068</a> <a class="code" href="a00324.html">iterator</a> <a class="code" href="a00322.html#a6539badd0ee2c3e13132c6c3f296e0bb">find</a> (<a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> i) {
|
|
<a name="l02069"></a>02069 <span class="keywordflow">return</span> <a class="code" href="a00324.html">iterator</a> (*<span class="keyword">this</span>, <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>.begin () + i, <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>.begin () + i);
|
|
<a name="l02070"></a>02070 }
|
|
<a name="l02071"></a>02071
|
|
<a name="l02072"></a>02072 <span class="comment">// Iterators simply are indices.</span>
|
|
<a name="l02073"></a>02073
|
|
<a name="l02074"></a><a class="code" href="a00323.html">02074</a> <span class="keyword">class </span><a class="code" href="a00323.html">const_iterator</a>:
|
|
<a name="l02075"></a>02075 <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><matrix_vector_indirect>,
|
|
<a name="l02076"></a>02076 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator1::iterator_category>::template
|
|
<a name="l02077"></a>02077 iterator_base<const_iterator, value_type>::type {
|
|
<a name="l02078"></a>02078 <span class="keyword">public</span>:
|
|
<a name="l02079"></a>02079 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l02080"></a>02080 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l02081"></a>02081 <a class="code" href="a00323.html#aeb564fadbbcfbe511145a45969c08ec6">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l02082"></a>02082
|
|
<a name="l02083"></a><a class="code" href="a00323.html#ae05bc0c8cc754849276ae41741d26431">02083</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">matrix_vector_indirect::value_type</a> <a class="code" href="a00323.html#ae05bc0c8cc754849276ae41741d26431">value_type</a>;
|
|
<a name="l02084"></a><a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">02084</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a7d2f84c70d389a709cfdc785a74bd921">matrix_vector_indirect::difference_type</a> <a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">difference_type</a>;
|
|
<a name="l02085"></a><a class="code" href="a00323.html#aeaeb414be83e2f0cb90722e9dea9e21a">02085</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">matrix_vector_indirect::const_reference</a> <a class="code" href="a00323.html#aeaeb414be83e2f0cb90722e9dea9e21a">reference</a>;
|
|
<a name="l02086"></a><a class="code" href="a00323.html#a213337058668c168c0a417b5f9638d57">02086</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">matrix_vector_indirect::value_type</a> *<a class="code" href="a00323.html#a213337058668c168c0a417b5f9638d57">pointer</a>;
|
|
<a name="l02087"></a>02087
|
|
<a name="l02088"></a>02088 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02089"></a>02089 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02090"></a><a class="code" href="a00323.html#a0ddbee8273540f2645c6d58faa4bdd2e">02090</a> <a class="code" href="a00323.html#a0ddbee8273540f2645c6d58faa4bdd2e">const_iterator</a> ():
|
|
<a name="l02091"></a>02091 <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="a00322.html">self_type</a>> (), <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> (), <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> () {}
|
|
<a name="l02092"></a>02092 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02093"></a><a class="code" href="a00323.html#a76317d60454d27e425ba8b71c39897ba">02093</a> <a class="code" href="a00323.html#a0ddbee8273540f2645c6d58faa4bdd2e">const_iterator</a> (<span class="keyword">const</span> <a class="code" href="a00322.html">self_type</a> &mvi, <span class="keyword">const</span> <a class="code" href="a00322.html#a40deb7dfdf53076a482f7935dd7f8932">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00322.html#a002861c9a2a9f382c57944a7542a74e1">const_subiterator2_type</a> &it2):
|
|
<a name="l02094"></a>02094 <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="a00322.html">self_type</a>> (mvi), <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> (it1), <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> (it2) {}
|
|
<a name="l02095"></a>02095 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02096"></a><a class="code" href="a00323.html#a64195df2f056a65491a13075e4962f6e">02096</a> <a class="code" href="a00323.html#a0ddbee8273540f2645c6d58faa4bdd2e">const_iterator</a> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00324.html">self_type::iterator</a> &it): <span class="comment">// ISSUE self_type:: stops VC8 using std::iterator here</span>
|
|
<a name="l02097"></a>02097 <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="a00322.html">self_type</a>> (it ()), <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> (it.<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>), <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> (it.<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>) {}
|
|
<a name="l02098"></a>02098
|
|
<a name="l02099"></a>02099 <span class="comment">// Arithmetic</span>
|
|
<a name="l02100"></a>02100 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02101"></a><a class="code" href="a00323.html#ab4a376312fc06fc63ad4f3b0cc557e6b">02101</a> <a class="code" href="a00323.html">const_iterator</a> &<a class="code" href="a00323.html#ab4a376312fc06fc63ad4f3b0cc557e6b">operator ++ </a>() {
|
|
<a name="l02102"></a>02102 ++ <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>;
|
|
<a name="l02103"></a>02103 ++ <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02104"></a>02104 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02105"></a>02105 }
|
|
<a name="l02106"></a>02106 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02107"></a><a class="code" href="a00323.html#a0408d286aefd0916cc59c8eb2a0eada8">02107</a> <a class="code" href="a00323.html">const_iterator</a> &<a class="code" href="a00323.html#a0408d286aefd0916cc59c8eb2a0eada8">operator -- </a>() {
|
|
<a name="l02108"></a>02108 -- <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>;
|
|
<a name="l02109"></a>02109 -- <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02110"></a>02110 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02111"></a>02111 }
|
|
<a name="l02112"></a>02112 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02113"></a><a class="code" href="a00323.html#a490a3a2fa2d9f23d77bf242bae99119a">02113</a> <a class="code" href="a00323.html">const_iterator</a> &<a class="code" href="a00323.html#a490a3a2fa2d9f23d77bf242bae99119a">operator += </a>(<a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">difference_type</a> n) {
|
|
<a name="l02114"></a>02114 <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> += n;
|
|
<a name="l02115"></a>02115 <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> += n;
|
|
<a name="l02116"></a>02116 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02117"></a>02117 }
|
|
<a name="l02118"></a>02118 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02119"></a><a class="code" href="a00323.html#a85d33bee990e6f44d83dd13c452685ac">02119</a> <a class="code" href="a00323.html">const_iterator</a> &<a class="code" href="a00323.html#a85d33bee990e6f44d83dd13c452685ac">operator -= </a>(<a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">difference_type</a> n) {
|
|
<a name="l02120"></a>02120 <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> -= n;
|
|
<a name="l02121"></a>02121 <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> -= n;
|
|
<a name="l02122"></a>02122 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02123"></a>02123 }
|
|
<a name="l02124"></a>02124 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02125"></a><a class="code" href="a00323.html#afa204800b409ba8ff111786d66bca675">02125</a> <a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">difference_type</a> <a class="code" href="a00323.html#afa204800b409ba8ff111786d66bca675">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00323.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02126"></a>02126 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02127"></a>02127 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> - it.<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>, <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> - it.<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>);
|
|
<a name="l02128"></a>02128 }
|
|
<a name="l02129"></a>02129
|
|
<a name="l02130"></a>02130 <span class="comment">// Dereference</span>
|
|
<a name="l02131"></a>02131 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02132"></a><a class="code" href="a00323.html#a7f6ddafb46d8037c38206f08cbf97f25">02132</a> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">const_reference</a> <a class="code" href="a00323.html#a7f6ddafb46d8037c38206f08cbf97f25">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l02133"></a>02133 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l02134"></a>02134 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (*<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>, *<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>);
|
|
<a name="l02135"></a>02135 }
|
|
<a name="l02136"></a>02136 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02137"></a><a class="code" href="a00323.html#a7b2d991f0e4bd557d44900fde043be33">02137</a> <a class="code" href="a00322.html#aea66f14c46fb35538d17d297d7a1cf53">const_reference</a> <a class="code" href="a00323.html#a7b2d991f0e4bd557d44900fde043be33">operator [] </a>(<a class="code" href="a00323.html#a9f135c19d1959e17574a3c2cd0ebae37">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l02138"></a>02138 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l02139"></a>02139 }
|
|
<a name="l02140"></a>02140
|
|
<a name="l02141"></a>02141 <span class="comment">// Index</span>
|
|
<a name="l02142"></a>02142 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02143"></a><a class="code" href="a00323.html#ae9b6ff4dd89777113e4c3d114c0dcae0">02143</a> <a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> <a class="code" href="a00323.html#ae9b6ff4dd89777113e4c3d114c0dcae0">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02144"></a>02144 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>.index (), <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>.index ());
|
|
<a name="l02145"></a>02145 }
|
|
<a name="l02146"></a>02146
|
|
<a name="l02147"></a>02147 <span class="comment">// Assignment</span>
|
|
<a name="l02148"></a>02148 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02149"></a><a class="code" href="a00323.html#a5accb7e922e309870406c61bb81fcfca">02149</a> <a class="code" href="a00323.html">const_iterator</a> &<a class="code" href="a00323.html#a5accb7e922e309870406c61bb81fcfca">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00323.html">const_iterator</a> &it) {
|
|
<a name="l02150"></a>02150 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l02151"></a>02151 <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> = it.<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>;
|
|
<a name="l02152"></a>02152 <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> = it.<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02153"></a>02153 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02154"></a>02154 }
|
|
<a name="l02155"></a>02155
|
|
<a name="l02156"></a>02156 <span class="comment">// Comparison</span>
|
|
<a name="l02157"></a>02157 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02158"></a><a class="code" href="a00323.html#a5846eaf8500099101333b387298537dc">02158</a> <span class="keywordtype">bool</span> <a class="code" href="a00323.html#a5846eaf8500099101333b387298537dc">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00323.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02159"></a>02159 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02160"></a>02160 <span class="keywordflow">return</span> <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> == it.<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> && <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> == it.<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02161"></a>02161 }
|
|
<a name="l02162"></a>02162 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02163"></a><a class="code" href="a00323.html#ab5d577acb05870cb467e2d6f4f1ab646">02163</a> <span class="keywordtype">bool</span> <a class="code" href="a00323.html#ab5d577acb05870cb467e2d6f4f1ab646">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00323.html">const_iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02164"></a>02164 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02165"></a>02165 <span class="keywordflow">return</span> <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> < it.<a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a> && <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a> < it.<a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02166"></a>02166 }
|
|
<a name="l02167"></a>02167
|
|
<a name="l02168"></a>02168 <span class="keyword">private</span>:
|
|
<a name="l02169"></a><a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">02169</a> <a class="code" href="a00322.html#a40deb7dfdf53076a482f7935dd7f8932">const_subiterator1_type</a> <a class="code" href="a00323.html#aa8aacd8af08abbab0546f6e613bcbdc9">it1_</a>;
|
|
<a name="l02170"></a><a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">02170</a> <a class="code" href="a00322.html#a002861c9a2a9f382c57944a7542a74e1">const_subiterator2_type</a> <a class="code" href="a00323.html#a6307999bf461c8451777e2633b001ea5">it2_</a>;
|
|
<a name="l02171"></a>02171 };
|
|
<a name="l02172"></a>02172
|
|
<a name="l02173"></a>02173 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02174"></a><a class="code" href="a00322.html#adaa851a394d465d8e6a6ddaba7edfc73">02174</a> <a class="code" href="a00323.html">const_iterator</a> <a class="code" href="a00322.html#adaa851a394d465d8e6a6ddaba7edfc73">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02175"></a>02175 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">find</a> (0);
|
|
<a name="l02176"></a>02176 }
|
|
<a name="l02177"></a>02177 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02178"></a><a class="code" href="a00322.html#ac71395b163e5747321d5ab4ab5b1f262">02178</a> <a class="code" href="a00323.html">const_iterator</a> <a class="code" href="a00322.html#ac71395b163e5747321d5ab4ab5b1f262">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02179"></a>02179 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">find</a> (<a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a> ());
|
|
<a name="l02180"></a>02180 }
|
|
<a name="l02181"></a>02181
|
|
<a name="l02182"></a><a class="code" href="a00324.html">02182</a> <span class="keyword">class </span><a class="code" href="a00324.html">iterator</a>:
|
|
<a name="l02183"></a>02183 <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><matrix_vector_indirect>,
|
|
<a name="l02184"></a>02184 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator1::iterator_category>::template
|
|
<a name="l02185"></a>02185 iterator_base<iterator, value_type>::type {
|
|
<a name="l02186"></a>02186 <span class="keyword">public</span>:
|
|
<a name="l02187"></a>02187 <span class="comment">// FIXME Iterator can never be different code was:</span>
|
|
<a name="l02188"></a>02188 <span class="comment">// typename iterator_restrict_traits<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::iterator_category></span>
|
|
<a name="l02189"></a>02189 <a class="code" href="a00324.html#aea9468131f3bb20c3d553960d29df73a">BOOST_STATIC_ASSERT</a> ((boost::is_same<typename M::const_iterator1::iterator_category, typename M::const_iterator2::iterator_category>::value ));
|
|
<a name="l02190"></a>02190
|
|
<a name="l02191"></a><a class="code" href="a00324.html#a262e9d5a514a08a6eabe4a0d5dfd81d1">02191</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">matrix_vector_indirect::value_type</a> <a class="code" href="a00324.html#a262e9d5a514a08a6eabe4a0d5dfd81d1">value_type</a>;
|
|
<a name="l02192"></a><a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">02192</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a7d2f84c70d389a709cfdc785a74bd921">matrix_vector_indirect::difference_type</a> <a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">difference_type</a>;
|
|
<a name="l02193"></a><a class="code" href="a00324.html#a3236ab95a695ab5f773e275d96ca7dc6">02193</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a88d109dbab77bb558164162a64ca08a9">matrix_vector_indirect::reference</a> <a class="code" href="a00324.html#a3236ab95a695ab5f773e275d96ca7dc6">reference</a>;
|
|
<a name="l02194"></a><a class="code" href="a00324.html#a4842dc41740a888921fedb6ee7070dfd">02194</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00322.html#a68736d9fd1f4f67e8b67ce336d857167">matrix_vector_indirect::value_type</a> *<a class="code" href="a00324.html#a4842dc41740a888921fedb6ee7070dfd">pointer</a>;
|
|
<a name="l02195"></a>02195
|
|
<a name="l02196"></a>02196 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02197"></a>02197 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02198"></a><a class="code" href="a00324.html#a3c59da8134c80b19646f4c35f7b40e8c">02198</a> <a class="code" href="a00324.html#a3c59da8134c80b19646f4c35f7b40e8c">iterator</a> ():
|
|
<a name="l02199"></a>02199 <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><<a class="code" href="a00322.html">self_type</a>> (), <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> (), <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> () {}
|
|
<a name="l02200"></a>02200 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02201"></a><a class="code" href="a00324.html#a37043e2b9263021fa07abb8aa5bf18aa">02201</a> <a class="code" href="a00324.html#a3c59da8134c80b19646f4c35f7b40e8c">iterator</a> (<a class="code" href="a00322.html">self_type</a> &mvi, <span class="keyword">const</span> <a class="code" href="a00322.html#a8a52d4b1907ac5585e7d101da3ff3858">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00322.html#ad54c3c181d13785d61ec4041182c6304">subiterator2_type</a> &it2):
|
|
<a name="l02202"></a>02202 <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><<a class="code" href="a00322.html">self_type</a>> (mvi), <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> (it1), <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> (it2) {}
|
|
<a name="l02203"></a>02203
|
|
<a name="l02204"></a>02204 <span class="comment">// Arithmetic</span>
|
|
<a name="l02205"></a>02205 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02206"></a><a class="code" href="a00324.html#a9952a59617725145c08b4ebefea75c80">02206</a> <a class="code" href="a00324.html">iterator</a> &<a class="code" href="a00324.html#a9952a59617725145c08b4ebefea75c80">operator ++ </a>() {
|
|
<a name="l02207"></a>02207 ++ <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>;
|
|
<a name="l02208"></a>02208 ++ <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02209"></a>02209 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02210"></a>02210 }
|
|
<a name="l02211"></a>02211 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02212"></a><a class="code" href="a00324.html#a72f6ad59bc875b0daafa20265c586d14">02212</a> <a class="code" href="a00324.html">iterator</a> &<a class="code" href="a00324.html#a72f6ad59bc875b0daafa20265c586d14">operator -- </a>() {
|
|
<a name="l02213"></a>02213 -- <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>;
|
|
<a name="l02214"></a>02214 -- <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02215"></a>02215 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02216"></a>02216 }
|
|
<a name="l02217"></a>02217 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02218"></a><a class="code" href="a00324.html#ab1e91fabea2e0d7a87461f85ae36d0b9">02218</a> <a class="code" href="a00324.html">iterator</a> &<a class="code" href="a00324.html#ab1e91fabea2e0d7a87461f85ae36d0b9">operator += </a>(<a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">difference_type</a> n) {
|
|
<a name="l02219"></a>02219 <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> += n;
|
|
<a name="l02220"></a>02220 <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> += n;
|
|
<a name="l02221"></a>02221 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02222"></a>02222 }
|
|
<a name="l02223"></a>02223 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02224"></a><a class="code" href="a00324.html#a4d34ef226afcc7668e85afd488d606b5">02224</a> <a class="code" href="a00324.html">iterator</a> &<a class="code" href="a00324.html#a4d34ef226afcc7668e85afd488d606b5">operator -= </a>(<a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">difference_type</a> n) {
|
|
<a name="l02225"></a>02225 <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> -= n;
|
|
<a name="l02226"></a>02226 <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> -= n;
|
|
<a name="l02227"></a>02227 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02228"></a>02228 }
|
|
<a name="l02229"></a>02229 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02230"></a><a class="code" href="a00324.html#a7ecb51e5e7dbf2da6c55a2600a9544f4">02230</a> <a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">difference_type</a> <a class="code" href="a00324.html#a7ecb51e5e7dbf2da6c55a2600a9544f4">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00324.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02231"></a>02231 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02232"></a>02232 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> - it.<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>, <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> - it.<a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>);
|
|
<a name="l02233"></a>02233 }
|
|
<a name="l02234"></a>02234
|
|
<a name="l02235"></a>02235 <span class="comment">// Dereference</span>
|
|
<a name="l02236"></a>02236 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02237"></a><a class="code" href="a00324.html#ad705433c26bbafa25bd7a903e3354897">02237</a> <a class="code" href="a00324.html#a3236ab95a695ab5f773e275d96ca7dc6">reference</a> <a class="code" href="a00324.html#ad705433c26bbafa25bd7a903e3354897">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l02238"></a>02238 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l02239"></a>02239 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a> (*<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>, *<a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>);
|
|
<a name="l02240"></a>02240 }
|
|
<a name="l02241"></a>02241 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02242"></a><a class="code" href="a00324.html#ad90f6e227688a1c0e6748e3e6ddef977">02242</a> <a class="code" href="a00324.html#a3236ab95a695ab5f773e275d96ca7dc6">reference</a> <a class="code" href="a00324.html#ad90f6e227688a1c0e6748e3e6ddef977">operator [] </a>(<a class="code" href="a00324.html#a5ff180290a5a09aa6f13099879da5306">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l02243"></a>02243 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l02244"></a>02244 }
|
|
<a name="l02245"></a>02245
|
|
<a name="l02246"></a>02246 <span class="comment">// Index</span>
|
|
<a name="l02247"></a>02247 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02248"></a><a class="code" href="a00324.html#a8bb8f7b11db2669f72d8d45d973b9744">02248</a> <a class="code" href="a00322.html#a837e82f3a726f20396a28d5cbb3b830f">size_type</a> <a class="code" href="a00324.html#a8bb8f7b11db2669f72d8d45d973b9744">index</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02249"></a>02249 <span class="keywordflow">return</span> <a class="code" href="a00610.html#ad7bb3e64acf4cd355a9985bdf879cf2a">BOOST_UBLAS_SAME</a> (<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>.index (), <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>.index ());
|
|
<a name="l02250"></a>02250 }
|
|
<a name="l02251"></a>02251
|
|
<a name="l02252"></a>02252 <span class="comment">// Assignment</span>
|
|
<a name="l02253"></a>02253 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02254"></a><a class="code" href="a00324.html#a5ddbc2272ab95059e704d27aba04ec21">02254</a> <a class="code" href="a00324.html">iterator</a> &<a class="code" href="a00324.html#a5ddbc2272ab95059e704d27aba04ec21">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00324.html">iterator</a> &it) {
|
|
<a name="l02255"></a>02255 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l02256"></a>02256 <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> = it.<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>;
|
|
<a name="l02257"></a>02257 <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> = it.<a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02258"></a>02258 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02259"></a>02259 }
|
|
<a name="l02260"></a>02260
|
|
<a name="l02261"></a>02261 <span class="comment">// Comparison</span>
|
|
<a name="l02262"></a>02262 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02263"></a><a class="code" href="a00324.html#a3c7b6495aa191e578af8448b1fb9a134">02263</a> <span class="keywordtype">bool</span> <a class="code" href="a00324.html#a3c7b6495aa191e578af8448b1fb9a134">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00324.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02264"></a>02264 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02265"></a>02265 <span class="keywordflow">return</span> <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> == it.<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> && <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> == it.<a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02266"></a>02266 }
|
|
<a name="l02267"></a>02267 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02268"></a><a class="code" href="a00324.html#aa85d70b61e7971d862792faec68fa689">02268</a> <span class="keywordtype">bool</span> <a class="code" href="a00324.html#aa85d70b61e7971d862792faec68fa689">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00324.html">iterator</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02269"></a>02269 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02270"></a>02270 <span class="keywordflow">return</span> <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> < it.<a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a> && <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a> < it.<a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02271"></a>02271 }
|
|
<a name="l02272"></a>02272
|
|
<a name="l02273"></a>02273 <span class="keyword">private</span>:
|
|
<a name="l02274"></a><a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">02274</a> <a class="code" href="a00322.html#a8a52d4b1907ac5585e7d101da3ff3858">subiterator1_type</a> <a class="code" href="a00324.html#a0a834d34fa8342b7058df73162dec806">it1_</a>;
|
|
<a name="l02275"></a><a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">02275</a> <a class="code" href="a00322.html#ad54c3c181d13785d61ec4041182c6304">subiterator2_type</a> <a class="code" href="a00324.html#a47f664b732980d9a356176d28af5f042">it2_</a>;
|
|
<a name="l02276"></a>02276
|
|
<a name="l02277"></a><a class="code" href="a00324.html#ac220ce1c155db1ac44146c12d178056f">02277</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00323.html">const_iterator</a>;
|
|
<a name="l02278"></a>02278 };
|
|
<a name="l02279"></a>02279
|
|
<a name="l02280"></a>02280 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02281"></a><a class="code" href="a00322.html#a428b685bc973ee62e1c271f7596bf2ef">02281</a> <a class="code" href="a00324.html">iterator</a> <a class="code" href="a00322.html#a428b685bc973ee62e1c271f7596bf2ef">begin</a> () {
|
|
<a name="l02282"></a>02282 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">find</a> (0);
|
|
<a name="l02283"></a>02283 }
|
|
<a name="l02284"></a>02284 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02285"></a><a class="code" href="a00322.html#a8719b267dd40ce08ce5ee81308f3cfe6">02285</a> <a class="code" href="a00324.html">iterator</a> <a class="code" href="a00322.html#a8719b267dd40ce08ce5ee81308f3cfe6">end</a> () {
|
|
<a name="l02286"></a>02286 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a69a886fa9047a54c3d0b7b03615e04c5">find</a> (<a class="code" href="a00322.html#a985df9f27ec77a44c38c032ad20a0c45">size</a> ());
|
|
<a name="l02287"></a>02287 }
|
|
<a name="l02288"></a>02288
|
|
<a name="l02289"></a>02289 <span class="comment">// Reverse iterator</span>
|
|
<a name="l02290"></a><a class="code" href="a00322.html#a00a7d474bc3d2c5385dbba23d960dfe6">02290</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<const_iterator></a> <a class="code" href="a00322.html#a00a7d474bc3d2c5385dbba23d960dfe6">const_reverse_iterator</a>;
|
|
<a name="l02291"></a><a class="code" href="a00322.html#a74e0f5d30bfd6c746168688d11c51ae5">02291</a> <span class="keyword">typedef</span> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator_base<iterator></a> <a class="code" href="a00322.html#a74e0f5d30bfd6c746168688d11c51ae5">reverse_iterator</a>;
|
|
<a name="l02292"></a>02292
|
|
<a name="l02293"></a>02293 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02294"></a><a class="code" href="a00322.html#acfc750b54450b1a981cf080f07eae892">02294</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00322.html#acfc750b54450b1a981cf080f07eae892">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02295"></a>02295 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a00a7d474bc3d2c5385dbba23d960dfe6">const_reverse_iterator</a> (<a class="code" href="a00322.html#ac71395b163e5747321d5ab4ab5b1f262">end</a> ());
|
|
<a name="l02296"></a>02296 }
|
|
<a name="l02297"></a>02297 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02298"></a><a class="code" href="a00322.html#aa29f3831e44dc181e069786f9a30f5dd">02298</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">const_reverse_iterator</a> <a class="code" href="a00322.html#aa29f3831e44dc181e069786f9a30f5dd">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02299"></a>02299 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a00a7d474bc3d2c5385dbba23d960dfe6">const_reverse_iterator</a> (<a class="code" href="a00322.html#adaa851a394d465d8e6a6ddaba7edfc73">begin</a> ());
|
|
<a name="l02300"></a>02300 }
|
|
<a name="l02301"></a>02301 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02302"></a><a class="code" href="a00322.html#abb49e19f64a67082f60e4e3f3048a03d">02302</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00322.html#abb49e19f64a67082f60e4e3f3048a03d">rbegin</a> () {
|
|
<a name="l02303"></a>02303 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a74e0f5d30bfd6c746168688d11c51ae5">reverse_iterator</a> (<a class="code" href="a00322.html#ac71395b163e5747321d5ab4ab5b1f262">end</a> ());
|
|
<a name="l02304"></a>02304 }
|
|
<a name="l02305"></a>02305 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02306"></a><a class="code" href="a00322.html#a685db220fd0db05306af12f21c7fd366">02306</a> <a class="code" href="a00366.html" title="Base class of all reverse iterators. (non-MSVC version)">reverse_iterator</a> <a class="code" href="a00322.html#a685db220fd0db05306af12f21c7fd366">rend</a> () {
|
|
<a name="l02307"></a>02307 <span class="keywordflow">return</span> <a class="code" href="a00322.html#a74e0f5d30bfd6c746168688d11c51ae5">reverse_iterator</a> (<a class="code" href="a00322.html#adaa851a394d465d8e6a6ddaba7edfc73">begin</a> ());
|
|
<a name="l02308"></a>02308 }
|
|
<a name="l02309"></a>02309
|
|
<a name="l02310"></a>02310 <span class="keyword">private</span>:
|
|
<a name="l02311"></a><a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">02311</a> <a class="code" href="a00322.html#a5419328a4d48cf579431afd90fd3eeb9">matrix_closure_type</a> <a class="code" href="a00322.html#a66903231e64f882c349cab6e8cc057ae">data_</a>;
|
|
<a name="l02312"></a><a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">02312</a> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> <a class="code" href="a00322.html#afe9ebcad5468a6319a1a8ba24cbba7d1">ia1_</a>;
|
|
<a name="l02313"></a><a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">02313</a> <a class="code" href="a00322.html#a35e6eb3a130052cd2aca43584fd35a2e">indirect_array_type</a> <a class="code" href="a00322.html#af4e61dabaeb1afce7f427a8e28cabe38">ia2_</a>;
|
|
<a name="l02314"></a>02314 };
|
|
<a name="l02315"></a>02315
|
|
<a name="l02316"></a>02316 <span class="comment">// Specialize temporary</span>
|
|
<a name="l02317"></a>02317 <span class="keyword">template</span> <<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l02318"></a><a class="code" href="a00571.html">02318</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00322.html">matrix_vector_indirect</a><M,IA> >
|
|
<a name="l02319"></a>02319 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l02320"></a>02320 <span class="keyword">template</span> <<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l02321"></a><a class="code" href="a00557.html">02321</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00322.html">matrix_vector_indirect</a><M,IA> >
|
|
<a name="l02322"></a>02322 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l02323"></a>02323
|
|
<a name="l02324"></a>02324 <span class="comment">// Matrix based range class</span>
|
|
<a name="l02325"></a>02325 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l02326"></a><a class="code" href="a00270.html">02326</a> <span class="keyword">class </span><a class="code" href="a00270.html">matrix_range</a>:
|
|
<a name="l02327"></a>02327 <span class="keyword">public</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression</a><matrix_range<M> > {
|
|
<a name="l02328"></a>02328
|
|
<a name="l02329"></a><a class="code" href="a00270.html#a532ffeb217dfdf2b629d9e873e8142d5">02329</a> <span class="keyword">typedef</span> <a class="code" href="a00270.html">matrix_range<M></a> <a class="code" href="a00270.html#a532ffeb217dfdf2b629d9e873e8142d5">self_type</a>;
|
|
<a name="l02330"></a>02330 <span class="keyword">public</span>:
|
|
<a name="l02331"></a>02331 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l02332"></a>02332 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<self_type>::operator </a>();
|
|
<a name="l02333"></a>02333 <span class="preprocessor">#endif</span>
|
|
<a name="l02334"></a><a class="code" href="a00270.html#afc819e2b4e99179ca25e72035ce6fe25">02334</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00270.html#afc819e2b4e99179ca25e72035ce6fe25">matrix_type</a>;
|
|
<a name="l02335"></a><a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">02335</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a>;
|
|
<a name="l02336"></a><a class="code" href="a00270.html#a9ce94bb089c5b147221d5857f1a96564">02336</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00270.html#a9ce94bb089c5b147221d5857f1a96564">difference_type</a>;
|
|
<a name="l02337"></a><a class="code" href="a00270.html#a499db64caf45b2c716e95375b29795f1">02337</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00270.html#a499db64caf45b2c716e95375b29795f1">value_type</a>;
|
|
<a name="l02338"></a><a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">02338</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a>;
|
|
<a name="l02339"></a>02339 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l02340"></a>02340 <span class="keyword">typename</span> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">M::const_reference</a>,
|
|
<a name="l02341"></a><a class="code" href="a00270.html#aec4b595621998d9d17e6ee17660ab9d1">02341</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00270.html#aec4b595621998d9d17e6ee17660ab9d1">reference</a>;
|
|
<a name="l02342"></a>02342 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l02343"></a>02343 <span class="keyword">typename</span> <a class="code" href="a00270.html#a8e3b5167b9e8e7a5bcb5bab86b80f5b1">M::const_closure_type</a>,
|
|
<a name="l02344"></a><a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">02344</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">matrix_closure_type</a>;
|
|
<a name="l02345"></a><a class="code" href="a00270.html#a4254a497dfa0a6f00239cd4112b20def">02345</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> <a class="code" href="a00270.html#a4254a497dfa0a6f00239cd4112b20def">range_type</a>;
|
|
<a name="l02346"></a><a class="code" href="a00270.html#a8e3b5167b9e8e7a5bcb5bab86b80f5b1">02346</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> <a class="code" href="a00270.html#a8e3b5167b9e8e7a5bcb5bab86b80f5b1">const_closure_type</a>;
|
|
<a name="l02347"></a><a class="code" href="a00270.html#a71a0f891c520132df6c54703a9db7936">02347</a> <span class="keyword">typedef</span> <a class="code" href="a00270.html">self_type</a> <a class="code" href="a00270.html#a71a0f891c520132df6c54703a9db7936">closure_type</a>;
|
|
<a name="l02348"></a>02348 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00270.html#a18c5f39fe2393b3f9350ab9d55a97a35">M::storage_category</a>,
|
|
<a name="l02349"></a><a class="code" href="a00270.html#a18c5f39fe2393b3f9350ab9d55a97a35">02349</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00270.html#a18c5f39fe2393b3f9350ab9d55a97a35">::storage_category</a> <a class="code" href="a00270.html#a18c5f39fe2393b3f9350ab9d55a97a35">storage_category</a>;
|
|
<a name="l02350"></a><a class="code" href="a00270.html#a3c3ca1b11badf5b42b83d224d8819eb7">02350</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::orientation_category <a class="code" href="a00270.html#a3c3ca1b11badf5b42b83d224d8819eb7">orientation_category</a>;
|
|
<a name="l02351"></a>02351
|
|
<a name="l02352"></a>02352 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02353"></a>02353 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02354"></a><a class="code" href="a00270.html#a3d8c560b1bd1e0c7ecfdba707525a7b9">02354</a> <a class="code" href="a00270.html#a3d8c560b1bd1e0c7ecfdba707525a7b9">matrix_range</a> (<a class="code" href="a00270.html#afc819e2b4e99179ca25e72035ce6fe25">matrix_type</a> &<a class="code" href="a00270.html#a0796587d34cf6bdce25cc7eb322f8e95">data</a>, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2):
|
|
<a name="l02355"></a>02355 <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a> (data), <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> (r1.preprocess (data.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> ())), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> (r2.preprocess (data.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ())) {
|
|
<a name="l02356"></a>02356 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l02357"></a>02357 <span class="comment">// BOOST_UBLAS_CHECK (r1_.start () <= data_.size1 () &&</span>
|
|
<a name="l02358"></a>02358 <span class="comment">// r1_.start () + r1_.size () <= data_.size1 (), bad_index ());</span>
|
|
<a name="l02359"></a>02359 <span class="comment">// BOOST_UBLAS_CHECK (r2_.start () <= data_.size2 () &&</span>
|
|
<a name="l02360"></a>02360 <span class="comment">// r2_.start () + r2_.size () <= data_.size2 (), bad_index ());</span>
|
|
<a name="l02361"></a>02361 }
|
|
<a name="l02362"></a>02362 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02363"></a><a class="code" href="a00270.html#a7f28eda822233d92c0e02816ec83d39a">02363</a> <a class="code" href="a00270.html#a3d8c560b1bd1e0c7ecfdba707525a7b9">matrix_range</a> (<span class="keyword">const</span> <a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">matrix_closure_type</a> &<a class="code" href="a00270.html#a0796587d34cf6bdce25cc7eb322f8e95">data</a>, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2, <span class="keywordtype">int</span>):
|
|
<a name="l02364"></a>02364 <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a> (data), <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> (r1.preprocess (data.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> ())), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> (r2.preprocess (data.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ())) {
|
|
<a name="l02365"></a>02365 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l02366"></a>02366 <span class="comment">// BOOST_UBLAS_CHECK (r1_.start () <= data_.size1 () &&</span>
|
|
<a name="l02367"></a>02367 <span class="comment">// r1_.start () + r1_.size () <= data_.size1 (), bad_index ());</span>
|
|
<a name="l02368"></a>02368 <span class="comment">// BOOST_UBLAS_CHECK (r2_.start () <= data_.size2 () &&</span>
|
|
<a name="l02369"></a>02369 <span class="comment">// r2_.start () + r2_.size () <= data_.size2 (), bad_index ());</span>
|
|
<a name="l02370"></a>02370 }
|
|
<a name="l02371"></a>02371
|
|
<a name="l02372"></a>02372 <span class="comment">// Accessors</span>
|
|
<a name="l02373"></a>02373 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02374"></a><a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">02374</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02375"></a>02375 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a>.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ();
|
|
<a name="l02376"></a>02376 }
|
|
<a name="l02377"></a>02377 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02378"></a><a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">02378</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02379"></a>02379 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a>.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ();
|
|
<a name="l02380"></a>02380 }
|
|
<a name="l02381"></a>02381 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02382"></a><a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">02382</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a>()<span class="keyword"> const </span>{
|
|
<a name="l02383"></a>02383 <span class="keywordflow">return</span> <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a>.<a class="code" href="a00001.html#af2e2a020534f2e375d37a45a0ead0ecd">start</a> ();
|
|
<a name="l02384"></a>02384 }
|
|
<a name="l02385"></a>02385 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02386"></a><a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">02386</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02387"></a>02387 <span class="keywordflow">return</span> <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a>.<a class="code" href="a00001.html#a2af146b432f6396b1c2e5bad1aedfc3b">size</a> ();
|
|
<a name="l02388"></a>02388 }
|
|
<a name="l02389"></a>02389
|
|
<a name="l02390"></a>02390 <span class="comment">// Storage accessors</span>
|
|
<a name="l02391"></a>02391 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02392"></a><a class="code" href="a00270.html#a0796587d34cf6bdce25cc7eb322f8e95">02392</a> <span class="keyword">const</span> <a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">matrix_closure_type</a> &<a class="code" href="a00270.html#a0796587d34cf6bdce25cc7eb322f8e95">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02393"></a>02393 <span class="keywordflow">return</span> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>;
|
|
<a name="l02394"></a>02394 }
|
|
<a name="l02395"></a>02395 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02396"></a><a class="code" href="a00270.html#a9130da1cf2fea2092179e9c4c9422633">02396</a> <a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">matrix_closure_type</a> &<a class="code" href="a00270.html#a9130da1cf2fea2092179e9c4c9422633">data</a> () {
|
|
<a name="l02397"></a>02397 <span class="keywordflow">return</span> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>;
|
|
<a name="l02398"></a>02398 }
|
|
<a name="l02399"></a>02399
|
|
<a name="l02400"></a>02400 <span class="comment">// Element access</span>
|
|
<a name="l02401"></a>02401 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l02402"></a>02402 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02403"></a><a class="code" href="a00270.html#ace455c0d70c8f8de248b395272924506">02403</a> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l02404"></a>02404 <span class="keywordflow">return</span> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a> (<a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> (i), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> (j));
|
|
<a name="l02405"></a>02405 }
|
|
<a name="l02406"></a>02406 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02407"></a><a class="code" href="a00270.html#aa966f6e56799ac74e7955ffc6be93cbb">02407</a> <a class="code" href="a00270.html#aec4b595621998d9d17e6ee17660ab9d1">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j) {
|
|
<a name="l02408"></a>02408 <span class="keywordflow">return</span> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a> (<a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> (i), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> (j));
|
|
<a name="l02409"></a>02409 }
|
|
<a name="l02410"></a>02410 <span class="preprocessor">#else</span>
|
|
<a name="l02411"></a>02411 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02412"></a>02412 <a class="code" href="a00270.html#aec4b595621998d9d17e6ee17660ab9d1">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l02413"></a>02413 <span class="keywordflow">return</span> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a> (<a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> (i), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> (j));
|
|
<a name="l02414"></a>02414 }
|
|
<a name="l02415"></a>02415 <span class="preprocessor">#endif</span>
|
|
<a name="l02416"></a>02416 <span class="preprocessor"></span>
|
|
<a name="l02417"></a>02417 <span class="comment">// ISSUE can this be done in free project function?</span>
|
|
<a name="l02418"></a>02418 <span class="comment">// Although a const function can create a non-const proxy to a non-const object</span>
|
|
<a name="l02419"></a>02419 <span class="comment">// Critical is that matrix_type and data_ (vector_closure_type) are const correct</span>
|
|
<a name="l02420"></a>02420 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02421"></a><a class="code" href="a00270.html#ae8db1e6e237d51aa98b29b2bd73c60e3">02421</a> <a class="code" href="a00270.html">matrix_range<matrix_type></a> <a class="code" href="a00270.html#ae8db1e6e237d51aa98b29b2bd73c60e3">project</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2)<span class="keyword"> const </span>{
|
|
<a name="l02422"></a>02422 <span class="keywordflow">return</span> <a class="code" href="a00270.html">matrix_range<matrix_type></a> (<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>, <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a>.<a class="code" href="a00001.html#a73386775dd57343cbceae3fcf6d30815">compose</a> (r1.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> ())), <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a>.<a class="code" href="a00001.html#a73386775dd57343cbceae3fcf6d30815">compose</a> (r2.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ())), 0);
|
|
<a name="l02423"></a>02423 }
|
|
<a name="l02424"></a>02424
|
|
<a name="l02425"></a>02425 <span class="comment">// Assignment</span>
|
|
<a name="l02426"></a>02426 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02427"></a><a class="code" href="a00270.html#aeb51daaf04bfd596ebdf51d5b723e69b">02427</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#aeb51daaf04bfd596ebdf51d5b723e69b">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range</a> &mr) {
|
|
<a name="l02428"></a>02428 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, mr);
|
|
<a name="l02429"></a>02429 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02430"></a>02430 }
|
|
<a name="l02431"></a>02431 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02432"></a><a class="code" href="a00270.html#a3816d782ec6add1b633fa1b7cae3068b">02432</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#a3816d782ec6add1b633fa1b7cae3068b">assign_temporary</a> (<a class="code" href="a00270.html">matrix_range</a> &mr) {
|
|
<a name="l02433"></a>02433 <span class="keywordflow">return</span> *<span class="keyword">this</span> = mr;
|
|
<a name="l02434"></a>02434 }
|
|
<a name="l02435"></a>02435 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02436"></a>02436 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02437"></a><a class="code" href="a00270.html#a12d127ab33ae5970f6d001f01d030545">02437</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#aeb51daaf04bfd596ebdf51d5b723e69b">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02438"></a>02438 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (ae));
|
|
<a name="l02439"></a>02439 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02440"></a>02440 }
|
|
<a name="l02441"></a>02441 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02442"></a>02442 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02443"></a><a class="code" href="a00270.html#af80c60ea5979232e4ca4489662157687">02443</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#af80c60ea5979232e4ca4489662157687">assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02444"></a>02444 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l02445"></a>02445 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02446"></a>02446 }
|
|
<a name="l02447"></a>02447 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02448"></a>02448 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02449"></a><a class="code" href="a00270.html#a1dffaf0136df97131f73048d6900aa7e">02449</a> <a class="code" href="a00270.html">matrix_range</a>& <a class="code" href="a00270.html#a1dffaf0136df97131f73048d6900aa7e">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02450"></a>02450 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l02451"></a>02451 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02452"></a>02452 }
|
|
<a name="l02453"></a>02453 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02454"></a>02454 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02455"></a><a class="code" href="a00270.html#a423a649a2b8d5d181f61b1f9dee9893c">02455</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#a423a649a2b8d5d181f61b1f9dee9893c">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02456"></a>02456 matrix_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l02457"></a>02457 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02458"></a>02458 }
|
|
<a name="l02459"></a>02459 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02460"></a>02460 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02461"></a><a class="code" href="a00270.html#a8f35ec1a54c6017b8b32dd328148cb84">02461</a> <a class="code" href="a00270.html">matrix_range</a>& <a class="code" href="a00270.html#a8f35ec1a54c6017b8b32dd328148cb84">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02462"></a>02462 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l02463"></a>02463 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02464"></a>02464 }
|
|
<a name="l02465"></a>02465 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l02466"></a>02466 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02467"></a><a class="code" href="a00270.html#a3cd4561b05c49f8ca74ee148ab4ab133">02467</a> <a class="code" href="a00270.html">matrix_range</a> &<a class="code" href="a00270.html#a3cd4561b05c49f8ca74ee148ab4ab133">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l02468"></a>02468 matrix_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l02469"></a>02469 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02470"></a>02470 }
|
|
<a name="l02471"></a>02471 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l02472"></a>02472 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02473"></a><a class="code" href="a00270.html#a33834cf178aca1d73d0139da473304f0">02473</a> <a class="code" href="a00270.html">matrix_range</a>& <a class="code" href="a00270.html#a33834cf178aca1d73d0139da473304f0">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l02474"></a>02474 matrix_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l02475"></a>02475 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02476"></a>02476 }
|
|
<a name="l02477"></a>02477 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l02478"></a>02478 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02479"></a><a class="code" href="a00270.html#a11467f62dc91cfb35a1e6b4ae1aa4ba5">02479</a> <a class="code" href="a00270.html">matrix_range</a>& <a class="code" href="a00270.html#a11467f62dc91cfb35a1e6b4ae1aa4ba5">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l02480"></a>02480 matrix_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l02481"></a>02481 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02482"></a>02482 }
|
|
<a name="l02483"></a>02483
|
|
<a name="l02484"></a>02484 <span class="comment">// Closure comparison</span>
|
|
<a name="l02485"></a>02485 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02486"></a><a class="code" href="a00270.html#ac1e706698b01b48dfff7445e63880c96">02486</a> <span class="keywordtype">bool</span> <a class="code" href="a00270.html#ac1e706698b01b48dfff7445e63880c96">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range</a> &mr)<span class="keyword"> const </span>{
|
|
<a name="l02487"></a>02487 <span class="keywordflow">return</span> (*this).data_.same_closure (mr.<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>);
|
|
<a name="l02488"></a>02488 }
|
|
<a name="l02489"></a>02489
|
|
<a name="l02490"></a>02490 <span class="comment">// Comparison</span>
|
|
<a name="l02491"></a>02491 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02492"></a><a class="code" href="a00270.html#a2444873b35ec4c0f62aeb95b1ef81ddc">02492</a> <span class="keywordtype">bool</span> <a class="code" href="a00270.html#a2444873b35ec4c0f62aeb95b1ef81ddc">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range</a> &mr)<span class="keyword"> const </span>{
|
|
<a name="l02493"></a>02493 <span class="keywordflow">return</span> (*this).data_ == (mr.<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>) && <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> == mr.<a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a> && <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a> == mr.<a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a>;
|
|
<a name="l02494"></a>02494 }
|
|
<a name="l02495"></a>02495
|
|
<a name="l02496"></a>02496 <span class="comment">// Swapping</span>
|
|
<a name="l02497"></a>02497 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02498"></a><a class="code" href="a00270.html#aba175cbc81107202bc31e11fbbf6d50a">02498</a> <span class="keywordtype">void</span> <a class="code" href="a00270.html#aba175cbc81107202bc31e11fbbf6d50a">swap</a> (<a class="code" href="a00270.html">matrix_range</a> mr) {
|
|
<a name="l02499"></a>02499 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mr) {
|
|
<a name="l02500"></a>02500 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> () == mr.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l02501"></a>02501 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> () == mr.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l02502"></a>02502 matrix_swap<scalar_swap> (*<span class="keyword">this</span>, mr);
|
|
<a name="l02503"></a>02503 }
|
|
<a name="l02504"></a>02504 }
|
|
<a name="l02505"></a>02505 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02506"></a><a class="code" href="a00270.html#abe822e4b0b365f8c61f2aef18618683c">02506</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00270.html#abe822e4b0b365f8c61f2aef18618683c">swap</a> (<a class="code" href="a00270.html">matrix_range</a> mr1, <a class="code" href="a00270.html">matrix_range</a> mr2) {
|
|
<a name="l02507"></a>02507 mr1.<a class="code" href="a00270.html#aba175cbc81107202bc31e11fbbf6d50a">swap</a> (mr2);
|
|
<a name="l02508"></a>02508 }
|
|
<a name="l02509"></a>02509
|
|
<a name="l02510"></a>02510 <span class="comment">// Iterator types</span>
|
|
<a name="l02511"></a>02511 <span class="keyword">private</span>:
|
|
<a name="l02512"></a><a class="code" href="a00270.html#a4408c0351e062e5dfd6e1321f0481f4c">02512</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1 <a class="code" href="a00270.html#a4408c0351e062e5dfd6e1321f0481f4c">const_subiterator1_type</a>;
|
|
<a name="l02513"></a>02513 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l02514"></a>02514 <span class="keyword">typename</span> M::const_iterator1,
|
|
<a name="l02515"></a><a class="code" href="a00270.html#a7d22fec892d79feff94306964fe2d43f">02515</a> <span class="keyword">typename</span> M::iterator1>::type <a class="code" href="a00270.html#a7d22fec892d79feff94306964fe2d43f">subiterator1_type</a>;
|
|
<a name="l02516"></a><a class="code" href="a00270.html#af445436ce62e4f7105bdc6dacacc8b32">02516</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2 <a class="code" href="a00270.html#af445436ce62e4f7105bdc6dacacc8b32">const_subiterator2_type</a>;
|
|
<a name="l02517"></a>02517 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l02518"></a>02518 <span class="keyword">typename</span> M::const_iterator2,
|
|
<a name="l02519"></a><a class="code" href="a00270.html#a6dd910ace84d44a83f254523856bcc34">02519</a> <span class="keyword">typename</span> M::iterator2>::type <a class="code" href="a00270.html#a6dd910ace84d44a83f254523856bcc34">subiterator2_type</a>;
|
|
<a name="l02520"></a>02520
|
|
<a name="l02521"></a>02521 <span class="keyword">public</span>:
|
|
<a name="l02522"></a>02522 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02523"></a>02523 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00169.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator1<matrix_range<matrix_type></a>,
|
|
<a name="l02524"></a>02524 <span class="keyword">typename</span> subiterator1_type::iterator_category> <a class="code" href="a00273.html">iterator1</a>;
|
|
<a name="l02525"></a>02525 <span class="keyword">typedef</span> <a class="code" href="a00170.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator2<matrix_range<matrix_type></a>,
|
|
<a name="l02526"></a>02526 <span class="keyword">typename</span> subiterator2_type::iterator_category> <a class="code" href="a00274.html">iterator2</a>;
|
|
<a name="l02527"></a>02527 <span class="keyword">typedef</span> <a class="code" href="a00166.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator1<matrix_range<matrix_type></a>,
|
|
<a name="l02528"></a>02528 <span class="keyword">typename</span> const_subiterator1_type::iterator_category> <a class="code" href="a00271.html">const_iterator1</a>;
|
|
<a name="l02529"></a>02529 <span class="keyword">typedef</span> <a class="code" href="a00167.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator2<matrix_range<matrix_type></a>,
|
|
<a name="l02530"></a>02530 <span class="keyword">typename</span> const_subiterator2_type::iterator_category> <a class="code" href="a00272.html">const_iterator2</a>;
|
|
<a name="l02531"></a>02531 <span class="preprocessor">#else</span>
|
|
<a name="l02532"></a>02532 <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00271.html">const_iterator1</a>;
|
|
<a name="l02533"></a>02533 <span class="keyword">class </span><a class="code" href="a00273.html">iterator1</a>;
|
|
<a name="l02534"></a>02534 <span class="keyword">class </span><a class="code" href="a00272.html">const_iterator2</a>;
|
|
<a name="l02535"></a><a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">02535</a> <span class="keyword">class </span><a class="code" href="a00274.html">iterator2</a>;
|
|
<a name="l02536"></a>02536 <span class="preprocessor">#endif</span>
|
|
<a name="l02537"></a>02537 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<const_iterator1></a> <a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">const_reverse_iterator1</a>;
|
|
<a name="l02538"></a><a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">02538</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<iterator1></a> <a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">reverse_iterator1</a>;
|
|
<a name="l02539"></a><a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">02539</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<const_iterator2></a> <a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">const_reverse_iterator2</a>;
|
|
<a name="l02540"></a><a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">02540</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<iterator2></a> <a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">reverse_iterator2</a>;
|
|
<a name="l02541"></a>02541
|
|
<a name="l02542"></a>02542 <span class="comment">// Element lookup</span>
|
|
<a name="l02543"></a>02543 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02544"></a><a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">02544</a> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (<span class="keywordtype">int</span> rank, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l02545"></a>02545 <a class="code" href="a00270.html#a4408c0351e062e5dfd6e1321f0481f4c">const_subiterator1_type</a> it1 (<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>.find1 (rank, <a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> () + i, <a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> () + j));
|
|
<a name="l02546"></a>02546 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02547"></a>02547 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00271.html">const_iterator1</a> (*<span class="keyword">this</span>, it1.index1 (), it1.index2 ());
|
|
<a name="l02548"></a>02548 <span class="preprocessor">#else</span>
|
|
<a name="l02549"></a>02549 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00271.html">const_iterator1</a> (*<span class="keyword">this</span>, it1);
|
|
<a name="l02550"></a>02550 <span class="preprocessor">#endif</span>
|
|
<a name="l02551"></a>02551 <span class="preprocessor"></span> }
|
|
<a name="l02552"></a>02552 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02553"></a><a class="code" href="a00270.html#a4fb9750ac6443fa2b8a58c66386d517d">02553</a> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00270.html#a4fb9750ac6443fa2b8a58c66386d517d">find1</a> (<span class="keywordtype">int</span> rank, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j) {
|
|
<a name="l02554"></a>02554 <a class="code" href="a00270.html#a7d22fec892d79feff94306964fe2d43f">subiterator1_type</a> it1 (<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>.find1 (rank, <a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> () + i, <a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> () + j));
|
|
<a name="l02555"></a>02555 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02556"></a>02556 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00273.html">iterator1</a> (*<span class="keyword">this</span>, it1.index1 (), it1.index2 ());
|
|
<a name="l02557"></a>02557 <span class="preprocessor">#else</span>
|
|
<a name="l02558"></a>02558 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00273.html">iterator1</a> (*<span class="keyword">this</span>, it1);
|
|
<a name="l02559"></a>02559 <span class="preprocessor">#endif</span>
|
|
<a name="l02560"></a>02560 <span class="preprocessor"></span> }
|
|
<a name="l02561"></a>02561 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02562"></a><a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">02562</a> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (<span class="keywordtype">int</span> rank, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l02563"></a>02563 <a class="code" href="a00270.html#af445436ce62e4f7105bdc6dacacc8b32">const_subiterator2_type</a> it2 (<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>.find2 (rank, <a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> () + i, <a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> () + j));
|
|
<a name="l02564"></a>02564 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02565"></a>02565 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00272.html">const_iterator2</a> (*<span class="keyword">this</span>, it2.index1 (), it2.index2 ());
|
|
<a name="l02566"></a>02566 <span class="preprocessor">#else</span>
|
|
<a name="l02567"></a>02567 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00272.html">const_iterator2</a> (*<span class="keyword">this</span>, it2);
|
|
<a name="l02568"></a>02568 <span class="preprocessor">#endif</span>
|
|
<a name="l02569"></a>02569 <span class="preprocessor"></span> }
|
|
<a name="l02570"></a>02570 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02571"></a><a class="code" href="a00270.html#aa98485e96490d9fb6e95a3aa77bf3a69">02571</a> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00270.html#aa98485e96490d9fb6e95a3aa77bf3a69">find2</a> (<span class="keywordtype">int</span> rank, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> i, <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> j) {
|
|
<a name="l02572"></a>02572 <a class="code" href="a00270.html#a6dd910ace84d44a83f254523856bcc34">subiterator2_type</a> it2 (<a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>.find2 (rank, <a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> () + i, <a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> () + j));
|
|
<a name="l02573"></a>02573 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02574"></a>02574 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00274.html">iterator2</a> (*<span class="keyword">this</span>, it2.index1 (), it2.index2 ());
|
|
<a name="l02575"></a>02575 <span class="preprocessor">#else</span>
|
|
<a name="l02576"></a>02576 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00274.html">iterator2</a> (*<span class="keyword">this</span>, it2);
|
|
<a name="l02577"></a>02577 <span class="preprocessor">#endif</span>
|
|
<a name="l02578"></a>02578 <span class="preprocessor"></span> }
|
|
<a name="l02579"></a>02579
|
|
<a name="l02580"></a>02580
|
|
<a name="l02581"></a>02581 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02582"></a><a class="code" href="a00271.html">02582</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00271.html">const_iterator1</a>:
|
|
<a name="l02583"></a>02583 <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><matrix_range>,
|
|
<a name="l02584"></a>02584 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename const_subiterator1_type::iterator_category>::template
|
|
<a name="l02585"></a>02585 iterator_base<const_iterator1, value_type>::type {
|
|
<a name="l02586"></a>02586 <span class="keyword">public</span>:
|
|
<a name="l02587"></a><a class="code" href="a00271.html#a5947e6f51256a5d8c783c111802ada4d">02587</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator1_type::value_type <a class="code" href="a00271.html#a5947e6f51256a5d8c783c111802ada4d">value_type</a>;
|
|
<a name="l02588"></a><a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">02588</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator1_type::difference_type <a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">difference_type</a>;
|
|
<a name="l02589"></a><a class="code" href="a00271.html#ac9e67a0dbdf2024de30f68af5537522c">02589</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator1_type::reference <a class="code" href="a00271.html#ac9e67a0dbdf2024de30f68af5537522c">reference</a>;
|
|
<a name="l02590"></a><a class="code" href="a00271.html#a47b6e382a50ffe03079fde2ccdd7c4e4">02590</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator1_type::pointer <a class="code" href="a00271.html#a47b6e382a50ffe03079fde2ccdd7c4e4">pointer</a>;
|
|
<a name="l02591"></a><a class="code" href="a00271.html#a675a38d84fbf400dd1698a038e8366f2">02591</a> <span class="keyword">typedef</span> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00271.html#a675a38d84fbf400dd1698a038e8366f2">dual_iterator_type</a>;
|
|
<a name="l02592"></a><a class="code" href="a00271.html#a63c65b91481064748581265477c5d316">02592</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00271.html#a63c65b91481064748581265477c5d316">dual_reverse_iterator_type</a>;
|
|
<a name="l02593"></a>02593
|
|
<a name="l02594"></a>02594 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02595"></a>02595 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02596"></a><a class="code" href="a00271.html#a06eb2da4ae0a304a707e12db8be69920">02596</a> <a class="code" href="a00271.html#a06eb2da4ae0a304a707e12db8be69920">const_iterator1</a> ():
|
|
<a name="l02597"></a>02597 <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="a00270.html">self_type</a>> (), <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> () {}
|
|
<a name="l02598"></a>02598 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02599"></a><a class="code" href="a00271.html#a44bb9da3d5cc693c166d6f7d94355345">02599</a> <a class="code" href="a00271.html#a06eb2da4ae0a304a707e12db8be69920">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00270.html#a4408c0351e062e5dfd6e1321f0481f4c">const_subiterator1_type</a> &it):
|
|
<a name="l02600"></a>02600 <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="a00270.html">self_type</a>> (mr), <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> (it) {}
|
|
<a name="l02601"></a>02601 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02602"></a><a class="code" href="a00271.html#a10fdd6c63c3d9f2cd85ddb65388d7acd">02602</a> <a class="code" href="a00271.html#a06eb2da4ae0a304a707e12db8be69920">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00273.html">iterator1</a> &it):
|
|
<a name="l02603"></a>02603 <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="a00270.html">self_type</a>> (it ()), <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> (it.<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>) {}
|
|
<a name="l02604"></a>02604
|
|
<a name="l02605"></a>02605 <span class="comment">// Arithmetic</span>
|
|
<a name="l02606"></a>02606 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02607"></a><a class="code" href="a00271.html#a0bc5e0b36153fd14759146a78082e78b">02607</a> <a class="code" href="a00271.html">const_iterator1</a> &<a class="code" href="a00271.html#a0bc5e0b36153fd14759146a78082e78b">operator ++ </a>() {
|
|
<a name="l02608"></a>02608 ++ <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02609"></a>02609 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02610"></a>02610 }
|
|
<a name="l02611"></a>02611 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02612"></a><a class="code" href="a00271.html#ad8f06ea8a0bb18d1d80749e743778431">02612</a> <a class="code" href="a00271.html">const_iterator1</a> &<a class="code" href="a00271.html#ad8f06ea8a0bb18d1d80749e743778431">operator -- </a>() {
|
|
<a name="l02613"></a>02613 -- <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02614"></a>02614 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02615"></a>02615 }
|
|
<a name="l02616"></a>02616 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02617"></a><a class="code" href="a00271.html#a3f8aceebebd5d5837c47161f369e6300">02617</a> <a class="code" href="a00271.html">const_iterator1</a> &<a class="code" href="a00271.html#a3f8aceebebd5d5837c47161f369e6300">operator += </a>(<a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">difference_type</a> n) {
|
|
<a name="l02618"></a>02618 <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> += n;
|
|
<a name="l02619"></a>02619 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02620"></a>02620 }
|
|
<a name="l02621"></a>02621 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02622"></a><a class="code" href="a00271.html#aa55477f7bac684ea5d5c93b3460b5706">02622</a> <a class="code" href="a00271.html">const_iterator1</a> &<a class="code" href="a00271.html#aa55477f7bac684ea5d5c93b3460b5706">operator -= </a>(<a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">difference_type</a> n) {
|
|
<a name="l02623"></a>02623 <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> -= n;
|
|
<a name="l02624"></a>02624 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02625"></a>02625 }
|
|
<a name="l02626"></a>02626 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02627"></a><a class="code" href="a00271.html#a5ebd20f74540106290dc1e13762d3715">02627</a> <a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">difference_type</a> <a class="code" href="a00271.html#a5ebd20f74540106290dc1e13762d3715">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00271.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02628"></a>02628 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02629"></a>02629 <span class="keywordflow">return</span> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> - it.<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02630"></a>02630 }
|
|
<a name="l02631"></a>02631
|
|
<a name="l02632"></a>02632 <span class="comment">// Dereference</span>
|
|
<a name="l02633"></a>02633 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02634"></a><a class="code" href="a00271.html#a6d37b72e65220672b4cfcea1a0f8a530">02634</a> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a> <a class="code" href="a00271.html#a6d37b72e65220672b4cfcea1a0f8a530">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l02635"></a>02635 <span class="keywordflow">return</span> *<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02636"></a>02636 }
|
|
<a name="l02637"></a>02637 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02638"></a><a class="code" href="a00271.html#a686b0074ec6699f88416c3c0e80e2b46">02638</a> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a> <a class="code" href="a00271.html#a686b0074ec6699f88416c3c0e80e2b46">operator [] </a>(<a class="code" href="a00271.html#ab789267f1754093000387b40fd8e2e5f">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l02639"></a>02639 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l02640"></a>02640 }
|
|
<a name="l02641"></a>02641
|
|
<a name="l02642"></a>02642 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l02643"></a>02643 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02644"></a>02644 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02645"></a>02645 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02646"></a>02646 <span class="preprocessor">#endif</span>
|
|
<a name="l02647"></a><a class="code" href="a00271.html#a74832f9bf297fb6bd7a7590e3c6e36b4">02647</a> <span class="preprocessor"></span> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00271.html#a74832f9bf297fb6bd7a7590e3c6e36b4">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02648"></a>02648 <span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02649"></a>02649 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (1, <a class="code" href="a00271.html#a8b004ae2284f93b82e6e40c508d8c628">index1</a> (), 0);
|
|
<a name="l02650"></a>02650 }
|
|
<a name="l02651"></a>02651 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02652"></a>02652 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02653"></a>02653 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02654"></a>02654 <span class="preprocessor">#endif</span>
|
|
<a name="l02655"></a><a class="code" href="a00271.html#a6b40daaf7e1aa067aca673b4fc343cec">02655</a> <span class="preprocessor"></span> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00271.html#a6b40daaf7e1aa067aca673b4fc343cec">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02656"></a>02656 <span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02657"></a>02657 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (1, <a class="code" href="a00271.html#a8b004ae2284f93b82e6e40c508d8c628">index1</a> (), mr.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ());
|
|
<a name="l02658"></a>02658 }
|
|
<a name="l02659"></a>02659 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02660"></a>02660 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02661"></a>02661 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02662"></a>02662 <span class="preprocessor">#endif</span>
|
|
<a name="l02663"></a><a class="code" href="a00271.html#a112a6fe080fbdedea94bb5bf32c92a17">02663</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00271.html#a112a6fe080fbdedea94bb5bf32c92a17">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02664"></a>02664 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">const_reverse_iterator2</a> (<a class="code" href="a00271.html#a6b40daaf7e1aa067aca673b4fc343cec">end</a> ());
|
|
<a name="l02665"></a>02665 }
|
|
<a name="l02666"></a>02666 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02667"></a>02667 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02668"></a>02668 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02669"></a>02669 <span class="preprocessor">#endif</span>
|
|
<a name="l02670"></a><a class="code" href="a00271.html#a5b059d46f09faed9d051055aa5bf2eac">02670</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00271.html#a5b059d46f09faed9d051055aa5bf2eac">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02671"></a>02671 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">const_reverse_iterator2</a> (<a class="code" href="a00271.html#a74832f9bf297fb6bd7a7590e3c6e36b4">begin</a> ());
|
|
<a name="l02672"></a>02672 }
|
|
<a name="l02673"></a>02673 <span class="preprocessor">#endif</span>
|
|
<a name="l02674"></a>02674 <span class="preprocessor"></span>
|
|
<a name="l02675"></a>02675 <span class="comment">// Indices</span>
|
|
<a name="l02676"></a>02676 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02677"></a><a class="code" href="a00271.html#a8b004ae2284f93b82e6e40c508d8c628">02677</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00271.html#a8b004ae2284f93b82e6e40c508d8c628">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02678"></a>02678 <span class="keywordflow">return</span> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>.index1 () - (*this) ().<a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> ();
|
|
<a name="l02679"></a>02679 }
|
|
<a name="l02680"></a>02680 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02681"></a><a class="code" href="a00271.html#a8df0634fd060121ce41cd624579c7d74">02681</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00271.html#a8df0634fd060121ce41cd624579c7d74">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02682"></a>02682 <span class="keywordflow">return</span> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>.index2 () - (*this) ().<a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> ();
|
|
<a name="l02683"></a>02683 }
|
|
<a name="l02684"></a>02684
|
|
<a name="l02685"></a>02685 <span class="comment">// Assignment</span>
|
|
<a name="l02686"></a>02686 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02687"></a><a class="code" href="a00271.html#a9008c92dd92ad14673c476c4e49ff510">02687</a> <a class="code" href="a00271.html">const_iterator1</a> &<a class="code" href="a00271.html#a9008c92dd92ad14673c476c4e49ff510">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00271.html">const_iterator1</a> &it) {
|
|
<a name="l02688"></a>02688 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l02689"></a>02689 <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> = it.<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02690"></a>02690 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02691"></a>02691 }
|
|
<a name="l02692"></a>02692
|
|
<a name="l02693"></a>02693 <span class="comment">// Comparison</span>
|
|
<a name="l02694"></a>02694 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02695"></a><a class="code" href="a00271.html#a23feb80496f40a3319d479293b01840e">02695</a> <span class="keywordtype">bool</span> <a class="code" href="a00271.html#a23feb80496f40a3319d479293b01840e">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00271.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02696"></a>02696 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02697"></a>02697 <span class="keywordflow">return</span> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> == it.<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02698"></a>02698 }
|
|
<a name="l02699"></a>02699 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02700"></a><a class="code" href="a00271.html#a06e9f707cfe2b8333f488c7deea2518c">02700</a> <span class="keywordtype">bool</span> <a class="code" href="a00271.html#a06e9f707cfe2b8333f488c7deea2518c">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00271.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02701"></a>02701 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02702"></a>02702 <span class="keywordflow">return</span> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a> < it.<a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02703"></a>02703 }
|
|
<a name="l02704"></a>02704
|
|
<a name="l02705"></a>02705 <span class="keyword">private</span>:
|
|
<a name="l02706"></a><a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">02706</a> <a class="code" href="a00270.html#a4408c0351e062e5dfd6e1321f0481f4c">const_subiterator1_type</a> <a class="code" href="a00271.html#ac618f6ebce4e9e93fd58daaa52b02d0d">it_</a>;
|
|
<a name="l02707"></a>02707 };
|
|
<a name="l02708"></a>02708 <span class="preprocessor">#endif</span>
|
|
<a name="l02709"></a>02709 <span class="preprocessor"></span>
|
|
<a name="l02710"></a>02710 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02711"></a><a class="code" href="a00270.html#a65d4e8605aa30ae8cefe3cdbf8913cbc">02711</a> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00270.html#a65d4e8605aa30ae8cefe3cdbf8913cbc">begin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02712"></a>02712 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (0, 0, 0);
|
|
<a name="l02713"></a>02713 }
|
|
<a name="l02714"></a>02714 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02715"></a><a class="code" href="a00270.html#a1a2d40b7751f147a31b9a0bd448c601a">02715</a> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00270.html#a1a2d40b7751f147a31b9a0bd448c601a">end1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02716"></a>02716 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (0, <a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> (), 0);
|
|
<a name="l02717"></a>02717 }
|
|
<a name="l02718"></a>02718
|
|
<a name="l02719"></a>02719 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02720"></a><a class="code" href="a00273.html">02720</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00273.html">iterator1</a>:
|
|
<a name="l02721"></a>02721 <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><matrix_range>,
|
|
<a name="l02722"></a>02722 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename subiterator1_type::iterator_category>::template
|
|
<a name="l02723"></a>02723 iterator_base<iterator1, value_type>::type {
|
|
<a name="l02724"></a>02724 <span class="keyword">public</span>:
|
|
<a name="l02725"></a><a class="code" href="a00273.html#a04aaff2435aa7c3256e66307a15e7cfc">02725</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator1_type::value_type <a class="code" href="a00273.html#a04aaff2435aa7c3256e66307a15e7cfc">value_type</a>;
|
|
<a name="l02726"></a><a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">02726</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator1_type::difference_type <a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">difference_type</a>;
|
|
<a name="l02727"></a><a class="code" href="a00273.html#a7533b618fd29780f66138429ebff2013">02727</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator1_type::reference <a class="code" href="a00273.html#a7533b618fd29780f66138429ebff2013">reference</a>;
|
|
<a name="l02728"></a><a class="code" href="a00273.html#a5d8277a60f94a002b7db68e542aaf9bb">02728</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator1_type::pointer <a class="code" href="a00273.html#a5d8277a60f94a002b7db68e542aaf9bb">pointer</a>;
|
|
<a name="l02729"></a><a class="code" href="a00273.html#a9de6aad470fa96a8de0317a151b9ee89">02729</a> <span class="keyword">typedef</span> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00273.html#a9de6aad470fa96a8de0317a151b9ee89">dual_iterator_type</a>;
|
|
<a name="l02730"></a><a class="code" href="a00273.html#a3616f94d55e87441b53fc357e8b41756">02730</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00273.html#a3616f94d55e87441b53fc357e8b41756">dual_reverse_iterator_type</a>;
|
|
<a name="l02731"></a>02731
|
|
<a name="l02732"></a>02732 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02733"></a>02733 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02734"></a><a class="code" href="a00273.html#a1c88ebbd4c0131cbd01e364d0e19031d">02734</a> <a class="code" href="a00273.html#a1c88ebbd4c0131cbd01e364d0e19031d">iterator1</a> ():
|
|
<a name="l02735"></a>02735 <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><<a class="code" href="a00270.html">self_type</a>> (), <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> () {}
|
|
<a name="l02736"></a>02736 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02737"></a><a class="code" href="a00273.html#a3ef021525ca05c7749db04502b207199">02737</a> <a class="code" href="a00273.html#a1c88ebbd4c0131cbd01e364d0e19031d">iterator1</a> (<a class="code" href="a00270.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00270.html#a7d22fec892d79feff94306964fe2d43f">subiterator1_type</a> &it):
|
|
<a name="l02738"></a>02738 <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><<a class="code" href="a00270.html">self_type</a>> (mr), <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> (it) {}
|
|
<a name="l02739"></a>02739
|
|
<a name="l02740"></a>02740 <span class="comment">// Arithmetic</span>
|
|
<a name="l02741"></a>02741 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02742"></a><a class="code" href="a00273.html#af1db606eeae94c217c970e1b66aa3c02">02742</a> <a class="code" href="a00273.html">iterator1</a> &<a class="code" href="a00273.html#af1db606eeae94c217c970e1b66aa3c02">operator ++ </a>() {
|
|
<a name="l02743"></a>02743 ++ <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02744"></a>02744 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02745"></a>02745 }
|
|
<a name="l02746"></a>02746 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02747"></a><a class="code" href="a00273.html#a6c7cb7eb52f1e0a97ac3d906793eab11">02747</a> <a class="code" href="a00273.html">iterator1</a> &<a class="code" href="a00273.html#a6c7cb7eb52f1e0a97ac3d906793eab11">operator -- </a>() {
|
|
<a name="l02748"></a>02748 -- <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02749"></a>02749 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02750"></a>02750 }
|
|
<a name="l02751"></a>02751 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02752"></a><a class="code" href="a00273.html#ab8c75850994a331ee4619541c77fb6ca">02752</a> <a class="code" href="a00273.html">iterator1</a> &<a class="code" href="a00273.html#ab8c75850994a331ee4619541c77fb6ca">operator += </a>(<a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">difference_type</a> n) {
|
|
<a name="l02753"></a>02753 <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> += n;
|
|
<a name="l02754"></a>02754 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02755"></a>02755 }
|
|
<a name="l02756"></a>02756 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02757"></a><a class="code" href="a00273.html#abf558c6c839977df237b377c099aa9ee">02757</a> <a class="code" href="a00273.html">iterator1</a> &<a class="code" href="a00273.html#abf558c6c839977df237b377c099aa9ee">operator -= </a>(<a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">difference_type</a> n) {
|
|
<a name="l02758"></a>02758 <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> -= n;
|
|
<a name="l02759"></a>02759 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02760"></a>02760 }
|
|
<a name="l02761"></a>02761 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02762"></a><a class="code" href="a00273.html#a1eb2b5557c8d12043d6a48d1ecd5d0b0">02762</a> <a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">difference_type</a> <a class="code" href="a00273.html#a1eb2b5557c8d12043d6a48d1ecd5d0b0">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00273.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02763"></a>02763 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02764"></a>02764 <span class="keywordflow">return</span> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> - it.<a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02765"></a>02765 }
|
|
<a name="l02766"></a>02766
|
|
<a name="l02767"></a>02767 <span class="comment">// Dereference</span>
|
|
<a name="l02768"></a>02768 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02769"></a><a class="code" href="a00273.html#a99c72ee6310d29e48a3f87f465017ee4">02769</a> <a class="code" href="a00273.html#a7533b618fd29780f66138429ebff2013">reference</a> <a class="code" href="a00273.html#a99c72ee6310d29e48a3f87f465017ee4">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l02770"></a>02770 <span class="keywordflow">return</span> *<a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02771"></a>02771 }
|
|
<a name="l02772"></a>02772 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02773"></a><a class="code" href="a00273.html#a666863f29999b03bf4695654babef7a3">02773</a> <a class="code" href="a00273.html#a7533b618fd29780f66138429ebff2013">reference</a> <a class="code" href="a00273.html#a666863f29999b03bf4695654babef7a3">operator [] </a>(<a class="code" href="a00273.html#a060e8144368a365a2ec275174f2aff4b">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l02774"></a>02774 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l02775"></a>02775 }
|
|
<a name="l02776"></a>02776
|
|
<a name="l02777"></a>02777 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l02778"></a>02778 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02779"></a>02779 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02780"></a>02780 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02781"></a>02781 <span class="preprocessor">#endif</span>
|
|
<a name="l02782"></a><a class="code" href="a00273.html#aeb8cb4be8a276f9421d8574449167fc6">02782</a> <span class="preprocessor"></span> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00273.html#aeb8cb4be8a276f9421d8574449167fc6">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02783"></a>02783 <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02784"></a>02784 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (1, <a class="code" href="a00273.html#a3264e1008892520b5d3f3870bdef297c">index1</a> (), 0);
|
|
<a name="l02785"></a>02785 }
|
|
<a name="l02786"></a>02786 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02787"></a>02787 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02788"></a>02788 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02789"></a>02789 <span class="preprocessor">#endif</span>
|
|
<a name="l02790"></a><a class="code" href="a00273.html#a1b019eac23a4a9ecdcf1d2bc9a336b51">02790</a> <span class="preprocessor"></span> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00273.html#a1b019eac23a4a9ecdcf1d2bc9a336b51">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02791"></a>02791 <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02792"></a>02792 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (1, <a class="code" href="a00273.html#a3264e1008892520b5d3f3870bdef297c">index1</a> (), mr.<a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ());
|
|
<a name="l02793"></a>02793 }
|
|
<a name="l02794"></a>02794 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02795"></a>02795 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02796"></a>02796 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02797"></a>02797 <span class="preprocessor">#endif</span>
|
|
<a name="l02798"></a><a class="code" href="a00273.html#a2f56ebd94072daa6f75a45ce41002765">02798</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00273.html#a2f56ebd94072daa6f75a45ce41002765">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02799"></a>02799 <span class="keywordflow">return</span> <a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">reverse_iterator2</a> (<a class="code" href="a00273.html#a1b019eac23a4a9ecdcf1d2bc9a336b51">end</a> ());
|
|
<a name="l02800"></a>02800 }
|
|
<a name="l02801"></a>02801 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02802"></a>02802 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02803"></a>02803 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02804"></a>02804 <span class="preprocessor">#endif</span>
|
|
<a name="l02805"></a><a class="code" href="a00273.html#a5c0149f4e7e0b9bfc75367c634dadf36">02805</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00273.html#a5c0149f4e7e0b9bfc75367c634dadf36">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02806"></a>02806 <span class="keywordflow">return</span> <a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">reverse_iterator2</a> (<a class="code" href="a00273.html#aeb8cb4be8a276f9421d8574449167fc6">begin</a> ());
|
|
<a name="l02807"></a>02807 }
|
|
<a name="l02808"></a>02808 <span class="preprocessor">#endif</span>
|
|
<a name="l02809"></a>02809 <span class="preprocessor"></span>
|
|
<a name="l02810"></a>02810 <span class="comment">// Indices</span>
|
|
<a name="l02811"></a>02811 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02812"></a><a class="code" href="a00273.html#a3264e1008892520b5d3f3870bdef297c">02812</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00273.html#a3264e1008892520b5d3f3870bdef297c">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02813"></a>02813 <span class="keywordflow">return</span> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>.index1 () - (*this) ().<a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> ();
|
|
<a name="l02814"></a>02814 }
|
|
<a name="l02815"></a>02815 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02816"></a><a class="code" href="a00273.html#afd0a3f1ab9a8048457ab6273aa371823">02816</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00273.html#afd0a3f1ab9a8048457ab6273aa371823">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02817"></a>02817 <span class="keywordflow">return</span> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>.index2 () - (*this) ().<a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> ();
|
|
<a name="l02818"></a>02818 }
|
|
<a name="l02819"></a>02819
|
|
<a name="l02820"></a>02820 <span class="comment">// Assignment</span>
|
|
<a name="l02821"></a>02821 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02822"></a><a class="code" href="a00273.html#ad762e5c41ef42a69351ee555d64018d5">02822</a> <a class="code" href="a00273.html">iterator1</a> &<a class="code" href="a00273.html#ad762e5c41ef42a69351ee555d64018d5">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00273.html">iterator1</a> &it) {
|
|
<a name="l02823"></a>02823 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l02824"></a>02824 <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> = it.<a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02825"></a>02825 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02826"></a>02826 }
|
|
<a name="l02827"></a>02827
|
|
<a name="l02828"></a>02828 <span class="comment">// Comparison</span>
|
|
<a name="l02829"></a>02829 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02830"></a><a class="code" href="a00273.html#a64eabcc10d5936ed1aac2862af9ac72b">02830</a> <span class="keywordtype">bool</span> <a class="code" href="a00273.html#a64eabcc10d5936ed1aac2862af9ac72b">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00273.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02831"></a>02831 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02832"></a>02832 <span class="keywordflow">return</span> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> == it.<a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02833"></a>02833 }
|
|
<a name="l02834"></a>02834 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02835"></a><a class="code" href="a00273.html#a8c96654a42941fa130a6ae54a05b6218">02835</a> <span class="keywordtype">bool</span> <a class="code" href="a00273.html#a8c96654a42941fa130a6ae54a05b6218">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00273.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02836"></a>02836 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02837"></a>02837 <span class="keywordflow">return</span> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a> < it.<a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02838"></a>02838 }
|
|
<a name="l02839"></a>02839
|
|
<a name="l02840"></a>02840 <span class="keyword">private</span>:
|
|
<a name="l02841"></a><a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">02841</a> <a class="code" href="a00270.html#a7d22fec892d79feff94306964fe2d43f">subiterator1_type</a> <a class="code" href="a00273.html#ae32e69518cfa1ef3004afb82e9b7b87d">it_</a>;
|
|
<a name="l02842"></a>02842
|
|
<a name="l02843"></a><a class="code" href="a00273.html#a2217ee3466e64c9a0105ef5d64ba6a11">02843</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00271.html">const_iterator1</a>;
|
|
<a name="l02844"></a>02844 };
|
|
<a name="l02845"></a>02845 <span class="preprocessor">#endif</span>
|
|
<a name="l02846"></a>02846 <span class="preprocessor"></span>
|
|
<a name="l02847"></a>02847 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02848"></a><a class="code" href="a00270.html#ae5ec0172d2a870a16bf3712fcee1d879">02848</a> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00270.html#ae5ec0172d2a870a16bf3712fcee1d879">begin1</a> () {
|
|
<a name="l02849"></a>02849 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (0, 0, 0);
|
|
<a name="l02850"></a>02850 }
|
|
<a name="l02851"></a>02851 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02852"></a><a class="code" href="a00270.html#a4519f8647fe7033405c473d84f1f9b84">02852</a> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00270.html#a4519f8647fe7033405c473d84f1f9b84">end1</a> () {
|
|
<a name="l02853"></a>02853 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (0, <a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> (), 0);
|
|
<a name="l02854"></a>02854 }
|
|
<a name="l02855"></a>02855
|
|
<a name="l02856"></a>02856 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02857"></a><a class="code" href="a00272.html">02857</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00272.html">const_iterator2</a>:
|
|
<a name="l02858"></a>02858 <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><matrix_range>,
|
|
<a name="l02859"></a>02859 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename const_subiterator2_type::iterator_category>::template
|
|
<a name="l02860"></a>02860 iterator_base<const_iterator2, value_type>::type {
|
|
<a name="l02861"></a>02861 <span class="keyword">public</span>:
|
|
<a name="l02862"></a><a class="code" href="a00272.html#a728f849c69ddd40fada4e287b41dd03d">02862</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator2_type::value_type <a class="code" href="a00272.html#a728f849c69ddd40fada4e287b41dd03d">value_type</a>;
|
|
<a name="l02863"></a><a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">02863</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator2_type::difference_type <a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">difference_type</a>;
|
|
<a name="l02864"></a><a class="code" href="a00272.html#aafe5d8f3b0c9e4adcc6eeb0e0c248454">02864</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator2_type::reference <a class="code" href="a00272.html#aafe5d8f3b0c9e4adcc6eeb0e0c248454">reference</a>;
|
|
<a name="l02865"></a><a class="code" href="a00272.html#a430e1053c92d75c5ad711c24ed66733e">02865</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> const_subiterator2_type::pointer <a class="code" href="a00272.html#a430e1053c92d75c5ad711c24ed66733e">pointer</a>;
|
|
<a name="l02866"></a><a class="code" href="a00272.html#a13f714ad7216c22bd2f3938631c550da">02866</a> <span class="keyword">typedef</span> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00272.html#a13f714ad7216c22bd2f3938631c550da">dual_iterator_type</a>;
|
|
<a name="l02867"></a><a class="code" href="a00272.html#a81188a700276d57d7af8bb18092d5c47">02867</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00272.html#a81188a700276d57d7af8bb18092d5c47">dual_reverse_iterator_type</a>;
|
|
<a name="l02868"></a>02868
|
|
<a name="l02869"></a>02869 <span class="comment">// Construction and destruction</span>
|
|
<a name="l02870"></a>02870 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02871"></a><a class="code" href="a00272.html#a6ac6e7d79242d6c54ec57c47c0abcb69">02871</a> <a class="code" href="a00272.html#a6ac6e7d79242d6c54ec57c47c0abcb69">const_iterator2</a> ():
|
|
<a name="l02872"></a>02872 <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="a00270.html">self_type</a>> (), <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> () {}
|
|
<a name="l02873"></a>02873 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02874"></a><a class="code" href="a00272.html#acc75a5be94403f71757eaec23b99ff8d">02874</a> <a class="code" href="a00272.html#a6ac6e7d79242d6c54ec57c47c0abcb69">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00270.html#af445436ce62e4f7105bdc6dacacc8b32">const_subiterator2_type</a> &it):
|
|
<a name="l02875"></a>02875 <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="a00270.html">self_type</a>> (mr), <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> (it) {}
|
|
<a name="l02876"></a>02876 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02877"></a><a class="code" href="a00272.html#a6d15f926fec54e3e7d31d9b509940fda">02877</a> <a class="code" href="a00272.html#a6ac6e7d79242d6c54ec57c47c0abcb69">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00274.html">iterator2</a> &it):
|
|
<a name="l02878"></a>02878 <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="a00270.html">self_type</a>> (it ()), <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> (it.<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>) {}
|
|
<a name="l02879"></a>02879
|
|
<a name="l02880"></a>02880 <span class="comment">// Arithmetic</span>
|
|
<a name="l02881"></a>02881 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02882"></a><a class="code" href="a00272.html#a459381284a17bedd431a2c583556365d">02882</a> <a class="code" href="a00272.html">const_iterator2</a> &<a class="code" href="a00272.html#a459381284a17bedd431a2c583556365d">operator ++ </a>() {
|
|
<a name="l02883"></a>02883 ++ <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02884"></a>02884 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02885"></a>02885 }
|
|
<a name="l02886"></a>02886 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02887"></a><a class="code" href="a00272.html#a496df9c20edcf420a75ed42302e4fb1f">02887</a> <a class="code" href="a00272.html">const_iterator2</a> &<a class="code" href="a00272.html#a496df9c20edcf420a75ed42302e4fb1f">operator -- </a>() {
|
|
<a name="l02888"></a>02888 -- <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02889"></a>02889 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02890"></a>02890 }
|
|
<a name="l02891"></a>02891 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02892"></a><a class="code" href="a00272.html#ad55928b2428f12146b39e26a2971c8c0">02892</a> <a class="code" href="a00272.html">const_iterator2</a> &<a class="code" href="a00272.html#ad55928b2428f12146b39e26a2971c8c0">operator += </a>(<a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">difference_type</a> n) {
|
|
<a name="l02893"></a>02893 <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> += n;
|
|
<a name="l02894"></a>02894 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02895"></a>02895 }
|
|
<a name="l02896"></a>02896 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02897"></a><a class="code" href="a00272.html#a4542b27431ac076f4e9de57ac8bf54a7">02897</a> <a class="code" href="a00272.html">const_iterator2</a> &<a class="code" href="a00272.html#a4542b27431ac076f4e9de57ac8bf54a7">operator -= </a>(<a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">difference_type</a> n) {
|
|
<a name="l02898"></a>02898 <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> -= n;
|
|
<a name="l02899"></a>02899 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02900"></a>02900 }
|
|
<a name="l02901"></a>02901 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02902"></a><a class="code" href="a00272.html#a9b174fe31f05efdc575b51dc8fd1a800">02902</a> <a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">difference_type</a> <a class="code" href="a00272.html#a9b174fe31f05efdc575b51dc8fd1a800">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00272.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02903"></a>02903 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02904"></a>02904 <span class="keywordflow">return</span> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> - it.<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02905"></a>02905 }
|
|
<a name="l02906"></a>02906
|
|
<a name="l02907"></a>02907 <span class="comment">// Dereference</span>
|
|
<a name="l02908"></a>02908 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02909"></a><a class="code" href="a00272.html#a7c9ffff4ed6f38b7a840b698b25e6aa2">02909</a> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a> <a class="code" href="a00272.html#a7c9ffff4ed6f38b7a840b698b25e6aa2">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l02910"></a>02910 <span class="keywordflow">return</span> *<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02911"></a>02911 }
|
|
<a name="l02912"></a>02912 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02913"></a><a class="code" href="a00272.html#a2656b7fe848d747cb19ce28e46fbd805">02913</a> <a class="code" href="a00270.html#a8d467ff0eb18ff626a77ec2f2226bb36">const_reference</a> <a class="code" href="a00272.html#a2656b7fe848d747cb19ce28e46fbd805">operator [] </a>(<a class="code" href="a00272.html#a0c16b503f5d9426509f7a6b2a6e4e7cc">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l02914"></a>02914 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l02915"></a>02915 }
|
|
<a name="l02916"></a>02916
|
|
<a name="l02917"></a>02917 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l02918"></a>02918 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02919"></a>02919 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02920"></a>02920 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02921"></a>02921 <span class="preprocessor">#endif</span>
|
|
<a name="l02922"></a><a class="code" href="a00272.html#a0dbe28e05acf0904f8df393b6523e0e4">02922</a> <span class="preprocessor"></span> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00272.html#a0dbe28e05acf0904f8df393b6523e0e4">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02923"></a>02923 <span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02924"></a>02924 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (1, 0, <a class="code" href="a00272.html#aecb1eaedfd5a43060bcc4fd7346f9569">index2</a> ());
|
|
<a name="l02925"></a>02925 }
|
|
<a name="l02926"></a>02926 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02927"></a>02927 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02928"></a>02928 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02929"></a>02929 <span class="preprocessor">#endif</span>
|
|
<a name="l02930"></a><a class="code" href="a00272.html#af9fa9e1b3775a88b39804bba3a0b8f10">02930</a> <span class="preprocessor"></span> <a class="code" href="a00271.html">const_iterator1</a> <a class="code" href="a00272.html#af9fa9e1b3775a88b39804bba3a0b8f10">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02931"></a>02931 <span class="keyword">const</span> <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l02932"></a>02932 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (1, mr.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> (), <a class="code" href="a00272.html#aecb1eaedfd5a43060bcc4fd7346f9569">index2</a> ());
|
|
<a name="l02933"></a>02933 }
|
|
<a name="l02934"></a>02934 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02935"></a>02935 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02936"></a>02936 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02937"></a>02937 <span class="preprocessor">#endif</span>
|
|
<a name="l02938"></a><a class="code" href="a00272.html#aab3311b7eafdcc09a07fa182e8a96a20">02938</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00272.html#aab3311b7eafdcc09a07fa182e8a96a20">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02939"></a>02939 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">const_reverse_iterator1</a> (<a class="code" href="a00272.html#af9fa9e1b3775a88b39804bba3a0b8f10">end</a> ());
|
|
<a name="l02940"></a>02940 }
|
|
<a name="l02941"></a>02941 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02942"></a>02942 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l02943"></a>02943 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l02944"></a>02944 <span class="preprocessor">#endif</span>
|
|
<a name="l02945"></a><a class="code" href="a00272.html#a47dcb7f8f50ec0b491c07d7066585749">02945</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00272.html#a47dcb7f8f50ec0b491c07d7066585749">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02946"></a>02946 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">const_reverse_iterator1</a> (<a class="code" href="a00272.html#a0dbe28e05acf0904f8df393b6523e0e4">begin</a> ());
|
|
<a name="l02947"></a>02947 }
|
|
<a name="l02948"></a>02948 <span class="preprocessor">#endif</span>
|
|
<a name="l02949"></a>02949 <span class="preprocessor"></span>
|
|
<a name="l02950"></a>02950 <span class="comment">// Indices</span>
|
|
<a name="l02951"></a>02951 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02952"></a><a class="code" href="a00272.html#afabda97adf53e1f3ba9b2a4b00231abf">02952</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00272.html#afabda97adf53e1f3ba9b2a4b00231abf">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02953"></a>02953 <span class="keywordflow">return</span> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>.index1 () - (*this) ().<a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> ();
|
|
<a name="l02954"></a>02954 }
|
|
<a name="l02955"></a>02955 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02956"></a><a class="code" href="a00272.html#aecb1eaedfd5a43060bcc4fd7346f9569">02956</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00272.html#aecb1eaedfd5a43060bcc4fd7346f9569">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02957"></a>02957 <span class="keywordflow">return</span> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>.index2 () - (*this) ().<a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> ();
|
|
<a name="l02958"></a>02958 }
|
|
<a name="l02959"></a>02959
|
|
<a name="l02960"></a>02960 <span class="comment">// Assignment</span>
|
|
<a name="l02961"></a>02961 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02962"></a><a class="code" href="a00272.html#ade86c3e752f7e9fc126d8bd3ff14d523">02962</a> <a class="code" href="a00272.html">const_iterator2</a> &<a class="code" href="a00272.html#ade86c3e752f7e9fc126d8bd3ff14d523">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00272.html">const_iterator2</a> &it) {
|
|
<a name="l02963"></a>02963 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l02964"></a>02964 <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> = it.<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02965"></a>02965 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l02966"></a>02966 }
|
|
<a name="l02967"></a>02967
|
|
<a name="l02968"></a>02968 <span class="comment">// Comparison</span>
|
|
<a name="l02969"></a>02969 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02970"></a><a class="code" href="a00272.html#af0d757e4cd8c6d43b05c2f00dc26fc5f">02970</a> <span class="keywordtype">bool</span> <a class="code" href="a00272.html#af0d757e4cd8c6d43b05c2f00dc26fc5f">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00272.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02971"></a>02971 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02972"></a>02972 <span class="keywordflow">return</span> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> == it.<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02973"></a>02973 }
|
|
<a name="l02974"></a>02974 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02975"></a><a class="code" href="a00272.html#a3578d996975cc336f1eda934d82292bc">02975</a> <span class="keywordtype">bool</span> <a class="code" href="a00272.html#a3578d996975cc336f1eda934d82292bc">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00272.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l02976"></a>02976 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l02977"></a>02977 <span class="keywordflow">return</span> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a> < it.<a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02978"></a>02978 }
|
|
<a name="l02979"></a>02979
|
|
<a name="l02980"></a>02980 <span class="keyword">private</span>:
|
|
<a name="l02981"></a><a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">02981</a> <a class="code" href="a00270.html#af445436ce62e4f7105bdc6dacacc8b32">const_subiterator2_type</a> <a class="code" href="a00272.html#af32cfd985ffd4c58456a348e7d5f9ba9">it_</a>;
|
|
<a name="l02982"></a>02982 };
|
|
<a name="l02983"></a>02983 <span class="preprocessor">#endif</span>
|
|
<a name="l02984"></a>02984 <span class="preprocessor"></span>
|
|
<a name="l02985"></a>02985 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02986"></a><a class="code" href="a00270.html#ab3d6dd6a2622a34bfab0014d4093224a">02986</a> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00270.html#ab3d6dd6a2622a34bfab0014d4093224a">begin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02987"></a>02987 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (0, 0, 0);
|
|
<a name="l02988"></a>02988 }
|
|
<a name="l02989"></a>02989 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l02990"></a><a class="code" href="a00270.html#a0b5b86926deb361a3b593cbf7268c3a3">02990</a> <a class="code" href="a00272.html">const_iterator2</a> <a class="code" href="a00270.html#a0b5b86926deb361a3b593cbf7268c3a3">end2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l02991"></a>02991 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (0, 0, <a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ());
|
|
<a name="l02992"></a>02992 }
|
|
<a name="l02993"></a>02993
|
|
<a name="l02994"></a>02994 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l02995"></a><a class="code" href="a00274.html">02995</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00274.html">iterator2</a>:
|
|
<a name="l02996"></a>02996 <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><matrix_range>,
|
|
<a name="l02997"></a>02997 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename subiterator2_type::iterator_category>::template
|
|
<a name="l02998"></a>02998 iterator_base<iterator2, value_type>::type {
|
|
<a name="l02999"></a>02999 <span class="keyword">public</span>:
|
|
<a name="l03000"></a><a class="code" href="a00274.html#a20e12081434d9b0a0d31509a59f04abf">03000</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator2_type::value_type <a class="code" href="a00274.html#a20e12081434d9b0a0d31509a59f04abf">value_type</a>;
|
|
<a name="l03001"></a><a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">03001</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator2_type::difference_type <a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">difference_type</a>;
|
|
<a name="l03002"></a><a class="code" href="a00274.html#a852046b31a3bf090ab0006371a4da8dc">03002</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator2_type::reference <a class="code" href="a00274.html#a852046b31a3bf090ab0006371a4da8dc">reference</a>;
|
|
<a name="l03003"></a><a class="code" href="a00274.html#a69e45a3ac838b5806fda63acbcfa018f">03003</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> subiterator2_type::pointer <a class="code" href="a00274.html#a69e45a3ac838b5806fda63acbcfa018f">pointer</a>;
|
|
<a name="l03004"></a><a class="code" href="a00274.html#a15cb239f958b5b83653ac7f3dcd24f7a">03004</a> <span class="keyword">typedef</span> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00274.html#a15cb239f958b5b83653ac7f3dcd24f7a">dual_iterator_type</a>;
|
|
<a name="l03005"></a><a class="code" href="a00274.html#a724992752bdd54217821ac05289557de">03005</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00274.html#a724992752bdd54217821ac05289557de">dual_reverse_iterator_type</a>;
|
|
<a name="l03006"></a>03006
|
|
<a name="l03007"></a>03007 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03008"></a>03008 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03009"></a><a class="code" href="a00274.html#acb33d237ae4ce8c66801b2e5ba8bb5f5">03009</a> <a class="code" href="a00274.html#acb33d237ae4ce8c66801b2e5ba8bb5f5">iterator2</a> ():
|
|
<a name="l03010"></a>03010 <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><<a class="code" href="a00270.html">self_type</a>> (), <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> () {}
|
|
<a name="l03011"></a>03011 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03012"></a><a class="code" href="a00274.html#adeb6e642c8142be0e2f92a72801d0289">03012</a> <a class="code" href="a00274.html#acb33d237ae4ce8c66801b2e5ba8bb5f5">iterator2</a> (<a class="code" href="a00270.html">self_type</a> &mr, <span class="keyword">const</span> <a class="code" href="a00270.html#a6dd910ace84d44a83f254523856bcc34">subiterator2_type</a> &it):
|
|
<a name="l03013"></a>03013 <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><<a class="code" href="a00270.html">self_type</a>> (mr), <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> (it) {}
|
|
<a name="l03014"></a>03014
|
|
<a name="l03015"></a>03015 <span class="comment">// Arithmetic</span>
|
|
<a name="l03016"></a>03016 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03017"></a><a class="code" href="a00274.html#ad34a0797e98d4e4e44e0eb959dd19eec">03017</a> <a class="code" href="a00274.html">iterator2</a> &<a class="code" href="a00274.html#ad34a0797e98d4e4e44e0eb959dd19eec">operator ++ </a>() {
|
|
<a name="l03018"></a>03018 ++ <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03019"></a>03019 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03020"></a>03020 }
|
|
<a name="l03021"></a>03021 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03022"></a><a class="code" href="a00274.html#a65cc8205958593d8869f976aefb12c51">03022</a> <a class="code" href="a00274.html">iterator2</a> &<a class="code" href="a00274.html#a65cc8205958593d8869f976aefb12c51">operator -- </a>() {
|
|
<a name="l03023"></a>03023 -- <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03024"></a>03024 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03025"></a>03025 }
|
|
<a name="l03026"></a>03026 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03027"></a><a class="code" href="a00274.html#ac41125a9bcd9f5db3d5cb181d46636dc">03027</a> <a class="code" href="a00274.html">iterator2</a> &<a class="code" href="a00274.html#ac41125a9bcd9f5db3d5cb181d46636dc">operator += </a>(<a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">difference_type</a> n) {
|
|
<a name="l03028"></a>03028 <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> += n;
|
|
<a name="l03029"></a>03029 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03030"></a>03030 }
|
|
<a name="l03031"></a>03031 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03032"></a><a class="code" href="a00274.html#a0a763c2edf037bd87a99b9a910065891">03032</a> <a class="code" href="a00274.html">iterator2</a> &<a class="code" href="a00274.html#a0a763c2edf037bd87a99b9a910065891">operator -= </a>(<a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">difference_type</a> n) {
|
|
<a name="l03033"></a>03033 <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> -= n;
|
|
<a name="l03034"></a>03034 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03035"></a>03035 }
|
|
<a name="l03036"></a>03036 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03037"></a><a class="code" href="a00274.html#a2d8a2534ca088a9d7cdd8f60489d47a5">03037</a> <a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">difference_type</a> <a class="code" href="a00274.html#a2d8a2534ca088a9d7cdd8f60489d47a5">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00274.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03038"></a>03038 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03039"></a>03039 <span class="keywordflow">return</span> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> - it.<a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03040"></a>03040 }
|
|
<a name="l03041"></a>03041
|
|
<a name="l03042"></a>03042 <span class="comment">// Dereference</span>
|
|
<a name="l03043"></a>03043 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03044"></a><a class="code" href="a00274.html#a83fb7516a748f08122228791f673d897">03044</a> <a class="code" href="a00274.html#a852046b31a3bf090ab0006371a4da8dc">reference</a> <a class="code" href="a00274.html#a83fb7516a748f08122228791f673d897">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l03045"></a>03045 <span class="keywordflow">return</span> *<a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03046"></a>03046 }
|
|
<a name="l03047"></a>03047 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03048"></a><a class="code" href="a00274.html#a7c9dc6695e1aa8c502ea3f7b6e22e3f6">03048</a> <a class="code" href="a00274.html#a852046b31a3bf090ab0006371a4da8dc">reference</a> <a class="code" href="a00274.html#a7c9dc6695e1aa8c502ea3f7b6e22e3f6">operator [] </a>(<a class="code" href="a00274.html#a2528e17979a0317d3406c4bb3a9ba35c">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l03049"></a>03049 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l03050"></a>03050 }
|
|
<a name="l03051"></a>03051
|
|
<a name="l03052"></a>03052 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l03053"></a>03053 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03054"></a>03054 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03055"></a>03055 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l03056"></a>03056 <span class="preprocessor">#endif</span>
|
|
<a name="l03057"></a><a class="code" href="a00274.html#a492bc33cf1c71b19ea7febfca44ed536">03057</a> <span class="preprocessor"></span> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00274.html#a492bc33cf1c71b19ea7febfca44ed536">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03058"></a>03058 <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l03059"></a>03059 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (1, 0, <a class="code" href="a00274.html#a4d8c5c861a68fb27438f68aebd2be36d">index2</a> ());
|
|
<a name="l03060"></a>03060 }
|
|
<a name="l03061"></a>03061 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03062"></a>03062 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03063"></a>03063 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l03064"></a>03064 <span class="preprocessor">#endif</span>
|
|
<a name="l03065"></a><a class="code" href="a00274.html#ad753c194c4ab818d4994caafc2abc3b4">03065</a> <span class="preprocessor"></span> <a class="code" href="a00273.html">iterator1</a> <a class="code" href="a00274.html#ad753c194c4ab818d4994caafc2abc3b4">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03066"></a>03066 <a class="code" href="a00270.html">self_type</a> &mr = (*this) ();
|
|
<a name="l03067"></a>03067 <span class="keywordflow">return</span> mr.<a class="code" href="a00270.html#a6604c43d06156122aac99ce235b1d3e1">find1</a> (1, mr.<a class="code" href="a00270.html#a3974e100268c19c3f54155adc1a6a8d6">size1</a> (), <a class="code" href="a00274.html#a4d8c5c861a68fb27438f68aebd2be36d">index2</a> ());
|
|
<a name="l03068"></a>03068 }
|
|
<a name="l03069"></a>03069 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03070"></a>03070 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03071"></a>03071 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l03072"></a>03072 <span class="preprocessor">#endif</span>
|
|
<a name="l03073"></a><a class="code" href="a00274.html#af0f755806e0667315f708a1de206ea2f">03073</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00274.html#af0f755806e0667315f708a1de206ea2f">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03074"></a>03074 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">reverse_iterator1</a> (<a class="code" href="a00274.html#ad753c194c4ab818d4994caafc2abc3b4">end</a> ());
|
|
<a name="l03075"></a>03075 }
|
|
<a name="l03076"></a>03076 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03077"></a>03077 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03078"></a>03078 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00270.html">self_type</a>::
|
|
<a name="l03079"></a>03079 <span class="preprocessor">#endif</span>
|
|
<a name="l03080"></a><a class="code" href="a00274.html#ad1562c81b41168c6dbb710932feaedc5">03080</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00274.html#ad1562c81b41168c6dbb710932feaedc5">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03081"></a>03081 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">reverse_iterator1</a> (<a class="code" href="a00274.html#a492bc33cf1c71b19ea7febfca44ed536">begin</a> ());
|
|
<a name="l03082"></a>03082 }
|
|
<a name="l03083"></a>03083 <span class="preprocessor">#endif</span>
|
|
<a name="l03084"></a>03084 <span class="preprocessor"></span>
|
|
<a name="l03085"></a>03085 <span class="comment">// Indices</span>
|
|
<a name="l03086"></a>03086 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03087"></a><a class="code" href="a00274.html#a988c2cd0ae057e401d935e5e4cefef52">03087</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00274.html#a988c2cd0ae057e401d935e5e4cefef52">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03088"></a>03088 <span class="keywordflow">return</span> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>.index1 () - (*this) ().<a class="code" href="a00270.html#aa5b7f519ca83599e3c3f1921e6c3171f">start1</a> ();
|
|
<a name="l03089"></a>03089 }
|
|
<a name="l03090"></a>03090 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03091"></a><a class="code" href="a00274.html#a4d8c5c861a68fb27438f68aebd2be36d">03091</a> <a class="code" href="a00270.html#a149a07046c8a4b7fb20ebfc964c44175">size_type</a> <a class="code" href="a00274.html#a4d8c5c861a68fb27438f68aebd2be36d">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03092"></a>03092 <span class="keywordflow">return</span> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>.index2 () - (*this) ().<a class="code" href="a00270.html#a9dbb0bc3146f8838f9fa7023cc851254">start2</a> ();
|
|
<a name="l03093"></a>03093 }
|
|
<a name="l03094"></a>03094
|
|
<a name="l03095"></a>03095 <span class="comment">// Assignment</span>
|
|
<a name="l03096"></a>03096 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03097"></a><a class="code" href="a00274.html#a420ca987943d44897e331d1c8bcb3096">03097</a> <a class="code" href="a00274.html">iterator2</a> &<a class="code" href="a00274.html#a420ca987943d44897e331d1c8bcb3096">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00274.html">iterator2</a> &it) {
|
|
<a name="l03098"></a>03098 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l03099"></a>03099 <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> = it.<a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03100"></a>03100 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03101"></a>03101 }
|
|
<a name="l03102"></a>03102
|
|
<a name="l03103"></a>03103 <span class="comment">// Comparison</span>
|
|
<a name="l03104"></a>03104 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03105"></a><a class="code" href="a00274.html#a57a8dc2e308d201e247a841c771ae1c4">03105</a> <span class="keywordtype">bool</span> <a class="code" href="a00274.html#a57a8dc2e308d201e247a841c771ae1c4">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00274.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03106"></a>03106 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03107"></a>03107 <span class="keywordflow">return</span> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> == it.<a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03108"></a>03108 }
|
|
<a name="l03109"></a>03109 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03110"></a><a class="code" href="a00274.html#a5d16276d5d119f7a50ca1e39c796cd3e">03110</a> <span class="keywordtype">bool</span> <a class="code" href="a00274.html#a5d16276d5d119f7a50ca1e39c796cd3e">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00274.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03111"></a>03111 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03112"></a>03112 <span class="keywordflow">return</span> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a> < it.<a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03113"></a>03113 }
|
|
<a name="l03114"></a>03114
|
|
<a name="l03115"></a>03115 <span class="keyword">private</span>:
|
|
<a name="l03116"></a><a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">03116</a> <a class="code" href="a00270.html#a6dd910ace84d44a83f254523856bcc34">subiterator2_type</a> <a class="code" href="a00274.html#a91349f21d231a75ea8f0b11b1c6f7c3f">it_</a>;
|
|
<a name="l03117"></a>03117
|
|
<a name="l03118"></a><a class="code" href="a00274.html#aac78e9ee2b65e927cfcd66579833084f">03118</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00272.html">const_iterator2</a>;
|
|
<a name="l03119"></a>03119 };
|
|
<a name="l03120"></a>03120 <span class="preprocessor">#endif</span>
|
|
<a name="l03121"></a>03121 <span class="preprocessor"></span>
|
|
<a name="l03122"></a>03122 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03123"></a><a class="code" href="a00270.html#a70257e1bf3b0044af076c5ea9daf447d">03123</a> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00270.html#a70257e1bf3b0044af076c5ea9daf447d">begin2</a> () {
|
|
<a name="l03124"></a>03124 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (0, 0, 0);
|
|
<a name="l03125"></a>03125 }
|
|
<a name="l03126"></a>03126 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03127"></a><a class="code" href="a00270.html#afb30547702f6711714fe006afef686b1">03127</a> <a class="code" href="a00274.html">iterator2</a> <a class="code" href="a00270.html#afb30547702f6711714fe006afef686b1">end2</a> () {
|
|
<a name="l03128"></a>03128 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a60fe12419a1d0caff8b457178cd75abc">find2</a> (0, 0, <a class="code" href="a00270.html#a04e771855f9bb93195a0e1264a02de28">size2</a> ());
|
|
<a name="l03129"></a>03129 }
|
|
<a name="l03130"></a>03130
|
|
<a name="l03131"></a>03131 <span class="comment">// Reverse iterators</span>
|
|
<a name="l03132"></a>03132
|
|
<a name="l03133"></a>03133 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03134"></a><a class="code" href="a00270.html#a7243964c48c86e4cbfda46b665a38c9a">03134</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00270.html#a7243964c48c86e4cbfda46b665a38c9a">rbegin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03135"></a>03135 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">const_reverse_iterator1</a> (<a class="code" href="a00270.html#a1a2d40b7751f147a31b9a0bd448c601a">end1</a> ());
|
|
<a name="l03136"></a>03136 }
|
|
<a name="l03137"></a>03137 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03138"></a><a class="code" href="a00270.html#a1f0f8ae6b6adbdf28d0f464f3033d1f2">03138</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00270.html#a1f0f8ae6b6adbdf28d0f464f3033d1f2">rend1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03139"></a>03139 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a0094d35dc7e304777ae942fd29ec64da">const_reverse_iterator1</a> (<a class="code" href="a00270.html#a65d4e8605aa30ae8cefe3cdbf8913cbc">begin1</a> ());
|
|
<a name="l03140"></a>03140 }
|
|
<a name="l03141"></a>03141
|
|
<a name="l03142"></a>03142 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03143"></a><a class="code" href="a00270.html#a25ec019d2f742fb678349f6c42c4475a">03143</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00270.html#a25ec019d2f742fb678349f6c42c4475a">rbegin1</a> () {
|
|
<a name="l03144"></a>03144 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">reverse_iterator1</a> (<a class="code" href="a00270.html#a1a2d40b7751f147a31b9a0bd448c601a">end1</a> ());
|
|
<a name="l03145"></a>03145 }
|
|
<a name="l03146"></a>03146 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03147"></a><a class="code" href="a00270.html#a91ff5f7e701e72021b6a321bfbfd8ead">03147</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00270.html#a91ff5f7e701e72021b6a321bfbfd8ead">rend1</a> () {
|
|
<a name="l03148"></a>03148 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a47feb46ab1fe95dafef1e0fc74f79b95">reverse_iterator1</a> (<a class="code" href="a00270.html#a65d4e8605aa30ae8cefe3cdbf8913cbc">begin1</a> ());
|
|
<a name="l03149"></a>03149 }
|
|
<a name="l03150"></a>03150
|
|
<a name="l03151"></a>03151 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03152"></a><a class="code" href="a00270.html#adfe0f1b1355c8756373f081623472dc6">03152</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00270.html#adfe0f1b1355c8756373f081623472dc6">rbegin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03153"></a>03153 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">const_reverse_iterator2</a> (<a class="code" href="a00270.html#a0b5b86926deb361a3b593cbf7268c3a3">end2</a> ());
|
|
<a name="l03154"></a>03154 }
|
|
<a name="l03155"></a>03155 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03156"></a><a class="code" href="a00270.html#afc16afe08c35ed2ca17444e9b8de6adf">03156</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00270.html#afc16afe08c35ed2ca17444e9b8de6adf">rend2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03157"></a>03157 <span class="keywordflow">return</span> <a class="code" href="a00270.html#a7808bbc9d079fccbcda4c34f1c08ca00">const_reverse_iterator2</a> (<a class="code" href="a00270.html#ab3d6dd6a2622a34bfab0014d4093224a">begin2</a> ());
|
|
<a name="l03158"></a>03158 }
|
|
<a name="l03159"></a>03159
|
|
<a name="l03160"></a>03160 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03161"></a><a class="code" href="a00270.html#adf2ab1a8c6547910dec2e2be5b9a5621">03161</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00270.html#adf2ab1a8c6547910dec2e2be5b9a5621">rbegin2</a> () {
|
|
<a name="l03162"></a>03162 <span class="keywordflow">return</span> <a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">reverse_iterator2</a> (<a class="code" href="a00270.html#a0b5b86926deb361a3b593cbf7268c3a3">end2</a> ());
|
|
<a name="l03163"></a>03163 }
|
|
<a name="l03164"></a>03164 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03165"></a><a class="code" href="a00270.html#a4c67466b226d869ef52d2d0d06e9cef6">03165</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00270.html#a4c67466b226d869ef52d2d0d06e9cef6">rend2</a> () {
|
|
<a name="l03166"></a>03166 <span class="keywordflow">return</span> <a class="code" href="a00270.html#ad79815be7f160a5f5487a3ac73d6d180">reverse_iterator2</a> (<a class="code" href="a00270.html#ab3d6dd6a2622a34bfab0014d4093224a">begin2</a> ());
|
|
<a name="l03167"></a>03167 }
|
|
<a name="l03168"></a>03168
|
|
<a name="l03169"></a>03169 <span class="keyword">private</span>:
|
|
<a name="l03170"></a><a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">03170</a> <a class="code" href="a00270.html#a44bc5908880e3543e6e52fcaee5d5a52">matrix_closure_type</a> <a class="code" href="a00270.html#af6f74dc7d3334325f0a280e0d602d8fb">data_</a>;
|
|
<a name="l03171"></a><a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">03171</a> <a class="code" href="a00001.html">range_type</a> <a class="code" href="a00270.html#a85388a681766a07f3f4cf25008477b51">r1_</a>;
|
|
<a name="l03172"></a><a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">03172</a> <a class="code" href="a00001.html">range_type</a> <a class="code" href="a00270.html#aa3dfb440a6781712626767547ab5d377">r2_</a>;
|
|
<a name="l03173"></a>03173 };
|
|
<a name="l03174"></a>03174
|
|
<a name="l03175"></a>03175 <span class="comment">// Simple Projections</span>
|
|
<a name="l03176"></a>03176 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03177"></a>03177 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03178"></a><a class="code" href="a00595.html#a9ae0a92d79afe5b300b0874cdc9c5a88">03178</a> <a class="code" href="a00270.html">matrix_range<M></a> <a class="code" href="a00595.html#a9ae0a92d79afe5b300b0874cdc9c5a88">subrange</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type start1, <span class="keyword">typename</span> M::size_type stop1, <span class="keyword">typename</span> M::size_type start2, <span class="keyword">typename</span> M::size_type stop2) {
|
|
<a name="l03179"></a>03179 <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<typename M::size_type, typename M::difference_type></a> range_type;
|
|
<a name="l03180"></a>03180 <span class="keywordflow">return</span> <a class="code" href="a00270.html">matrix_range<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, range_type (start1, stop1), range_type (start2, stop2));
|
|
<a name="l03181"></a>03181 }
|
|
<a name="l03182"></a>03182 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03183"></a>03183 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03184"></a><a class="code" href="a00595.html#ac995186509e176d70edb7ea8c2045f51">03184</a> <a class="code" href="a00270.html">matrix_range<const M></a> <a class="code" href="a00595.html#a9ae0a92d79afe5b300b0874cdc9c5a88">subrange</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type start1, <span class="keyword">typename</span> M::size_type stop1, <span class="keyword">typename</span> M::size_type start2, <span class="keyword">typename</span> M::size_type stop2) {
|
|
<a name="l03185"></a>03185 <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<typename M::size_type, typename M::difference_type></a> range_type;
|
|
<a name="l03186"></a>03186 <span class="keywordflow">return</span> <a class="code" href="a00270.html">matrix_range<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, range_type (start1, stop1), range_type (start2, stop2));
|
|
<a name="l03187"></a>03187 }
|
|
<a name="l03188"></a>03188
|
|
<a name="l03189"></a>03189 <span class="comment">// Generic Projections</span>
|
|
<a name="l03190"></a>03190 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03191"></a>03191 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03192"></a><a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">03192</a> <a class="code" href="a00270.html">matrix_range<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l03193"></a>03193 <span class="keywordflow">return</span> <a class="code" href="a00270.html">matrix_range<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, r1, r2);
|
|
<a name="l03194"></a>03194 }
|
|
<a name="l03195"></a>03195 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03196"></a>03196 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03197"></a><a class="code" href="a00595.html#a1934fdeba05203b77d71ae093f4da111">03197</a> <span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range<const M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l03198"></a>03198 <span class="comment">// ISSUE was: return matrix_range<M> (const_cast<M &> (data), r1, r2);</span>
|
|
<a name="l03199"></a>03199 <span class="keywordflow">return</span> <a class="code" href="a00270.html">matrix_range<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, r1, r2);
|
|
<a name="l03200"></a>03200 }
|
|
<a name="l03201"></a>03201 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03202"></a>03202 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03203"></a><a class="code" href="a00595.html#a55a8fc237c41c481c21711bf7cfaa8ae">03203</a> <a class="code" href="a00270.html">matrix_range<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00270.html">matrix_range<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l03204"></a>03204 <span class="keywordflow">return</span> data.<a class="code" href="a00270.html#ae8db1e6e237d51aa98b29b2bd73c60e3">project</a> (r1, r2);
|
|
<a name="l03205"></a>03205 }
|
|
<a name="l03206"></a>03206 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03207"></a>03207 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03208"></a><a class="code" href="a00595.html#ad74401d0b50b070b750947255daf80d5">03208</a> <span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00270.html">matrix_range<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l03209"></a>03209 <span class="keywordflow">return</span> data.<a class="code" href="a00270.html#ae8db1e6e237d51aa98b29b2bd73c60e3">project</a> (r1, r2);
|
|
<a name="l03210"></a>03210 }
|
|
<a name="l03211"></a>03211
|
|
<a name="l03212"></a>03212 <span class="comment">// Specialization of temporary_traits</span>
|
|
<a name="l03213"></a>03213 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l03214"></a><a class="code" href="a00302.html">03214</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< <a class="code" href="a00270.html">matrix_range</a><M> >
|
|
<a name="l03215"></a>03215 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {} ;
|
|
<a name="l03216"></a>03216 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l03217"></a><a class="code" href="a00296.html">03217</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< const <a class="code" href="a00270.html">matrix_range</a><M> >
|
|
<a name="l03218"></a>03218 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {} ;
|
|
<a name="l03219"></a>03219
|
|
<a name="l03220"></a>03220 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l03221"></a><a class="code" href="a00568.html">03221</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00270.html">matrix_range</a><M> >
|
|
<a name="l03222"></a>03222 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l03223"></a>03223 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l03224"></a><a class="code" href="a00554.html">03224</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00270.html">matrix_range</a><M> >
|
|
<a name="l03225"></a>03225 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {} ;
|
|
<a name="l03226"></a>03226
|
|
<a name="l03227"></a>03227 <span class="comment">// Matrix based slice class</span>
|
|
<a name="l03228"></a>03228 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l03229"></a><a class="code" href="a00282.html">03229</a> <span class="keyword">class </span><a class="code" href="a00282.html">matrix_slice</a>:
|
|
<a name="l03230"></a>03230 <span class="keyword">public</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression</a><matrix_slice<M> > {
|
|
<a name="l03231"></a>03231
|
|
<a name="l03232"></a><a class="code" href="a00282.html#a61bd59b0d6a826f125d0bba9e1e4aa28">03232</a> <span class="keyword">typedef</span> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00282.html#a61bd59b0d6a826f125d0bba9e1e4aa28">self_type</a>;
|
|
<a name="l03233"></a>03233 <span class="keyword">public</span>:
|
|
<a name="l03234"></a>03234 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l03235"></a>03235 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<self_type>::operator </a>();
|
|
<a name="l03236"></a>03236 <span class="preprocessor">#endif</span>
|
|
<a name="l03237"></a><a class="code" href="a00282.html#a322ca427360db19451dc72bd31005cd7">03237</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00282.html#a322ca427360db19451dc72bd31005cd7">matrix_type</a>;
|
|
<a name="l03238"></a><a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">03238</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a>;
|
|
<a name="l03239"></a><a class="code" href="a00282.html#a8269dca785470a7f6df41a9efb83b247">03239</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00282.html#a8269dca785470a7f6df41a9efb83b247">difference_type</a>;
|
|
<a name="l03240"></a><a class="code" href="a00282.html#a4697058fb357678710cdd41d84405bc4">03240</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00282.html#a4697058fb357678710cdd41d84405bc4">value_type</a>;
|
|
<a name="l03241"></a><a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">03241</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a>;
|
|
<a name="l03242"></a>03242 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l03243"></a>03243 <span class="keyword">typename</span> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">M::const_reference</a>,
|
|
<a name="l03244"></a><a class="code" href="a00282.html#ae04c2a5cf33f9baa893cf904de2e3002">03244</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00282.html#ae04c2a5cf33f9baa893cf904de2e3002">reference</a>;
|
|
<a name="l03245"></a>03245 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l03246"></a>03246 <span class="keyword">typename</span> <a class="code" href="a00282.html#adfc8477135a0e105280456de1e8a910f">M::const_closure_type</a>,
|
|
<a name="l03247"></a><a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">03247</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">matrix_closure_type</a>;
|
|
<a name="l03248"></a><a class="code" href="a00282.html#a9e1a4309d7d67994d8805739214b3138">03248</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> <a class="code" href="a00282.html#a9e1a4309d7d67994d8805739214b3138">range_type</a>;
|
|
<a name="l03249"></a><a class="code" href="a00282.html#a6794aa5fa54288dbe3e6e0ca3c707ad9">03249</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<size_type, difference_type></a> <a class="code" href="a00282.html#a6794aa5fa54288dbe3e6e0ca3c707ad9">slice_type</a>;
|
|
<a name="l03250"></a><a class="code" href="a00282.html#adfc8477135a0e105280456de1e8a910f">03250</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00282.html">self_type</a> <a class="code" href="a00282.html#adfc8477135a0e105280456de1e8a910f">const_closure_type</a>;
|
|
<a name="l03251"></a><a class="code" href="a00282.html#a6cb01c2444f656642bd054849628a1f6">03251</a> <span class="keyword">typedef</span> <a class="code" href="a00282.html">self_type</a> <a class="code" href="a00282.html#a6cb01c2444f656642bd054849628a1f6">closure_type</a>;
|
|
<a name="l03252"></a>03252 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00282.html#a929a1f068248d8f963bbd3adf4724e9d">M::storage_category</a>,
|
|
<a name="l03253"></a><a class="code" href="a00282.html#a929a1f068248d8f963bbd3adf4724e9d">03253</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00282.html#a929a1f068248d8f963bbd3adf4724e9d">::storage_category</a> <a class="code" href="a00282.html#a929a1f068248d8f963bbd3adf4724e9d">storage_category</a>;
|
|
<a name="l03254"></a><a class="code" href="a00282.html#a514bd7a3280ce2f9a16c7ccad9bdd463">03254</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::orientation_category <a class="code" href="a00282.html#a514bd7a3280ce2f9a16c7ccad9bdd463">orientation_category</a>;
|
|
<a name="l03255"></a>03255
|
|
<a name="l03256"></a>03256 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03257"></a>03257 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03258"></a><a class="code" href="a00282.html#aa2a1ceb04f9ab643e9622360770f5d7e">03258</a> <a class="code" href="a00282.html#aa2a1ceb04f9ab643e9622360770f5d7e">matrix_slice</a> (<a class="code" href="a00282.html#a322ca427360db19451dc72bd31005cd7">matrix_type</a> &<a class="code" href="a00282.html#a405a7c877e251c9409742474db0e804f">data</a>, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s1, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s2):
|
|
<a name="l03259"></a>03259 <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (data), <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> (s1.preprocess (data.<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> ())), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> (s2.preprocess (data.<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ())) {
|
|
<a name="l03260"></a>03260 <span class="comment">// Early checking of preconditions here.</span>
|
|
<a name="l03261"></a>03261 <span class="comment">// BOOST_UBLAS_CHECK (s1_.start () <= data_.size1 () &&</span>
|
|
<a name="l03262"></a>03262 <span class="comment">// s1_.start () + s1_.stride () * (s1_.size () - (s1_.size () > 0)) <= data_.size1 (), bad_index ());</span>
|
|
<a name="l03263"></a>03263 <span class="comment">// BOOST_UBLAS_CHECK (s2_.start () <= data_.size2 () &&</span>
|
|
<a name="l03264"></a>03264 <span class="comment">// s2_.start () + s2_.stride () * (s2_.size () - (s2_.size () > 0)) <= data_.size2 (), bad_index ());</span>
|
|
<a name="l03265"></a>03265 }
|
|
<a name="l03266"></a>03266 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03267"></a><a class="code" href="a00282.html#a2e637a6b86926e8f00ef2537551ba5cc">03267</a> <a class="code" href="a00282.html#aa2a1ceb04f9ab643e9622360770f5d7e">matrix_slice</a> (<span class="keyword">const</span> <a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">matrix_closure_type</a> &<a class="code" href="a00282.html#a405a7c877e251c9409742474db0e804f">data</a>, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s1, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s2, <span class="keywordtype">int</span>):
|
|
<a name="l03268"></a>03268 <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (data), <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> (s1.preprocess (data.<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> ())), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> (s2.preprocess (data.<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ())) {
|
|
<a name="l03269"></a>03269 <span class="comment">// Early checking of preconditions.</span>
|
|
<a name="l03270"></a>03270 <span class="comment">// BOOST_UBLAS_CHECK (s1_.start () <= data_.size1 () &&</span>
|
|
<a name="l03271"></a>03271 <span class="comment">// s1_.start () + s1_.stride () * (s1_.size () - (s1_.size () > 0)) <= data_.size1 (), bad_index ());</span>
|
|
<a name="l03272"></a>03272 <span class="comment">// BOOST_UBLAS_CHECK (s2_.start () <= data_.size2 () &&</span>
|
|
<a name="l03273"></a>03273 <span class="comment">// s2_.start () + s2_.stride () * (s2_.size () - (s2_.size () > 0)) <= data_.size2 (), bad_index ());</span>
|
|
<a name="l03274"></a>03274 }
|
|
<a name="l03275"></a>03275
|
|
<a name="l03276"></a>03276 <span class="comment">// Accessors</span>
|
|
<a name="l03277"></a>03277 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03278"></a><a class="code" href="a00282.html#a2daa503bb7ec746e78e6720a4edf3d1f">03278</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00282.html#a2daa503bb7ec746e78e6720a4edf3d1f">start1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03279"></a>03279 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> ();
|
|
<a name="l03280"></a>03280 }
|
|
<a name="l03281"></a>03281 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03282"></a><a class="code" href="a00282.html#a99f5352716902391fa0c558e6ddd8872">03282</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00282.html#a99f5352716902391fa0c558e6ddd8872">start2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03283"></a>03283 <span class="keywordflow">return</span> <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a7aae5e7f374c252712329f3195770069">start</a> ();
|
|
<a name="l03284"></a>03284 }
|
|
<a name="l03285"></a>03285 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03286"></a><a class="code" href="a00282.html#a06428fae69960bee7094b9645d361b3c">03286</a> <a class="code" href="a00282.html#a8269dca785470a7f6df41a9efb83b247">difference_type</a> <a class="code" href="a00282.html#a06428fae69960bee7094b9645d361b3c">stride1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03287"></a>03287 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ();
|
|
<a name="l03288"></a>03288 }
|
|
<a name="l03289"></a>03289 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03290"></a><a class="code" href="a00282.html#a2b0b8ba6a0a1e1f759fdc1090d590b10">03290</a> <a class="code" href="a00282.html#a8269dca785470a7f6df41a9efb83b247">difference_type</a> <a class="code" href="a00282.html#a2b0b8ba6a0a1e1f759fdc1090d590b10">stride2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03291"></a>03291 <span class="keywordflow">return</span> <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a942541b8baa6956020cc49848de214fa">stride</a> ();
|
|
<a name="l03292"></a>03292 }
|
|
<a name="l03293"></a>03293 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03294"></a><a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">03294</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03295"></a>03295 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> ();
|
|
<a name="l03296"></a>03296 }
|
|
<a name="l03297"></a>03297 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03298"></a><a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">03298</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03299"></a>03299 <span class="keywordflow">return</span> <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#abe56fefeea0282c5993f34246af957d8">size</a> ();
|
|
<a name="l03300"></a>03300 }
|
|
<a name="l03301"></a>03301
|
|
<a name="l03302"></a>03302 <span class="comment">// Storage accessors</span>
|
|
<a name="l03303"></a>03303 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03304"></a><a class="code" href="a00282.html#a405a7c877e251c9409742474db0e804f">03304</a> <span class="keyword">const</span> <a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">matrix_closure_type</a> &<a class="code" href="a00282.html#a405a7c877e251c9409742474db0e804f">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03305"></a>03305 <span class="keywordflow">return</span> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>;
|
|
<a name="l03306"></a>03306 }
|
|
<a name="l03307"></a>03307 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03308"></a><a class="code" href="a00282.html#af9d2e6ded1f7a729b45dd7a96cbf2a91">03308</a> <a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">matrix_closure_type</a> &<a class="code" href="a00282.html#af9d2e6ded1f7a729b45dd7a96cbf2a91">data</a> () {
|
|
<a name="l03309"></a>03309 <span class="keywordflow">return</span> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>;
|
|
<a name="l03310"></a>03310 }
|
|
<a name="l03311"></a>03311
|
|
<a name="l03312"></a>03312 <span class="comment">// Element access</span>
|
|
<a name="l03313"></a>03313 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l03314"></a>03314 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03315"></a><a class="code" href="a00282.html#a6220251c8b95e3e80b7d380136b2bf43">03315</a> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l03316"></a>03316 <span class="keywordflow">return</span> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (<a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> (i), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> (j));
|
|
<a name="l03317"></a>03317 }
|
|
<a name="l03318"></a>03318 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03319"></a><a class="code" href="a00282.html#a2cb48ff50eabbfda64d826d0005ec8e6">03319</a> <a class="code" href="a00282.html#ae04c2a5cf33f9baa893cf904de2e3002">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j) {
|
|
<a name="l03320"></a>03320 <span class="keywordflow">return</span> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (<a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> (i), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> (j));
|
|
<a name="l03321"></a>03321 }
|
|
<a name="l03322"></a>03322 <span class="preprocessor">#else</span>
|
|
<a name="l03323"></a>03323 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03324"></a>03324 <a class="code" href="a00282.html#ae04c2a5cf33f9baa893cf904de2e3002">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l03325"></a>03325 <span class="keywordflow">return</span> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (<a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> (i), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> (j));
|
|
<a name="l03326"></a>03326 }
|
|
<a name="l03327"></a>03327 <span class="preprocessor">#endif</span>
|
|
<a name="l03328"></a>03328 <span class="preprocessor"></span>
|
|
<a name="l03329"></a>03329 <span class="comment">// ISSUE can this be done in free project function?</span>
|
|
<a name="l03330"></a>03330 <span class="comment">// Although a const function can create a non-const proxy to a non-const object</span>
|
|
<a name="l03331"></a>03331 <span class="comment">// Critical is that matrix_type and data_ (vector_closure_type) are const correct</span>
|
|
<a name="l03332"></a>03332 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03333"></a><a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">03333</a> <a class="code" href="a00282.html">matrix_slice<matrix_type></a> <a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">project</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2)<span class="keyword"> const </span>{
|
|
<a name="l03334"></a>03334 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<matrix_type></a> (<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">compose</a> (r1.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> ())), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">compose</a> (r2.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ())), 0);
|
|
<a name="l03335"></a>03335 }
|
|
<a name="l03336"></a>03336 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03337"></a><a class="code" href="a00282.html#a56679ff778ce80fbb45e8bb956b9b794">03337</a> <a class="code" href="a00282.html">matrix_slice<matrix_type></a> <a class="code" href="a00282.html#a56679ff778ce80fbb45e8bb956b9b794">project</a> (<span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s1, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s2)<span class="keyword"> const </span>{
|
|
<a name="l03338"></a>03338 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<matrix_type></a> (<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">compose</a> (s1.<a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">preprocess</a> (data_.<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> ())), <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a21b6da1fd62fa6c92febde9cb4b5f8af">compose</a> (s2.<a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">preprocess</a> (data_.<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ())), 0);
|
|
<a name="l03339"></a>03339 }
|
|
<a name="l03340"></a>03340
|
|
<a name="l03341"></a>03341 <span class="comment">// Assignment</span>
|
|
<a name="l03342"></a>03342 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03343"></a><a class="code" href="a00282.html#aaa652f9fc663af40753e2308e599c0db">03343</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#aaa652f9fc663af40753e2308e599c0db">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice</a> &ms) {
|
|
<a name="l03344"></a>03344 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, ms);
|
|
<a name="l03345"></a>03345 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03346"></a>03346 }
|
|
<a name="l03347"></a>03347 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03348"></a><a class="code" href="a00282.html#a25f6dc6790b8e880fb5425fbd272b49c">03348</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#a25f6dc6790b8e880fb5425fbd272b49c">assign_temporary</a> (<a class="code" href="a00282.html">matrix_slice</a> &ms) {
|
|
<a name="l03349"></a>03349 <span class="keywordflow">return</span> *<span class="keyword">this</span> = ms;
|
|
<a name="l03350"></a>03350 }
|
|
<a name="l03351"></a>03351 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03352"></a>03352 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03353"></a><a class="code" href="a00282.html#a8b325d95f4a520458c2519512a6ff065">03353</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#aaa652f9fc663af40753e2308e599c0db">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03354"></a>03354 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (ae));
|
|
<a name="l03355"></a>03355 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03356"></a>03356 }
|
|
<a name="l03357"></a>03357 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03358"></a>03358 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03359"></a><a class="code" href="a00282.html#a3d165e9a4ab7be561380b37d4d407e0a">03359</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#a3d165e9a4ab7be561380b37d4d407e0a">assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03360"></a>03360 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l03361"></a>03361 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03362"></a>03362 }
|
|
<a name="l03363"></a>03363 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03364"></a>03364 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03365"></a><a class="code" href="a00282.html#a3c268fda699dc9b13aaba307d32b3835">03365</a> <a class="code" href="a00282.html">matrix_slice</a>& <a class="code" href="a00282.html#a3c268fda699dc9b13aaba307d32b3835">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03366"></a>03366 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l03367"></a>03367 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03368"></a>03368 }
|
|
<a name="l03369"></a>03369 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03370"></a>03370 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03371"></a><a class="code" href="a00282.html#ad215070276469130014cc45872aff6a1">03371</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#ad215070276469130014cc45872aff6a1">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03372"></a>03372 matrix_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l03373"></a>03373 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03374"></a>03374 }
|
|
<a name="l03375"></a>03375 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03376"></a>03376 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03377"></a><a class="code" href="a00282.html#a2117b96e7099f893e552842ad5c36a77">03377</a> <a class="code" href="a00282.html">matrix_slice</a>& <a class="code" href="a00282.html#a2117b96e7099f893e552842ad5c36a77">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03378"></a>03378 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l03379"></a>03379 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03380"></a>03380 }
|
|
<a name="l03381"></a>03381 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l03382"></a>03382 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03383"></a><a class="code" href="a00282.html#a07f99df08af633269e41691eb19d7c93">03383</a> <a class="code" href="a00282.html">matrix_slice</a> &<a class="code" href="a00282.html#a07f99df08af633269e41691eb19d7c93">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l03384"></a>03384 matrix_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l03385"></a>03385 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03386"></a>03386 }
|
|
<a name="l03387"></a>03387 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l03388"></a>03388 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03389"></a><a class="code" href="a00282.html#a658c91eaf38330c2bfc0f8a473b16b46">03389</a> <a class="code" href="a00282.html">matrix_slice</a>& <a class="code" href="a00282.html#a658c91eaf38330c2bfc0f8a473b16b46">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l03390"></a>03390 matrix_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l03391"></a>03391 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03392"></a>03392 }
|
|
<a name="l03393"></a>03393 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l03394"></a>03394 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03395"></a><a class="code" href="a00282.html#a8836cf17350a42710dcd823506c8cf6f">03395</a> <a class="code" href="a00282.html">matrix_slice</a>& <a class="code" href="a00282.html#a8836cf17350a42710dcd823506c8cf6f">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l03396"></a>03396 matrix_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l03397"></a>03397 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03398"></a>03398 }
|
|
<a name="l03399"></a>03399
|
|
<a name="l03400"></a>03400 <span class="comment">// Closure comparison</span>
|
|
<a name="l03401"></a>03401 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03402"></a><a class="code" href="a00282.html#a7989968cd942314a73b1880399491d46">03402</a> <span class="keywordtype">bool</span> <a class="code" href="a00282.html#a7989968cd942314a73b1880399491d46">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice</a> &ms)<span class="keyword"> const </span>{
|
|
<a name="l03403"></a>03403 <span class="keywordflow">return</span> (*this).data_.same_closure (ms.<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>);
|
|
<a name="l03404"></a>03404 }
|
|
<a name="l03405"></a>03405
|
|
<a name="l03406"></a>03406 <span class="comment">// Comparison</span>
|
|
<a name="l03407"></a>03407 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03408"></a><a class="code" href="a00282.html#a796d23e4f89b6908887f2e67986387b3">03408</a> <span class="keywordtype">bool</span> <a class="code" href="a00282.html#a796d23e4f89b6908887f2e67986387b3">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice</a> &ms)<span class="keyword"> const </span>{
|
|
<a name="l03409"></a>03409 <span class="keywordflow">return</span> (*this).data_ == ms.<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> && <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> == ms.<a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a> && <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a> == ms.<a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>;
|
|
<a name="l03410"></a>03410 }
|
|
<a name="l03411"></a>03411
|
|
<a name="l03412"></a>03412 <span class="comment">// Swapping</span>
|
|
<a name="l03413"></a>03413 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03414"></a><a class="code" href="a00282.html#a9553e1f3bc68fec4f8e8cd670fea81aa">03414</a> <span class="keywordtype">void</span> <a class="code" href="a00282.html#a9553e1f3bc68fec4f8e8cd670fea81aa">swap</a> (<a class="code" href="a00282.html">matrix_slice</a> ms) {
|
|
<a name="l03415"></a>03415 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &ms) {
|
|
<a name="l03416"></a>03416 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> () == ms.<a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l03417"></a>03417 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> () == ms.<a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l03418"></a>03418 matrix_swap<scalar_swap> (*<span class="keyword">this</span>, ms);
|
|
<a name="l03419"></a>03419 }
|
|
<a name="l03420"></a>03420 }
|
|
<a name="l03421"></a>03421 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03422"></a><a class="code" href="a00282.html#a51a955a9a591f6a9855fd3688d308b43">03422</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00282.html#a51a955a9a591f6a9855fd3688d308b43">swap</a> (<a class="code" href="a00282.html">matrix_slice</a> ms1, <a class="code" href="a00282.html">matrix_slice</a> ms2) {
|
|
<a name="l03423"></a>03423 ms1.<a class="code" href="a00282.html#a9553e1f3bc68fec4f8e8cd670fea81aa">swap</a> (ms2);
|
|
<a name="l03424"></a>03424 }
|
|
<a name="l03425"></a>03425
|
|
<a name="l03426"></a>03426 <span class="comment">// Iterator types</span>
|
|
<a name="l03427"></a>03427 <span class="keyword">private</span>:
|
|
<a name="l03428"></a>03428 <span class="comment">// Use slice as an index - FIXME this fails for packed assignment</span>
|
|
<a name="l03429"></a><a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">03429</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">const_subiterator1_type</a>;
|
|
<a name="l03430"></a><a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">03430</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">subiterator1_type</a>;
|
|
<a name="l03431"></a><a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">03431</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">const_subiterator2_type</a>;
|
|
<a name="l03432"></a><a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">03432</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> slice_type::const_iterator <a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">subiterator2_type</a>;
|
|
<a name="l03433"></a>03433
|
|
<a name="l03434"></a>03434 <span class="keyword">public</span>:
|
|
<a name="l03435"></a>03435 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03436"></a>03436 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00169.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator1<matrix_slice<matrix_type></a>,
|
|
<a name="l03437"></a>03437 <span class="keyword">typename</span> matrix_type::iterator1::iterator_category> <a class="code" href="a00285.html">iterator1</a>;
|
|
<a name="l03438"></a>03438 <span class="keyword">typedef</span> <a class="code" href="a00170.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator2<matrix_slice<matrix_type></a>,
|
|
<a name="l03439"></a>03439 <span class="keyword">typename</span> matrix_type::iterator2::iterator_category> <a class="code" href="a00286.html">iterator2</a>;
|
|
<a name="l03440"></a>03440 <span class="keyword">typedef</span> <a class="code" href="a00166.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator1<matrix_slice<matrix_type></a>,
|
|
<a name="l03441"></a>03441 <span class="keyword">typename</span> matrix_type::const_iterator1::iterator_category> <a class="code" href="a00283.html">const_iterator1</a>;
|
|
<a name="l03442"></a>03442 <span class="keyword">typedef</span> <a class="code" href="a00167.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator2<matrix_slice<matrix_type></a>,
|
|
<a name="l03443"></a>03443 <span class="keyword">typename</span> matrix_type::const_iterator2::iterator_category> <a class="code" href="a00284.html">const_iterator2</a>;
|
|
<a name="l03444"></a>03444 <span class="preprocessor">#else</span>
|
|
<a name="l03445"></a>03445 <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00283.html">const_iterator1</a>;
|
|
<a name="l03446"></a>03446 <span class="keyword">class </span><a class="code" href="a00285.html">iterator1</a>;
|
|
<a name="l03447"></a>03447 <span class="keyword">class </span><a class="code" href="a00284.html">const_iterator2</a>;
|
|
<a name="l03448"></a><a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">03448</a> <span class="keyword">class </span><a class="code" href="a00286.html">iterator2</a>;
|
|
<a name="l03449"></a>03449 <span class="preprocessor">#endif</span>
|
|
<a name="l03450"></a>03450 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<const_iterator1></a> <a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">const_reverse_iterator1</a>;
|
|
<a name="l03451"></a><a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">03451</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<iterator1></a> <a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">reverse_iterator1</a>;
|
|
<a name="l03452"></a><a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">03452</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<const_iterator2></a> <a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">const_reverse_iterator2</a>;
|
|
<a name="l03453"></a><a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">03453</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<iterator2></a> <a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">reverse_iterator2</a>;
|
|
<a name="l03454"></a>03454
|
|
<a name="l03455"></a>03455 <span class="comment">// Element lookup</span>
|
|
<a name="l03456"></a>03456 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03457"></a><a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">03457</a> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">find1</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l03458"></a>03458 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03459"></a>03459 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00283.html">const_iterator1</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l03460"></a>03460 <span class="preprocessor">#else</span>
|
|
<a name="l03461"></a>03461 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00283.html">const_iterator1</a> (*<span class="keyword">this</span>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + j);
|
|
<a name="l03462"></a>03462 <span class="preprocessor">#endif</span>
|
|
<a name="l03463"></a>03463 <span class="preprocessor"></span> }
|
|
<a name="l03464"></a>03464 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03465"></a><a class="code" href="a00282.html#aea3e3254bb211b2a91c9ec5f7aec2ac1">03465</a> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00282.html#aea3e3254bb211b2a91c9ec5f7aec2ac1">find1</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j) {
|
|
<a name="l03466"></a>03466 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03467"></a>03467 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00285.html">iterator1</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l03468"></a>03468 <span class="preprocessor">#else</span>
|
|
<a name="l03469"></a>03469 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00285.html">iterator1</a> (*<span class="keyword">this</span>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + j);
|
|
<a name="l03470"></a>03470 <span class="preprocessor">#endif</span>
|
|
<a name="l03471"></a>03471 <span class="preprocessor"></span> }
|
|
<a name="l03472"></a>03472 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03473"></a><a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">03473</a> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">find2</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l03474"></a>03474 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03475"></a>03475 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00284.html">const_iterator2</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l03476"></a>03476 <span class="preprocessor">#else</span>
|
|
<a name="l03477"></a>03477 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00284.html">const_iterator2</a> (*<span class="keyword">this</span>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + j);
|
|
<a name="l03478"></a>03478 <span class="preprocessor">#endif</span>
|
|
<a name="l03479"></a>03479 <span class="preprocessor"></span> }
|
|
<a name="l03480"></a>03480 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03481"></a><a class="code" href="a00282.html#ace498df260c1cb8d93e24e88977ed2a2">03481</a> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00282.html#ace498df260c1cb8d93e24e88977ed2a2">find2</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> i, <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> j) {
|
|
<a name="l03482"></a>03482 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03483"></a>03483 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00286.html">iterator2</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l03484"></a>03484 <span class="preprocessor">#else</span>
|
|
<a name="l03485"></a>03485 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00286.html">iterator2</a> (*<span class="keyword">this</span>, <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + i, <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>.<a class="code" href="a00002.html#a695a179e5e7c28cf70e80868706425fb">begin</a> () + j);
|
|
<a name="l03486"></a>03486 <span class="preprocessor">#endif</span>
|
|
<a name="l03487"></a>03487 <span class="preprocessor"></span> }
|
|
<a name="l03488"></a>03488
|
|
<a name="l03489"></a>03489 <span class="comment">// Iterators simply are indices.</span>
|
|
<a name="l03490"></a>03490
|
|
<a name="l03491"></a>03491 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03492"></a><a class="code" href="a00283.html">03492</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00283.html">const_iterator1</a>:
|
|
<a name="l03493"></a>03493 <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><matrix_slice>,
|
|
<a name="l03494"></a>03494 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator1::iterator_category>::template
|
|
<a name="l03495"></a>03495 iterator_base<const_iterator1, value_type>::type {
|
|
<a name="l03496"></a>03496 <span class="keyword">public</span>:
|
|
<a name="l03497"></a><a class="code" href="a00283.html#a3d181b2e75860cbc3f3c04bb4c75ddb2">03497</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::value_type <a class="code" href="a00283.html#a3d181b2e75860cbc3f3c04bb4c75ddb2">value_type</a>;
|
|
<a name="l03498"></a><a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">03498</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::difference_type <a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">difference_type</a>;
|
|
<a name="l03499"></a><a class="code" href="a00283.html#a135d3e5848ebc7c580ddbdb9fcd43f43">03499</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00283.html#a135d3e5848ebc7c580ddbdb9fcd43f43">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l03500"></a><a class="code" href="a00283.html#aa490321dfa2ddc31347ca8337bf8200c">03500</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::pointer <a class="code" href="a00283.html#aa490321dfa2ddc31347ca8337bf8200c">pointer</a>;
|
|
<a name="l03501"></a><a class="code" href="a00283.html#ad3587ba0e83514a3972c28d428483844">03501</a> <span class="keyword">typedef</span> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00283.html#ad3587ba0e83514a3972c28d428483844">dual_iterator_type</a>;
|
|
<a name="l03502"></a><a class="code" href="a00283.html#adff5fd6007b96d0df900ac8e57b0df82">03502</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00283.html#adff5fd6007b96d0df900ac8e57b0df82">dual_reverse_iterator_type</a>;
|
|
<a name="l03503"></a>03503
|
|
<a name="l03504"></a>03504 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03505"></a>03505 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03506"></a><a class="code" href="a00283.html#ab58e13315bbb6224462798c569c9519c">03506</a> <a class="code" href="a00283.html#ab58e13315bbb6224462798c569c9519c">const_iterator1</a> ():
|
|
<a name="l03507"></a>03507 <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="a00282.html">self_type</a>> (), <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> (), <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> () {}
|
|
<a name="l03508"></a>03508 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03509"></a><a class="code" href="a00283.html#a5dcd00b0be563abe7ae10721d19e0d4c">03509</a> <a class="code" href="a00283.html#ab58e13315bbb6224462798c569c9519c">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00282.html">self_type</a> &ms, <span class="keyword">const</span> <a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">const_subiterator2_type</a> &it2):
|
|
<a name="l03510"></a>03510 <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="a00282.html">self_type</a>> (ms), <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> (it1), <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> (it2) {}
|
|
<a name="l03511"></a>03511 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03512"></a><a class="code" href="a00283.html#aa8946a364c89b29ad9efa3ddb2ed75f3">03512</a> <a class="code" href="a00283.html#ab58e13315bbb6224462798c569c9519c">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00285.html">iterator1</a> &it):
|
|
<a name="l03513"></a>03513 <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="a00282.html">self_type</a>> (it ()), <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> (it.<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>), <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> (it.<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>) {}
|
|
<a name="l03514"></a>03514
|
|
<a name="l03515"></a>03515 <span class="comment">// Arithmetic</span>
|
|
<a name="l03516"></a>03516 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03517"></a><a class="code" href="a00283.html#a42b2d86fffab0071484239e8b2a3e3df">03517</a> <a class="code" href="a00283.html">const_iterator1</a> &<a class="code" href="a00283.html#a42b2d86fffab0071484239e8b2a3e3df">operator ++ </a>() {
|
|
<a name="l03518"></a>03518 ++ <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03519"></a>03519 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03520"></a>03520 }
|
|
<a name="l03521"></a>03521 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03522"></a><a class="code" href="a00283.html#a4ec420738cef91c191286b6f89f5671d">03522</a> <a class="code" href="a00283.html">const_iterator1</a> &<a class="code" href="a00283.html#a4ec420738cef91c191286b6f89f5671d">operator -- </a>() {
|
|
<a name="l03523"></a>03523 -- <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03524"></a>03524 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03525"></a>03525 }
|
|
<a name="l03526"></a>03526 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03527"></a><a class="code" href="a00283.html#a68d9dd87e690fc024ac0f5be515ab612">03527</a> <a class="code" href="a00283.html">const_iterator1</a> &<a class="code" href="a00283.html#a68d9dd87e690fc024ac0f5be515ab612">operator += </a>(<a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">difference_type</a> n) {
|
|
<a name="l03528"></a>03528 <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> += n;
|
|
<a name="l03529"></a>03529 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03530"></a>03530 }
|
|
<a name="l03531"></a>03531 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03532"></a><a class="code" href="a00283.html#aa40e181308e6481bfc5c5a8401ac0e36">03532</a> <a class="code" href="a00283.html">const_iterator1</a> &<a class="code" href="a00283.html#aa40e181308e6481bfc5c5a8401ac0e36">operator -= </a>(<a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">difference_type</a> n) {
|
|
<a name="l03533"></a>03533 <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> -= n;
|
|
<a name="l03534"></a>03534 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03535"></a>03535 }
|
|
<a name="l03536"></a>03536 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03537"></a><a class="code" href="a00283.html#a0f0a86176dc9f4d92f37009a06892778">03537</a> <a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">difference_type</a> <a class="code" href="a00283.html#a0f0a86176dc9f4d92f37009a06892778">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00283.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03538"></a>03538 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03539"></a>03539 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> == it.<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03540"></a>03540 <span class="keywordflow">return</span> <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> - it.<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03541"></a>03541 }
|
|
<a name="l03542"></a>03542
|
|
<a name="l03543"></a>03543 <span class="comment">// Dereference</span>
|
|
<a name="l03544"></a>03544 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03545"></a><a class="code" href="a00283.html#aaefbe0683feddcc3e320a41f164fc2d1">03545</a> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a> <a class="code" href="a00283.html#aaefbe0683feddcc3e320a41f164fc2d1">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l03546"></a>03546 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l03547"></a>03547 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (*<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>, *<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>);
|
|
<a name="l03548"></a>03548 }
|
|
<a name="l03549"></a>03549 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03550"></a><a class="code" href="a00283.html#ae79e8c8ade7149c60b842c7ebfb367bb">03550</a> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a> <a class="code" href="a00283.html#ae79e8c8ade7149c60b842c7ebfb367bb">operator [] </a>(<a class="code" href="a00283.html#a72ef6035e69b3c36f3f01d8705c5cd91">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l03551"></a>03551 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l03552"></a>03552 }
|
|
<a name="l03553"></a>03553
|
|
<a name="l03554"></a>03554 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l03555"></a>03555 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03556"></a>03556 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03557"></a>03557 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03558"></a>03558 <span class="preprocessor">#endif</span>
|
|
<a name="l03559"></a><a class="code" href="a00283.html#af9d012c921011dac72932c7b200808d8">03559</a> <span class="preprocessor"></span> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00283.html#af9d012c921011dac72932c7b200808d8">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03560"></a>03560 <span class="keywordflow">return</span> <a class="code" href="a00284.html">const_iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>, <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> ().<a class="code" href="a00283.html#af9d012c921011dac72932c7b200808d8">begin</a> ());
|
|
<a name="l03561"></a>03561 }
|
|
<a name="l03562"></a>03562 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03563"></a>03563 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03564"></a>03564 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03565"></a>03565 <span class="preprocessor">#endif</span>
|
|
<a name="l03566"></a><a class="code" href="a00283.html#a4d0aefea513af26f892c5e3065b0906a">03566</a> <span class="preprocessor"></span> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00283.html#a4d0aefea513af26f892c5e3065b0906a">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03567"></a>03567 <span class="keywordflow">return</span> <a class="code" href="a00284.html">const_iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>, <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> ().<a class="code" href="a00283.html#a4d0aefea513af26f892c5e3065b0906a">end</a> ());
|
|
<a name="l03568"></a>03568 }
|
|
<a name="l03569"></a>03569 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03570"></a>03570 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03571"></a>03571 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03572"></a>03572 <span class="preprocessor">#endif</span>
|
|
<a name="l03573"></a><a class="code" href="a00283.html#a95f263b7c4cd25520dfa945fa9dba8fc">03573</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00283.html#a95f263b7c4cd25520dfa945fa9dba8fc">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03574"></a>03574 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">const_reverse_iterator2</a> (<a class="code" href="a00283.html#a4d0aefea513af26f892c5e3065b0906a">end</a> ());
|
|
<a name="l03575"></a>03575 }
|
|
<a name="l03576"></a>03576 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03577"></a>03577 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03578"></a>03578 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03579"></a>03579 <span class="preprocessor">#endif</span>
|
|
<a name="l03580"></a><a class="code" href="a00283.html#ab29a1778872ba1443e38630aadbbcf36">03580</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00283.html#ab29a1778872ba1443e38630aadbbcf36">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03581"></a>03581 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">const_reverse_iterator2</a> (<a class="code" href="a00283.html#af9d012c921011dac72932c7b200808d8">begin</a> ());
|
|
<a name="l03582"></a>03582 }
|
|
<a name="l03583"></a>03583 <span class="preprocessor">#endif</span>
|
|
<a name="l03584"></a>03584 <span class="preprocessor"></span>
|
|
<a name="l03585"></a>03585 <span class="comment">// Indices</span>
|
|
<a name="l03586"></a>03586 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03587"></a><a class="code" href="a00283.html#afa375bcb8dbc413f3722fe7085bcf1eb">03587</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00283.html#afa375bcb8dbc413f3722fe7085bcf1eb">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03588"></a>03588 <span class="keywordflow">return</span> <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>.index ();
|
|
<a name="l03589"></a>03589 }
|
|
<a name="l03590"></a>03590 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03591"></a><a class="code" href="a00283.html#a8b32ac4bc0a95ae1acdc73ccb1bc3758">03591</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00283.html#a8b32ac4bc0a95ae1acdc73ccb1bc3758">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03592"></a>03592 <span class="keywordflow">return</span> <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>.index ();
|
|
<a name="l03593"></a>03593 }
|
|
<a name="l03594"></a>03594
|
|
<a name="l03595"></a>03595 <span class="comment">// Assignment</span>
|
|
<a name="l03596"></a>03596 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03597"></a><a class="code" href="a00283.html#a02f5744dae9b23d38ac19d2c5375c8df">03597</a> <a class="code" href="a00283.html">const_iterator1</a> &<a class="code" href="a00283.html#a02f5744dae9b23d38ac19d2c5375c8df">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00283.html">const_iterator1</a> &it) {
|
|
<a name="l03598"></a>03598 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l03599"></a>03599 <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> = it.<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03600"></a>03600 <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> = it.<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>;
|
|
<a name="l03601"></a>03601 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03602"></a>03602 }
|
|
<a name="l03603"></a>03603
|
|
<a name="l03604"></a>03604 <span class="comment">// Comparison</span>
|
|
<a name="l03605"></a>03605 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03606"></a><a class="code" href="a00283.html#a947f69fd614c6e1d7ea430461b7d8f3b">03606</a> <span class="keywordtype">bool</span> <a class="code" href="a00283.html#a947f69fd614c6e1d7ea430461b7d8f3b">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00283.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03607"></a>03607 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03608"></a>03608 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> == it.<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03609"></a>03609 <span class="keywordflow">return</span> <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> == it.<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03610"></a>03610 }
|
|
<a name="l03611"></a>03611 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03612"></a><a class="code" href="a00283.html#ae2ac84ae5d5f3727a792dc4c808f2a23">03612</a> <span class="keywordtype">bool</span> <a class="code" href="a00283.html#ae2ac84ae5d5f3727a792dc4c808f2a23">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00283.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03613"></a>03613 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03614"></a>03614 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a> == it.<a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03615"></a>03615 <span class="keywordflow">return</span> <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a> < it.<a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03616"></a>03616 }
|
|
<a name="l03617"></a>03617
|
|
<a name="l03618"></a>03618 <span class="keyword">private</span>:
|
|
<a name="l03619"></a><a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">03619</a> <a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">const_subiterator1_type</a> <a class="code" href="a00283.html#abc2a4d1d737e5b37cdce2f0d0a09d896">it1_</a>;
|
|
<a name="l03620"></a><a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">03620</a> <a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">const_subiterator2_type</a> <a class="code" href="a00283.html#a453879a14c34021c84b14f5d84fd0a99">it2_</a>;
|
|
<a name="l03621"></a>03621 };
|
|
<a name="l03622"></a>03622 <span class="preprocessor">#endif</span>
|
|
<a name="l03623"></a>03623 <span class="preprocessor"></span>
|
|
<a name="l03624"></a>03624 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03625"></a><a class="code" href="a00282.html#a0c0c14e627a051e0bb6de1fb7f7414c1">03625</a> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00282.html#a0c0c14e627a051e0bb6de1fb7f7414c1">begin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03626"></a>03626 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">find1</a> (0, 0, 0);
|
|
<a name="l03627"></a>03627 }
|
|
<a name="l03628"></a>03628 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03629"></a><a class="code" href="a00282.html#a5c39b89c98329422c5e27f54b927a54a">03629</a> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00282.html#a5c39b89c98329422c5e27f54b927a54a">end1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03630"></a>03630 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">find1</a> (0, <a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> (), 0);
|
|
<a name="l03631"></a>03631 }
|
|
<a name="l03632"></a>03632
|
|
<a name="l03633"></a>03633 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03634"></a><a class="code" href="a00285.html">03634</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00285.html">iterator1</a>:
|
|
<a name="l03635"></a>03635 <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><matrix_slice>,
|
|
<a name="l03636"></a>03636 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator1::iterator_category>::template
|
|
<a name="l03637"></a>03637 iterator_base<iterator1, value_type>::type {
|
|
<a name="l03638"></a>03638 <span class="keyword">public</span>:
|
|
<a name="l03639"></a><a class="code" href="a00285.html#ac7bc89b0b238dfc86d6f8262a4a35cef">03639</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::value_type <a class="code" href="a00285.html#ac7bc89b0b238dfc86d6f8262a4a35cef">value_type</a>;
|
|
<a name="l03640"></a><a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">03640</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::difference_type <a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">difference_type</a>;
|
|
<a name="l03641"></a><a class="code" href="a00285.html#a46f85602b618b60e7eaf5338a57c78e5">03641</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::reference <a class="code" href="a00285.html#a46f85602b618b60e7eaf5338a57c78e5">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l03642"></a><a class="code" href="a00285.html#ab20bd7214ec64bdd30314090fb685899">03642</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::pointer <a class="code" href="a00285.html#ab20bd7214ec64bdd30314090fb685899">pointer</a>;
|
|
<a name="l03643"></a><a class="code" href="a00285.html#a27dcdffb254e9807430a5e9ebaf87f0d">03643</a> <span class="keyword">typedef</span> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00285.html#a27dcdffb254e9807430a5e9ebaf87f0d">dual_iterator_type</a>;
|
|
<a name="l03644"></a><a class="code" href="a00285.html#a69855fce62fa5771545039254023e643">03644</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00285.html#a69855fce62fa5771545039254023e643">dual_reverse_iterator_type</a>;
|
|
<a name="l03645"></a>03645
|
|
<a name="l03646"></a>03646 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03647"></a>03647 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03648"></a><a class="code" href="a00285.html#ae0b3176649597aaeeac7b53e37a8a79e">03648</a> <a class="code" href="a00285.html#ae0b3176649597aaeeac7b53e37a8a79e">iterator1</a> ():
|
|
<a name="l03649"></a>03649 <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><<a class="code" href="a00282.html">self_type</a>> (), <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> (), <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> () {}
|
|
<a name="l03650"></a>03650 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03651"></a><a class="code" href="a00285.html#ac6cc316181afdd88820740b2263b6df2">03651</a> <a class="code" href="a00285.html#ae0b3176649597aaeeac7b53e37a8a79e">iterator1</a> (<a class="code" href="a00282.html">self_type</a> &ms, <span class="keyword">const</span> <a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">subiterator2_type</a> &it2):
|
|
<a name="l03652"></a>03652 <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><<a class="code" href="a00282.html">self_type</a>> (ms), <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> (it1), <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> (it2) {}
|
|
<a name="l03653"></a>03653
|
|
<a name="l03654"></a>03654 <span class="comment">// Arithmetic</span>
|
|
<a name="l03655"></a>03655 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03656"></a><a class="code" href="a00285.html#ad79ba3871adf9378a9593a03df305e85">03656</a> <a class="code" href="a00285.html">iterator1</a> &<a class="code" href="a00285.html#ad79ba3871adf9378a9593a03df305e85">operator ++ </a>() {
|
|
<a name="l03657"></a>03657 ++ <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03658"></a>03658 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03659"></a>03659 }
|
|
<a name="l03660"></a>03660 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03661"></a><a class="code" href="a00285.html#a5e3d2b0d1068a58f0857183e6c4f56a2">03661</a> <a class="code" href="a00285.html">iterator1</a> &<a class="code" href="a00285.html#a5e3d2b0d1068a58f0857183e6c4f56a2">operator -- </a>() {
|
|
<a name="l03662"></a>03662 -- <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03663"></a>03663 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03664"></a>03664 }
|
|
<a name="l03665"></a>03665 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03666"></a><a class="code" href="a00285.html#a11741c9621165fbb8fcde8a18cd832ce">03666</a> <a class="code" href="a00285.html">iterator1</a> &<a class="code" href="a00285.html#a11741c9621165fbb8fcde8a18cd832ce">operator += </a>(<a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">difference_type</a> n) {
|
|
<a name="l03667"></a>03667 <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> += n;
|
|
<a name="l03668"></a>03668 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03669"></a>03669 }
|
|
<a name="l03670"></a>03670 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03671"></a><a class="code" href="a00285.html#a03b8efc55c384f1005ea3e14b4df0481">03671</a> <a class="code" href="a00285.html">iterator1</a> &<a class="code" href="a00285.html#a03b8efc55c384f1005ea3e14b4df0481">operator -= </a>(<a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">difference_type</a> n) {
|
|
<a name="l03672"></a>03672 <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> -= n;
|
|
<a name="l03673"></a>03673 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03674"></a>03674 }
|
|
<a name="l03675"></a>03675 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03676"></a><a class="code" href="a00285.html#aef618ec921d4eec79613a21f70139eaf">03676</a> <a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">difference_type</a> <a class="code" href="a00285.html#aef618ec921d4eec79613a21f70139eaf">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00285.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03677"></a>03677 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03678"></a>03678 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> == it.<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03679"></a>03679 <span class="keywordflow">return</span> <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> - it.<a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03680"></a>03680 }
|
|
<a name="l03681"></a>03681
|
|
<a name="l03682"></a>03682 <span class="comment">// Dereference</span>
|
|
<a name="l03683"></a>03683 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03684"></a><a class="code" href="a00285.html#a75f523bbd9e8c0e31a24714e25d7866b">03684</a> <a class="code" href="a00285.html#a46f85602b618b60e7eaf5338a57c78e5">reference</a> <a class="code" href="a00285.html#a75f523bbd9e8c0e31a24714e25d7866b">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l03685"></a>03685 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l03686"></a>03686 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (*<a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>, *<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>);
|
|
<a name="l03687"></a>03687 }
|
|
<a name="l03688"></a>03688 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03689"></a><a class="code" href="a00285.html#ad38e5c29b67f1da725449ea357a59ab2">03689</a> <a class="code" href="a00285.html#a46f85602b618b60e7eaf5338a57c78e5">reference</a> <a class="code" href="a00285.html#ad38e5c29b67f1da725449ea357a59ab2">operator [] </a>(<a class="code" href="a00285.html#aaebdfcc466ea326f319950ca6d4838d1">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l03690"></a>03690 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l03691"></a>03691 }
|
|
<a name="l03692"></a>03692
|
|
<a name="l03693"></a>03693 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l03694"></a>03694 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03695"></a>03695 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03696"></a>03696 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03697"></a>03697 <span class="preprocessor">#endif</span>
|
|
<a name="l03698"></a><a class="code" href="a00285.html#ae663c56b638f9b48f99d0af9375becc0">03698</a> <span class="preprocessor"></span> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00285.html#ae663c56b638f9b48f99d0af9375becc0">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03699"></a>03699 <span class="keywordflow">return</span> <a class="code" href="a00286.html">iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>, <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> ().<a class="code" href="a00285.html#ae663c56b638f9b48f99d0af9375becc0">begin</a> ());
|
|
<a name="l03700"></a>03700 }
|
|
<a name="l03701"></a>03701 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03702"></a>03702 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03703"></a>03703 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03704"></a>03704 <span class="preprocessor">#endif</span>
|
|
<a name="l03705"></a><a class="code" href="a00285.html#a532e5b85648c0a896b88b1f09201b147">03705</a> <span class="preprocessor"></span> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00285.html#a532e5b85648c0a896b88b1f09201b147">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03706"></a>03706 <span class="keywordflow">return</span> <a class="code" href="a00286.html">iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>, <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> ().<a class="code" href="a00285.html#a532e5b85648c0a896b88b1f09201b147">end</a> ());
|
|
<a name="l03707"></a>03707 }
|
|
<a name="l03708"></a>03708 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03709"></a>03709 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03710"></a>03710 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03711"></a>03711 <span class="preprocessor">#endif</span>
|
|
<a name="l03712"></a><a class="code" href="a00285.html#aea53da7ff866d1af1e5a167cc76f37b3">03712</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00285.html#aea53da7ff866d1af1e5a167cc76f37b3">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03713"></a>03713 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">reverse_iterator2</a> (<a class="code" href="a00285.html#a532e5b85648c0a896b88b1f09201b147">end</a> ());
|
|
<a name="l03714"></a>03714 }
|
|
<a name="l03715"></a>03715 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03716"></a>03716 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03717"></a>03717 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03718"></a>03718 <span class="preprocessor">#endif</span>
|
|
<a name="l03719"></a><a class="code" href="a00285.html#a9cc903e9ef0c1a1a34023a2867146a4e">03719</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00285.html#a9cc903e9ef0c1a1a34023a2867146a4e">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03720"></a>03720 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">reverse_iterator2</a> (<a class="code" href="a00285.html#ae663c56b638f9b48f99d0af9375becc0">begin</a> ());
|
|
<a name="l03721"></a>03721 }
|
|
<a name="l03722"></a>03722 <span class="preprocessor">#endif</span>
|
|
<a name="l03723"></a>03723 <span class="preprocessor"></span>
|
|
<a name="l03724"></a>03724 <span class="comment">// Indices</span>
|
|
<a name="l03725"></a>03725 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03726"></a><a class="code" href="a00285.html#a9771f62c38013c34c3b9012e9cc9b0eb">03726</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00285.html#a9771f62c38013c34c3b9012e9cc9b0eb">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03727"></a>03727 <span class="keywordflow">return</span> <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>.index ();
|
|
<a name="l03728"></a>03728 }
|
|
<a name="l03729"></a>03729 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03730"></a><a class="code" href="a00285.html#a82e8d62a0fb299333278f8c054c3c4a0">03730</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00285.html#a82e8d62a0fb299333278f8c054c3c4a0">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03731"></a>03731 <span class="keywordflow">return</span> <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>.index ();
|
|
<a name="l03732"></a>03732 }
|
|
<a name="l03733"></a>03733
|
|
<a name="l03734"></a>03734 <span class="comment">// Assignment</span>
|
|
<a name="l03735"></a>03735 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03736"></a><a class="code" href="a00285.html#ad3c7328130b7967ee5e8ccb5e7a055dd">03736</a> <a class="code" href="a00285.html">iterator1</a> &<a class="code" href="a00285.html#ad3c7328130b7967ee5e8ccb5e7a055dd">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00285.html">iterator1</a> &it) {
|
|
<a name="l03737"></a>03737 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l03738"></a>03738 <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> = it.<a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03739"></a>03739 <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> = it.<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>;
|
|
<a name="l03740"></a>03740 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03741"></a>03741 }
|
|
<a name="l03742"></a>03742
|
|
<a name="l03743"></a>03743 <span class="comment">// Comparison</span>
|
|
<a name="l03744"></a>03744 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03745"></a><a class="code" href="a00285.html#a3183a44fe6bfd86ed703c4f07ea7601a">03745</a> <span class="keywordtype">bool</span> <a class="code" href="a00285.html#a3183a44fe6bfd86ed703c4f07ea7601a">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00285.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03746"></a>03746 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03747"></a>03747 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> == it.<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03748"></a>03748 <span class="keywordflow">return</span> <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> == it.<a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03749"></a>03749 }
|
|
<a name="l03750"></a>03750 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03751"></a><a class="code" href="a00285.html#a2d40dbfb97bea5e3b20bcb9a0dba8cd2">03751</a> <span class="keywordtype">bool</span> <a class="code" href="a00285.html#a2d40dbfb97bea5e3b20bcb9a0dba8cd2">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00285.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03752"></a>03752 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03753"></a>03753 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a> == it.<a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03754"></a>03754 <span class="keywordflow">return</span> <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a> < it.<a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03755"></a>03755 }
|
|
<a name="l03756"></a>03756
|
|
<a name="l03757"></a>03757 <span class="keyword">private</span>:
|
|
<a name="l03758"></a><a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">03758</a> <a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">subiterator1_type</a> <a class="code" href="a00285.html#a3fe01de33c4e5a04376c80862755004b">it1_</a>;
|
|
<a name="l03759"></a><a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">03759</a> <a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">subiterator2_type</a> <a class="code" href="a00285.html#acfbcd1c9a3b3f68cf6a6e001e40ad758">it2_</a>;
|
|
<a name="l03760"></a>03760
|
|
<a name="l03761"></a><a class="code" href="a00285.html#a2217ee3466e64c9a0105ef5d64ba6a11">03761</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00283.html">const_iterator1</a>;
|
|
<a name="l03762"></a>03762 };
|
|
<a name="l03763"></a>03763 <span class="preprocessor">#endif</span>
|
|
<a name="l03764"></a>03764 <span class="preprocessor"></span>
|
|
<a name="l03765"></a>03765 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03766"></a><a class="code" href="a00282.html#aa32eb8babc04e7b7faa6d047b5d06720">03766</a> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00282.html#aa32eb8babc04e7b7faa6d047b5d06720">begin1</a> () {
|
|
<a name="l03767"></a>03767 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">find1</a> (0, 0, 0);
|
|
<a name="l03768"></a>03768 }
|
|
<a name="l03769"></a>03769 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03770"></a><a class="code" href="a00282.html#adc1bcd611cb5c55239b82bb4c51299c2">03770</a> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00282.html#adc1bcd611cb5c55239b82bb4c51299c2">end1</a> () {
|
|
<a name="l03771"></a>03771 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a9b801751b45a5d44d699bfb3e28a1d45">find1</a> (0, <a class="code" href="a00282.html#a397c9ae69b24ff127e24ca27aa2c9cc6">size1</a> (), 0);
|
|
<a name="l03772"></a>03772 }
|
|
<a name="l03773"></a>03773
|
|
<a name="l03774"></a>03774 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03775"></a><a class="code" href="a00284.html">03775</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00284.html">const_iterator2</a>:
|
|
<a name="l03776"></a>03776 <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><matrix_slice>,
|
|
<a name="l03777"></a>03777 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator2::iterator_category>::template
|
|
<a name="l03778"></a>03778 iterator_base<const_iterator2, value_type>::type {
|
|
<a name="l03779"></a>03779 <span class="keyword">public</span>:
|
|
<a name="l03780"></a><a class="code" href="a00284.html#a95dcb016ea3dafe94b4459eed6e6d76e">03780</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::value_type <a class="code" href="a00284.html#a95dcb016ea3dafe94b4459eed6e6d76e">value_type</a>;
|
|
<a name="l03781"></a><a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">03781</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::difference_type <a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">difference_type</a>;
|
|
<a name="l03782"></a><a class="code" href="a00284.html#a210083a75830a16aec27c07467212d2f">03782</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00284.html#a210083a75830a16aec27c07467212d2f">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l03783"></a><a class="code" href="a00284.html#aacc1e70069b5a22d653cb42c7af7be95">03783</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::pointer <a class="code" href="a00284.html#aacc1e70069b5a22d653cb42c7af7be95">pointer</a>;
|
|
<a name="l03784"></a><a class="code" href="a00284.html#af16b4f7843aeb91c12aaa08ff6d3adb3">03784</a> <span class="keyword">typedef</span> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00284.html#af16b4f7843aeb91c12aaa08ff6d3adb3">dual_iterator_type</a>;
|
|
<a name="l03785"></a><a class="code" href="a00284.html#a8e27a0c41227bcd301a257987a768866">03785</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00284.html#a8e27a0c41227bcd301a257987a768866">dual_reverse_iterator_type</a>;
|
|
<a name="l03786"></a>03786
|
|
<a name="l03787"></a>03787 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03788"></a>03788 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03789"></a><a class="code" href="a00284.html#a5c5911cd808c2dfd5ea573cb2a316b39">03789</a> <a class="code" href="a00284.html#a5c5911cd808c2dfd5ea573cb2a316b39">const_iterator2</a> ():
|
|
<a name="l03790"></a>03790 <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="a00282.html">self_type</a>> (), <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> (), <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> () {}
|
|
<a name="l03791"></a>03791 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03792"></a><a class="code" href="a00284.html#ad63dc940d30bfdc5fa6d689a43d9b72d">03792</a> <a class="code" href="a00284.html#a5c5911cd808c2dfd5ea573cb2a316b39">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00282.html">self_type</a> &ms, <span class="keyword">const</span> <a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">const_subiterator2_type</a> &it2):
|
|
<a name="l03793"></a>03793 <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="a00282.html">self_type</a>> (ms), <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> (it1), <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> (it2) {}
|
|
<a name="l03794"></a>03794 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03795"></a><a class="code" href="a00284.html#a73625a59eb7172587467c8fdf11a656a">03795</a> <a class="code" href="a00284.html#a5c5911cd808c2dfd5ea573cb2a316b39">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00286.html">iterator2</a> &it):
|
|
<a name="l03796"></a>03796 <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="a00282.html">self_type</a>> (it ()), <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> (it.<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>), <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> (it.<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>) {}
|
|
<a name="l03797"></a>03797
|
|
<a name="l03798"></a>03798 <span class="comment">// Arithmetic</span>
|
|
<a name="l03799"></a>03799 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03800"></a><a class="code" href="a00284.html#ad688fe51c15b2b1b7f267549fe7d0fc7">03800</a> <a class="code" href="a00284.html">const_iterator2</a> &<a class="code" href="a00284.html#ad688fe51c15b2b1b7f267549fe7d0fc7">operator ++ </a>() {
|
|
<a name="l03801"></a>03801 ++ <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03802"></a>03802 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03803"></a>03803 }
|
|
<a name="l03804"></a>03804 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03805"></a><a class="code" href="a00284.html#a24d56fdde0c09019fbb6c7946ec27d88">03805</a> <a class="code" href="a00284.html">const_iterator2</a> &<a class="code" href="a00284.html#a24d56fdde0c09019fbb6c7946ec27d88">operator -- </a>() {
|
|
<a name="l03806"></a>03806 -- <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03807"></a>03807 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03808"></a>03808 }
|
|
<a name="l03809"></a>03809 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03810"></a><a class="code" href="a00284.html#abf5a036d87672370ed8894586469a68f">03810</a> <a class="code" href="a00284.html">const_iterator2</a> &<a class="code" href="a00284.html#abf5a036d87672370ed8894586469a68f">operator += </a>(<a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">difference_type</a> n) {
|
|
<a name="l03811"></a>03811 <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> += n;
|
|
<a name="l03812"></a>03812 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03813"></a>03813 }
|
|
<a name="l03814"></a>03814 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03815"></a><a class="code" href="a00284.html#a16750acb25b09517319ac833279e3799">03815</a> <a class="code" href="a00284.html">const_iterator2</a> &<a class="code" href="a00284.html#a16750acb25b09517319ac833279e3799">operator -= </a>(<a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">difference_type</a> n) {
|
|
<a name="l03816"></a>03816 <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> -= n;
|
|
<a name="l03817"></a>03817 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03818"></a>03818 }
|
|
<a name="l03819"></a>03819 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03820"></a><a class="code" href="a00284.html#ab25c847438d4b1da362114cec9bfa668">03820</a> <a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">difference_type</a> <a class="code" href="a00284.html#ab25c847438d4b1da362114cec9bfa668">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00284.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03821"></a>03821 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03822"></a>03822 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> == it.<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03823"></a>03823 <span class="keywordflow">return</span> <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> - it.<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03824"></a>03824 }
|
|
<a name="l03825"></a>03825
|
|
<a name="l03826"></a>03826 <span class="comment">// Dereference</span>
|
|
<a name="l03827"></a>03827 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03828"></a><a class="code" href="a00284.html#a6687487744968e0681694d02658cd81b">03828</a> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a> <a class="code" href="a00284.html#a6687487744968e0681694d02658cd81b">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l03829"></a>03829 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l03830"></a>03830 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (*<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>, *<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>);
|
|
<a name="l03831"></a>03831 }
|
|
<a name="l03832"></a>03832 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03833"></a><a class="code" href="a00284.html#a31d3309ab0b12eeaa9a9c2bf9f72bbf1">03833</a> <a class="code" href="a00282.html#a0466044f7f9c0c1b279f7a4379e783da">const_reference</a> <a class="code" href="a00284.html#a31d3309ab0b12eeaa9a9c2bf9f72bbf1">operator [] </a>(<a class="code" href="a00284.html#a0050d05437e7fbece4f443ffa6fcdb02">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l03834"></a>03834 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l03835"></a>03835 }
|
|
<a name="l03836"></a>03836
|
|
<a name="l03837"></a>03837 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l03838"></a>03838 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03839"></a>03839 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03840"></a>03840 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03841"></a>03841 <span class="preprocessor">#endif</span>
|
|
<a name="l03842"></a><a class="code" href="a00284.html#a67306de03235182ad63bd62f417e33fd">03842</a> <span class="preprocessor"></span> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00284.html#a67306de03235182ad63bd62f417e33fd">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03843"></a>03843 <span class="keywordflow">return</span> <a class="code" href="a00283.html">const_iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> ().<a class="code" href="a00284.html#a67306de03235182ad63bd62f417e33fd">begin</a> (), <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>);
|
|
<a name="l03844"></a>03844 }
|
|
<a name="l03845"></a>03845 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03846"></a>03846 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03847"></a>03847 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03848"></a>03848 <span class="preprocessor">#endif</span>
|
|
<a name="l03849"></a><a class="code" href="a00284.html#a0ae7f27d5f1d6cf9263c8c180fa9b529">03849</a> <span class="preprocessor"></span> <a class="code" href="a00283.html">const_iterator1</a> <a class="code" href="a00284.html#a0ae7f27d5f1d6cf9263c8c180fa9b529">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03850"></a>03850 <span class="keywordflow">return</span> <a class="code" href="a00283.html">const_iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> ().<a class="code" href="a00284.html#a0ae7f27d5f1d6cf9263c8c180fa9b529">end</a> (), <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>);
|
|
<a name="l03851"></a>03851 }
|
|
<a name="l03852"></a>03852 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03853"></a>03853 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03854"></a>03854 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03855"></a>03855 <span class="preprocessor">#endif</span>
|
|
<a name="l03856"></a><a class="code" href="a00284.html#a19d15cfbdd693a93d06b2f6f74c3aa3b">03856</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00284.html#a19d15cfbdd693a93d06b2f6f74c3aa3b">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03857"></a>03857 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">const_reverse_iterator1</a> (<a class="code" href="a00284.html#a0ae7f27d5f1d6cf9263c8c180fa9b529">end</a> ());
|
|
<a name="l03858"></a>03858 }
|
|
<a name="l03859"></a>03859 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03860"></a>03860 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03861"></a>03861 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03862"></a>03862 <span class="preprocessor">#endif</span>
|
|
<a name="l03863"></a><a class="code" href="a00284.html#a06f3349bc09464f03632839366f409cb">03863</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00284.html#a06f3349bc09464f03632839366f409cb">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03864"></a>03864 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">const_reverse_iterator1</a> (<a class="code" href="a00284.html#a67306de03235182ad63bd62f417e33fd">begin</a> ());
|
|
<a name="l03865"></a>03865 }
|
|
<a name="l03866"></a>03866 <span class="preprocessor">#endif</span>
|
|
<a name="l03867"></a>03867 <span class="preprocessor"></span>
|
|
<a name="l03868"></a>03868 <span class="comment">// Indices</span>
|
|
<a name="l03869"></a>03869 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03870"></a><a class="code" href="a00284.html#a1e1b252de95d016a0c21317d23d7e83b">03870</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00284.html#a1e1b252de95d016a0c21317d23d7e83b">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03871"></a>03871 <span class="keywordflow">return</span> <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>.index ();
|
|
<a name="l03872"></a>03872 }
|
|
<a name="l03873"></a>03873 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03874"></a><a class="code" href="a00284.html#a6bc893cb1e6def1ae0b4aefd618ce4f8">03874</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00284.html#a6bc893cb1e6def1ae0b4aefd618ce4f8">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03875"></a>03875 <span class="keywordflow">return</span> <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>.index ();
|
|
<a name="l03876"></a>03876 }
|
|
<a name="l03877"></a>03877
|
|
<a name="l03878"></a>03878 <span class="comment">// Assignment</span>
|
|
<a name="l03879"></a>03879 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03880"></a><a class="code" href="a00284.html#ae301cdab8e4d81ce2bcb232d7cf57773">03880</a> <a class="code" href="a00284.html">const_iterator2</a> &<a class="code" href="a00284.html#ae301cdab8e4d81ce2bcb232d7cf57773">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00284.html">const_iterator2</a> &it) {
|
|
<a name="l03881"></a>03881 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l03882"></a>03882 <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> = it.<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>;
|
|
<a name="l03883"></a>03883 <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> = it.<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03884"></a>03884 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03885"></a>03885 }
|
|
<a name="l03886"></a>03886
|
|
<a name="l03887"></a>03887 <span class="comment">// Comparison</span>
|
|
<a name="l03888"></a>03888 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03889"></a><a class="code" href="a00284.html#a76d1e57446ed51b34d6095d083700dd1">03889</a> <span class="keywordtype">bool</span> <a class="code" href="a00284.html#a76d1e57446ed51b34d6095d083700dd1">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00284.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03890"></a>03890 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03891"></a>03891 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> == it.<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03892"></a>03892 <span class="keywordflow">return</span> <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> == it.<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03893"></a>03893 }
|
|
<a name="l03894"></a>03894 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03895"></a><a class="code" href="a00284.html#aee198c7e3280c6122f5838da7a91395e">03895</a> <span class="keywordtype">bool</span> <a class="code" href="a00284.html#aee198c7e3280c6122f5838da7a91395e">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00284.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03896"></a>03896 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03897"></a>03897 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a> == it.<a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03898"></a>03898 <span class="keywordflow">return</span> <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a> < it.<a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03899"></a>03899 }
|
|
<a name="l03900"></a>03900
|
|
<a name="l03901"></a>03901 <span class="keyword">private</span>:
|
|
<a name="l03902"></a><a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">03902</a> <a class="code" href="a00282.html#a49dff0d11e6eb5e24836bcb81b7f11fa">const_subiterator1_type</a> <a class="code" href="a00284.html#ae92d6e9b56d64fea6fc24bb977944853">it1_</a>;
|
|
<a name="l03903"></a><a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">03903</a> <a class="code" href="a00282.html#a8236b836511629c511270a39068a672a">const_subiterator2_type</a> <a class="code" href="a00284.html#a51f28e9c52fe711bd0a6d934d8273410">it2_</a>;
|
|
<a name="l03904"></a>03904 };
|
|
<a name="l03905"></a>03905 <span class="preprocessor">#endif</span>
|
|
<a name="l03906"></a>03906 <span class="preprocessor"></span>
|
|
<a name="l03907"></a>03907 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03908"></a><a class="code" href="a00282.html#a4680c33c28ef152a193354d33f4827d3">03908</a> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00282.html#a4680c33c28ef152a193354d33f4827d3">begin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03909"></a>03909 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">find2</a> (0, 0, 0);
|
|
<a name="l03910"></a>03910 }
|
|
<a name="l03911"></a>03911 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03912"></a><a class="code" href="a00282.html#a61d224377af478843d8333f05b369692">03912</a> <a class="code" href="a00284.html">const_iterator2</a> <a class="code" href="a00282.html#a61d224377af478843d8333f05b369692">end2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03913"></a>03913 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">find2</a> (0, 0, <a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ());
|
|
<a name="l03914"></a>03914 }
|
|
<a name="l03915"></a>03915
|
|
<a name="l03916"></a>03916 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l03917"></a><a class="code" href="a00286.html">03917</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00286.html">iterator2</a>:
|
|
<a name="l03918"></a>03918 <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><matrix_slice>,
|
|
<a name="l03919"></a>03919 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator2::iterator_category>::template
|
|
<a name="l03920"></a>03920 iterator_base<iterator2, value_type>::type {
|
|
<a name="l03921"></a>03921 <span class="keyword">public</span>:
|
|
<a name="l03922"></a><a class="code" href="a00286.html#a010ccaadfbeb5008e56c220d8b1c1317">03922</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::value_type <a class="code" href="a00286.html#a010ccaadfbeb5008e56c220d8b1c1317">value_type</a>;
|
|
<a name="l03923"></a><a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">03923</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::difference_type <a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">difference_type</a>;
|
|
<a name="l03924"></a><a class="code" href="a00286.html#adf37d3cea068a6641c44fafad9b2b834">03924</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::reference <a class="code" href="a00286.html#adf37d3cea068a6641c44fafad9b2b834">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l03925"></a><a class="code" href="a00286.html#a446ea23b206cfab2a779b8f8f11f1626">03925</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::pointer <a class="code" href="a00286.html#a446ea23b206cfab2a779b8f8f11f1626">pointer</a>;
|
|
<a name="l03926"></a><a class="code" href="a00286.html#aa0e6a2c30fdab315fcaa40797831eed3">03926</a> <span class="keyword">typedef</span> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00286.html#aa0e6a2c30fdab315fcaa40797831eed3">dual_iterator_type</a>;
|
|
<a name="l03927"></a><a class="code" href="a00286.html#a9faeb10106a8c794a76590f392eb4386">03927</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00286.html#a9faeb10106a8c794a76590f392eb4386">dual_reverse_iterator_type</a>;
|
|
<a name="l03928"></a>03928
|
|
<a name="l03929"></a>03929 <span class="comment">// Construction and destruction</span>
|
|
<a name="l03930"></a>03930 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03931"></a><a class="code" href="a00286.html#a129bc9bce5169d107df5086bd5d56e4e">03931</a> <a class="code" href="a00286.html#a129bc9bce5169d107df5086bd5d56e4e">iterator2</a> ():
|
|
<a name="l03932"></a>03932 <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><<a class="code" href="a00282.html">self_type</a>> (), <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> (), <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> () {}
|
|
<a name="l03933"></a>03933 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03934"></a><a class="code" href="a00286.html#ad239456058db940c9160ec6f74904d22">03934</a> <a class="code" href="a00286.html#a129bc9bce5169d107df5086bd5d56e4e">iterator2</a> (<a class="code" href="a00282.html">self_type</a> &ms, <span class="keyword">const</span> <a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">subiterator2_type</a> &it2):
|
|
<a name="l03935"></a>03935 <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><<a class="code" href="a00282.html">self_type</a>> (ms), <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> (it1), <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> (it2) {}
|
|
<a name="l03936"></a>03936
|
|
<a name="l03937"></a>03937 <span class="comment">// Arithmetic</span>
|
|
<a name="l03938"></a>03938 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03939"></a><a class="code" href="a00286.html#a784746f8a67aed902cbe03e6cc77dfde">03939</a> <a class="code" href="a00286.html">iterator2</a> &<a class="code" href="a00286.html#a784746f8a67aed902cbe03e6cc77dfde">operator ++ </a>() {
|
|
<a name="l03940"></a>03940 ++ <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l03941"></a>03941 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03942"></a>03942 }
|
|
<a name="l03943"></a>03943 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03944"></a><a class="code" href="a00286.html#a1ead589b824b45878af70b6ff9c81835">03944</a> <a class="code" href="a00286.html">iterator2</a> &<a class="code" href="a00286.html#a1ead589b824b45878af70b6ff9c81835">operator -- </a>() {
|
|
<a name="l03945"></a>03945 -- <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l03946"></a>03946 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03947"></a>03947 }
|
|
<a name="l03948"></a>03948 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03949"></a><a class="code" href="a00286.html#a79111737c23283c4adfacac14e0b9a68">03949</a> <a class="code" href="a00286.html">iterator2</a> &<a class="code" href="a00286.html#a79111737c23283c4adfacac14e0b9a68">operator += </a>(<a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">difference_type</a> n) {
|
|
<a name="l03950"></a>03950 <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> += n;
|
|
<a name="l03951"></a>03951 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03952"></a>03952 }
|
|
<a name="l03953"></a>03953 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03954"></a><a class="code" href="a00286.html#a843d7256af8a78d96cd3223b7004c341">03954</a> <a class="code" href="a00286.html">iterator2</a> &<a class="code" href="a00286.html#a843d7256af8a78d96cd3223b7004c341">operator -= </a>(<a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">difference_type</a> n) {
|
|
<a name="l03955"></a>03955 <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> -= n;
|
|
<a name="l03956"></a>03956 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l03957"></a>03957 }
|
|
<a name="l03958"></a>03958 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03959"></a><a class="code" href="a00286.html#a23e7046eff83489ca5b57413fac77a2a">03959</a> <a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">difference_type</a> <a class="code" href="a00286.html#a23e7046eff83489ca5b57413fac77a2a">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00286.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l03960"></a>03960 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03961"></a>03961 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> == it.<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l03962"></a>03962 <span class="keywordflow">return</span> <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> - it.<a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l03963"></a>03963 }
|
|
<a name="l03964"></a>03964
|
|
<a name="l03965"></a>03965 <span class="comment">// Dereference</span>
|
|
<a name="l03966"></a>03966 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03967"></a><a class="code" href="a00286.html#a8d8e45d9786d52c79d748a9a7816f2b5">03967</a> <a class="code" href="a00286.html#adf37d3cea068a6641c44fafad9b2b834">reference</a> <a class="code" href="a00286.html#a8d8e45d9786d52c79d748a9a7816f2b5">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l03968"></a>03968 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l03969"></a>03969 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a> (*<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>, *<a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>);
|
|
<a name="l03970"></a>03970 }
|
|
<a name="l03971"></a>03971 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03972"></a><a class="code" href="a00286.html#ab7d6de768d783bc6c637ad2f9c3396c0">03972</a> <a class="code" href="a00286.html#adf37d3cea068a6641c44fafad9b2b834">reference</a> <a class="code" href="a00286.html#ab7d6de768d783bc6c637ad2f9c3396c0">operator [] </a>(<a class="code" href="a00286.html#a6d4032e076863f4f689b60fa642cc843">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l03973"></a>03973 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l03974"></a>03974 }
|
|
<a name="l03975"></a>03975
|
|
<a name="l03976"></a>03976 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l03977"></a>03977 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03978"></a>03978 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03979"></a>03979 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03980"></a>03980 <span class="preprocessor">#endif</span>
|
|
<a name="l03981"></a><a class="code" href="a00286.html#aa9c0e4b94442aba4eb4a695d3b043a7d">03981</a> <span class="preprocessor"></span> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00286.html#aa9c0e4b94442aba4eb4a695d3b043a7d">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03982"></a>03982 <span class="keywordflow">return</span> <a class="code" href="a00285.html">iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> ().<a class="code" href="a00286.html#aa9c0e4b94442aba4eb4a695d3b043a7d">begin</a> (), <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>);
|
|
<a name="l03983"></a>03983 }
|
|
<a name="l03984"></a>03984 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03985"></a>03985 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03986"></a>03986 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03987"></a>03987 <span class="preprocessor">#endif</span>
|
|
<a name="l03988"></a><a class="code" href="a00286.html#aa474303efbab5903cc252200ca02d1c5">03988</a> <span class="preprocessor"></span> <a class="code" href="a00285.html">iterator1</a> <a class="code" href="a00286.html#aa474303efbab5903cc252200ca02d1c5">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03989"></a>03989 <span class="keywordflow">return</span> <a class="code" href="a00285.html">iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> ().<a class="code" href="a00286.html#aa474303efbab5903cc252200ca02d1c5">end</a> (), <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>);
|
|
<a name="l03990"></a>03990 }
|
|
<a name="l03991"></a>03991 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03992"></a>03992 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l03993"></a>03993 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l03994"></a>03994 <span class="preprocessor">#endif</span>
|
|
<a name="l03995"></a><a class="code" href="a00286.html#a0dae35c121068d38b49d750e4aff0540">03995</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00286.html#a0dae35c121068d38b49d750e4aff0540">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l03996"></a>03996 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">reverse_iterator1</a> (<a class="code" href="a00286.html#aa474303efbab5903cc252200ca02d1c5">end</a> ());
|
|
<a name="l03997"></a>03997 }
|
|
<a name="l03998"></a>03998 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l03999"></a>03999 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04000"></a>04000 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00282.html">self_type</a>::
|
|
<a name="l04001"></a>04001 <span class="preprocessor">#endif</span>
|
|
<a name="l04002"></a><a class="code" href="a00286.html#a9af5340b3822e182ed124135514d8a9a">04002</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00286.html#a9af5340b3822e182ed124135514d8a9a">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04003"></a>04003 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">reverse_iterator1</a> (<a class="code" href="a00286.html#aa9c0e4b94442aba4eb4a695d3b043a7d">begin</a> ());
|
|
<a name="l04004"></a>04004 }
|
|
<a name="l04005"></a>04005 <span class="preprocessor">#endif</span>
|
|
<a name="l04006"></a>04006 <span class="preprocessor"></span>
|
|
<a name="l04007"></a>04007 <span class="comment">// Indices</span>
|
|
<a name="l04008"></a>04008 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04009"></a><a class="code" href="a00286.html#a4d8d752c10758f8a0947a58a8fb1e98f">04009</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00286.html#a4d8d752c10758f8a0947a58a8fb1e98f">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04010"></a>04010 <span class="keywordflow">return</span> <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>.index ();
|
|
<a name="l04011"></a>04011 }
|
|
<a name="l04012"></a>04012 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04013"></a><a class="code" href="a00286.html#a8bde2de5c691d9442a235dc51fd7f29b">04013</a> <a class="code" href="a00282.html#a19a2e7675e86537fd7d1322d59e189c5">size_type</a> <a class="code" href="a00286.html#a8bde2de5c691d9442a235dc51fd7f29b">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04014"></a>04014 <span class="keywordflow">return</span> <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>.index ();
|
|
<a name="l04015"></a>04015 }
|
|
<a name="l04016"></a>04016
|
|
<a name="l04017"></a>04017 <span class="comment">// Assignment</span>
|
|
<a name="l04018"></a>04018 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04019"></a><a class="code" href="a00286.html#a58ef3df6f1214942eff886b07cbdd340">04019</a> <a class="code" href="a00286.html">iterator2</a> &<a class="code" href="a00286.html#a58ef3df6f1214942eff886b07cbdd340">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00286.html">iterator2</a> &it) {
|
|
<a name="l04020"></a>04020 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l04021"></a>04021 <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> = it.<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>;
|
|
<a name="l04022"></a>04022 <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> = it.<a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l04023"></a>04023 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04024"></a>04024 }
|
|
<a name="l04025"></a>04025
|
|
<a name="l04026"></a>04026 <span class="comment">// Comparison</span>
|
|
<a name="l04027"></a>04027 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04028"></a><a class="code" href="a00286.html#ae1ef6d8810f9fdf914f85aec8876903d">04028</a> <span class="keywordtype">bool</span> <a class="code" href="a00286.html#ae1ef6d8810f9fdf914f85aec8876903d">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00286.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04029"></a>04029 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04030"></a>04030 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> == it.<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04031"></a>04031 <span class="keywordflow">return</span> <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> == it.<a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l04032"></a>04032 }
|
|
<a name="l04033"></a>04033 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04034"></a><a class="code" href="a00286.html#a5ab12b214158b025c9b351ee14affd54">04034</a> <span class="keywordtype">bool</span> <a class="code" href="a00286.html#a5ab12b214158b025c9b351ee14affd54">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00286.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04035"></a>04035 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04036"></a>04036 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a> == it.<a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04037"></a>04037 <span class="keywordflow">return</span> <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a> < it.<a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l04038"></a>04038 }
|
|
<a name="l04039"></a>04039
|
|
<a name="l04040"></a>04040 <span class="keyword">private</span>:
|
|
<a name="l04041"></a><a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">04041</a> <a class="code" href="a00282.html#a3e72b9e19cc1337916ea67000060df2f">subiterator1_type</a> <a class="code" href="a00286.html#a2cfa8bc19bb85fbefef7ac2e072a354d">it1_</a>;
|
|
<a name="l04042"></a><a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">04042</a> <a class="code" href="a00282.html#a884138a77d4a93ccc53e89a137d9f1d1">subiterator2_type</a> <a class="code" href="a00286.html#ac639531ba40b24341b0a1d23260f75cb">it2_</a>;
|
|
<a name="l04043"></a>04043
|
|
<a name="l04044"></a><a class="code" href="a00286.html#aac78e9ee2b65e927cfcd66579833084f">04044</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00284.html">const_iterator2</a>;
|
|
<a name="l04045"></a>04045 };
|
|
<a name="l04046"></a>04046 <span class="preprocessor">#endif</span>
|
|
<a name="l04047"></a>04047 <span class="preprocessor"></span>
|
|
<a name="l04048"></a>04048 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04049"></a><a class="code" href="a00282.html#ae14f87827a39c69fe0922a63440b4b4a">04049</a> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00282.html#ae14f87827a39c69fe0922a63440b4b4a">begin2</a> () {
|
|
<a name="l04050"></a>04050 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">find2</a> (0, 0, 0);
|
|
<a name="l04051"></a>04051 }
|
|
<a name="l04052"></a>04052 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04053"></a><a class="code" href="a00282.html#a67cd80bf106afa74c3cdf4ce1b4fb18d">04053</a> <a class="code" href="a00286.html">iterator2</a> <a class="code" href="a00282.html#a67cd80bf106afa74c3cdf4ce1b4fb18d">end2</a> () {
|
|
<a name="l04054"></a>04054 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a14736ece51ee6d370fcb927a4edb11b2">find2</a> (0, 0, <a class="code" href="a00282.html#a37bae7aba443a185374cac5632d232af">size2</a> ());
|
|
<a name="l04055"></a>04055 }
|
|
<a name="l04056"></a>04056
|
|
<a name="l04057"></a>04057 <span class="comment">// Reverse iterators</span>
|
|
<a name="l04058"></a>04058
|
|
<a name="l04059"></a>04059 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04060"></a><a class="code" href="a00282.html#adfdbf13e7c9bad1959e1399f831f0b7a">04060</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00282.html#adfdbf13e7c9bad1959e1399f831f0b7a">rbegin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04061"></a>04061 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">const_reverse_iterator1</a> (<a class="code" href="a00282.html#a5c39b89c98329422c5e27f54b927a54a">end1</a> ());
|
|
<a name="l04062"></a>04062 }
|
|
<a name="l04063"></a>04063 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04064"></a><a class="code" href="a00282.html#a160e810b5b83338cab1fe9a09337a704">04064</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00282.html#a160e810b5b83338cab1fe9a09337a704">rend1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04065"></a>04065 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a2cccf652922b8a4f9e9fc07955466520">const_reverse_iterator1</a> (<a class="code" href="a00282.html#a0c0c14e627a051e0bb6de1fb7f7414c1">begin1</a> ());
|
|
<a name="l04066"></a>04066 }
|
|
<a name="l04067"></a>04067
|
|
<a name="l04068"></a>04068 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04069"></a><a class="code" href="a00282.html#add129d0b8f30d50593fb05cedcd8d128">04069</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00282.html#add129d0b8f30d50593fb05cedcd8d128">rbegin1</a> () {
|
|
<a name="l04070"></a>04070 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">reverse_iterator1</a> (<a class="code" href="a00282.html#a5c39b89c98329422c5e27f54b927a54a">end1</a> ());
|
|
<a name="l04071"></a>04071 }
|
|
<a name="l04072"></a>04072 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04073"></a><a class="code" href="a00282.html#a366d106563a3c896e821fe1514c524c8">04073</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00282.html#a366d106563a3c896e821fe1514c524c8">rend1</a> () {
|
|
<a name="l04074"></a>04074 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a26d0506e0d01f5cdf399c421606e207e">reverse_iterator1</a> (<a class="code" href="a00282.html#a0c0c14e627a051e0bb6de1fb7f7414c1">begin1</a> ());
|
|
<a name="l04075"></a>04075 }
|
|
<a name="l04076"></a>04076
|
|
<a name="l04077"></a>04077 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04078"></a><a class="code" href="a00282.html#a0989ee8d32d6fc4b68ee994cbe731a82">04078</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00282.html#a0989ee8d32d6fc4b68ee994cbe731a82">rbegin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04079"></a>04079 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">const_reverse_iterator2</a> (<a class="code" href="a00282.html#a61d224377af478843d8333f05b369692">end2</a> ());
|
|
<a name="l04080"></a>04080 }
|
|
<a name="l04081"></a>04081 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04082"></a><a class="code" href="a00282.html#aa5e4aaf6e5e9b172065dd4914b16fb8f">04082</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00282.html#aa5e4aaf6e5e9b172065dd4914b16fb8f">rend2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04083"></a>04083 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a92a482e582c9368e5f3aff91bafb97b3">const_reverse_iterator2</a> (<a class="code" href="a00282.html#a4680c33c28ef152a193354d33f4827d3">begin2</a> ());
|
|
<a name="l04084"></a>04084 }
|
|
<a name="l04085"></a>04085
|
|
<a name="l04086"></a>04086 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04087"></a><a class="code" href="a00282.html#aac810062c5078b9638271c6588e04617">04087</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00282.html#aac810062c5078b9638271c6588e04617">rbegin2</a> () {
|
|
<a name="l04088"></a>04088 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">reverse_iterator2</a> (<a class="code" href="a00282.html#a61d224377af478843d8333f05b369692">end2</a> ());
|
|
<a name="l04089"></a>04089 }
|
|
<a name="l04090"></a>04090 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04091"></a><a class="code" href="a00282.html#ae940b4d7efea7e03609cd414287b07bc">04091</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00282.html#ae940b4d7efea7e03609cd414287b07bc">rend2</a> () {
|
|
<a name="l04092"></a>04092 <span class="keywordflow">return</span> <a class="code" href="a00282.html#a6e9974037cdecc930d3097ddc05bfe49">reverse_iterator2</a> (<a class="code" href="a00282.html#a4680c33c28ef152a193354d33f4827d3">begin2</a> ());
|
|
<a name="l04093"></a>04093 }
|
|
<a name="l04094"></a>04094
|
|
<a name="l04095"></a>04095 <span class="keyword">private</span>:
|
|
<a name="l04096"></a><a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">04096</a> <a class="code" href="a00282.html#ad7e67ae2da573361e3845aea6faa4aa3">matrix_closure_type</a> <a class="code" href="a00282.html#ad3f99f9e541b1d8e03efb4fef7be554e">data_</a>;
|
|
<a name="l04097"></a><a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">04097</a> <a class="code" href="a00002.html">slice_type</a> <a class="code" href="a00282.html#a970f688953a6485062e2f3b802a59d1f">s1_</a>;
|
|
<a name="l04098"></a><a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">04098</a> <a class="code" href="a00002.html">slice_type</a> <a class="code" href="a00282.html#aa60f6c46506dfdfb1665ff72ca9ba02f">s2_</a>;
|
|
<a name="l04099"></a>04099 };
|
|
<a name="l04100"></a>04100
|
|
<a name="l04101"></a>04101 <span class="comment">// Simple Projections</span>
|
|
<a name="l04102"></a>04102 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04103"></a>04103 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04104"></a><a class="code" href="a00595.html#a2e84f14a66a5cfd1b4746f928511d445">04104</a> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a2e84f14a66a5cfd1b4746f928511d445">subslice</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type start1, <span class="keyword">typename</span> M::difference_type <a class="code" href="a00658.html#a9fca814814e1c8e0031da2119a915b6f">stride1</a>, <span class="keyword">typename</span> M::size_type <a class="code" href="a00658.html#a979596ba6e2373d596e34c2a73809cf6">size1</a>, <span class="keyword">typename</span> M::size_type start2, <span class="keyword">typename</span> M::difference_type <a class="code" href="a00658.html#ae8b03dbb36ff07658e85b19a6e7903a5">stride2</a>, <span class="keyword">typename</span> M::size_type <a class="code" href="a00658.html#a981c2ed31bf42bd03499d4ee32444141">size2</a>) {
|
|
<a name="l04105"></a>04105 <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<typename M::size_type, typename M::difference_type></a> slice_type;
|
|
<a name="l04106"></a>04106 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, slice_type (start1, stride1, size1), slice_type (start2, stride2, size2));
|
|
<a name="l04107"></a>04107 }
|
|
<a name="l04108"></a>04108 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04109"></a>04109 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04110"></a><a class="code" href="a00595.html#a862181108595d2dd7c41acb19986cea6">04110</a> <a class="code" href="a00282.html">matrix_slice<const M></a> <a class="code" href="a00595.html#a2e84f14a66a5cfd1b4746f928511d445">subslice</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">typename</span> M::size_type start1, <span class="keyword">typename</span> M::difference_type <a class="code" href="a00658.html#a9fca814814e1c8e0031da2119a915b6f">stride1</a>, <span class="keyword">typename</span> M::size_type <a class="code" href="a00658.html#a979596ba6e2373d596e34c2a73809cf6">size1</a>, <span class="keyword">typename</span> M::size_type start2, <span class="keyword">typename</span> M::difference_type <a class="code" href="a00658.html#ae8b03dbb36ff07658e85b19a6e7903a5">stride2</a>, <span class="keyword">typename</span> M::size_type <a class="code" href="a00658.html#a981c2ed31bf42bd03499d4ee32444141">size2</a>) {
|
|
<a name="l04111"></a>04111 <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<typename M::size_type, typename M::difference_type></a> slice_type;
|
|
<a name="l04112"></a>04112 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, slice_type (start1, stride1, size1), slice_type (start2, stride2, size2));
|
|
<a name="l04113"></a>04113 }
|
|
<a name="l04114"></a>04114
|
|
<a name="l04115"></a>04115 <span class="comment">// Generic Projections</span>
|
|
<a name="l04116"></a>04116 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04117"></a>04117 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04118"></a><a class="code" href="a00595.html#aff46b3d2f5ffbf929a571aab7382dea1">04118</a> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s2) {
|
|
<a name="l04119"></a>04119 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, s1, s2);
|
|
<a name="l04120"></a>04120 }
|
|
<a name="l04121"></a>04121 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04122"></a>04122 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04123"></a><a class="code" href="a00595.html#ab2ee674ea8fbeff0efe4ca491254072b">04123</a> <span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice<const M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s2) {
|
|
<a name="l04124"></a>04124 <span class="comment">// ISSUE was: return matrix_slice<M> (const_cast<M &> (data), s1, s2);</span>
|
|
<a name="l04125"></a>04125 <span class="keywordflow">return</span> <a class="code" href="a00282.html">matrix_slice<const M></a> (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, s1, s2);
|
|
<a name="l04126"></a>04126 }
|
|
<a name="l04127"></a>04127 <span class="comment">// ISSUE in the following two functions it would be logical to use matrix_slice<V>::range_type but this confuses VC7.1 and 8.0</span>
|
|
<a name="l04128"></a>04128 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04129"></a>04129 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04130"></a><a class="code" href="a00595.html#ad9baf052047f823d3c61dca7d46787f5">04130</a> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00282.html">matrix_slice<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l04131"></a>04131 <span class="keywordflow">return</span> data.<a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">project</a> (r1, r2);
|
|
<a name="l04132"></a>04132 }
|
|
<a name="l04133"></a>04133 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04134"></a>04134 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04135"></a><a class="code" href="a00595.html#af3489f76224c3b3e0081fb2ff1daff89">04135</a> <span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_range<M>::range_type</a> &r2) {
|
|
<a name="l04136"></a>04136 <span class="keywordflow">return</span> data.<a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">project</a> (r1, r2);
|
|
<a name="l04137"></a>04137 }
|
|
<a name="l04138"></a>04138 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04139"></a>04139 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04140"></a><a class="code" href="a00595.html#a26ef3aec0d096a331853c5bae44716d1">04140</a> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00282.html">matrix_slice<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s2) {
|
|
<a name="l04141"></a>04141 <span class="keywordflow">return</span> data.<a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">project</a> (s1, s2);
|
|
<a name="l04142"></a>04142 }
|
|
<a name="l04143"></a>04143 <span class="keyword">template</span><<span class="keyword">class</span> M>
|
|
<a name="l04144"></a>04144 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04145"></a><a class="code" href="a00595.html#aaee228f621cc8d5df24218ebdb9acc07">04145</a> <span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice<M></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00282.html">matrix_slice<M></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_slice<M>::slice_type</a> &s2) {
|
|
<a name="l04146"></a>04146 <span class="keywordflow">return</span> data.<a class="code" href="a00282.html#a8bf34021be9afd8f7044907ee5641b47">project</a> (s1, s2);
|
|
<a name="l04147"></a>04147 }
|
|
<a name="l04148"></a>04148
|
|
<a name="l04149"></a>04149 <span class="comment">// Specialization of temporary_traits</span>
|
|
<a name="l04150"></a>04150 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l04151"></a><a class="code" href="a00303.html">04151</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< <a class="code" href="a00282.html">matrix_slice</a><M> >
|
|
<a name="l04152"></a>04152 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {};
|
|
<a name="l04153"></a>04153 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l04154"></a><a class="code" href="a00297.html">04154</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< const <a class="code" href="a00282.html">matrix_slice</a><M> >
|
|
<a name="l04155"></a>04155 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {};
|
|
<a name="l04156"></a>04156
|
|
<a name="l04157"></a>04157 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l04158"></a><a class="code" href="a00570.html">04158</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00282.html">matrix_slice</a><M> >
|
|
<a name="l04159"></a>04159 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {};
|
|
<a name="l04160"></a>04160 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l04161"></a><a class="code" href="a00556.html">04161</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00282.html">matrix_slice</a><M> >
|
|
<a name="l04162"></a>04162 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {};
|
|
<a name="l04163"></a>04163
|
|
<a name="l04164"></a>04164 <span class="comment">// Matrix based indirection class</span>
|
|
<a name="l04165"></a>04165 <span class="comment">// Contributed by Toon Knapen.</span>
|
|
<a name="l04166"></a>04166 <span class="comment">// Extended and optimized by Kresimir Fresl.</span>
|
|
<a name="l04185"></a>04185 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l04186"></a><a class="code" href="a00253.html">04186</a> <span class="keyword">class </span><a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a>:
|
|
<a name="l04187"></a>04187 <span class="keyword">public</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression</a><matrix_indirect<M, IA> > {
|
|
<a name="l04188"></a>04188
|
|
<a name="l04189"></a><a class="code" href="a00253.html#a66b5bf65fd6f45de038b447e98f5f871">04189</a> <span class="keyword">typedef</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> <a class="code" href="a00253.html#a66b5bf65fd6f45de038b447e98f5f871">self_type</a>;
|
|
<a name="l04190"></a>04190 <span class="keyword">public</span>:
|
|
<a name="l04191"></a>04191 <span class="preprocessor">#ifdef BOOST_UBLAS_ENABLE_PROXY_SHORTCUTS</span>
|
|
<a name="l04192"></a>04192 <span class="preprocessor"></span> <span class="keyword">using</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<self_type>::operator </a>();
|
|
<a name="l04193"></a>04193 <span class="preprocessor">#endif</span>
|
|
<a name="l04194"></a><a class="code" href="a00253.html#ac1da5ef4f46e14a358654c20fca5a7b8">04194</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> M <a class="code" href="a00253.html#ac1da5ef4f46e14a358654c20fca5a7b8">matrix_type</a>;
|
|
<a name="l04195"></a><a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">04195</a> <span class="keyword">typedef</span> IA <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a>;
|
|
<a name="l04196"></a><a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">04196</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::size_type <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a>;
|
|
<a name="l04197"></a><a class="code" href="a00253.html#a2e3c35da28727bc3bac76f280a873af0">04197</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::difference_type <a class="code" href="a00253.html#a2e3c35da28727bc3bac76f280a873af0">difference_type</a>;
|
|
<a name="l04198"></a><a class="code" href="a00253.html#a5f105fed443e1955978e4856852a5566">04198</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::value_type <a class="code" href="a00253.html#a5f105fed443e1955978e4856852a5566">value_type</a>;
|
|
<a name="l04199"></a><a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">04199</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a>;
|
|
<a name="l04200"></a>04200 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l04201"></a>04201 <span class="keyword">typename</span> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">M::const_reference</a>,
|
|
<a name="l04202"></a><a class="code" href="a00253.html#a2825b873e37cca3e061cfa67bb6b1404">04202</a> <span class="keyword">typename</span> M::reference>::type <a class="code" href="a00253.html#a2825b873e37cca3e061cfa67bb6b1404">reference</a>;
|
|
<a name="l04203"></a>04203 <span class="keyword">typedef</span> <span class="keyword">typename</span> boost::mpl::if_<boost::is_const<M>,
|
|
<a name="l04204"></a>04204 <span class="keyword">typename</span> <a class="code" href="a00253.html#a1e7b02054f15816181b48b41028591b6">M::const_closure_type</a>,
|
|
<a name="l04205"></a><a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">04205</a> <span class="keyword">typename</span> M::closure_type>::type <a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">matrix_closure_type</a>;
|
|
<a name="l04206"></a><a class="code" href="a00253.html#a0698ceec4a4675c513c6a23891e682dd">04206</a> <span class="keyword">typedef</span> <a class="code" href="a00001.html">basic_range<size_type, difference_type></a> <a class="code" href="a00253.html#a0698ceec4a4675c513c6a23891e682dd">range_type</a>;
|
|
<a name="l04207"></a><a class="code" href="a00253.html#ae8c81d5efd11a1fedfc97b8eac7f1e00">04207</a> <span class="keyword">typedef</span> <a class="code" href="a00002.html">basic_slice<size_type, difference_type></a> <a class="code" href="a00253.html#ae8c81d5efd11a1fedfc97b8eac7f1e00">slice_type</a>;
|
|
<a name="l04208"></a><a class="code" href="a00253.html#a1e7b02054f15816181b48b41028591b6">04208</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> <a class="code" href="a00253.html#a1e7b02054f15816181b48b41028591b6">const_closure_type</a>;
|
|
<a name="l04209"></a><a class="code" href="a00253.html#a914a7c632ff3d75253f546d40f576177">04209</a> <span class="keyword">typedef</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> <a class="code" href="a00253.html#a914a7c632ff3d75253f546d40f576177">closure_type</a>;
|
|
<a name="l04210"></a>04210 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00418.html">storage_restrict_traits</a><<span class="keyword">typename</span> <a class="code" href="a00253.html#a6d593d86ba9b5fc42921510ab37e02bc">M::storage_category</a>,
|
|
<a name="l04211"></a><a class="code" href="a00253.html#a6d593d86ba9b5fc42921510ab37e02bc">04211</a> <a class="code" href="a00081.html">dense_proxy_tag</a>><a class="code" href="a00253.html#a6d593d86ba9b5fc42921510ab37e02bc">::storage_category</a> <a class="code" href="a00253.html#a6d593d86ba9b5fc42921510ab37e02bc">storage_category</a>;
|
|
<a name="l04212"></a><a class="code" href="a00253.html#a815b317eadfec862db3a2d664016e48f">04212</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::orientation_category <a class="code" href="a00253.html#a815b317eadfec862db3a2d664016e48f">orientation_category</a>;
|
|
<a name="l04213"></a>04213
|
|
<a name="l04214"></a>04214 <span class="comment">// Construction and destruction</span>
|
|
<a name="l04215"></a>04215 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04216"></a><a class="code" href="a00253.html#a4aff0768c96a75738b8bc0dfcf138a77">04216</a> <a class="code" href="a00253.html#a4aff0768c96a75738b8bc0dfcf138a77">matrix_indirect</a> (<a class="code" href="a00253.html#ac1da5ef4f46e14a358654c20fca5a7b8">matrix_type</a> &<a class="code" href="a00253.html#a13c5c8cb3950882412c3ffd6c6e23773">data</a>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a>):
|
|
<a name="l04217"></a>04217 <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (data), <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (size1), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (size2) {}
|
|
<a name="l04218"></a>04218 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04219"></a><a class="code" href="a00253.html#a927b74bd70656c143266b3d013546d32">04219</a> <a class="code" href="a00253.html#a4aff0768c96a75738b8bc0dfcf138a77">matrix_indirect</a> (<a class="code" href="a00253.html#ac1da5ef4f46e14a358654c20fca5a7b8">matrix_type</a> &<a class="code" href="a00253.html#a13c5c8cb3950882412c3ffd6c6e23773">data</a>, <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia1, <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia2):
|
|
<a name="l04220"></a>04220 <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (data), <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (ia1.preprocess (data.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ())), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (ia2.preprocess (data.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ())) {}
|
|
<a name="l04221"></a>04221 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04222"></a><a class="code" href="a00253.html#acb0c4273c0eeebfc2cc8d03f221f8ee7">04222</a> <a class="code" href="a00253.html#a4aff0768c96a75738b8bc0dfcf138a77">matrix_indirect</a> (<span class="keyword">const</span> <a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">matrix_closure_type</a> &<a class="code" href="a00253.html#a13c5c8cb3950882412c3ffd6c6e23773">data</a>, <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia1, <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia2, <span class="keywordtype">int</span>):
|
|
<a name="l04223"></a>04223 <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (data), <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (ia1.preprocess (data.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ())), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (ia2.preprocess (data.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ())) {}
|
|
<a name="l04224"></a>04224
|
|
<a name="l04225"></a>04225 <span class="comment">// Accessors</span>
|
|
<a name="l04226"></a>04226 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04227"></a><a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">04227</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04228"></a>04228 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.size ();
|
|
<a name="l04229"></a>04229 }
|
|
<a name="l04230"></a>04230 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04231"></a><a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">04231</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04232"></a>04232 <span class="keywordflow">return</span> <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.size ();
|
|
<a name="l04233"></a>04233 }
|
|
<a name="l04234"></a>04234 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04235"></a><a class="code" href="a00253.html#a050047133e4f7810760036975649099e">04235</a> <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &<a class="code" href="a00253.html#a050047133e4f7810760036975649099e">indirect1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04236"></a>04236 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>;
|
|
<a name="l04237"></a>04237 }
|
|
<a name="l04238"></a>04238 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04239"></a><a class="code" href="a00253.html#ab907ac406f4f01b10bfa0eb12fbadc73">04239</a> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &<a class="code" href="a00253.html#ab907ac406f4f01b10bfa0eb12fbadc73">indirect1</a> () {
|
|
<a name="l04240"></a>04240 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>;
|
|
<a name="l04241"></a>04241 }
|
|
<a name="l04242"></a>04242 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04243"></a><a class="code" href="a00253.html#a340a0c9d0b23f2ba9e88908eab9a536d">04243</a> <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &<a class="code" href="a00253.html#a340a0c9d0b23f2ba9e88908eab9a536d">indirect2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04244"></a>04244 <span class="keywordflow">return</span> <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>;
|
|
<a name="l04245"></a>04245 }
|
|
<a name="l04246"></a>04246 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04247"></a><a class="code" href="a00253.html#ad6676ae5d0e350228c88bd60492534ca">04247</a> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &<a class="code" href="a00253.html#ad6676ae5d0e350228c88bd60492534ca">indirect2</a> () {
|
|
<a name="l04248"></a>04248 <span class="keywordflow">return</span> <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>;
|
|
<a name="l04249"></a>04249 }
|
|
<a name="l04250"></a>04250
|
|
<a name="l04251"></a>04251 <span class="comment">// Storage accessors</span>
|
|
<a name="l04252"></a>04252 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04253"></a><a class="code" href="a00253.html#a13c5c8cb3950882412c3ffd6c6e23773">04253</a> <span class="keyword">const</span> <a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">matrix_closure_type</a> &<a class="code" href="a00253.html#a13c5c8cb3950882412c3ffd6c6e23773">data</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04254"></a>04254 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>;
|
|
<a name="l04255"></a>04255 }
|
|
<a name="l04256"></a>04256 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04257"></a><a class="code" href="a00253.html#aeb59dba5501f277227522a7ba4d0313e">04257</a> <a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">matrix_closure_type</a> &<a class="code" href="a00253.html#aeb59dba5501f277227522a7ba4d0313e">data</a> () {
|
|
<a name="l04258"></a>04258 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>;
|
|
<a name="l04259"></a>04259 }
|
|
<a name="l04260"></a>04260
|
|
<a name="l04261"></a>04261 <span class="comment">// Element access</span>
|
|
<a name="l04262"></a>04262 <span class="preprocessor">#ifndef BOOST_UBLAS_PROXY_CONST_MEMBER</span>
|
|
<a name="l04263"></a>04263 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04264"></a><a class="code" href="a00253.html#a168f6c3e126fa48179eaa996c8cfbb93">04264</a> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l04265"></a>04265 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (<a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (i), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (j));
|
|
<a name="l04266"></a>04266 }
|
|
<a name="l04267"></a>04267 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04268"></a><a class="code" href="a00253.html#ab94dd744e0bf7a32b49b48c1d2660862">04268</a> <a class="code" href="a00253.html#a2825b873e37cca3e061cfa67bb6b1404">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j) {
|
|
<a name="l04269"></a>04269 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (<a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (i), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (j));
|
|
<a name="l04270"></a>04270 }
|
|
<a name="l04271"></a>04271 <span class="preprocessor">#else</span>
|
|
<a name="l04272"></a>04272 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04273"></a>04273 <a class="code" href="a00253.html#a2825b873e37cca3e061cfa67bb6b1404">reference</a> <a class="code" href="a00251.html#a6dc287a9087643182442298441742bc0">operator () </a>(<a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l04274"></a>04274 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (<a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> (i), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> (j));
|
|
<a name="l04275"></a>04275 }
|
|
<a name="l04276"></a>04276 <span class="preprocessor">#endif</span>
|
|
<a name="l04277"></a>04277 <span class="preprocessor"></span>
|
|
<a name="l04278"></a>04278 <span class="comment">// ISSUE can this be done in free project function?</span>
|
|
<a name="l04279"></a>04279 <span class="comment">// Although a const function can create a non-const proxy to a non-const object</span>
|
|
<a name="l04280"></a>04280 <span class="comment">// Critical is that matrix_type and data_ (vector_closure_type) are const correct</span>
|
|
<a name="l04281"></a>04281 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04282"></a><a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">04282</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> <a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">project</a> (<span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r1, <span class="keyword">const</span> <a class="code" href="a00001.html">range_type</a> &r2)<span class="keyword"> const </span>{
|
|
<a name="l04283"></a>04283 <span class="keywordflow">return</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> (<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.compose (r1.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ())), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.compose (r2.<a class="code" href="a00001.html#add17aeeae0548146dee252ab18c99fdb">preprocess</a> (data_.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ())), 0);
|
|
<a name="l04284"></a>04284 }
|
|
<a name="l04285"></a>04285 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04286"></a><a class="code" href="a00253.html#abd739e989169b63f763873ea2b109169">04286</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> <a class="code" href="a00253.html#abd739e989169b63f763873ea2b109169">project</a> (<span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s1, <span class="keyword">const</span> <a class="code" href="a00002.html">slice_type</a> &s2)<span class="keyword"> const </span>{
|
|
<a name="l04287"></a>04287 <span class="keywordflow">return</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> (<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.compose (s1.<a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">preprocess</a> (data_.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ())), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.compose (s2.<a class="code" href="a00002.html#a184a206c32318e3f6424a0c8af9d9432">preprocess</a> (data_.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ())), 0);
|
|
<a name="l04288"></a>04288 }
|
|
<a name="l04289"></a>04289 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04290"></a><a class="code" href="a00253.html#a297e51a851a5fac39b3953fb1cebf646">04290</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> <a class="code" href="a00253.html#a297e51a851a5fac39b3953fb1cebf646">project</a> (<span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia1, <span class="keyword">const</span> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> &ia2)<span class="keyword"> const </span>{
|
|
<a name="l04291"></a>04291 <span class="keywordflow">return</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<matrix_type, indirect_array_type></a> (<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.compose (ia1.preprocess (data_.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> ())), <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.compose (ia2.preprocess (data_.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ())), 0);
|
|
<a name="l04292"></a>04292 }
|
|
<a name="l04293"></a>04293
|
|
<a name="l04294"></a>04294 <span class="comment">// Assignment</span>
|
|
<a name="l04295"></a>04295 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04296"></a><a class="code" href="a00253.html#a91d75d40cc37572a60763bcd4b7f8f3f">04296</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#a91d75d40cc37572a60763bcd4b7f8f3f">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &mi) {
|
|
<a name="l04297"></a>04297 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, mi);
|
|
<a name="l04298"></a>04298 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04299"></a>04299 }
|
|
<a name="l04300"></a>04300 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04301"></a><a class="code" href="a00253.html#ad0548da8f2c71a47d05ed0654fd187a5">04301</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#ad0548da8f2c71a47d05ed0654fd187a5">assign_temporary</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &mi) {
|
|
<a name="l04302"></a>04302 <span class="keywordflow">return</span> *<span class="keyword">this</span> = mi;
|
|
<a name="l04303"></a>04303 }
|
|
<a name="l04304"></a>04304 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04305"></a>04305 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04306"></a><a class="code" href="a00253.html#ac86bd7178deb223fcc690f01f379b98e">04306</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#a91d75d40cc37572a60763bcd4b7f8f3f">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04307"></a>04307 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (ae));
|
|
<a name="l04308"></a>04308 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04309"></a>04309 }
|
|
<a name="l04310"></a>04310 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04311"></a>04311 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04312"></a><a class="code" href="a00253.html#ae480d4b24197e58fbde380c6219d2e36">04312</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#ae480d4b24197e58fbde380c6219d2e36">assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04313"></a>04313 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l04314"></a>04314 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04315"></a>04315 }
|
|
<a name="l04316"></a>04316 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04317"></a>04317 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04318"></a><a class="code" href="a00253.html#abafec7c39b09211161cc603438c856fb">04318</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a>& <a class="code" href="a00253.html#abafec7c39b09211161cc603438c856fb">operator += </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04319"></a>04319 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> + ae));
|
|
<a name="l04320"></a>04320 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04321"></a>04321 }
|
|
<a name="l04322"></a>04322 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04323"></a>04323 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04324"></a><a class="code" href="a00253.html#a155549e582656efb819404e2a5c538aa">04324</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#a155549e582656efb819404e2a5c538aa">plus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04325"></a>04325 matrix_assign<scalar_plus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l04326"></a>04326 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04327"></a>04327 }
|
|
<a name="l04328"></a>04328 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04329"></a>04329 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04330"></a><a class="code" href="a00253.html#a7f64a90926c91ba5689758233f0ab323">04330</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a>& <a class="code" href="a00253.html#a7f64a90926c91ba5689758233f0ab323">operator -= </a>(<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04331"></a>04331 matrix_assign<scalar_assign> (*<span class="keyword">this</span>, <span class="keyword">typename</span> <a class="code" href="a00291.html#af08d25f6276c421d791966911ebc3710">matrix_temporary_traits<M>::type</a> (*<span class="keyword">this</span> - ae));
|
|
<a name="l04332"></a>04332 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04333"></a>04333 }
|
|
<a name="l04334"></a>04334 <span class="keyword">template</span><<span class="keyword">class</span> AE>
|
|
<a name="l04335"></a>04335 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04336"></a><a class="code" href="a00253.html#a93050a908b2827391c5c565efd71cec3">04336</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &<a class="code" href="a00253.html#a93050a908b2827391c5c565efd71cec3">minus_assign</a> (<span class="keyword">const</span> <a class="code" href="a00251.html" title="Base class for Matrix Expression models.">matrix_expression<AE></a> &ae) {
|
|
<a name="l04337"></a>04337 matrix_assign<scalar_minus_assign> (*<span class="keyword">this</span>, ae);
|
|
<a name="l04338"></a>04338 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04339"></a>04339 }
|
|
<a name="l04340"></a>04340 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l04341"></a>04341 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04342"></a><a class="code" href="a00253.html#ad9732c6446d983f72d071e96c15904f9">04342</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a>& <a class="code" href="a00253.html#ad9732c6446d983f72d071e96c15904f9">operator *= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l04343"></a>04343 matrix_assign_scalar<scalar_multiplies_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l04344"></a>04344 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04345"></a>04345 }
|
|
<a name="l04346"></a>04346 <span class="keyword">template</span><<span class="keyword">class</span> AT>
|
|
<a name="l04347"></a>04347 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04348"></a><a class="code" href="a00253.html#af0ad63df9208fe2d8e60bb4b602001ee">04348</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a>& <a class="code" href="a00253.html#af0ad63df9208fe2d8e60bb4b602001ee">operator /= </a>(<span class="keyword">const</span> AT &at) {
|
|
<a name="l04349"></a>04349 matrix_assign_scalar<scalar_divides_assign> (*<span class="keyword">this</span>, at);
|
|
<a name="l04350"></a>04350 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04351"></a>04351 }
|
|
<a name="l04352"></a>04352
|
|
<a name="l04353"></a>04353 <span class="comment">// Closure comparison</span>
|
|
<a name="l04354"></a>04354 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04355"></a><a class="code" href="a00253.html#a364974f3a8b021b33edab7de968bf5d0">04355</a> <span class="keywordtype">bool</span> <a class="code" href="a00253.html#a364974f3a8b021b33edab7de968bf5d0">same_closure</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &mi)<span class="keyword"> const </span>{
|
|
<a name="l04356"></a>04356 <span class="keywordflow">return</span> (*this).data_.same_closure (mi.<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>);
|
|
<a name="l04357"></a>04357 }
|
|
<a name="l04358"></a>04358
|
|
<a name="l04359"></a>04359 <span class="comment">// Comparison</span>
|
|
<a name="l04360"></a>04360 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04361"></a><a class="code" href="a00253.html#ad6dca918f0f0a7c3c5715fe6a1c2c0db">04361</a> <span class="keywordtype">bool</span> <a class="code" href="a00253.html#ad6dca918f0f0a7c3c5715fe6a1c2c0db">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> &mi)<span class="keyword"> const </span>{
|
|
<a name="l04362"></a>04362 <span class="keywordflow">return</span> (*this).data_ == mi.<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> && <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> == mi.<a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a> && <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a> == mi.<a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>;
|
|
<a name="l04363"></a>04363 }
|
|
<a name="l04364"></a>04364
|
|
<a name="l04365"></a>04365 <span class="comment">// Swapping</span>
|
|
<a name="l04366"></a>04366 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04367"></a><a class="code" href="a00253.html#a2c0a1763679620752bc4fcdb612c38d4">04367</a> <span class="keywordtype">void</span> <a class="code" href="a00253.html#a2c0a1763679620752bc4fcdb612c38d4">swap</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> mi) {
|
|
<a name="l04368"></a>04368 <span class="keywordflow">if</span> (<span class="keyword">this</span> != &mi) {
|
|
<a name="l04369"></a>04369 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> () == mi.<a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l04370"></a>04370 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> () == mi.<a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> (), <a class="code" href="a00016.html">bad_size</a> ());
|
|
<a name="l04371"></a>04371 matrix_swap<scalar_swap> (*<span class="keyword">this</span>, mi);
|
|
<a name="l04372"></a>04372 }
|
|
<a name="l04373"></a>04373 }
|
|
<a name="l04374"></a>04374 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04375"></a><a class="code" href="a00253.html#a1003f5b368bad5faa10e9847bcd3a2ee">04375</a> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="a00253.html#a1003f5b368bad5faa10e9847bcd3a2ee">swap</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> mi1, <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a> mi2) {
|
|
<a name="l04376"></a>04376 mi1.<a class="code" href="a00253.html#a2c0a1763679620752bc4fcdb612c38d4">swap</a> (mi2);
|
|
<a name="l04377"></a>04377 }
|
|
<a name="l04378"></a>04378
|
|
<a name="l04379"></a>04379 <span class="comment">// Iterator types</span>
|
|
<a name="l04380"></a>04380 <span class="keyword">private</span>:
|
|
<a name="l04381"></a><a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">04381</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">const_subiterator1_type</a>;
|
|
<a name="l04382"></a><a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">04382</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">subiterator1_type</a>;
|
|
<a name="l04383"></a><a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">04383</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">const_subiterator2_type</a>;
|
|
<a name="l04384"></a><a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">04384</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> IA::const_iterator <a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">subiterator2_type</a>;
|
|
<a name="l04385"></a>04385
|
|
<a name="l04386"></a>04386 <span class="keyword">public</span>:
|
|
<a name="l04387"></a>04387 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04388"></a>04388 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00169.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator1<matrix_indirect<matrix_type, indirect_array_type></a>,
|
|
<a name="l04389"></a>04389 <span class="keyword">typename</span> matrix_type::iterator1::iterator_category> <a class="code" href="a00256.html">iterator1</a>;
|
|
<a name="l04390"></a>04390 <span class="keyword">typedef</span> <a class="code" href="a00170.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_iterator2<matrix_indirect<matrix_type, indirect_array_type></a>,
|
|
<a name="l04391"></a>04391 <span class="keyword">typename</span> matrix_type::iterator2::iterator_category> <a class="code" href="a00257.html">iterator2</a>;
|
|
<a name="l04392"></a>04392 <span class="keyword">typedef</span> <a class="code" href="a00166.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator1<matrix_indirect<matrix_type, indirect_array_type></a>,
|
|
<a name="l04393"></a>04393 <span class="keyword">typename</span> matrix_type::const_iterator1::iterator_category> <a class="code" href="a00254.html">const_iterator1</a>;
|
|
<a name="l04394"></a>04394 <span class="keyword">typedef</span> <a class="code" href="a00167.html" title="A class implementing an indexed random access iterator of a matrix.">indexed_const_iterator2<matrix_indirect<matrix_type, indirect_array_type></a>,
|
|
<a name="l04395"></a>04395 <span class="keyword">typename</span> matrix_type::const_iterator2::iterator_category> <a class="code" href="a00255.html">const_iterator2</a>;
|
|
<a name="l04396"></a>04396 <span class="preprocessor">#else</span>
|
|
<a name="l04397"></a>04397 <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00254.html">const_iterator1</a>;
|
|
<a name="l04398"></a>04398 <span class="keyword">class </span><a class="code" href="a00256.html">iterator1</a>;
|
|
<a name="l04399"></a>04399 <span class="keyword">class </span><a class="code" href="a00255.html">const_iterator2</a>;
|
|
<a name="l04400"></a><a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">04400</a> <span class="keyword">class </span><a class="code" href="a00257.html">iterator2</a>;
|
|
<a name="l04401"></a>04401 <span class="preprocessor">#endif</span>
|
|
<a name="l04402"></a>04402 <span class="preprocessor"></span> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<const_iterator1></a> <a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">const_reverse_iterator1</a>;
|
|
<a name="l04403"></a><a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">04403</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base1<iterator1></a> <a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">reverse_iterator1</a>;
|
|
<a name="l04404"></a><a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">04404</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<const_iterator2></a> <a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">const_reverse_iterator2</a>;
|
|
<a name="l04405"></a><a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">04405</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator_base2<iterator2></a> <a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">reverse_iterator2</a>;
|
|
<a name="l04406"></a>04406
|
|
<a name="l04407"></a>04407 <span class="comment">// Element lookup</span>
|
|
<a name="l04408"></a>04408 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04409"></a><a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">04409</a> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">find1</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l04410"></a>04410 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04411"></a>04411 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00254.html">const_iterator1</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l04412"></a>04412 <span class="preprocessor">#else</span>
|
|
<a name="l04413"></a>04413 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00254.html">const_iterator1</a> (*<span class="keyword">this</span>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.begin () + i, <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.begin () + j);
|
|
<a name="l04414"></a>04414 <span class="preprocessor">#endif</span>
|
|
<a name="l04415"></a>04415 <span class="preprocessor"></span> }
|
|
<a name="l04416"></a>04416 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04417"></a><a class="code" href="a00253.html#a8967551770978fe439020796132b24bf">04417</a> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00253.html#a8967551770978fe439020796132b24bf">find1</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j) {
|
|
<a name="l04418"></a>04418 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04419"></a>04419 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00256.html">iterator1</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l04420"></a>04420 <span class="preprocessor">#else</span>
|
|
<a name="l04421"></a>04421 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00256.html">iterator1</a> (*<span class="keyword">this</span>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.begin () + i, <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.begin () + j);
|
|
<a name="l04422"></a>04422 <span class="preprocessor">#endif</span>
|
|
<a name="l04423"></a>04423 <span class="preprocessor"></span> }
|
|
<a name="l04424"></a>04424 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04425"></a><a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">04425</a> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">find2</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j)<span class="keyword"> const </span>{
|
|
<a name="l04426"></a>04426 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04427"></a>04427 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00255.html">const_iterator2</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l04428"></a>04428 <span class="preprocessor">#else</span>
|
|
<a name="l04429"></a>04429 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00255.html">const_iterator2</a> (*<span class="keyword">this</span>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.begin () + i, <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.begin () + j);
|
|
<a name="l04430"></a>04430 <span class="preprocessor">#endif</span>
|
|
<a name="l04431"></a>04431 <span class="preprocessor"></span> }
|
|
<a name="l04432"></a>04432 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04433"></a><a class="code" href="a00253.html#ac600cd3afd9ec8f51bf143123832bf42">04433</a> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00253.html#ac600cd3afd9ec8f51bf143123832bf42">find2</a> (<span class="keywordtype">int</span> <span class="comment">/* rank */</span>, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> i, <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> j) {
|
|
<a name="l04434"></a>04434 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04435"></a>04435 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00257.html">iterator2</a> (*<span class="keyword">this</span>, i, j);
|
|
<a name="l04436"></a>04436 <span class="preprocessor">#else</span>
|
|
<a name="l04437"></a>04437 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="a00257.html">iterator2</a> (*<span class="keyword">this</span>, <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>.begin () + i, <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>.begin () + j);
|
|
<a name="l04438"></a>04438 <span class="preprocessor">#endif</span>
|
|
<a name="l04439"></a>04439 <span class="preprocessor"></span> }
|
|
<a name="l04440"></a>04440
|
|
<a name="l04441"></a>04441 <span class="comment">// Iterators simply are indices.</span>
|
|
<a name="l04442"></a>04442
|
|
<a name="l04443"></a>04443 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04444"></a><a class="code" href="a00254.html">04444</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00254.html">const_iterator1</a>:
|
|
<a name="l04445"></a>04445 <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><matrix_indirect>,
|
|
<a name="l04446"></a>04446 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator1::iterator_category>::template
|
|
<a name="l04447"></a>04447 iterator_base<const_iterator1, value_type>::type {
|
|
<a name="l04448"></a>04448 <span class="keyword">public</span>:
|
|
<a name="l04449"></a><a class="code" href="a00254.html#a68ee5e85a9cbfd84662e43c458998405">04449</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::value_type <a class="code" href="a00254.html#a68ee5e85a9cbfd84662e43c458998405">value_type</a>;
|
|
<a name="l04450"></a><a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">04450</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::difference_type <a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">difference_type</a>;
|
|
<a name="l04451"></a><a class="code" href="a00254.html#a2ce9a513a941a77989d3f33dbe9738aa">04451</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00254.html#a2ce9a513a941a77989d3f33dbe9738aa">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l04452"></a><a class="code" href="a00254.html#a9f7dfd37785d90e4febd557e163a01e5">04452</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator1::pointer <a class="code" href="a00254.html#a9f7dfd37785d90e4febd557e163a01e5">pointer</a>;
|
|
<a name="l04453"></a><a class="code" href="a00254.html#a535c16d41b215e093852550f74305b9e">04453</a> <span class="keyword">typedef</span> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00254.html#a535c16d41b215e093852550f74305b9e">dual_iterator_type</a>;
|
|
<a name="l04454"></a><a class="code" href="a00254.html#a3f92d3973788da0086ccae7bb79e30d5">04454</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00254.html#a3f92d3973788da0086ccae7bb79e30d5">dual_reverse_iterator_type</a>;
|
|
<a name="l04455"></a>04455
|
|
<a name="l04456"></a>04456 <span class="comment">// Construction and destruction</span>
|
|
<a name="l04457"></a>04457 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04458"></a><a class="code" href="a00254.html#a982083c9942a29f1bb23b607813ed75d">04458</a> <a class="code" href="a00254.html#a982083c9942a29f1bb23b607813ed75d">const_iterator1</a> ():
|
|
<a name="l04459"></a>04459 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (), <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> (), <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> () {}
|
|
<a name="l04460"></a>04460 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04461"></a><a class="code" href="a00254.html#a7a19fffa4c812757a480b859290e3324">04461</a> <a class="code" href="a00254.html#a982083c9942a29f1bb23b607813ed75d">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> &mi, <span class="keyword">const</span> <a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">const_subiterator2_type</a> &it2):
|
|
<a name="l04462"></a>04462 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (mi), <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> (it1), <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> (it2) {}
|
|
<a name="l04463"></a>04463 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04464"></a><a class="code" href="a00254.html#a11da98583c6563297b58c5b6c1914119">04464</a> <a class="code" href="a00254.html#a982083c9942a29f1bb23b607813ed75d">const_iterator1</a> (<span class="keyword">const</span> <a class="code" href="a00256.html">iterator1</a> &it):
|
|
<a name="l04465"></a>04465 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (it ()), <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> (it.<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>), <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> (it.<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>) {}
|
|
<a name="l04466"></a>04466
|
|
<a name="l04467"></a>04467 <span class="comment">// Arithmetic</span>
|
|
<a name="l04468"></a>04468 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04469"></a><a class="code" href="a00254.html#ae4e8c447853774b037d9ecd358232c78">04469</a> <a class="code" href="a00254.html">const_iterator1</a> &<a class="code" href="a00254.html#ae4e8c447853774b037d9ecd358232c78">operator ++ </a>() {
|
|
<a name="l04470"></a>04470 ++ <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04471"></a>04471 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04472"></a>04472 }
|
|
<a name="l04473"></a>04473 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04474"></a><a class="code" href="a00254.html#a65c57db6fe5514276403dac5046ddccd">04474</a> <a class="code" href="a00254.html">const_iterator1</a> &<a class="code" href="a00254.html#a65c57db6fe5514276403dac5046ddccd">operator -- </a>() {
|
|
<a name="l04475"></a>04475 -- <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04476"></a>04476 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04477"></a>04477 }
|
|
<a name="l04478"></a>04478 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04479"></a><a class="code" href="a00254.html#a4d25a5f0be3b40d2b84656708aacc735">04479</a> <a class="code" href="a00254.html">const_iterator1</a> &<a class="code" href="a00254.html#a4d25a5f0be3b40d2b84656708aacc735">operator += </a>(<a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">difference_type</a> n) {
|
|
<a name="l04480"></a>04480 <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> += n;
|
|
<a name="l04481"></a>04481 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04482"></a>04482 }
|
|
<a name="l04483"></a>04483 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04484"></a><a class="code" href="a00254.html#abddc23cf1abbedc72640354631cc48ea">04484</a> <a class="code" href="a00254.html">const_iterator1</a> &<a class="code" href="a00254.html#abddc23cf1abbedc72640354631cc48ea">operator -= </a>(<a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">difference_type</a> n) {
|
|
<a name="l04485"></a>04485 <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> -= n;
|
|
<a name="l04486"></a>04486 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04487"></a>04487 }
|
|
<a name="l04488"></a>04488 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04489"></a><a class="code" href="a00254.html#a7e135b9da92bb07290bf10454a0100ee">04489</a> <a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">difference_type</a> <a class="code" href="a00254.html#a7e135b9da92bb07290bf10454a0100ee">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00254.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04490"></a>04490 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04491"></a>04491 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> == it.<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04492"></a>04492 <span class="keywordflow">return</span> <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> - it.<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04493"></a>04493 }
|
|
<a name="l04494"></a>04494
|
|
<a name="l04495"></a>04495 <span class="comment">// Dereference</span>
|
|
<a name="l04496"></a>04496 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04497"></a><a class="code" href="a00254.html#a4aac1d266c6211c90bccdd33d04d87d1">04497</a> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a> <a class="code" href="a00254.html#a4aac1d266c6211c90bccdd33d04d87d1">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l04498"></a>04498 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l04499"></a>04499 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (*<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>, *<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>);
|
|
<a name="l04500"></a>04500 }
|
|
<a name="l04501"></a>04501 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04502"></a><a class="code" href="a00254.html#ac88bce887d2cbf6ba149ae45ffc6de7d">04502</a> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a> <a class="code" href="a00254.html#ac88bce887d2cbf6ba149ae45ffc6de7d">operator [] </a>(<a class="code" href="a00254.html#ab6bd753fcdb0bef7f6d032eb934c72fc">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l04503"></a>04503 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l04504"></a>04504 }
|
|
<a name="l04505"></a>04505
|
|
<a name="l04506"></a>04506 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l04507"></a>04507 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04508"></a>04508 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04509"></a>04509 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04510"></a>04510 <span class="preprocessor">#endif</span>
|
|
<a name="l04511"></a><a class="code" href="a00254.html#a5dcdf0d630cc806aae3c9617fc4ef79d">04511</a> <span class="preprocessor"></span> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00254.html#a5dcdf0d630cc806aae3c9617fc4ef79d">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04512"></a>04512 <span class="keywordflow">return</span> <a class="code" href="a00255.html">const_iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>, <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> ().<a class="code" href="a00254.html#a5dcdf0d630cc806aae3c9617fc4ef79d">begin</a> ());
|
|
<a name="l04513"></a>04513 }
|
|
<a name="l04514"></a>04514 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04515"></a>04515 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04516"></a>04516 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04517"></a>04517 <span class="preprocessor">#endif</span>
|
|
<a name="l04518"></a><a class="code" href="a00254.html#ab4754d7c97dc11d7ac02fa594a84f5a6">04518</a> <span class="preprocessor"></span> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00254.html#ab4754d7c97dc11d7ac02fa594a84f5a6">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04519"></a>04519 <span class="keywordflow">return</span> <a class="code" href="a00255.html">const_iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>, <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> ().<a class="code" href="a00254.html#ab4754d7c97dc11d7ac02fa594a84f5a6">end</a> ());
|
|
<a name="l04520"></a>04520 }
|
|
<a name="l04521"></a>04521 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04522"></a>04522 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04523"></a>04523 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04524"></a>04524 <span class="preprocessor">#endif</span>
|
|
<a name="l04525"></a><a class="code" href="a00254.html#a63c2b48098ba1284fb7e4635608ca5bf">04525</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00254.html#a63c2b48098ba1284fb7e4635608ca5bf">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04526"></a>04526 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">const_reverse_iterator2</a> (<a class="code" href="a00254.html#ab4754d7c97dc11d7ac02fa594a84f5a6">end</a> ());
|
|
<a name="l04527"></a>04527 }
|
|
<a name="l04528"></a>04528 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04529"></a>04529 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04530"></a>04530 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04531"></a>04531 <span class="preprocessor">#endif</span>
|
|
<a name="l04532"></a><a class="code" href="a00254.html#a220b01a9082f4521ed9fe9d8c76b5863">04532</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00254.html#a220b01a9082f4521ed9fe9d8c76b5863">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04533"></a>04533 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">const_reverse_iterator2</a> (<a class="code" href="a00254.html#a5dcdf0d630cc806aae3c9617fc4ef79d">begin</a> ());
|
|
<a name="l04534"></a>04534 }
|
|
<a name="l04535"></a>04535 <span class="preprocessor">#endif</span>
|
|
<a name="l04536"></a>04536 <span class="preprocessor"></span>
|
|
<a name="l04537"></a>04537 <span class="comment">// Indices</span>
|
|
<a name="l04538"></a>04538 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04539"></a><a class="code" href="a00254.html#ae815c126dbe96ee99aa26843664f04ca">04539</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00254.html#ae815c126dbe96ee99aa26843664f04ca">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04540"></a>04540 <span class="keywordflow">return</span> <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>.index ();
|
|
<a name="l04541"></a>04541 }
|
|
<a name="l04542"></a>04542 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04543"></a><a class="code" href="a00254.html#af63715d6f129517ed556c292cfd94451">04543</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00254.html#af63715d6f129517ed556c292cfd94451">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04544"></a>04544 <span class="keywordflow">return</span> <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>.index ();
|
|
<a name="l04545"></a>04545 }
|
|
<a name="l04546"></a>04546
|
|
<a name="l04547"></a>04547 <span class="comment">// Assignment</span>
|
|
<a name="l04548"></a>04548 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04549"></a><a class="code" href="a00254.html#a32bef96d019d4da3400d58405e55f1f6">04549</a> <a class="code" href="a00254.html">const_iterator1</a> &<a class="code" href="a00254.html#a32bef96d019d4da3400d58405e55f1f6">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00254.html">const_iterator1</a> &it) {
|
|
<a name="l04550"></a>04550 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l04551"></a>04551 <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> = it.<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04552"></a>04552 <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> = it.<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>;
|
|
<a name="l04553"></a>04553 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04554"></a>04554 }
|
|
<a name="l04555"></a>04555
|
|
<a name="l04556"></a>04556 <span class="comment">// Comparison</span>
|
|
<a name="l04557"></a>04557 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04558"></a><a class="code" href="a00254.html#af4d14741db9282a9acb72dea66cc56c5">04558</a> <span class="keywordtype">bool</span> <a class="code" href="a00254.html#af4d14741db9282a9acb72dea66cc56c5">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00254.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04559"></a>04559 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04560"></a>04560 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> == it.<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04561"></a>04561 <span class="keywordflow">return</span> <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> == it.<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04562"></a>04562 }
|
|
<a name="l04563"></a>04563 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04564"></a><a class="code" href="a00254.html#abea4be6830a3ed219f3d92b3e13f29d6">04564</a> <span class="keywordtype">bool</span> <a class="code" href="a00254.html#abea4be6830a3ed219f3d92b3e13f29d6">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00254.html">const_iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04565"></a>04565 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04566"></a>04566 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a> == it.<a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04567"></a>04567 <span class="keywordflow">return</span> <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a> < it.<a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04568"></a>04568 }
|
|
<a name="l04569"></a>04569
|
|
<a name="l04570"></a>04570 <span class="keyword">private</span>:
|
|
<a name="l04571"></a><a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">04571</a> <a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">const_subiterator1_type</a> <a class="code" href="a00254.html#aebb97d5b240e632a215a1f4ae3d82be2">it1_</a>;
|
|
<a name="l04572"></a><a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">04572</a> <a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">const_subiterator2_type</a> <a class="code" href="a00254.html#a03a0c8fcc5ad06921066d7a7b21ff2d3">it2_</a>;
|
|
<a name="l04573"></a>04573 };
|
|
<a name="l04574"></a>04574 <span class="preprocessor">#endif</span>
|
|
<a name="l04575"></a>04575 <span class="preprocessor"></span>
|
|
<a name="l04576"></a>04576 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04577"></a><a class="code" href="a00253.html#a264ba6347017a0c471548dbd4d185614">04577</a> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00253.html#a264ba6347017a0c471548dbd4d185614">begin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04578"></a>04578 <span class="keywordflow">return</span> <a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">find1</a> (0, 0, 0);
|
|
<a name="l04579"></a>04579 }
|
|
<a name="l04580"></a>04580 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04581"></a><a class="code" href="a00253.html#ae2c2e3ff2c3781a79fcfa002c5107f82">04581</a> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00253.html#ae2c2e3ff2c3781a79fcfa002c5107f82">end1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04582"></a>04582 <span class="keywordflow">return</span> <a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">find1</a> (0, <a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> (), 0);
|
|
<a name="l04583"></a>04583 }
|
|
<a name="l04584"></a>04584
|
|
<a name="l04585"></a>04585 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04586"></a><a class="code" href="a00256.html">04586</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00256.html">iterator1</a>:
|
|
<a name="l04587"></a>04587 <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><matrix_indirect>,
|
|
<a name="l04588"></a>04588 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator1::iterator_category>::template
|
|
<a name="l04589"></a>04589 iterator_base<iterator1, value_type>::type {
|
|
<a name="l04590"></a>04590 <span class="keyword">public</span>:
|
|
<a name="l04591"></a><a class="code" href="a00256.html#aed8aaaf90214039d24fb8f3f8528b567">04591</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::value_type <a class="code" href="a00256.html#aed8aaaf90214039d24fb8f3f8528b567">value_type</a>;
|
|
<a name="l04592"></a><a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">04592</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::difference_type <a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">difference_type</a>;
|
|
<a name="l04593"></a><a class="code" href="a00256.html#aaf787bf78ca64a912fbead2a5c6ae58c">04593</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::reference <a class="code" href="a00256.html#aaf787bf78ca64a912fbead2a5c6ae58c">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l04594"></a><a class="code" href="a00256.html#a01fcd1e71812dd00b98a001cf5ea9921">04594</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator1::pointer <a class="code" href="a00256.html#a01fcd1e71812dd00b98a001cf5ea9921">pointer</a>;
|
|
<a name="l04595"></a><a class="code" href="a00256.html#a4e17cac59080598b542ce3788d746aa2">04595</a> <span class="keyword">typedef</span> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00256.html#a4e17cac59080598b542ce3788d746aa2">dual_iterator_type</a>;
|
|
<a name="l04596"></a><a class="code" href="a00256.html#a44291f61089479e6ef5d23dfafc5c74f">04596</a> <span class="keyword">typedef</span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00256.html#a44291f61089479e6ef5d23dfafc5c74f">dual_reverse_iterator_type</a>;
|
|
<a name="l04597"></a>04597
|
|
<a name="l04598"></a>04598 <span class="comment">// Construction and destruction</span>
|
|
<a name="l04599"></a>04599 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04600"></a><a class="code" href="a00256.html#a0df8385e04790d82b2232d8ab3d37052">04600</a> <a class="code" href="a00256.html#a0df8385e04790d82b2232d8ab3d37052">iterator1</a> ():
|
|
<a name="l04601"></a>04601 <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><<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (), <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> (), <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> () {}
|
|
<a name="l04602"></a>04602 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04603"></a><a class="code" href="a00256.html#a4a0718508e5685a6d839af915ccb78d5">04603</a> <a class="code" href="a00256.html#a0df8385e04790d82b2232d8ab3d37052">iterator1</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> &mi, <span class="keyword">const</span> <a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">subiterator2_type</a> &it2):
|
|
<a name="l04604"></a>04604 <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><<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (mi), <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> (it1), <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> (it2) {}
|
|
<a name="l04605"></a>04605
|
|
<a name="l04606"></a>04606 <span class="comment">// Arithmetic</span>
|
|
<a name="l04607"></a>04607 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04608"></a><a class="code" href="a00256.html#a4aff2c9c2b0d6e9bf40d6219eb65ed2a">04608</a> <a class="code" href="a00256.html">iterator1</a> &<a class="code" href="a00256.html#a4aff2c9c2b0d6e9bf40d6219eb65ed2a">operator ++ </a>() {
|
|
<a name="l04609"></a>04609 ++ <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04610"></a>04610 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04611"></a>04611 }
|
|
<a name="l04612"></a>04612 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04613"></a><a class="code" href="a00256.html#ab20c6ae928c78dda52ff13d4a16afecd">04613</a> <a class="code" href="a00256.html">iterator1</a> &<a class="code" href="a00256.html#ab20c6ae928c78dda52ff13d4a16afecd">operator -- </a>() {
|
|
<a name="l04614"></a>04614 -- <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04615"></a>04615 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04616"></a>04616 }
|
|
<a name="l04617"></a>04617 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04618"></a><a class="code" href="a00256.html#a7649ef55e1cfbe05735f875f8a8f9887">04618</a> <a class="code" href="a00256.html">iterator1</a> &<a class="code" href="a00256.html#a7649ef55e1cfbe05735f875f8a8f9887">operator += </a>(<a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">difference_type</a> n) {
|
|
<a name="l04619"></a>04619 <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> += n;
|
|
<a name="l04620"></a>04620 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04621"></a>04621 }
|
|
<a name="l04622"></a>04622 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04623"></a><a class="code" href="a00256.html#a2e0576f505688b9b937ca42e559e762c">04623</a> <a class="code" href="a00256.html">iterator1</a> &<a class="code" href="a00256.html#a2e0576f505688b9b937ca42e559e762c">operator -= </a>(<a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">difference_type</a> n) {
|
|
<a name="l04624"></a>04624 <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> -= n;
|
|
<a name="l04625"></a>04625 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04626"></a>04626 }
|
|
<a name="l04627"></a>04627 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04628"></a><a class="code" href="a00256.html#affcd8fd72668b1c9b668748551807689">04628</a> <a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">difference_type</a> <a class="code" href="a00256.html#affcd8fd72668b1c9b668748551807689">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00256.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04629"></a>04629 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04630"></a>04630 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> == it.<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04631"></a>04631 <span class="keywordflow">return</span> <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> - it.<a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04632"></a>04632 }
|
|
<a name="l04633"></a>04633
|
|
<a name="l04634"></a>04634 <span class="comment">// Dereference</span>
|
|
<a name="l04635"></a>04635 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04636"></a><a class="code" href="a00256.html#acc080ed6e653456d4990ad0ccb263688">04636</a> <a class="code" href="a00256.html#aaf787bf78ca64a912fbead2a5c6ae58c">reference</a> <a class="code" href="a00256.html#acc080ed6e653456d4990ad0ccb263688">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l04637"></a>04637 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l04638"></a>04638 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (*<a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>, *<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>);
|
|
<a name="l04639"></a>04639 }
|
|
<a name="l04640"></a>04640 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04641"></a><a class="code" href="a00256.html#a9b9d6bff1789710f3957ac2430c0b375">04641</a> <a class="code" href="a00256.html#aaf787bf78ca64a912fbead2a5c6ae58c">reference</a> <a class="code" href="a00256.html#a9b9d6bff1789710f3957ac2430c0b375">operator [] </a>(<a class="code" href="a00256.html#a75e5353ecce1f15e72031e5e0b521815">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l04642"></a>04642 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l04643"></a>04643 }
|
|
<a name="l04644"></a>04644
|
|
<a name="l04645"></a>04645 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l04646"></a>04646 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04647"></a>04647 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04648"></a>04648 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04649"></a>04649 <span class="preprocessor">#endif</span>
|
|
<a name="l04650"></a><a class="code" href="a00256.html#a5caf7999892428ac834b1a20f77d50a1">04650</a> <span class="preprocessor"></span> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00256.html#a5caf7999892428ac834b1a20f77d50a1">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04651"></a>04651 <span class="keywordflow">return</span> <a class="code" href="a00257.html">iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>, <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> ().<a class="code" href="a00256.html#a5caf7999892428ac834b1a20f77d50a1">begin</a> ());
|
|
<a name="l04652"></a>04652 }
|
|
<a name="l04653"></a>04653 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04654"></a>04654 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04655"></a>04655 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04656"></a>04656 <span class="preprocessor">#endif</span>
|
|
<a name="l04657"></a><a class="code" href="a00256.html#abaaf75521d4c53a49f36f20e2f43c941">04657</a> <span class="preprocessor"></span> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00256.html#abaaf75521d4c53a49f36f20e2f43c941">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04658"></a>04658 <span class="keywordflow">return</span> <a class="code" href="a00257.html">iterator2</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>, <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> ().<a class="code" href="a00256.html#abaaf75521d4c53a49f36f20e2f43c941">end</a> ());
|
|
<a name="l04659"></a>04659 }
|
|
<a name="l04660"></a>04660 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04661"></a>04661 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04662"></a>04662 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04663"></a>04663 <span class="preprocessor">#endif</span>
|
|
<a name="l04664"></a><a class="code" href="a00256.html#aecd88e6eb944eeee861ebab7064c5db8">04664</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00256.html#aecd88e6eb944eeee861ebab7064c5db8">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04665"></a>04665 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">reverse_iterator2</a> (<a class="code" href="a00256.html#abaaf75521d4c53a49f36f20e2f43c941">end</a> ());
|
|
<a name="l04666"></a>04666 }
|
|
<a name="l04667"></a>04667 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04668"></a>04668 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04669"></a>04669 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04670"></a>04670 <span class="preprocessor">#endif</span>
|
|
<a name="l04671"></a><a class="code" href="a00256.html#aa63a3ab793875605b18d8897d51a6608">04671</a> <span class="preprocessor"></span> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00256.html#aa63a3ab793875605b18d8897d51a6608">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04672"></a>04672 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">reverse_iterator2</a> (<a class="code" href="a00256.html#a5caf7999892428ac834b1a20f77d50a1">begin</a> ());
|
|
<a name="l04673"></a>04673 }
|
|
<a name="l04674"></a>04674 <span class="preprocessor">#endif</span>
|
|
<a name="l04675"></a>04675 <span class="preprocessor"></span>
|
|
<a name="l04676"></a>04676 <span class="comment">// Indices</span>
|
|
<a name="l04677"></a>04677 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04678"></a><a class="code" href="a00256.html#a9bcdcb5934a4fcf817c06cdcb2bdc19a">04678</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00256.html#a9bcdcb5934a4fcf817c06cdcb2bdc19a">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04679"></a>04679 <span class="keywordflow">return</span> <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>.index ();
|
|
<a name="l04680"></a>04680 }
|
|
<a name="l04681"></a>04681 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04682"></a><a class="code" href="a00256.html#a660caff98a001aefe3cddf0dbb6fa0b5">04682</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00256.html#a660caff98a001aefe3cddf0dbb6fa0b5">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04683"></a>04683 <span class="keywordflow">return</span> <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>.index ();
|
|
<a name="l04684"></a>04684 }
|
|
<a name="l04685"></a>04685
|
|
<a name="l04686"></a>04686 <span class="comment">// Assignment</span>
|
|
<a name="l04687"></a>04687 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04688"></a><a class="code" href="a00256.html#a0c8dc2ef5b766a8b540668070c7e7a06">04688</a> <a class="code" href="a00256.html">iterator1</a> &<a class="code" href="a00256.html#a0c8dc2ef5b766a8b540668070c7e7a06">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00256.html">iterator1</a> &it) {
|
|
<a name="l04689"></a>04689 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l04690"></a>04690 <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> = it.<a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04691"></a>04691 <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> = it.<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>;
|
|
<a name="l04692"></a>04692 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04693"></a>04693 }
|
|
<a name="l04694"></a>04694
|
|
<a name="l04695"></a>04695 <span class="comment">// Comparison</span>
|
|
<a name="l04696"></a>04696 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04697"></a><a class="code" href="a00256.html#a7685ed6ad0ec8a1afd55f48899c88bb4">04697</a> <span class="keywordtype">bool</span> <a class="code" href="a00256.html#a7685ed6ad0ec8a1afd55f48899c88bb4">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00256.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04698"></a>04698 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04699"></a>04699 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> == it.<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04700"></a>04700 <span class="keywordflow">return</span> <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> == it.<a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04701"></a>04701 }
|
|
<a name="l04702"></a>04702 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04703"></a><a class="code" href="a00256.html#aba0413ca41fecf55378ecb22f7af4689">04703</a> <span class="keywordtype">bool</span> <a class="code" href="a00256.html#aba0413ca41fecf55378ecb22f7af4689">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00256.html">iterator1</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04704"></a>04704 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04705"></a>04705 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a> == it.<a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04706"></a>04706 <span class="keywordflow">return</span> <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a> < it.<a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04707"></a>04707 }
|
|
<a name="l04708"></a>04708
|
|
<a name="l04709"></a>04709 <span class="keyword">private</span>:
|
|
<a name="l04710"></a><a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">04710</a> <a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">subiterator1_type</a> <a class="code" href="a00256.html#a42d22fcc10d1daa82f093a64b077d35a">it1_</a>;
|
|
<a name="l04711"></a><a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">04711</a> <a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">subiterator2_type</a> <a class="code" href="a00256.html#a8ad5d93fe480b47dd17dd1449a3804ff">it2_</a>;
|
|
<a name="l04712"></a>04712
|
|
<a name="l04713"></a><a class="code" href="a00256.html#a2217ee3466e64c9a0105ef5d64ba6a11">04713</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00254.html">const_iterator1</a>;
|
|
<a name="l04714"></a>04714 };
|
|
<a name="l04715"></a>04715 <span class="preprocessor">#endif</span>
|
|
<a name="l04716"></a>04716 <span class="preprocessor"></span>
|
|
<a name="l04717"></a>04717 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04718"></a><a class="code" href="a00253.html#a5a7502efedaa3e206fab3d90fec511d6">04718</a> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00253.html#a5a7502efedaa3e206fab3d90fec511d6">begin1</a> () {
|
|
<a name="l04719"></a>04719 <span class="keywordflow">return</span> <a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">find1</a> (0, 0, 0);
|
|
<a name="l04720"></a>04720 }
|
|
<a name="l04721"></a>04721 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04722"></a><a class="code" href="a00253.html#a3074ca4fbf4a03c6011c5c140e3ca9e6">04722</a> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00253.html#a3074ca4fbf4a03c6011c5c140e3ca9e6">end1</a> () {
|
|
<a name="l04723"></a>04723 <span class="keywordflow">return</span> <a class="code" href="a00253.html#ad10e11894d1f3598aef4c2ff3c9704e1">find1</a> (0, <a class="code" href="a00253.html#a8baf2c06434bf70bc3f8e2eb3c866f3d">size1</a> (), 0);
|
|
<a name="l04724"></a>04724 }
|
|
<a name="l04725"></a>04725
|
|
<a name="l04726"></a>04726 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04727"></a><a class="code" href="a00255.html">04727</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00255.html">const_iterator2</a>:
|
|
<a name="l04728"></a>04728 <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><matrix_indirect>,
|
|
<a name="l04729"></a>04729 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::const_iterator2::iterator_category>::template
|
|
<a name="l04730"></a>04730 iterator_base<const_iterator2, value_type>::type {
|
|
<a name="l04731"></a>04731 <span class="keyword">public</span>:
|
|
<a name="l04732"></a><a class="code" href="a00255.html#a585d10f8ba6f186acebf5d4cb820ab15">04732</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::value_type <a class="code" href="a00255.html#a585d10f8ba6f186acebf5d4cb820ab15">value_type</a>;
|
|
<a name="l04733"></a><a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">04733</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::difference_type <a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">difference_type</a>;
|
|
<a name="l04734"></a><a class="code" href="a00255.html#ac2453c5bc2d7661eae31c32658d5a0cf">04734</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_reference <a class="code" href="a00255.html#ac2453c5bc2d7661eae31c32658d5a0cf">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l04735"></a><a class="code" href="a00255.html#a682f437071e00a4e6313a57fd97f2029">04735</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::const_iterator2::pointer <a class="code" href="a00255.html#a682f437071e00a4e6313a57fd97f2029">pointer</a>;
|
|
<a name="l04736"></a><a class="code" href="a00255.html#a62ae38b97a1c89c34f9587b20e3db2c9">04736</a> <span class="keyword">typedef</span> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00255.html#a62ae38b97a1c89c34f9587b20e3db2c9">dual_iterator_type</a>;
|
|
<a name="l04737"></a><a class="code" href="a00255.html#a8dcef033aef9c2ad8b31414c347e8307">04737</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00255.html#a8dcef033aef9c2ad8b31414c347e8307">dual_reverse_iterator_type</a>;
|
|
<a name="l04738"></a>04738
|
|
<a name="l04739"></a>04739 <span class="comment">// Construction and destruction</span>
|
|
<a name="l04740"></a>04740 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04741"></a><a class="code" href="a00255.html#a8d594374d763491651f4c7751cc68b98">04741</a> <a class="code" href="a00255.html#a8d594374d763491651f4c7751cc68b98">const_iterator2</a> ():
|
|
<a name="l04742"></a>04742 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (), <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> (), <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> () {}
|
|
<a name="l04743"></a>04743 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04744"></a><a class="code" href="a00255.html#a00817c2f1a1f057ab6c8e203d88fe2a0">04744</a> <a class="code" href="a00255.html#a8d594374d763491651f4c7751cc68b98">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> &mi, <span class="keyword">const</span> <a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">const_subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">const_subiterator2_type</a> &it2):
|
|
<a name="l04745"></a>04745 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (mi), <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> (it1), <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> (it2) {}
|
|
<a name="l04746"></a>04746 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04747"></a><a class="code" href="a00255.html#ae83bc588eda8c2e3ac97e5f04c916797">04747</a> <a class="code" href="a00255.html#a8d594374d763491651f4c7751cc68b98">const_iterator2</a> (<span class="keyword">const</span> <a class="code" href="a00257.html">iterator2</a> &it):
|
|
<a name="l04748"></a>04748 <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="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (it ()), <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> (it.<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>), <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> (it.<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>) {}
|
|
<a name="l04749"></a>04749
|
|
<a name="l04750"></a>04750 <span class="comment">// Arithmetic</span>
|
|
<a name="l04751"></a>04751 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04752"></a><a class="code" href="a00255.html#a3f855aad8db7ab1debe2a0f1644c0952">04752</a> <a class="code" href="a00255.html">const_iterator2</a> &<a class="code" href="a00255.html#a3f855aad8db7ab1debe2a0f1644c0952">operator ++ </a>() {
|
|
<a name="l04753"></a>04753 ++ <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04754"></a>04754 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04755"></a>04755 }
|
|
<a name="l04756"></a>04756 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04757"></a><a class="code" href="a00255.html#a772ee6dedaef627419c8978cd5094b35">04757</a> <a class="code" href="a00255.html">const_iterator2</a> &<a class="code" href="a00255.html#a772ee6dedaef627419c8978cd5094b35">operator -- </a>() {
|
|
<a name="l04758"></a>04758 -- <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04759"></a>04759 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04760"></a>04760 }
|
|
<a name="l04761"></a>04761 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04762"></a><a class="code" href="a00255.html#a1634af7f54b202e4577a919dedbbf3ba">04762</a> <a class="code" href="a00255.html">const_iterator2</a> &<a class="code" href="a00255.html#a1634af7f54b202e4577a919dedbbf3ba">operator += </a>(<a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">difference_type</a> n) {
|
|
<a name="l04763"></a>04763 <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> += n;
|
|
<a name="l04764"></a>04764 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04765"></a>04765 }
|
|
<a name="l04766"></a>04766 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04767"></a><a class="code" href="a00255.html#a652683ef855e795918303776b7b4a02a">04767</a> <a class="code" href="a00255.html">const_iterator2</a> &<a class="code" href="a00255.html#a652683ef855e795918303776b7b4a02a">operator -= </a>(<a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">difference_type</a> n) {
|
|
<a name="l04768"></a>04768 <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> -= n;
|
|
<a name="l04769"></a>04769 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04770"></a>04770 }
|
|
<a name="l04771"></a>04771 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04772"></a><a class="code" href="a00255.html#a7d27fd39a4a94a1f4c3eeafce21e0542">04772</a> <a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">difference_type</a> <a class="code" href="a00255.html#a7d27fd39a4a94a1f4c3eeafce21e0542">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00255.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04773"></a>04773 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04774"></a>04774 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> == it.<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04775"></a>04775 <span class="keywordflow">return</span> <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> - it.<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04776"></a>04776 }
|
|
<a name="l04777"></a>04777
|
|
<a name="l04778"></a>04778 <span class="comment">// Dereference</span>
|
|
<a name="l04779"></a>04779 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04780"></a><a class="code" href="a00255.html#a8168592fd6db0f035d0984c4360fa0cd">04780</a> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a> <a class="code" href="a00255.html#a8168592fd6db0f035d0984c4360fa0cd">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l04781"></a>04781 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l04782"></a>04782 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (*<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>, *<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>);
|
|
<a name="l04783"></a>04783 }
|
|
<a name="l04784"></a>04784 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04785"></a><a class="code" href="a00255.html#a6932f2a8e91531054051b1cd11be6c2b">04785</a> <a class="code" href="a00253.html#acc074e20b1c3073a6d1240be58351ce6">const_reference</a> <a class="code" href="a00255.html#a6932f2a8e91531054051b1cd11be6c2b">operator [] </a>(<a class="code" href="a00255.html#a83328802181b8010ff82b8820d812bc4">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l04786"></a>04786 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l04787"></a>04787 }
|
|
<a name="l04788"></a>04788
|
|
<a name="l04789"></a>04789 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l04790"></a>04790 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04791"></a>04791 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04792"></a>04792 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04793"></a>04793 <span class="preprocessor">#endif</span>
|
|
<a name="l04794"></a><a class="code" href="a00255.html#a60b95c0d389f4f1067a10f10f490e158">04794</a> <span class="preprocessor"></span> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00255.html#a60b95c0d389f4f1067a10f10f490e158">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04795"></a>04795 <span class="keywordflow">return</span> <a class="code" href="a00254.html">const_iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> ().<a class="code" href="a00255.html#a60b95c0d389f4f1067a10f10f490e158">begin</a> (), <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>);
|
|
<a name="l04796"></a>04796 }
|
|
<a name="l04797"></a>04797 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04798"></a>04798 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04799"></a>04799 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04800"></a>04800 <span class="preprocessor">#endif</span>
|
|
<a name="l04801"></a><a class="code" href="a00255.html#ab827b2e3981d78a11deaeb49ba089daf">04801</a> <span class="preprocessor"></span> <a class="code" href="a00254.html">const_iterator1</a> <a class="code" href="a00255.html#ab827b2e3981d78a11deaeb49ba089daf">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04802"></a>04802 <span class="keywordflow">return</span> <a class="code" href="a00254.html">const_iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> ().<a class="code" href="a00255.html#ab827b2e3981d78a11deaeb49ba089daf">end</a> (), <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>);
|
|
<a name="l04803"></a>04803 }
|
|
<a name="l04804"></a>04804 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04805"></a>04805 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04806"></a>04806 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04807"></a>04807 <span class="preprocessor">#endif</span>
|
|
<a name="l04808"></a><a class="code" href="a00255.html#ad6cef968cf91f3f0965f8197193d558f">04808</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00255.html#ad6cef968cf91f3f0965f8197193d558f">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04809"></a>04809 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">const_reverse_iterator1</a> (<a class="code" href="a00255.html#ab827b2e3981d78a11deaeb49ba089daf">end</a> ());
|
|
<a name="l04810"></a>04810 }
|
|
<a name="l04811"></a>04811 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04812"></a>04812 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04813"></a>04813 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04814"></a>04814 <span class="preprocessor">#endif</span>
|
|
<a name="l04815"></a><a class="code" href="a00255.html#a129f2ada383c991f69e9893f5b8e340c">04815</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00255.html#a129f2ada383c991f69e9893f5b8e340c">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04816"></a>04816 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">const_reverse_iterator1</a> (<a class="code" href="a00255.html#a60b95c0d389f4f1067a10f10f490e158">begin</a> ());
|
|
<a name="l04817"></a>04817 }
|
|
<a name="l04818"></a>04818 <span class="preprocessor">#endif</span>
|
|
<a name="l04819"></a>04819 <span class="preprocessor"></span>
|
|
<a name="l04820"></a>04820 <span class="comment">// Indices</span>
|
|
<a name="l04821"></a>04821 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04822"></a><a class="code" href="a00255.html#ab8fd08d0cf8c35b4b1714b1426a5e560">04822</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00255.html#ab8fd08d0cf8c35b4b1714b1426a5e560">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04823"></a>04823 <span class="keywordflow">return</span> <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>.index ();
|
|
<a name="l04824"></a>04824 }
|
|
<a name="l04825"></a>04825 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04826"></a><a class="code" href="a00255.html#a0429cc5d1eccb9896ba104b5137a9a98">04826</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00255.html#a0429cc5d1eccb9896ba104b5137a9a98">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04827"></a>04827 <span class="keywordflow">return</span> <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>.index ();
|
|
<a name="l04828"></a>04828 }
|
|
<a name="l04829"></a>04829
|
|
<a name="l04830"></a>04830 <span class="comment">// Assignment</span>
|
|
<a name="l04831"></a>04831 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04832"></a><a class="code" href="a00255.html#a3fd9db590c39d469bdb1e29c911646f9">04832</a> <a class="code" href="a00255.html">const_iterator2</a> &<a class="code" href="a00255.html#a3fd9db590c39d469bdb1e29c911646f9">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00255.html">const_iterator2</a> &it) {
|
|
<a name="l04833"></a>04833 <a class="code" href="a00069.html#ab14250fc4fe5b9bcab4eb9fba8a5b5f8">container_const_reference<self_type>::assign</a> (&it ());
|
|
<a name="l04834"></a>04834 <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> = it.<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>;
|
|
<a name="l04835"></a>04835 <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> = it.<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04836"></a>04836 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04837"></a>04837 }
|
|
<a name="l04838"></a>04838
|
|
<a name="l04839"></a>04839 <span class="comment">// Comparison</span>
|
|
<a name="l04840"></a>04840 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04841"></a><a class="code" href="a00255.html#a787d44cce7e0c7dca9f83d0d6ed23b57">04841</a> <span class="keywordtype">bool</span> <a class="code" href="a00255.html#a787d44cce7e0c7dca9f83d0d6ed23b57">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00255.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04842"></a>04842 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04843"></a>04843 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> == it.<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04844"></a>04844 <span class="keywordflow">return</span> <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> == it.<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04845"></a>04845 }
|
|
<a name="l04846"></a>04846 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04847"></a><a class="code" href="a00255.html#a52f8656f28542947758766c7fffa1feb">04847</a> <span class="keywordtype">bool</span> <a class="code" href="a00255.html#a52f8656f28542947758766c7fffa1feb">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00255.html">const_iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04848"></a>04848 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00069.html#a939d3a4b01822247f4a6963d9deb0ca2">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04849"></a>04849 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a> == it.<a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04850"></a>04850 <span class="keywordflow">return</span> <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a> < it.<a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04851"></a>04851 }
|
|
<a name="l04852"></a>04852
|
|
<a name="l04853"></a>04853 <span class="keyword">private</span>:
|
|
<a name="l04854"></a><a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">04854</a> <a class="code" href="a00253.html#a40eea97e2ed84d9d80666d8acb54ea91">const_subiterator1_type</a> <a class="code" href="a00255.html#a54adb282bb7a6636e01215e98dc365d1">it1_</a>;
|
|
<a name="l04855"></a><a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">04855</a> <a class="code" href="a00253.html#a311eec3bd48705ac0f9e94933b15dbb0">const_subiterator2_type</a> <a class="code" href="a00255.html#ab8fe9bc7331db5a9f95eb3b3aedc2e2c">it2_</a>;
|
|
<a name="l04856"></a>04856 };
|
|
<a name="l04857"></a>04857 <span class="preprocessor">#endif</span>
|
|
<a name="l04858"></a>04858 <span class="preprocessor"></span>
|
|
<a name="l04859"></a>04859 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04860"></a><a class="code" href="a00253.html#a4d35b788bf97ff6c2741c9bc8a0037bf">04860</a> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00253.html#a4d35b788bf97ff6c2741c9bc8a0037bf">begin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04861"></a>04861 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">find2</a> (0, 0, 0);
|
|
<a name="l04862"></a>04862 }
|
|
<a name="l04863"></a>04863 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04864"></a><a class="code" href="a00253.html#a578cde22cd6364acad410038cf46ba9b">04864</a> <a class="code" href="a00255.html">const_iterator2</a> <a class="code" href="a00253.html#a578cde22cd6364acad410038cf46ba9b">end2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04865"></a>04865 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">find2</a> (0, 0, <a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ());
|
|
<a name="l04866"></a>04866 }
|
|
<a name="l04867"></a>04867
|
|
<a name="l04868"></a>04868 <span class="preprocessor">#ifndef BOOST_UBLAS_USE_INDEXED_ITERATOR</span>
|
|
<a name="l04869"></a><a class="code" href="a00257.html">04869</a> <span class="preprocessor"></span> <span class="keyword">class </span><a class="code" href="a00257.html">iterator2</a>:
|
|
<a name="l04870"></a>04870 <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><matrix_indirect>,
|
|
<a name="l04871"></a>04871 <span class="keyword">public</span> <a class="code" href="a00179.html">iterator_base_traits</a><typename M::iterator2::iterator_category>::template
|
|
<a name="l04872"></a>04872 iterator_base<iterator2, value_type>::type {
|
|
<a name="l04873"></a>04873 <span class="keyword">public</span>:
|
|
<a name="l04874"></a><a class="code" href="a00257.html#a224989cdaa5a514530ba24477fa07037">04874</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::value_type <a class="code" href="a00257.html#a224989cdaa5a514530ba24477fa07037">value_type</a>;
|
|
<a name="l04875"></a><a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">04875</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::difference_type <a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">difference_type</a>;
|
|
<a name="l04876"></a><a class="code" href="a00257.html#a4b5fba3bca5b945ee042162b78701a4c">04876</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::reference <a class="code" href="a00257.html#a4b5fba3bca5b945ee042162b78701a4c">reference</a>; <span class="comment">//FIXME due to indexing access</span>
|
|
<a name="l04877"></a><a class="code" href="a00257.html#aaf65d66947dd86432f899c41741aadab">04877</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> M::iterator2::pointer <a class="code" href="a00257.html#aaf65d66947dd86432f899c41741aadab">pointer</a>;
|
|
<a name="l04878"></a><a class="code" href="a00257.html#a0baf159bdcce20a3d607355c6931666c">04878</a> <span class="keyword">typedef</span> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00257.html#a0baf159bdcce20a3d607355c6931666c">dual_iterator_type</a>;
|
|
<a name="l04879"></a><a class="code" href="a00257.html#ab26c93ee0e7fb916038e20a260f19365">04879</a> <span class="keyword">typedef</span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00257.html#ab26c93ee0e7fb916038e20a260f19365">dual_reverse_iterator_type</a>;
|
|
<a name="l04880"></a>04880
|
|
<a name="l04881"></a>04881 <span class="comment">// Construction and destruction</span>
|
|
<a name="l04882"></a>04882 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04883"></a><a class="code" href="a00257.html#a1c5830e757220b166117bca9f07ba818">04883</a> <a class="code" href="a00257.html#a1c5830e757220b166117bca9f07ba818">iterator2</a> ():
|
|
<a name="l04884"></a>04884 <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><<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (), <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> (), <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> () {}
|
|
<a name="l04885"></a>04885 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04886"></a><a class="code" href="a00257.html#a94febcb97e2ec707ffb041ec999db8b7">04886</a> <a class="code" href="a00257.html#a1c5830e757220b166117bca9f07ba818">iterator2</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a> &mi, <span class="keyword">const</span> <a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">subiterator1_type</a> &it1, <span class="keyword">const</span> <a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">subiterator2_type</a> &it2):
|
|
<a name="l04887"></a>04887 <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><<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>> (mi), <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> (it1), <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> (it2) {}
|
|
<a name="l04888"></a>04888
|
|
<a name="l04889"></a>04889 <span class="comment">// Arithmetic</span>
|
|
<a name="l04890"></a>04890 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04891"></a><a class="code" href="a00257.html#a9f562e0614be8cd26839fb1ce5e95079">04891</a> <a class="code" href="a00257.html">iterator2</a> &<a class="code" href="a00257.html#a9f562e0614be8cd26839fb1ce5e95079">operator ++ </a>() {
|
|
<a name="l04892"></a>04892 ++ <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04893"></a>04893 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04894"></a>04894 }
|
|
<a name="l04895"></a>04895 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04896"></a><a class="code" href="a00257.html#af46adc0bb927a99d0f4f88937a64556e">04896</a> <a class="code" href="a00257.html">iterator2</a> &<a class="code" href="a00257.html#af46adc0bb927a99d0f4f88937a64556e">operator -- </a>() {
|
|
<a name="l04897"></a>04897 -- <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04898"></a>04898 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04899"></a>04899 }
|
|
<a name="l04900"></a>04900 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04901"></a><a class="code" href="a00257.html#a25014e180aa550c7ef88ca58d1372ee7">04901</a> <a class="code" href="a00257.html">iterator2</a> &<a class="code" href="a00257.html#a25014e180aa550c7ef88ca58d1372ee7">operator += </a>(<a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">difference_type</a> n) {
|
|
<a name="l04902"></a>04902 <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> += n;
|
|
<a name="l04903"></a>04903 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04904"></a>04904 }
|
|
<a name="l04905"></a>04905 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04906"></a><a class="code" href="a00257.html#a3b2ec806243661610deac120e742ddaa">04906</a> <a class="code" href="a00257.html">iterator2</a> &<a class="code" href="a00257.html#a3b2ec806243661610deac120e742ddaa">operator -= </a>(<a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">difference_type</a> n) {
|
|
<a name="l04907"></a>04907 <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> -= n;
|
|
<a name="l04908"></a>04908 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04909"></a>04909 }
|
|
<a name="l04910"></a>04910 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04911"></a><a class="code" href="a00257.html#ade45ce4abfb063730132c1891a59e791">04911</a> <a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">difference_type</a> <a class="code" href="a00257.html#ade45ce4abfb063730132c1891a59e791">operator - </a>(<span class="keyword">const</span> <a class="code" href="a00257.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04912"></a>04912 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04913"></a>04913 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> == it.<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04914"></a>04914 <span class="keywordflow">return</span> <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> - it.<a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04915"></a>04915 }
|
|
<a name="l04916"></a>04916
|
|
<a name="l04917"></a>04917 <span class="comment">// Dereference</span>
|
|
<a name="l04918"></a>04918 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04919"></a><a class="code" href="a00257.html#af5f679312dc8ff38fbb61ed7fb14e1e8">04919</a> <a class="code" href="a00257.html#a4b5fba3bca5b945ee042162b78701a4c">reference</a> <a class="code" href="a00257.html#af5f679312dc8ff38fbb61ed7fb14e1e8">operator * </a>()<span class="keyword"> const </span>{
|
|
<a name="l04920"></a>04920 <span class="comment">// FIXME replace find with at_element</span>
|
|
<a name="l04921"></a>04921 <span class="keywordflow">return</span> (*<span class="keyword">this</span>) ().<a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a> (*<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>, *<a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>);
|
|
<a name="l04922"></a>04922 }
|
|
<a name="l04923"></a>04923 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04924"></a><a class="code" href="a00257.html#a95f1d21a5258a2ada0029ca0c8148981">04924</a> <a class="code" href="a00257.html#a4b5fba3bca5b945ee042162b78701a4c">reference</a> <a class="code" href="a00257.html#a95f1d21a5258a2ada0029ca0c8148981">operator [] </a>(<a class="code" href="a00257.html#ad5d47bf719c875beb7a7ce812f746f45">difference_type</a> n)<span class="keyword"> const </span>{
|
|
<a name="l04925"></a>04925 <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + n);
|
|
<a name="l04926"></a>04926 }
|
|
<a name="l04927"></a>04927
|
|
<a name="l04928"></a>04928 <span class="preprocessor">#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION</span>
|
|
<a name="l04929"></a>04929 <span class="preprocessor"></span> <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04930"></a>04930 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04931"></a>04931 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04932"></a>04932 <span class="preprocessor">#endif</span>
|
|
<a name="l04933"></a><a class="code" href="a00257.html#a1b7c982bad07db8f5a371b8a5c44533c">04933</a> <span class="preprocessor"></span> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00257.html#a1b7c982bad07db8f5a371b8a5c44533c">begin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04934"></a>04934 <span class="keywordflow">return</span> <a class="code" href="a00256.html">iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> ().<a class="code" href="a00257.html#a1b7c982bad07db8f5a371b8a5c44533c">begin</a> (), <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>);
|
|
<a name="l04935"></a>04935 }
|
|
<a name="l04936"></a>04936 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04937"></a>04937 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04938"></a>04938 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04939"></a>04939 <span class="preprocessor">#endif</span>
|
|
<a name="l04940"></a><a class="code" href="a00257.html#ae2d776466d7c22455ba90ee4afb741aa">04940</a> <span class="preprocessor"></span> <a class="code" href="a00256.html">iterator1</a> <a class="code" href="a00257.html#ae2d776466d7c22455ba90ee4afb741aa">end</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04941"></a>04941 <span class="keywordflow">return</span> <a class="code" href="a00256.html">iterator1</a> ((*<span class="keyword">this</span>) (), <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> ().<a class="code" href="a00257.html#ae2d776466d7c22455ba90ee4afb741aa">end</a> (), <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>);
|
|
<a name="l04942"></a>04942 }
|
|
<a name="l04943"></a>04943 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04944"></a>04944 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04945"></a>04945 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04946"></a>04946 <span class="preprocessor">#endif</span>
|
|
<a name="l04947"></a><a class="code" href="a00257.html#adcb663a6cd062238c97d58c95a8147cc">04947</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00257.html#adcb663a6cd062238c97d58c95a8147cc">rbegin</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04948"></a>04948 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">reverse_iterator1</a> (<a class="code" href="a00257.html#ae2d776466d7c22455ba90ee4afb741aa">end</a> ());
|
|
<a name="l04949"></a>04949 }
|
|
<a name="l04950"></a>04950 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04951"></a>04951 <span class="preprocessor">#ifdef BOOST_UBLAS_MSVC_NESTED_CLASS_RELATION</span>
|
|
<a name="l04952"></a>04952 <span class="preprocessor"></span> <span class="keyword">typename</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">self_type</a>::
|
|
<a name="l04953"></a>04953 <span class="preprocessor">#endif</span>
|
|
<a name="l04954"></a><a class="code" href="a00257.html#a00e441f1b8b4e1fb2354b8e2cff5514b">04954</a> <span class="preprocessor"></span> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00257.html#a00e441f1b8b4e1fb2354b8e2cff5514b">rend</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04955"></a>04955 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">reverse_iterator1</a> (<a class="code" href="a00257.html#a1b7c982bad07db8f5a371b8a5c44533c">begin</a> ());
|
|
<a name="l04956"></a>04956 }
|
|
<a name="l04957"></a>04957 <span class="preprocessor">#endif</span>
|
|
<a name="l04958"></a>04958 <span class="preprocessor"></span>
|
|
<a name="l04959"></a>04959 <span class="comment">// Indices</span>
|
|
<a name="l04960"></a>04960 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04961"></a><a class="code" href="a00257.html#ad33bef38720939246d413b14d77a6db3">04961</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00257.html#ad33bef38720939246d413b14d77a6db3">index1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04962"></a>04962 <span class="keywordflow">return</span> <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>.index ();
|
|
<a name="l04963"></a>04963 }
|
|
<a name="l04964"></a>04964 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04965"></a><a class="code" href="a00257.html#af71643fd463dab06d4cf2f913f15b251">04965</a> <a class="code" href="a00253.html#a42c1ca04a163f213bc21ca0c99059ef2">size_type</a> <a class="code" href="a00257.html#af71643fd463dab06d4cf2f913f15b251">index2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l04966"></a>04966 <span class="keywordflow">return</span> <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>.index ();
|
|
<a name="l04967"></a>04967 }
|
|
<a name="l04968"></a>04968
|
|
<a name="l04969"></a>04969 <span class="comment">// Assignment</span>
|
|
<a name="l04970"></a>04970 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04971"></a><a class="code" href="a00257.html#a87dbcbaa61549bc099337c6d6cd9ce42">04971</a> <a class="code" href="a00257.html">iterator2</a> &<a class="code" href="a00257.html#a87dbcbaa61549bc099337c6d6cd9ce42">operator = </a>(<span class="keyword">const</span> <a class="code" href="a00257.html">iterator2</a> &it) {
|
|
<a name="l04972"></a>04972 <a class="code" href="a00070.html#a8ee5b7e2ac6a45d59e4873df582a02b2">container_reference<self_type>::assign</a> (&it ());
|
|
<a name="l04973"></a>04973 <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> = it.<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>;
|
|
<a name="l04974"></a>04974 <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> = it.<a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04975"></a>04975 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
|
|
<a name="l04976"></a>04976 }
|
|
<a name="l04977"></a>04977
|
|
<a name="l04978"></a>04978 <span class="comment">// Comparison</span>
|
|
<a name="l04979"></a>04979 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04980"></a><a class="code" href="a00257.html#a8b9b44c1006128469a40e4ca39b732ff">04980</a> <span class="keywordtype">bool</span> <a class="code" href="a00257.html#a8b9b44c1006128469a40e4ca39b732ff">operator == </a>(<span class="keyword">const</span> <a class="code" href="a00257.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04981"></a>04981 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04982"></a>04982 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> == it.<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04983"></a>04983 <span class="keywordflow">return</span> <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> == it.<a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04984"></a>04984 }
|
|
<a name="l04985"></a>04985 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l04986"></a><a class="code" href="a00257.html#a5212986419c81874f38ddf7d529dd3f3">04986</a> <span class="keywordtype">bool</span> <a class="code" href="a00257.html#a5212986419c81874f38ddf7d529dd3f3">operator < </a>(<span class="keyword">const</span> <a class="code" href="a00257.html">iterator2</a> &it)<span class="keyword"> const </span>{
|
|
<a name="l04987"></a>04987 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> ((*<span class="keyword">this</span>) ().<a class="code" href="a00070.html#a16e9d44404209c059f4773446faa28c8">same_closure</a> (it ()), <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04988"></a>04988 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a> == it.<a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>, <a class="code" href="a00132.html">external_logic</a> ());
|
|
<a name="l04989"></a>04989 <span class="keywordflow">return</span> <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a> < it.<a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04990"></a>04990 }
|
|
<a name="l04991"></a>04991
|
|
<a name="l04992"></a>04992 <span class="keyword">private</span>:
|
|
<a name="l04993"></a><a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">04993</a> <a class="code" href="a00253.html#ad8a5933dc6c6331f9169ae07c09ce396">subiterator1_type</a> <a class="code" href="a00257.html#ad926ada833e4dbaa379e3b6dc2985dfe">it1_</a>;
|
|
<a name="l04994"></a><a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">04994</a> <a class="code" href="a00253.html#ad43e57247ac0b87b3850fc527b3eab27">subiterator2_type</a> <a class="code" href="a00257.html#a0a427873b8eda50950ce1b468a6683cc">it2_</a>;
|
|
<a name="l04995"></a>04995
|
|
<a name="l04996"></a><a class="code" href="a00257.html#aac78e9ee2b65e927cfcd66579833084f">04996</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="a00255.html">const_iterator2</a>;
|
|
<a name="l04997"></a>04997 };
|
|
<a name="l04998"></a>04998 <span class="preprocessor">#endif</span>
|
|
<a name="l04999"></a>04999 <span class="preprocessor"></span>
|
|
<a name="l05000"></a>05000 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05001"></a><a class="code" href="a00253.html#ac4426fb3e324fed31bfb68a8478e171d">05001</a> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00253.html#ac4426fb3e324fed31bfb68a8478e171d">begin2</a> () {
|
|
<a name="l05002"></a>05002 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">find2</a> (0, 0, 0);
|
|
<a name="l05003"></a>05003 }
|
|
<a name="l05004"></a>05004 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05005"></a><a class="code" href="a00253.html#ad5ce82f3ccac762da697322c9affff57">05005</a> <a class="code" href="a00257.html">iterator2</a> <a class="code" href="a00253.html#ad5ce82f3ccac762da697322c9affff57">end2</a> () {
|
|
<a name="l05006"></a>05006 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a2353bdd8ca98f80a2adfad20ec6f08e8">find2</a> (0, 0, <a class="code" href="a00253.html#a485f1b1c24681341201a894baabe70e0">size2</a> ());
|
|
<a name="l05007"></a>05007 }
|
|
<a name="l05008"></a>05008
|
|
<a name="l05009"></a>05009 <span class="comment">// Reverse iterators</span>
|
|
<a name="l05010"></a>05010
|
|
<a name="l05011"></a>05011 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05012"></a><a class="code" href="a00253.html#a8c7b63d8c8dca6d8ad3fe3ba18260481">05012</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00253.html#a8c7b63d8c8dca6d8ad3fe3ba18260481">rbegin1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l05013"></a>05013 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">const_reverse_iterator1</a> (<a class="code" href="a00253.html#ae2c2e3ff2c3781a79fcfa002c5107f82">end1</a> ());
|
|
<a name="l05014"></a>05014 }
|
|
<a name="l05015"></a>05015 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05016"></a><a class="code" href="a00253.html#a89107d785e171760880e47cfa0b3c479">05016</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator1</a> <a class="code" href="a00253.html#a89107d785e171760880e47cfa0b3c479">rend1</a> ()<span class="keyword"> const </span>{
|
|
<a name="l05017"></a>05017 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a9663445f73a60c8f4b7e0ce71f4f7bf2">const_reverse_iterator1</a> (<a class="code" href="a00253.html#a264ba6347017a0c471548dbd4d185614">begin1</a> ());
|
|
<a name="l05018"></a>05018 }
|
|
<a name="l05019"></a>05019
|
|
<a name="l05020"></a>05020 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05021"></a><a class="code" href="a00253.html#ad3c2c410c7acf881219ad33a543b0684">05021</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00253.html#ad3c2c410c7acf881219ad33a543b0684">rbegin1</a> () {
|
|
<a name="l05022"></a>05022 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">reverse_iterator1</a> (<a class="code" href="a00253.html#ae2c2e3ff2c3781a79fcfa002c5107f82">end1</a> ());
|
|
<a name="l05023"></a>05023 }
|
|
<a name="l05024"></a>05024 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05025"></a><a class="code" href="a00253.html#ace128e9cf897d461a9b66e691ab34980">05025</a> <a class="code" href="a00367.html" title="1st base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator1</a> <a class="code" href="a00253.html#ace128e9cf897d461a9b66e691ab34980">rend1</a> () {
|
|
<a name="l05026"></a>05026 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5bba92388407dbc068733a10cbde9cc7">reverse_iterator1</a> (<a class="code" href="a00253.html#a264ba6347017a0c471548dbd4d185614">begin1</a> ());
|
|
<a name="l05027"></a>05027 }
|
|
<a name="l05028"></a>05028
|
|
<a name="l05029"></a>05029 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05030"></a><a class="code" href="a00253.html#a0cc5fd9b3bf857166466e94b1db72955">05030</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00253.html#a0cc5fd9b3bf857166466e94b1db72955">rbegin2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l05031"></a>05031 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">const_reverse_iterator2</a> (<a class="code" href="a00253.html#a578cde22cd6364acad410038cf46ba9b">end2</a> ());
|
|
<a name="l05032"></a>05032 }
|
|
<a name="l05033"></a>05033 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05034"></a><a class="code" href="a00253.html#a208d22b103999a3d3d70495e6ec9be55">05034</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">const_reverse_iterator2</a> <a class="code" href="a00253.html#a208d22b103999a3d3d70495e6ec9be55">rend2</a> ()<span class="keyword"> const </span>{
|
|
<a name="l05035"></a>05035 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a5fa5502905bc2084c3793f57aa55763e">const_reverse_iterator2</a> (<a class="code" href="a00253.html#a4d35b788bf97ff6c2741c9bc8a0037bf">begin2</a> ());
|
|
<a name="l05036"></a>05036 }
|
|
<a name="l05037"></a>05037
|
|
<a name="l05038"></a>05038 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05039"></a><a class="code" href="a00253.html#a23b6f2beeb8c5843c284912e1498ad5b">05039</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00253.html#a23b6f2beeb8c5843c284912e1498ad5b">rbegin2</a> () {
|
|
<a name="l05040"></a>05040 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">reverse_iterator2</a> (<a class="code" href="a00253.html#a578cde22cd6364acad410038cf46ba9b">end2</a> ());
|
|
<a name="l05041"></a>05041 }
|
|
<a name="l05042"></a>05042 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05043"></a><a class="code" href="a00253.html#a2d9bcb059218cc630722db6392404b86">05043</a> <a class="code" href="a00368.html" title="2nd base class of all matrix reverse iterators. (non-MSVC version)">reverse_iterator2</a> <a class="code" href="a00253.html#a2d9bcb059218cc630722db6392404b86">rend2</a> () {
|
|
<a name="l05044"></a>05044 <span class="keywordflow">return</span> <a class="code" href="a00253.html#a42a2b16d9b99fdd0f9d550b2b4b0efd0">reverse_iterator2</a> (<a class="code" href="a00253.html#a4d35b788bf97ff6c2741c9bc8a0037bf">begin2</a> ());
|
|
<a name="l05045"></a>05045 }
|
|
<a name="l05046"></a>05046
|
|
<a name="l05047"></a>05047 <span class="keyword">private</span>:
|
|
<a name="l05048"></a><a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">05048</a> <a class="code" href="a00253.html#a595603ee5aee2cbed985e483d39a54cc">matrix_closure_type</a> <a class="code" href="a00253.html#a35007c0e6f1c0684d0335e28a88d25ad">data_</a>;
|
|
<a name="l05049"></a><a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">05049</a> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> <a class="code" href="a00253.html#a74672f8d766407f14189f272c0c2976f">ia1_</a>;
|
|
<a name="l05050"></a><a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">05050</a> <a class="code" href="a00253.html#a99bb73bf657e7ba37dc4a65f494c5a07">indirect_array_type</a> <a class="code" href="a00253.html#add1792a727ad3995c27c57da9310f03e">ia2_</a>;
|
|
<a name="l05051"></a>05051 };
|
|
<a name="l05052"></a>05052
|
|
<a name="l05053"></a>05053 <span class="comment">// Projections</span>
|
|
<a name="l05054"></a>05054 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> A>
|
|
<a name="l05055"></a>05055 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05056"></a><a class="code" href="a00595.html#ab20b093b9e253f62c2c8d6afeb1641b3">05056</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, indirect_array<A></a> > <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia1, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia2) {
|
|
<a name="l05057"></a>05057 <span class="keywordflow">return</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, indirect_array<A></a> > (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, ia1, ia2);
|
|
<a name="l05058"></a>05058 }
|
|
<a name="l05059"></a>05059 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> A>
|
|
<a name="l05060"></a>05060 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05061"></a><a class="code" href="a00595.html#a03c7796133beea343a6c292a64d708d9">05061</a> <span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<const M, indirect_array<A></a> > <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> M &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia1, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia2) {
|
|
<a name="l05062"></a>05062 <span class="comment">// ISSUE was: return matrix_indirect<M, indirect_array<A> > (const_cast<M &> (data), ia1, ia2);</span>
|
|
<a name="l05063"></a>05063 <span class="keywordflow">return</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<const M, indirect_array<A></a> > (<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, ia1, ia2);
|
|
<a name="l05064"></a>05064 }
|
|
<a name="l05065"></a>05065 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l05066"></a>05066 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05067"></a><a class="code" href="a00595.html#abe55106b9ab4926e250fdf1b29659781">05067</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_indirect<M, IA>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_indirect<M, IA>::range_type</a> &r2) {
|
|
<a name="l05068"></a>05068 <span class="keywordflow">return</span> data.<a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">project</a> (r1, r2);
|
|
<a name="l05069"></a>05069 }
|
|
<a name="l05070"></a>05070 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l05071"></a>05071 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05072"></a><a class="code" href="a00595.html#aaef8cd73d0d4e6b2d30ae919769bd23e">05072</a> <span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_indirect<M, IA>::range_type</a> &r1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00001.html">matrix_indirect<M, IA>::range_type</a> &r2) {
|
|
<a name="l05073"></a>05073 <span class="keywordflow">return</span> data.<a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">project</a> (r1, r2);
|
|
<a name="l05074"></a>05074 }
|
|
<a name="l05075"></a>05075 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l05076"></a>05076 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05077"></a><a class="code" href="a00595.html#a0aab64e6e0e2012df287bace3318b088">05077</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_indirect<M, IA>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_indirect<M, IA>::slice_type</a> &s2) {
|
|
<a name="l05078"></a>05078 <span class="keywordflow">return</span> data.<a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">project</a> (s1, s2);
|
|
<a name="l05079"></a>05079 }
|
|
<a name="l05080"></a>05080 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> IA>
|
|
<a name="l05081"></a>05081 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05082"></a><a class="code" href="a00595.html#a9fcf99481ee151bb41a68990c6f0268e">05082</a> <span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, IA></a> &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_indirect<M, IA>::slice_type</a> &s1, <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="a00002.html">matrix_indirect<M, IA>::slice_type</a> &s2) {
|
|
<a name="l05083"></a>05083 <span class="keywordflow">return</span> data.<a class="code" href="a00253.html#a5d39fa0f615a04371969aa6636067a11">project</a> (s1, s2);
|
|
<a name="l05084"></a>05084 }
|
|
<a name="l05085"></a>05085 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> A>
|
|
<a name="l05086"></a>05086 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05087"></a><a class="code" href="a00595.html#adcd8711280c38410a6af32f493c714ab">05087</a> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, indirect_array<A></a> > <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M, <a class="code" href="a00176.html">indirect_array<A></a> > &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia1, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia2) {
|
|
<a name="l05088"></a>05088 <span class="keywordflow">return</span> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>.project (ia1, ia2);
|
|
<a name="l05089"></a>05089 }
|
|
<a name="l05090"></a>05090 <span class="keyword">template</span><<span class="keyword">class</span> M, <span class="keyword">class</span> A>
|
|
<a name="l05091"></a>05091 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l05092"></a><a class="code" href="a00595.html#a90465435680cc95cae4a89211d3802a1">05092</a> <span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect<M, indirect_array<A></a> > <a class="code" href="a00595.html#a4725b73798dad3ab53e7a4f4fdd964fb">project</a> (<span class="keyword">const</span> <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M, <a class="code" href="a00176.html">indirect_array<A></a> > &<a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia1, <span class="keyword">const</span> <a class="code" href="a00176.html">indirect_array<A></a> &ia2) {
|
|
<a name="l05093"></a>05093 <span class="keywordflow">return</span> <a class="code" href="a00658.html#a3e84c916285769d749fba583aec700de">data</a>.project (ia1, ia2);
|
|
<a name="l05094"></a>05094 }
|
|
<a name="l05095"></a>05095
|
|
<a name="l05097"></a>05097 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l05098"></a><a class="code" href="a00301.html">05098</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M> >
|
|
<a name="l05099"></a>05099 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {};
|
|
<a name="l05100"></a>05100 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l05101"></a><a class="code" href="a00295.html">05101</a> <span class="keyword">struct </span><a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< const <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M> >
|
|
<a name="l05102"></a>05102 : <a class="code" href="a00291.html" title="For the creation of temporary vectors in the assignment of proxies.">matrix_temporary_traits</a>< M > {};
|
|
<a name="l05103"></a>05103
|
|
<a name="l05104"></a>05104 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l05105"></a><a class="code" href="a00567.html">05105</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M> >
|
|
<a name="l05106"></a>05106 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {};
|
|
<a name="l05107"></a>05107 <span class="keyword">template</span> <<span class="keyword">class</span> M>
|
|
<a name="l05108"></a><a class="code" href="a00553.html">05108</a> <span class="keyword">struct </span><a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< const <a class="code" href="a00253.html" title="A matrix referencing a non continuous submatrix of elements given another matrix of indices...">matrix_indirect</a><M> >
|
|
<a name="l05109"></a>05109 : <a class="code" href="a00548.html" title="For the creation of temporary vectors in the assignment of proxies.">vector_temporary_traits</a>< M > {};
|
|
<a name="l05110"></a>05110
|
|
<a name="l05111"></a>05111 }}}
|
|
<a name="l05112"></a>05112
|
|
<a name="l05113"></a>05113 <span class="preprocessor">#endif</span>
|
|
</pre></div></div>
|
|
</div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="a00622.html">matrix_proxy.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>
|