mirror of
https://github.com/boostorg/ublas.git
synced 2026-02-22 03:42:19 +00:00
854 lines
108 KiB
HTML
854 lines
108 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: traits.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('a00639.html','');
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<h1>traits.hpp</h1> </div>
|
|
</div>
|
|
<div class="contents">
|
|
<a href="a00639.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_TRAITS_</span>
|
|
<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define _BOOST_UBLAS_TRAITS_</span>
|
|
<a name="l00015"></a>00015 <span class="preprocessor"></span>
|
|
<a name="l00016"></a>00016 <span class="preprocessor">#include <iterator></span>
|
|
<a name="l00017"></a>00017 <span class="preprocessor">#include <complex></span>
|
|
<a name="l00018"></a>00018 <span class="preprocessor">#include <boost/config/no_tr1/cmath.hpp></span>
|
|
<a name="l00019"></a>00019
|
|
<a name="l00020"></a>00020 <span class="preprocessor">#include <boost/numeric/ublas/detail/config.hpp></span>
|
|
<a name="l00021"></a>00021 <span class="preprocessor">#include <boost/numeric/ublas/detail/iterator.hpp></span>
|
|
<a name="l00022"></a>00022 <span class="preprocessor">#include <boost/numeric/ublas/detail/returntype_deduction.hpp></span>
|
|
<a name="l00023"></a>00023
|
|
<a name="l00024"></a>00024 <span class="preprocessor">#include <boost/type_traits.hpp></span>
|
|
<a name="l00025"></a>00025 <span class="preprocessor">#include <complex></span>
|
|
<a name="l00026"></a>00026 <span class="preprocessor">#include <boost/typeof/typeof.hpp></span>
|
|
<a name="l00027"></a>00027 <span class="preprocessor">#include <boost/utility/enable_if.hpp></span>
|
|
<a name="l00028"></a>00028 <span class="preprocessor">#include <boost/type_traits/is_float.hpp></span>
|
|
<a name="l00029"></a>00029 <span class="preprocessor">#include <boost/type_traits/is_integral.hpp></span>
|
|
<a name="l00030"></a>00030 <span class="preprocessor">#include <boost/mpl/and.hpp></span>
|
|
<a name="l00031"></a>00031
|
|
<a name="l00032"></a>00032 <span class="comment">// anonymous namespace to avoid ADL issues</span>
|
|
<a name="l00033"></a><a class="code" href="a00647.html">00033</a> <span class="keyword">namespace </span>{
|
|
<a name="l00034"></a><a class="code" href="a00647.html#af9b8ac795358ea0bc998eea69cffdfcc">00034</a> <span class="keyword">template</span><<span class="keyword">class</span> T> T <a class="code" href="a00647.html#af9b8ac795358ea0bc998eea69cffdfcc">boost_numeric_ublas_sqrt</a> (<span class="keyword">const</span> T& t) {
|
|
<a name="l00035"></a>00035 <span class="keyword">using namespace </span>std;
|
|
<a name="l00036"></a>00036 <span class="comment">// we'll find either std::sqrt or else another version via ADL:</span>
|
|
<a name="l00037"></a>00037 <span class="keywordflow">return</span> sqrt (t);
|
|
<a name="l00038"></a>00038 }
|
|
<a name="l00039"></a><a class="code" href="a00647.html#adf9a939b7a7ee683fa1c6e53897b3f02">00039</a> <span class="keyword">template</span><<span class="keyword">class</span> T> T <a class="code" href="a00647.html#adf9a939b7a7ee683fa1c6e53897b3f02">boost_numeric_ublas_abs</a> (<span class="keyword">const</span> T& t) {
|
|
<a name="l00040"></a>00040 <span class="keyword">using namespace </span>std;
|
|
<a name="l00041"></a>00041 <span class="comment">// we'll find either std::abs or else another version via ADL:</span>
|
|
<a name="l00042"></a>00042 <span class="keywordflow">return</span> abs (t);
|
|
<a name="l00043"></a>00043 }
|
|
<a name="l00044"></a>00044 }
|
|
<a name="l00045"></a>00045
|
|
<a name="l00046"></a>00046 <span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>numeric { <span class="keyword">namespace </span>ublas {
|
|
<a name="l00047"></a>00047
|
|
<a name="l00048"></a>00048 <span class="comment">// Use Joel de Guzman's return type deduction</span>
|
|
<a name="l00049"></a>00049 <span class="comment">// uBLAS assumes a common return type for all binary arithmetic operators</span>
|
|
<a name="l00050"></a>00050 <span class="keyword">template</span><<span class="keyword">class</span> X, <span class="keyword">class</span> Y>
|
|
<a name="l00051"></a><a class="code" href="a00364.html">00051</a> <span class="keyword">struct </span><a class="code" href="a00364.html">promote_traits</a> {
|
|
<a name="l00052"></a><a class="code" href="a00364.html#a10d8c5ae02a54ec3b1b0209c50866bd6">00052</a> <span class="keyword">typedef</span> <a class="code" href="a00463.html">type_deduction_detail::base_result_of<X, Y></a> <a class="code" href="a00364.html#a10d8c5ae02a54ec3b1b0209c50866bd6">base_type</a>;
|
|
<a name="l00053"></a><a class="code" href="a00364.html#a3fb8d7a5a2c9f8dd3357d6c016737879">00053</a> <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="a00463.html#a9295d09a0022c014731283566720f2c7">base_type::x_type</a> <a class="code" href="a00364.html#a3fb8d7a5a2c9f8dd3357d6c016737879">x</a>;
|
|
<a name="l00054"></a><a class="code" href="a00364.html#a28d6bb2b6dabdab0c2f2305a3a21a963">00054</a> <span class="keyword">static</span> <span class="keyword">typename</span> <a class="code" href="a00463.html#ab4ce44f760bedcc187dcaac223f3931d">base_type::y_type</a> <a class="code" href="a00364.html#a28d6bb2b6dabdab0c2f2305a3a21a963">y</a>;
|
|
<a name="l00055"></a><a class="code" href="a00364.html#a851f997d1bbc47c88aa0755e2b7c2e11">00055</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="a00364.html#a851f997d1bbc47c88aa0755e2b7c2e11">size</a> = <span class="keyword">sizeof</span> (
|
|
<a name="l00056"></a>00056 <a class="code" href="a00661.html#adb25e579dcf8412baf152533614064d1">type_deduction_detail::test</a><
|
|
<a name="l00057"></a>00057 <span class="keyword">typename</span> <a class="code" href="a00463.html#a9295d09a0022c014731283566720f2c7">base_type::x_type</a>
|
|
<a name="l00058"></a>00058 , <span class="keyword">typename</span> <a class="code" href="a00463.html#ab4ce44f760bedcc187dcaac223f3931d">base_type::y_type</a>
|
|
<a name="l00059"></a>00059 >(<a class="code" href="a00364.html#a3fb8d7a5a2c9f8dd3357d6c016737879">x</a> + <a class="code" href="a00364.html#a28d6bb2b6dabdab0c2f2305a3a21a963">y</a>) <span class="comment">// Use x+y to stand of all the arithmetic actions</span>
|
|
<a name="l00060"></a>00060 );
|
|
<a name="l00061"></a>00061
|
|
<a name="l00062"></a><a class="code" href="a00364.html#a9e03046743c58835f6bfdec7006084d9">00062</a> <span class="keyword">static</span> <span class="keyword">const</span> std::size_t <a class="code" href="a00364.html#a9e03046743c58835f6bfdec7006084d9">index</a> = (<a class="code" href="a00364.html#a851f997d1bbc47c88aa0755e2b7c2e11">size</a> / <span class="keyword">sizeof</span> (char)) - 1;
|
|
<a name="l00063"></a>00063 <span class="keyword">typedef</span> <span class="keyword">typename</span> mpl::at_c<
|
|
<a name="l00064"></a><a class="code" href="a00364.html#a4869fd0d9248bd3870b9ae7c9a90f423">00064</a> <span class="keyword">typename</span> <a class="code" href="a00463.html#a96b60cd674d9b9a8c83400cf29140058">base_type::types</a>, <a class="code" href="a00364.html#a9e03046743c58835f6bfdec7006084d9">index</a>>::type <a class="code" href="a00364.html#a4869fd0d9248bd3870b9ae7c9a90f423">id</a>;
|
|
<a name="l00065"></a><a class="code" href="a00364.html#a9e5943e03b9d3150264b74abf791d55f">00065</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> id::type <a class="code" href="a00364.html#a9e5943e03b9d3150264b74abf791d55f">promote_type</a>;
|
|
<a name="l00066"></a>00066 };
|
|
<a name="l00067"></a>00067
|
|
<a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00069"></a>00069 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00070"></a>00070 mpl::and_<
|
|
<a name="l00071"></a>00071 boost::is_float<R>,
|
|
<a name="l00072"></a>00072 boost::is_integral<I>
|
|
<a name="l00073"></a>00073 >,
|
|
<a name="l00074"></a><a class="code" href="a00595.html#a6828dffb3d20a1d226578b20868a74cf">00074</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#a5de13d381190516c21f03666e7a97251">operator+ </a>(I in1, std::complex<R> <span class="keyword">const</span>& in2 ) {
|
|
<a name="l00075"></a>00075 <span class="keywordflow">return</span> R (in1) + in2;
|
|
<a name="l00076"></a>00076 }
|
|
<a name="l00077"></a>00077
|
|
<a name="l00078"></a>00078 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00079"></a>00079 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00080"></a>00080 mpl::and_<
|
|
<a name="l00081"></a>00081 boost::is_float<R>,
|
|
<a name="l00082"></a>00082 boost::is_integral<I>
|
|
<a name="l00083"></a>00083 >,
|
|
<a name="l00084"></a><a class="code" href="a00595.html#a46f671f7c48efd67de8ffa940ff3381e">00084</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#a5de13d381190516c21f03666e7a97251">operator+ </a>(std::complex<R> <span class="keyword">const</span>& in1, I in2) {
|
|
<a name="l00085"></a>00085 <span class="keywordflow">return</span> in1 + R (in2);
|
|
<a name="l00086"></a>00086 }
|
|
<a name="l00087"></a>00087
|
|
<a name="l00088"></a>00088 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00089"></a>00089 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00090"></a>00090 mpl::and_<
|
|
<a name="l00091"></a>00091 boost::is_float<R>,
|
|
<a name="l00092"></a>00092 boost::is_integral<I>
|
|
<a name="l00093"></a>00093 >,
|
|
<a name="l00094"></a><a class="code" href="a00595.html#ab35d28572118fe684a669d5e9cb806fe">00094</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ab350600822aa049ca778f030b5f88163">operator- </a>(I in1, std::complex<R> <span class="keyword">const</span>& in2) {
|
|
<a name="l00095"></a>00095 <span class="keywordflow">return</span> R (in1) - in2;
|
|
<a name="l00096"></a>00096 }
|
|
<a name="l00097"></a>00097
|
|
<a name="l00098"></a>00098 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00099"></a>00099 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00100"></a>00100 mpl::and_<
|
|
<a name="l00101"></a>00101 boost::is_float<R>,
|
|
<a name="l00102"></a>00102 boost::is_integral<I>
|
|
<a name="l00103"></a>00103 >,
|
|
<a name="l00104"></a><a class="code" href="a00595.html#a219173c964c5cc5d9e28dfe37b98558a">00104</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ab350600822aa049ca778f030b5f88163">operator- </a>(std::complex<R> <span class="keyword">const</span>& in1, I in2) {
|
|
<a name="l00105"></a>00105 <span class="keywordflow">return</span> in1 - R (in2);
|
|
<a name="l00106"></a>00106 }
|
|
<a name="l00107"></a>00107
|
|
<a name="l00108"></a>00108 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00109"></a>00109 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00110"></a>00110 mpl::and_<
|
|
<a name="l00111"></a>00111 boost::is_float<R>,
|
|
<a name="l00112"></a>00112 boost::is_integral<I>
|
|
<a name="l00113"></a>00113 >,
|
|
<a name="l00114"></a><a class="code" href="a00595.html#a6290edf86da2794fe33e1ce558e19cce">00114</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ac25ab3ee03af54b692fd3e320ad9af1a">operator* </a>(I in1, std::complex<R> <span class="keyword">const</span>& in2) {
|
|
<a name="l00115"></a>00115 <span class="keywordflow">return</span> R (in1) * in2;
|
|
<a name="l00116"></a>00116 }
|
|
<a name="l00117"></a>00117
|
|
<a name="l00118"></a>00118 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00119"></a>00119 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00120"></a>00120 mpl::and_<
|
|
<a name="l00121"></a>00121 boost::is_float<R>,
|
|
<a name="l00122"></a>00122 boost::is_integral<I>
|
|
<a name="l00123"></a>00123 >,
|
|
<a name="l00124"></a><a class="code" href="a00595.html#a356f51e8c200d479227de063d21e5cd3">00124</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ac25ab3ee03af54b692fd3e320ad9af1a">operator* </a>(std::complex<R> <span class="keyword">const</span>& in1, I in2) {
|
|
<a name="l00125"></a>00125 <span class="keywordflow">return</span> in1 * R(in2);
|
|
<a name="l00126"></a>00126 }
|
|
<a name="l00127"></a>00127
|
|
<a name="l00128"></a>00128 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00129"></a>00129 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00130"></a>00130 mpl::and_<
|
|
<a name="l00131"></a>00131 boost::is_float<R>,
|
|
<a name="l00132"></a>00132 boost::is_integral<I>
|
|
<a name="l00133"></a>00133 >,
|
|
<a name="l00134"></a><a class="code" href="a00595.html#a47cda578658403a5dca9d73c9046e34d">00134</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ae66e88de9c04f151e326e5671c6c47d3">operator/ </a>(I in1, std::complex<R> <span class="keyword">const</span>& in2) {
|
|
<a name="l00135"></a>00135 <span class="keywordflow">return</span> R(in1) / in2;
|
|
<a name="l00136"></a>00136 }
|
|
<a name="l00137"></a>00137
|
|
<a name="l00138"></a>00138 <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> I>
|
|
<a name="l00139"></a>00139 <span class="keyword">typename</span> boost::enable_if<
|
|
<a name="l00140"></a>00140 mpl::and_<
|
|
<a name="l00141"></a>00141 boost::is_float<R>,
|
|
<a name="l00142"></a>00142 boost::is_integral<I>
|
|
<a name="l00143"></a>00143 >,
|
|
<a name="l00144"></a><a class="code" href="a00595.html#ab83f30b9c9244209e5538d38d9e09480">00144</a> std::complex<R> >::type <span class="keyword">inline</span> <a class="code" href="a00595.html#ae66e88de9c04f151e326e5671c6c47d3">operator/ </a>(std::complex<R> <span class="keyword">const</span>& in1, I in2) {
|
|
<a name="l00145"></a>00145 <span class="keywordflow">return</span> in1 / R (in2);
|
|
<a name="l00146"></a>00146 }
|
|
<a name="l00147"></a>00147
|
|
<a name="l00148"></a>00148
|
|
<a name="l00149"></a>00149
|
|
<a name="l00150"></a>00150 <span class="comment">// Type traits - generic numeric properties and functions</span>
|
|
<a name="l00151"></a>00151 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00152"></a>00152 <span class="keyword">struct </span>type_traits;
|
|
<a name="l00153"></a>00153
|
|
<a name="l00154"></a>00154 <span class="comment">// Define properties for a generic scalar type</span>
|
|
<a name="l00155"></a>00155 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00156"></a><a class="code" href="a00401.html">00156</a> <span class="keyword">struct </span><a class="code" href="a00401.html">scalar_traits</a> {
|
|
<a name="l00157"></a><a class="code" href="a00401.html#a9c2e0d42fda2d302aa9ac46acd5ccf62">00157</a> <span class="keyword">typedef</span> <a class="code" href="a00401.html">scalar_traits<T></a> <a class="code" href="a00401.html#a9c2e0d42fda2d302aa9ac46acd5ccf62">self_type</a>;
|
|
<a name="l00158"></a><a class="code" href="a00401.html#a0930e67968282611b575f4eccddc0228">00158</a> <span class="keyword">typedef</span> T <a class="code" href="a00401.html#a0930e67968282611b575f4eccddc0228">value_type</a>;
|
|
<a name="l00159"></a><a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">00159</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a>;
|
|
<a name="l00160"></a><a class="code" href="a00401.html#a876a177446ceba919c9bbca376c9cf78">00160</a> <span class="keyword">typedef</span> T &<a class="code" href="a00401.html#a876a177446ceba919c9bbca376c9cf78">reference</a>;
|
|
<a name="l00161"></a>00161
|
|
<a name="l00162"></a><a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">00162</a> <span class="keyword">typedef</span> T <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a>;
|
|
<a name="l00163"></a><a class="code" href="a00401.html#a3f4a384be33fbd7f9b3ae161306e63e1">00163</a> <span class="keyword">typedef</span> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a3f4a384be33fbd7f9b3ae161306e63e1">precision_type</a>; <span class="comment">// we do not know what type has more precision then the real_type</span>
|
|
<a name="l00164"></a>00164
|
|
<a name="l00165"></a><a class="code" href="a00401.html#a6683da6fd3c909f9c5790f475e0d5bfe">00165</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00401.html#a6683da6fd3c909f9c5790f475e0d5bfe">plus_complexity</a> = 1;
|
|
<a name="l00166"></a><a class="code" href="a00401.html#a87a886788f371347af145f962b298a7e">00166</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00401.html#a87a886788f371347af145f962b298a7e">multiplies_complexity</a> = 1;
|
|
<a name="l00167"></a>00167
|
|
<a name="l00168"></a>00168 <span class="keyword">static</span>
|
|
<a name="l00169"></a>00169 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00170"></a><a class="code" href="a00401.html#a987b7734b7b8cc6fe893666a872a22b9">00170</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a987b7734b7b8cc6fe893666a872a22b9">real</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00171"></a>00171 <span class="keywordflow">return</span> t;
|
|
<a name="l00172"></a>00172 }
|
|
<a name="l00173"></a>00173 <span class="keyword">static</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="a00401.html#adc3a9632d6dc70f4299f288fd074cfa6">00175</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#adc3a9632d6dc70f4299f288fd074cfa6">imag</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> <span class="comment">/*t*/</span>) {
|
|
<a name="l00176"></a>00176 <span class="keywordflow">return</span> 0;
|
|
<a name="l00177"></a>00177 }
|
|
<a name="l00178"></a>00178 <span class="keyword">static</span>
|
|
<a name="l00179"></a>00179 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00180"></a><a class="code" href="a00401.html#acfda1dae6eabd8e8aebbcd8510925c55">00180</a> <a class="code" href="a00401.html#a0930e67968282611b575f4eccddc0228">value_type</a> <a class="code" href="a00401.html#acfda1dae6eabd8e8aebbcd8510925c55">conj</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00181"></a>00181 <span class="keywordflow">return</span> t;
|
|
<a name="l00182"></a>00182 }
|
|
<a name="l00183"></a>00183
|
|
<a name="l00184"></a>00184 <span class="keyword">static</span>
|
|
<a name="l00185"></a>00185 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00186"></a><a class="code" href="a00401.html#a504f48318b4010faafc8a9783f9605e2">00186</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a504f48318b4010faafc8a9783f9605e2">type_abs</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00187"></a>00187 <span class="keywordflow">return</span> <a class="code" href="a00647.html#adf9a939b7a7ee683fa1c6e53897b3f02">boost_numeric_ublas_abs</a> (t);
|
|
<a name="l00188"></a>00188 }
|
|
<a name="l00189"></a>00189 <span class="keyword">static</span>
|
|
<a name="l00190"></a>00190 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00191"></a><a class="code" href="a00401.html#a39f202e048b0c10ec6782667371407a0">00191</a> <a class="code" href="a00401.html#a0930e67968282611b575f4eccddc0228">value_type</a> <a class="code" href="a00401.html#a39f202e048b0c10ec6782667371407a0">type_sqrt</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00192"></a>00192 <span class="comment">// force a type conversion back to value_type for intgral types</span>
|
|
<a name="l00193"></a>00193 <span class="keywordflow">return</span> <a class="code" href="a00401.html#a0930e67968282611b575f4eccddc0228">value_type</a> (<a class="code" href="a00647.html#af9b8ac795358ea0bc998eea69cffdfcc">boost_numeric_ublas_sqrt</a> (t));
|
|
<a name="l00194"></a>00194 }
|
|
<a name="l00195"></a>00195
|
|
<a name="l00196"></a>00196 <span class="keyword">static</span>
|
|
<a name="l00197"></a>00197 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00198"></a><a class="code" href="a00401.html#a2cfa396d6716f1e6d1c516f2516b7f82">00198</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a2cfa396d6716f1e6d1c516f2516b7f82">norm_1</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00199"></a>00199 <span class="keywordflow">return</span> <a class="code" href="a00401.html#a504f48318b4010faafc8a9783f9605e2">self_type::type_abs</a> (t);
|
|
<a name="l00200"></a>00200 }
|
|
<a name="l00201"></a>00201 <span class="keyword">static</span>
|
|
<a name="l00202"></a>00202 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00203"></a><a class="code" href="a00401.html#a3361e813d4faee29fcd9267b2f19d24d">00203</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a3361e813d4faee29fcd9267b2f19d24d">norm_2</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00204"></a>00204 <span class="keywordflow">return</span> <a class="code" href="a00401.html#a504f48318b4010faafc8a9783f9605e2">self_type::type_abs</a> (t);
|
|
<a name="l00205"></a>00205 }
|
|
<a name="l00206"></a>00206 <span class="keyword">static</span>
|
|
<a name="l00207"></a>00207 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00208"></a><a class="code" href="a00401.html#a86a95450b58798f489934030028f5f66">00208</a> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00401.html#a86a95450b58798f489934030028f5f66">norm_inf</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t) {
|
|
<a name="l00209"></a>00209 <span class="keywordflow">return</span> <a class="code" href="a00401.html#a504f48318b4010faafc8a9783f9605e2">self_type::type_abs</a> (t);
|
|
<a name="l00210"></a>00210 }
|
|
<a name="l00211"></a>00211
|
|
<a name="l00212"></a>00212 <span class="keyword">static</span>
|
|
<a name="l00213"></a>00213 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00214"></a><a class="code" href="a00401.html#a2baeae2303f2f6061efabd0ad1e023de">00214</a> <span class="keywordtype">bool</span> <a class="code" href="a00401.html#a2baeae2303f2f6061efabd0ad1e023de">equals</a> (<a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t1, <a class="code" href="a00401.html#af69fb03064787aa88f075a389e80c7d8">const_reference</a> t2) {
|
|
<a name="l00215"></a>00215 <span class="keywordflow">return</span> <a class="code" href="a00401.html#a86a95450b58798f489934030028f5f66">self_type::norm_inf</a> (t1 - t2) < <a class="code" href="a00603.html#afa88d2d3bb1c8ca6365f7d0953a067d8">BOOST_UBLAS_TYPE_CHECK_EPSILON</a> *
|
|
<a name="l00216"></a>00216 (std::max) ((std::max) (<a class="code" href="a00401.html#a86a95450b58798f489934030028f5f66">self_type::norm_inf</a> (t1),
|
|
<a name="l00217"></a>00217 <a class="code" href="a00401.html#a86a95450b58798f489934030028f5f66">self_type::norm_inf</a> (t2)),
|
|
<a name="l00218"></a>00218 <a class="code" href="a00603.html#ada9c3113ffcce841cb3d16e3cf8c60c9">BOOST_UBLAS_TYPE_CHECK_MIN</a>);
|
|
<a name="l00219"></a>00219 }
|
|
<a name="l00220"></a>00220 };
|
|
<a name="l00221"></a>00221
|
|
<a name="l00222"></a>00222 <span class="comment">// Define default type traits, assume T is a scalar type</span>
|
|
<a name="l00223"></a>00223 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00224"></a><a class="code" href="a00465.html">00224</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a> : <a class="code" href="a00401.html">scalar_traits</a> <T> {
|
|
<a name="l00225"></a><a class="code" href="a00465.html#af0afbf976864cd0c3364941c0d2bd792">00225</a> <span class="keyword">typedef</span> <a class="code" href="a00465.html">type_traits<T></a> <a class="code" href="a00465.html#af0afbf976864cd0c3364941c0d2bd792">self_type</a>;
|
|
<a name="l00226"></a><a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">00226</a> <span class="keyword">typedef</span> T <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a>;
|
|
<a name="l00227"></a><a class="code" href="a00465.html#a08949c1a73f05352f6251c84ba2862eb">00227</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00465.html#a08949c1a73f05352f6251c84ba2862eb">const_reference</a>;
|
|
<a name="l00228"></a><a class="code" href="a00465.html#a6e2f6526266d8d1442712ad6e50120ad">00228</a> <span class="keyword">typedef</span> T &<a class="code" href="a00465.html#a6e2f6526266d8d1442712ad6e50120ad">reference</a>;
|
|
<a name="l00229"></a>00229
|
|
<a name="l00230"></a><a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">00230</a> <span class="keyword">typedef</span> T <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">real_type</a>;
|
|
<a name="l00231"></a><a class="code" href="a00465.html#ac8e0241ac0632c048e23e667076a31c7">00231</a> <span class="keyword">typedef</span> <a class="code" href="a00401.html#a249ab6e3dc7304ad9939892ec66170e4">real_type</a> <a class="code" href="a00465.html#ac8e0241ac0632c048e23e667076a31c7">precision_type</a>;
|
|
<a name="l00232"></a><a class="code" href="a00465.html#a372000ec72c1567fb07a1dc6ad194fbc">00232</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00465.html#a372000ec72c1567fb07a1dc6ad194fbc">multiplies_complexity</a> = 1;
|
|
<a name="l00233"></a>00233
|
|
<a name="l00234"></a>00234 };
|
|
<a name="l00235"></a>00235
|
|
<a name="l00236"></a>00236 <span class="comment">// Define real type traits</span>
|
|
<a name="l00237"></a>00237 <span class="keyword">template</span><>
|
|
<a name="l00238"></a><a class="code" href="a00467.html">00238</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><float> : <a class="code" href="a00401.html">scalar_traits</a><float> {
|
|
<a name="l00239"></a><a class="code" href="a00467.html#adbc3be1b959a96fb46e48f0212ab52a7">00239</a> <span class="keyword">typedef</span> <a class="code" href="a00467.html">type_traits<float></a> <a class="code" href="a00467.html#adbc3be1b959a96fb46e48f0212ab52a7">self_type</a>;
|
|
<a name="l00240"></a><a class="code" href="a00467.html#ac464f850a1b8f4d6590375f0a4ce2b6c">00240</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="a00467.html#ac464f850a1b8f4d6590375f0a4ce2b6c">value_type</a>;
|
|
<a name="l00241"></a><a class="code" href="a00467.html#aadc9e0cac6e38a7502ad955682957745">00241</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00467.html#ac464f850a1b8f4d6590375f0a4ce2b6c">value_type</a> &<a class="code" href="a00467.html#aadc9e0cac6e38a7502ad955682957745">const_reference</a>;
|
|
<a name="l00242"></a><a class="code" href="a00467.html#a7d57af8fea12f1c7b51a776cce8ddab9">00242</a> <span class="keyword">typedef</span> <a class="code" href="a00467.html#ac464f850a1b8f4d6590375f0a4ce2b6c">value_type</a> &<a class="code" href="a00467.html#a7d57af8fea12f1c7b51a776cce8ddab9">reference</a>;
|
|
<a name="l00243"></a><a class="code" href="a00467.html#adcccc8261189ac58102deebd3fd32120">00243</a> <span class="keyword">typedef</span> <a class="code" href="a00467.html#ac464f850a1b8f4d6590375f0a4ce2b6c">value_type</a> <a class="code" href="a00467.html#adcccc8261189ac58102deebd3fd32120">real_type</a>;
|
|
<a name="l00244"></a><a class="code" href="a00467.html#a9468e02d068c71ac9e775825005e7701">00244</a> <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="a00467.html#a9468e02d068c71ac9e775825005e7701">precision_type</a>;
|
|
<a name="l00245"></a>00245 };
|
|
<a name="l00246"></a>00246 <span class="keyword">template</span><>
|
|
<a name="l00247"></a><a class="code" href="a00466.html">00247</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><double> : <a class="code" href="a00401.html">scalar_traits</a><double> {
|
|
<a name="l00248"></a><a class="code" href="a00466.html#ac29d7d43924c37fbc54ca0f26ebefa58">00248</a> <span class="keyword">typedef</span> <a class="code" href="a00466.html">type_traits<double></a> <a class="code" href="a00466.html#ac29d7d43924c37fbc54ca0f26ebefa58">self_type</a>;
|
|
<a name="l00249"></a><a class="code" href="a00466.html#a2ccbff602ddff9fc13c850dc6b930f7a">00249</a> <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="a00466.html#a2ccbff602ddff9fc13c850dc6b930f7a">value_type</a>;
|
|
<a name="l00250"></a><a class="code" href="a00466.html#a1324de4326682a7755149e1dd1138dd0">00250</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00466.html#a2ccbff602ddff9fc13c850dc6b930f7a">value_type</a> &<a class="code" href="a00466.html#a1324de4326682a7755149e1dd1138dd0">const_reference</a>;
|
|
<a name="l00251"></a><a class="code" href="a00466.html#a28be1d1bce5837c1e14dc177d1337e12">00251</a> <span class="keyword">typedef</span> <a class="code" href="a00466.html#a2ccbff602ddff9fc13c850dc6b930f7a">value_type</a> &<a class="code" href="a00466.html#a28be1d1bce5837c1e14dc177d1337e12">reference</a>;
|
|
<a name="l00252"></a><a class="code" href="a00466.html#afd360faa2ac107e9d1dba24ffd0fd8af">00252</a> <span class="keyword">typedef</span> <a class="code" href="a00466.html#a2ccbff602ddff9fc13c850dc6b930f7a">value_type</a> <a class="code" href="a00466.html#afd360faa2ac107e9d1dba24ffd0fd8af">real_type</a>;
|
|
<a name="l00253"></a><a class="code" href="a00466.html#abdb1725b655eeba037015e77eab6c78e">00253</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> <a class="code" href="a00466.html#abdb1725b655eeba037015e77eab6c78e">precision_type</a>;
|
|
<a name="l00254"></a>00254 };
|
|
<a name="l00255"></a>00255 <span class="keyword">template</span><>
|
|
<a name="l00256"></a><a class="code" href="a00468.html">00256</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><long double> : <a class="code" href="a00401.html">scalar_traits</a><long double> {
|
|
<a name="l00257"></a><a class="code" href="a00468.html#a2ae728a3cc3bd4a5baa35b743448d76e">00257</a> <span class="keyword">typedef</span> <a class="code" href="a00468.html">type_traits<long double></a> <a class="code" href="a00468.html#a2ae728a3cc3bd4a5baa35b743448d76e">self_type</a>;
|
|
<a name="l00258"></a><a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">00258</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> <a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">value_type</a>;
|
|
<a name="l00259"></a><a class="code" href="a00468.html#ab4be4b4077ee85f07f8439306c6236aa">00259</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">value_type</a> &<a class="code" href="a00468.html#ab4be4b4077ee85f07f8439306c6236aa">const_reference</a>;
|
|
<a name="l00260"></a><a class="code" href="a00468.html#a0df4ad1b8de0a1bbc5e475bbb4caf692">00260</a> <span class="keyword">typedef</span> <a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">value_type</a> &<a class="code" href="a00468.html#a0df4ad1b8de0a1bbc5e475bbb4caf692">reference</a>;
|
|
<a name="l00261"></a><a class="code" href="a00468.html#a1ca173438c0cd6e7d4acf99e3bd422b6">00261</a> <span class="keyword">typedef</span> <a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">value_type</a> <a class="code" href="a00468.html#a1ca173438c0cd6e7d4acf99e3bd422b6">real_type</a>;
|
|
<a name="l00262"></a><a class="code" href="a00468.html#ae4d14fa9352479ff185285bf267d90b0">00262</a> <span class="keyword">typedef</span> <a class="code" href="a00468.html#ad66b1fa1336090eeb3cfb128c4f2f550">value_type</a> <a class="code" href="a00468.html#ae4d14fa9352479ff185285bf267d90b0">precision_type</a>;
|
|
<a name="l00263"></a>00263 };
|
|
<a name="l00264"></a>00264
|
|
<a name="l00265"></a>00265 <span class="comment">// Define properties for a generic complex type</span>
|
|
<a name="l00266"></a>00266 <span class="keyword">template</span><<span class="keyword">class</span> T>
|
|
<a name="l00267"></a><a class="code" href="a00053.html">00267</a> <span class="keyword">struct </span><a class="code" href="a00053.html">complex_traits</a> {
|
|
<a name="l00268"></a><a class="code" href="a00053.html#afc75d80998efd53c7a0b8ba20d5e02a9">00268</a> <span class="keyword">typedef</span> <a class="code" href="a00053.html">complex_traits<T></a> <a class="code" href="a00053.html#afc75d80998efd53c7a0b8ba20d5e02a9">self_type</a>;
|
|
<a name="l00269"></a><a class="code" href="a00053.html#afd46f37e57bdf3d896d41b463cb90a78">00269</a> <span class="keyword">typedef</span> T <a class="code" href="a00053.html#afd46f37e57bdf3d896d41b463cb90a78">value_type</a>;
|
|
<a name="l00270"></a><a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">00270</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T &<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a>;
|
|
<a name="l00271"></a><a class="code" href="a00053.html#a84ecd03a38c8b780d081e28fa6728fce">00271</a> <span class="keyword">typedef</span> T &<a class="code" href="a00053.html#a84ecd03a38c8b780d081e28fa6728fce">reference</a>;
|
|
<a name="l00272"></a>00272
|
|
<a name="l00273"></a><a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">00273</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> T::value_type <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a>;
|
|
<a name="l00274"></a><a class="code" href="a00053.html#a9efa79f85a6d8e2b4883a0efd2769e0b">00274</a> <span class="keyword">typedef</span> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#a9efa79f85a6d8e2b4883a0efd2769e0b">precision_type</a>; <span class="comment">// we do not know what type has more precision then the real_type</span>
|
|
<a name="l00275"></a>00275
|
|
<a name="l00276"></a><a class="code" href="a00053.html#af945e7107106e83076517f5bfc4b5200">00276</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00053.html#af945e7107106e83076517f5bfc4b5200">plus_complexity</a> = 2;
|
|
<a name="l00277"></a><a class="code" href="a00053.html#a775a075049a11ec8d2fca2210d417d3c">00277</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="a00053.html#a775a075049a11ec8d2fca2210d417d3c">multiplies_complexity</a> = 6;
|
|
<a name="l00278"></a>00278
|
|
<a name="l00279"></a>00279 <span class="keyword">static</span>
|
|
<a name="l00280"></a>00280 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00281"></a><a class="code" href="a00053.html#a67e9d9e636230fdc2033dc176776a8e1">00281</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#a67e9d9e636230fdc2033dc176776a8e1">real</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00282"></a>00282 <span class="keywordflow">return</span> <a class="code" href="a00053.html#a67e9d9e636230fdc2033dc176776a8e1">std::real</a> (t);
|
|
<a name="l00283"></a>00283 }
|
|
<a name="l00284"></a>00284 <span class="keyword">static</span>
|
|
<a name="l00285"></a>00285 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00286"></a><a class="code" href="a00053.html#ab3c26a4b2f429182a84fed756f577a20">00286</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#ab3c26a4b2f429182a84fed756f577a20">imag</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00287"></a>00287 <span class="keywordflow">return</span> <a class="code" href="a00053.html#ab3c26a4b2f429182a84fed756f577a20">std::imag</a> (t);
|
|
<a name="l00288"></a>00288 }
|
|
<a name="l00289"></a>00289 <span class="keyword">static</span>
|
|
<a name="l00290"></a>00290 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00291"></a><a class="code" href="a00053.html#ab85724c624b48d29256e543df3a79b6e">00291</a> <a class="code" href="a00053.html#afd46f37e57bdf3d896d41b463cb90a78">value_type</a> <a class="code" href="a00053.html#ab85724c624b48d29256e543df3a79b6e">conj</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00292"></a>00292 <span class="keywordflow">return</span> <a class="code" href="a00053.html#ab85724c624b48d29256e543df3a79b6e">std::conj</a> (t);
|
|
<a name="l00293"></a>00293 }
|
|
<a name="l00294"></a>00294
|
|
<a name="l00295"></a>00295 <span class="keyword">static</span>
|
|
<a name="l00296"></a>00296 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00297"></a><a class="code" href="a00053.html#a6e8af810668d21efd3646488007970d0">00297</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#a6e8af810668d21efd3646488007970d0">type_abs</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00298"></a>00298 <span class="keywordflow">return</span> abs (t);
|
|
<a name="l00299"></a>00299 }
|
|
<a name="l00300"></a>00300 <span class="keyword">static</span>
|
|
<a name="l00301"></a>00301 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00302"></a><a class="code" href="a00053.html#a9cb2c571f637d0fe47a8e740baa9e6fa">00302</a> <a class="code" href="a00053.html#afd46f37e57bdf3d896d41b463cb90a78">value_type</a> <a class="code" href="a00053.html#a9cb2c571f637d0fe47a8e740baa9e6fa">type_sqrt</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00303"></a>00303 <span class="keywordflow">return</span> sqrt (t);
|
|
<a name="l00304"></a>00304 }
|
|
<a name="l00305"></a>00305
|
|
<a name="l00306"></a>00306 <span class="keyword">static</span>
|
|
<a name="l00307"></a>00307 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00308"></a><a class="code" href="a00053.html#a343fba20f2a1dc64291838df0acedffe">00308</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#a343fba20f2a1dc64291838df0acedffe">norm_1</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00309"></a>00309 <span class="keywordflow">return</span> <a class="code" href="a00053.html#a6e8af810668d21efd3646488007970d0">self_type::type_abs</a> (t);
|
|
<a name="l00310"></a>00310 <span class="comment">// original computation has been replaced because a complex number should behave like a scalar type</span>
|
|
<a name="l00311"></a>00311 <span class="comment">// return type_traits<real_type>::type_abs (self_type::real (t)) +</span>
|
|
<a name="l00312"></a>00312 <span class="comment">// type_traits<real_type>::type_abs (self_type::imag (t));</span>
|
|
<a name="l00313"></a>00313 }
|
|
<a name="l00314"></a>00314 <span class="keyword">static</span>
|
|
<a name="l00315"></a>00315 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00316"></a><a class="code" href="a00053.html#adb3b51bdd2af7e9c5fd4d95193ecaa7c">00316</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#adb3b51bdd2af7e9c5fd4d95193ecaa7c">norm_2</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00317"></a>00317 <span class="keywordflow">return</span> <a class="code" href="a00053.html#a6e8af810668d21efd3646488007970d0">self_type::type_abs</a> (t);
|
|
<a name="l00318"></a>00318 }
|
|
<a name="l00319"></a>00319 <span class="keyword">static</span>
|
|
<a name="l00320"></a>00320 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00321"></a><a class="code" href="a00053.html#ab7c9de3b00fe849be2b1b3b4c678aff6">00321</a> <a class="code" href="a00053.html#a9f031cf9280fd683183649821428fde8">real_type</a> <a class="code" href="a00053.html#ab7c9de3b00fe849be2b1b3b4c678aff6">norm_inf</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t) {
|
|
<a name="l00322"></a>00322 <span class="keywordflow">return</span> <a class="code" href="a00053.html#a6e8af810668d21efd3646488007970d0">self_type::type_abs</a> (t);
|
|
<a name="l00323"></a>00323 <span class="comment">// original computation has been replaced because a complex number should behave like a scalar type</span>
|
|
<a name="l00324"></a>00324 <span class="comment">// return (std::max) (type_traits<real_type>::type_abs (self_type::real (t)),</span>
|
|
<a name="l00325"></a>00325 <span class="comment">// type_traits<real_type>::type_abs (self_type::imag (t)));</span>
|
|
<a name="l00326"></a>00326 }
|
|
<a name="l00327"></a>00327
|
|
<a name="l00328"></a>00328 <span class="keyword">static</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="a00053.html#acb1f2efd330db68849ff56643910c098">00330</a> <span class="keywordtype">bool</span> <a class="code" href="a00053.html#acb1f2efd330db68849ff56643910c098">equals</a> (<a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t1, <a class="code" href="a00053.html#a82c1ec3498546de9b304aac86a92d24f">const_reference</a> t2) {
|
|
<a name="l00331"></a>00331 <span class="keywordflow">return</span> <a class="code" href="a00053.html#ab7c9de3b00fe849be2b1b3b4c678aff6">self_type::norm_inf</a> (t1 - t2) < <a class="code" href="a00603.html#afa88d2d3bb1c8ca6365f7d0953a067d8">BOOST_UBLAS_TYPE_CHECK_EPSILON</a> *
|
|
<a name="l00332"></a>00332 (std::max) ((std::max) (<a class="code" href="a00053.html#ab7c9de3b00fe849be2b1b3b4c678aff6">self_type::norm_inf</a> (t1),
|
|
<a name="l00333"></a>00333 <a class="code" href="a00053.html#ab7c9de3b00fe849be2b1b3b4c678aff6">self_type::norm_inf</a> (t2)),
|
|
<a name="l00334"></a>00334 <a class="code" href="a00603.html#ada9c3113ffcce841cb3d16e3cf8c60c9">BOOST_UBLAS_TYPE_CHECK_MIN</a>);
|
|
<a name="l00335"></a>00335 }
|
|
<a name="l00336"></a>00336 };
|
|
<a name="l00337"></a>00337
|
|
<a name="l00338"></a>00338 <span class="comment">// Define complex type traits</span>
|
|
<a name="l00339"></a>00339 <span class="keyword">template</span><>
|
|
<a name="l00340"></a><a class="code" href="a00470.html">00340</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><std::complex<float> > : <a class="code" href="a00053.html">complex_traits</a><std::complex<float> >{
|
|
<a name="l00341"></a><a class="code" href="a00470.html#a00ca5b4304904f5cfd69510afd4712c4">00341</a> <span class="keyword">typedef</span> <a class="code" href="a00465.html">type_traits<std::complex<float></a> > <a class="code" href="a00470.html#a00ca5b4304904f5cfd69510afd4712c4">self_type</a>;
|
|
<a name="l00342"></a><a class="code" href="a00470.html#a46b0223d6db2c14c76969c55ae2b8806">00342</a> <span class="keyword">typedef</span> std::complex<float> <a class="code" href="a00470.html#a46b0223d6db2c14c76969c55ae2b8806">value_type</a>;
|
|
<a name="l00343"></a><a class="code" href="a00470.html#af125e36a296542e00c4a2cfba4c52c4d">00343</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00470.html#a46b0223d6db2c14c76969c55ae2b8806">value_type</a> &<a class="code" href="a00470.html#af125e36a296542e00c4a2cfba4c52c4d">const_reference</a>;
|
|
<a name="l00344"></a><a class="code" href="a00470.html#ace059019479c0709e33b6fdd98a58559">00344</a> <span class="keyword">typedef</span> <a class="code" href="a00470.html#a46b0223d6db2c14c76969c55ae2b8806">value_type</a> &<a class="code" href="a00470.html#ace059019479c0709e33b6fdd98a58559">reference</a>;
|
|
<a name="l00345"></a><a class="code" href="a00470.html#a51d8b8f84aa0ac3061bd48579ffb6015">00345</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="a00470.html#a51d8b8f84aa0ac3061bd48579ffb6015">real_type</a>;
|
|
<a name="l00346"></a><a class="code" href="a00470.html#a501d3ce03b4500da276991e3dc67847b">00346</a> <span class="keyword">typedef</span> std::complex<double> <a class="code" href="a00470.html#a501d3ce03b4500da276991e3dc67847b">precision_type</a>;
|
|
<a name="l00347"></a>00347
|
|
<a name="l00348"></a>00348 };
|
|
<a name="l00349"></a>00349 <span class="keyword">template</span><>
|
|
<a name="l00350"></a><a class="code" href="a00469.html">00350</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><std::complex<double> > : <a class="code" href="a00053.html">complex_traits</a><std::complex<double> >{
|
|
<a name="l00351"></a><a class="code" href="a00469.html#a01d5c34bf2e217037df93c21d580fe84">00351</a> <span class="keyword">typedef</span> <a class="code" href="a00465.html">type_traits<std::complex<double></a> > <a class="code" href="a00469.html#a01d5c34bf2e217037df93c21d580fe84">self_type</a>;
|
|
<a name="l00352"></a><a class="code" href="a00469.html#ae01463f9faf56fc89b50e77f8310c503">00352</a> <span class="keyword">typedef</span> std::complex<double> <a class="code" href="a00469.html#ae01463f9faf56fc89b50e77f8310c503">value_type</a>;
|
|
<a name="l00353"></a><a class="code" href="a00469.html#a976f8d84b9468b0e9ee83d644213a941">00353</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00469.html#ae01463f9faf56fc89b50e77f8310c503">value_type</a> &<a class="code" href="a00469.html#a976f8d84b9468b0e9ee83d644213a941">const_reference</a>;
|
|
<a name="l00354"></a><a class="code" href="a00469.html#afe4b70a2d25141c55eee3476b17a392a">00354</a> <span class="keyword">typedef</span> <a class="code" href="a00469.html#ae01463f9faf56fc89b50e77f8310c503">value_type</a> &<a class="code" href="a00469.html#afe4b70a2d25141c55eee3476b17a392a">reference</a>;
|
|
<a name="l00355"></a><a class="code" href="a00469.html#a30fc9fe5f8d8f1fe0f0bfd4612d15233">00355</a> <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="a00469.html#a30fc9fe5f8d8f1fe0f0bfd4612d15233">real_type</a>;
|
|
<a name="l00356"></a><a class="code" href="a00469.html#ac785c3b1d2d6a232ac45d79657a36ee0">00356</a> <span class="keyword">typedef</span> std::complex<long double> <a class="code" href="a00469.html#ac785c3b1d2d6a232ac45d79657a36ee0">precision_type</a>;
|
|
<a name="l00357"></a>00357 };
|
|
<a name="l00358"></a>00358 <span class="keyword">template</span><>
|
|
<a name="l00359"></a><a class="code" href="a00471.html">00359</a> <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><std::complex<long double> > : <a class="code" href="a00053.html">complex_traits</a><std::complex<long double> > {
|
|
<a name="l00360"></a><a class="code" href="a00471.html#a3ce329fd2446bffd824567388e007dac">00360</a> <span class="keyword">typedef</span> <a class="code" href="a00465.html">type_traits<std::complex<long double></a> > <a class="code" href="a00471.html#a3ce329fd2446bffd824567388e007dac">self_type</a>;
|
|
<a name="l00361"></a><a class="code" href="a00471.html#a6f82b1fe0a7c57b9a396710c07b5369e">00361</a> <span class="keyword">typedef</span> std::complex<long double> <a class="code" href="a00471.html#a6f82b1fe0a7c57b9a396710c07b5369e">value_type</a>;
|
|
<a name="l00362"></a><a class="code" href="a00471.html#a7e5cebe793821d9c8a6314e24ca4cac6">00362</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00471.html#a6f82b1fe0a7c57b9a396710c07b5369e">value_type</a> &<a class="code" href="a00471.html#a7e5cebe793821d9c8a6314e24ca4cac6">const_reference</a>;
|
|
<a name="l00363"></a><a class="code" href="a00471.html#a2300d303d8fa3e742cb962e56f53ef33">00363</a> <span class="keyword">typedef</span> <a class="code" href="a00471.html#a6f82b1fe0a7c57b9a396710c07b5369e">value_type</a> &<a class="code" href="a00471.html#a2300d303d8fa3e742cb962e56f53ef33">reference</a>;
|
|
<a name="l00364"></a><a class="code" href="a00471.html#ade5cd6e6be92657d93f07c75dbae99fe">00364</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> <a class="code" href="a00471.html#ade5cd6e6be92657d93f07c75dbae99fe">real_type</a>;
|
|
<a name="l00365"></a><a class="code" href="a00471.html#a89d7108b0d1fe0397f381dd5076fc86f">00365</a> <span class="keyword">typedef</span> <a class="code" href="a00471.html#a6f82b1fe0a7c57b9a396710c07b5369e">value_type</a> <a class="code" href="a00471.html#a89d7108b0d1fe0397f381dd5076fc86f">precision_type</a>;
|
|
<a name="l00366"></a>00366 };
|
|
<a name="l00367"></a>00367
|
|
<a name="l00368"></a>00368 <span class="preprocessor">#ifdef BOOST_UBLAS_USE_INTERVAL</span>
|
|
<a name="l00369"></a>00369 <span class="preprocessor"></span> <span class="comment">// Define scalar interval type traits</span>
|
|
<a name="l00370"></a>00370 <span class="keyword">template</span><>
|
|
<a name="l00371"></a>00371 <span class="keyword">struct </span><a class="code" href="a00465.html">type_traits</a><boost::numeric::interval<float> > : <a class="code" href="a00401.html">scalar_traits</a><boost::numeric::interval<float> > {
|
|
<a name="l00372"></a>00372 <span class="keyword">typedef</span> <a class="code" href="a00465.html">type_traits<boost::numeric::interval<float></a> > <a class="code" href="a00465.html#af0afbf976864cd0c3364941c0d2bd792">self_type</a>;
|
|
<a name="l00373"></a>00373 <span class="keyword">typedef</span> boost::numeric::interval<float> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a>;
|
|
<a name="l00374"></a>00374 <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a08949c1a73f05352f6251c84ba2862eb">const_reference</a>;
|
|
<a name="l00375"></a>00375 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a6e2f6526266d8d1442712ad6e50120ad">reference</a>;
|
|
<a name="l00376"></a>00376 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">real_type</a>;
|
|
<a name="l00377"></a>00377 <span class="keyword">typedef</span> boost::numeric::interval<double> <a class="code" href="a00465.html#ac8e0241ac0632c048e23e667076a31c7">precision_type</a>;
|
|
<a name="l00378"></a>00378
|
|
<a name="l00379"></a>00379 };
|
|
<a name="l00380"></a>00380 <span class="keyword">template</span><>
|
|
<a name="l00381"></a>00381 <span class="keyword">struct </span>type_traits<boost::numeric::interval<double> > : scalar_traits<boost::numeric::interval<double> > {
|
|
<a name="l00382"></a>00382 <span class="keyword">typedef</span> type_traits<boost::numeric::interval<double> > <a class="code" href="a00465.html#af0afbf976864cd0c3364941c0d2bd792">self_type</a>;
|
|
<a name="l00383"></a>00383 <span class="keyword">typedef</span> boost::numeric::interval<double> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a>;
|
|
<a name="l00384"></a>00384 <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a08949c1a73f05352f6251c84ba2862eb">const_reference</a>;
|
|
<a name="l00385"></a>00385 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a6e2f6526266d8d1442712ad6e50120ad">reference</a>;
|
|
<a name="l00386"></a>00386 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">real_type</a>;
|
|
<a name="l00387"></a>00387 <span class="keyword">typedef</span> boost::numeric::interval<long double> <a class="code" href="a00465.html#ac8e0241ac0632c048e23e667076a31c7">precision_type</a>;
|
|
<a name="l00388"></a>00388 };
|
|
<a name="l00389"></a>00389 <span class="keyword">template</span><>
|
|
<a name="l00390"></a>00390 <span class="keyword">struct </span>type_traits<boost::numeric::interval<long double> > : scalar_traits<boost::numeric::interval<long double> > {
|
|
<a name="l00391"></a>00391 <span class="keyword">typedef</span> type_traits<boost::numeric::interval<long double> > <a class="code" href="a00465.html#af0afbf976864cd0c3364941c0d2bd792">self_type</a>;
|
|
<a name="l00392"></a>00392 <span class="keyword">typedef</span> boost::numeric::interval<long double> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a>;
|
|
<a name="l00393"></a>00393 <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a08949c1a73f05352f6251c84ba2862eb">const_reference</a>;
|
|
<a name="l00394"></a>00394 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> &<a class="code" href="a00465.html#a6e2f6526266d8d1442712ad6e50120ad">reference</a>;
|
|
<a name="l00395"></a>00395 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">real_type</a>;
|
|
<a name="l00396"></a>00396 <span class="keyword">typedef</span> <a class="code" href="a00465.html#a07403c6f0a41e3306340852d42674555">value_type</a> <a class="code" href="a00465.html#ac8e0241ac0632c048e23e667076a31c7">precision_type</a>;
|
|
<a name="l00397"></a>00397 };
|
|
<a name="l00398"></a>00398 <span class="preprocessor">#endif</span>
|
|
<a name="l00399"></a>00399 <span class="preprocessor"></span>
|
|
<a name="l00400"></a>00400
|
|
<a name="l00401"></a>00401 <span class="comment">// Storage tags -- hierarchical definition of storage characteristics</span>
|
|
<a name="l00402"></a>00402
|
|
<a name="l00403"></a><a class="code" href="a00479.html">00403</a> <span class="keyword">struct </span><a class="code" href="a00479.html">unknown_storage_tag</a> {};
|
|
<a name="l00404"></a><a class="code" href="a00409.html">00404</a> <span class="keyword">struct </span><a class="code" href="a00409.html">sparse_proxy_tag</a>: <span class="keyword">public</span> <a class="code" href="a00479.html">unknown_storage_tag</a> {};
|
|
<a name="l00405"></a><a class="code" href="a00410.html">00405</a> <span class="keyword">struct </span><a class="code" href="a00410.html">sparse_tag</a>: <span class="keyword">public</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> {};
|
|
<a name="l00406"></a><a class="code" href="a00360.html">00406</a> <span class="keyword">struct </span><a class="code" href="a00360.html">packed_proxy_tag</a>: <span class="keyword">public</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> {};
|
|
<a name="l00407"></a><a class="code" href="a00362.html">00407</a> <span class="keyword">struct </span><a class="code" href="a00362.html">packed_tag</a>: <span class="keyword">public</span> <a class="code" href="a00360.html">packed_proxy_tag</a> {};
|
|
<a name="l00408"></a><a class="code" href="a00081.html">00408</a> <span class="keyword">struct </span><a class="code" href="a00081.html">dense_proxy_tag</a>: <span class="keyword">public</span> <a class="code" href="a00360.html">packed_proxy_tag</a> {};
|
|
<a name="l00409"></a><a class="code" href="a00083.html">00409</a> <span class="keyword">struct </span><a class="code" href="a00083.html">dense_tag</a>: <span class="keyword">public</span> <a class="code" href="a00081.html">dense_proxy_tag</a> {};
|
|
<a name="l00410"></a>00410
|
|
<a name="l00411"></a>00411 <span class="keyword">template</span><<span class="keyword">class</span> S1, <span class="keyword">class</span> S2>
|
|
<a name="l00412"></a><a class="code" href="a00418.html">00412</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a> {
|
|
<a name="l00413"></a><a class="code" href="a00418.html#aad352acdd480dca166fd5a9438eee126">00413</a> <span class="keyword">typedef</span> S1 <a class="code" href="a00418.html#aad352acdd480dca166fd5a9438eee126">storage_category</a>;
|
|
<a name="l00414"></a>00414 };
|
|
<a name="l00415"></a>00415
|
|
<a name="l00416"></a>00416 <span class="keyword">template</span><>
|
|
<a name="l00417"></a><a class="code" href="a00428.html">00417</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00410.html">sparse_tag</a>, <a class="code" href="a00081.html">dense_proxy_tag</a>> {
|
|
<a name="l00418"></a><a class="code" href="a00428.html#a5ebf3205551230e4c8dacdef911dcfd8">00418</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00428.html#a5ebf3205551230e4c8dacdef911dcfd8">storage_category</a>;
|
|
<a name="l00419"></a>00419 };
|
|
<a name="l00420"></a>00420 <span class="keyword">template</span><>
|
|
<a name="l00421"></a><a class="code" href="a00429.html">00421</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00410.html">sparse_tag</a>, <a class="code" href="a00360.html">packed_proxy_tag</a>> {
|
|
<a name="l00422"></a><a class="code" href="a00429.html#a0946076b8597704058225a8ccd212300">00422</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00429.html#a0946076b8597704058225a8ccd212300">storage_category</a>;
|
|
<a name="l00423"></a>00423 };
|
|
<a name="l00424"></a>00424 <span class="keyword">template</span><>
|
|
<a name="l00425"></a><a class="code" href="a00430.html">00425</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00410.html">sparse_tag</a>, <a class="code" href="a00409.html">sparse_proxy_tag</a>> {
|
|
<a name="l00426"></a><a class="code" href="a00430.html#a852d02aaad2d233c552ddb3d2ba98ca5">00426</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00430.html#a852d02aaad2d233c552ddb3d2ba98ca5">storage_category</a>;
|
|
<a name="l00427"></a>00427 };
|
|
<a name="l00428"></a>00428
|
|
<a name="l00429"></a>00429 <span class="keyword">template</span><>
|
|
<a name="l00430"></a><a class="code" href="a00425.html">00430</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00362.html">packed_tag</a>, <a class="code" href="a00081.html">dense_proxy_tag</a>> {
|
|
<a name="l00431"></a><a class="code" href="a00425.html#ad46bc47872b6ab9eedb5ba4fa5f4f3b5">00431</a> <span class="keyword">typedef</span> <a class="code" href="a00360.html">packed_proxy_tag</a> <a class="code" href="a00425.html#ad46bc47872b6ab9eedb5ba4fa5f4f3b5">storage_category</a>;
|
|
<a name="l00432"></a>00432 };
|
|
<a name="l00433"></a>00433 <span class="keyword">template</span><>
|
|
<a name="l00434"></a><a class="code" href="a00426.html">00434</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00362.html">packed_tag</a>, <a class="code" href="a00360.html">packed_proxy_tag</a>> {
|
|
<a name="l00435"></a><a class="code" href="a00426.html#a21f7f1f455ed1eedfd2ab66ef4902b10">00435</a> <span class="keyword">typedef</span> <a class="code" href="a00360.html">packed_proxy_tag</a> <a class="code" href="a00426.html#a21f7f1f455ed1eedfd2ab66ef4902b10">storage_category</a>;
|
|
<a name="l00436"></a>00436 };
|
|
<a name="l00437"></a>00437 <span class="keyword">template</span><>
|
|
<a name="l00438"></a><a class="code" href="a00427.html">00438</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00362.html">packed_tag</a>, <a class="code" href="a00409.html">sparse_proxy_tag</a>> {
|
|
<a name="l00439"></a><a class="code" href="a00427.html#a90fc57a0e02cbaf5508c1cfd046728cf">00439</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00427.html#a90fc57a0e02cbaf5508c1cfd046728cf">storage_category</a>;
|
|
<a name="l00440"></a>00440 };
|
|
<a name="l00441"></a>00441
|
|
<a name="l00442"></a>00442 <span class="keyword">template</span><>
|
|
<a name="l00443"></a><a class="code" href="a00424.html">00443</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00360.html">packed_proxy_tag</a>, <a class="code" href="a00409.html">sparse_proxy_tag</a>> {
|
|
<a name="l00444"></a><a class="code" href="a00424.html#a071c4aadeb828f54c3cc419e9246dbd3">00444</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00424.html#a071c4aadeb828f54c3cc419e9246dbd3">storage_category</a>;
|
|
<a name="l00445"></a>00445 };
|
|
<a name="l00446"></a>00446
|
|
<a name="l00447"></a>00447 <span class="keyword">template</span><>
|
|
<a name="l00448"></a><a class="code" href="a00421.html">00448</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00083.html">dense_tag</a>, <a class="code" href="a00081.html">dense_proxy_tag</a>> {
|
|
<a name="l00449"></a><a class="code" href="a00421.html#a763f113d533c8d06e4e2d9a2cd06251e">00449</a> <span class="keyword">typedef</span> <a class="code" href="a00081.html">dense_proxy_tag</a> <a class="code" href="a00421.html#a763f113d533c8d06e4e2d9a2cd06251e">storage_category</a>;
|
|
<a name="l00450"></a>00450 };
|
|
<a name="l00451"></a>00451 <span class="keyword">template</span><>
|
|
<a name="l00452"></a><a class="code" href="a00422.html">00452</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00083.html">dense_tag</a>, <a class="code" href="a00360.html">packed_proxy_tag</a>> {
|
|
<a name="l00453"></a><a class="code" href="a00422.html#a57610d11299c9a93a93f4d532867de4b">00453</a> <span class="keyword">typedef</span> <a class="code" href="a00360.html">packed_proxy_tag</a> <a class="code" href="a00422.html#a57610d11299c9a93a93f4d532867de4b">storage_category</a>;
|
|
<a name="l00454"></a>00454 };
|
|
<a name="l00455"></a>00455 <span class="keyword">template</span><>
|
|
<a name="l00456"></a><a class="code" href="a00423.html">00456</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00083.html">dense_tag</a>, <a class="code" href="a00409.html">sparse_proxy_tag</a>> {
|
|
<a name="l00457"></a><a class="code" href="a00423.html#a32b8b6f04f42ea5a6e347f077bfed55b">00457</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00423.html#a32b8b6f04f42ea5a6e347f077bfed55b">storage_category</a>;
|
|
<a name="l00458"></a>00458 };
|
|
<a name="l00459"></a>00459
|
|
<a name="l00460"></a>00460 <span class="keyword">template</span><>
|
|
<a name="l00461"></a><a class="code" href="a00419.html">00461</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00081.html">dense_proxy_tag</a>, <a class="code" href="a00360.html">packed_proxy_tag</a>> {
|
|
<a name="l00462"></a><a class="code" href="a00419.html#a076e0f2da9372442a50d2e9ff1ea4e57">00462</a> <span class="keyword">typedef</span> <a class="code" href="a00360.html">packed_proxy_tag</a> <a class="code" href="a00419.html#a076e0f2da9372442a50d2e9ff1ea4e57">storage_category</a>;
|
|
<a name="l00463"></a>00463 };
|
|
<a name="l00464"></a>00464 <span class="keyword">template</span><>
|
|
<a name="l00465"></a><a class="code" href="a00420.html">00465</a> <span class="keyword">struct </span><a class="code" href="a00418.html">storage_restrict_traits</a><<a class="code" href="a00081.html">dense_proxy_tag</a>, <a class="code" href="a00409.html">sparse_proxy_tag</a>> {
|
|
<a name="l00466"></a><a class="code" href="a00420.html#a569181619e3be7da882e54c65ca1c8a8">00466</a> <span class="keyword">typedef</span> <a class="code" href="a00409.html">sparse_proxy_tag</a> <a class="code" href="a00420.html#a569181619e3be7da882e54c65ca1c8a8">storage_category</a>;
|
|
<a name="l00467"></a>00467 };
|
|
<a name="l00468"></a>00468
|
|
<a name="l00469"></a>00469
|
|
<a name="l00470"></a>00470 <span class="comment">// Iterator tags -- hierarchical definition of storage characteristics</span>
|
|
<a name="l00471"></a>00471
|
|
<a name="l00472"></a><a class="code" href="a00408.html">00472</a> <span class="keyword">struct </span><a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a> : <span class="keyword">public</span> std::bidirectional_iterator_tag {};
|
|
<a name="l00473"></a><a class="code" href="a00361.html">00473</a> <span class="keyword">struct </span><a class="code" href="a00361.html">packed_random_access_iterator_tag</a> : <span class="keyword">public</span> std::random_access_iterator_tag {};
|
|
<a name="l00474"></a><a class="code" href="a00082.html">00474</a> <span class="keyword">struct </span><a class="code" href="a00082.html">dense_random_access_iterator_tag</a> : <span class="keyword">public</span> <a class="code" href="a00361.html">packed_random_access_iterator_tag</a> {};
|
|
<a name="l00475"></a>00475
|
|
<a name="l00476"></a>00476 <span class="comment">// Thanks to Kresimir Fresl for convincing Comeau with iterator_base_traits ;-)</span>
|
|
<a name="l00477"></a>00477 <span class="keyword">template</span><<span class="keyword">class</span> IC>
|
|
<a name="l00478"></a><a class="code" href="a00179.html">00478</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a> {};
|
|
<a name="l00479"></a>00479
|
|
<a name="l00480"></a>00480 <span class="keyword">template</span><>
|
|
<a name="l00481"></a><a class="code" href="a00188.html">00481</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><std::forward_iterator_tag> {
|
|
<a name="l00482"></a>00482 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00483"></a><a class="code" href="a00189.html">00483</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00484"></a><a class="code" href="a00189.html#af4dfb5f846449d58009d6dd3b9f9b141">00484</a> <span class="keyword">typedef</span> <a class="code" href="a00139.html" title="Base class of all forward iterators.">forward_iterator_base<std::forward_iterator_tag, I, T></a> <a class="code" href="a00189.html#af4dfb5f846449d58009d6dd3b9f9b141">type</a>;
|
|
<a name="l00485"></a>00485 };
|
|
<a name="l00486"></a>00486 };
|
|
<a name="l00487"></a>00487
|
|
<a name="l00488"></a>00488 <span class="keyword">template</span><>
|
|
<a name="l00489"></a><a class="code" href="a00186.html">00489</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><std::bidirectional_iterator_tag> {
|
|
<a name="l00490"></a>00490 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00491"></a><a class="code" href="a00187.html">00491</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00492"></a><a class="code" href="a00187.html#a3a83c0813c1c3fffd57fd5434d3d6b9f">00492</a> <span class="keyword">typedef</span> <a class="code" href="a00003.html" title="Base class of all bidirectional iterators.">bidirectional_iterator_base<std::bidirectional_iterator_tag, I, T></a> <a class="code" href="a00187.html#a3a83c0813c1c3fffd57fd5434d3d6b9f">type</a>;
|
|
<a name="l00493"></a>00493 };
|
|
<a name="l00494"></a>00494 };
|
|
<a name="l00495"></a>00495 <span class="keyword">template</span><>
|
|
<a name="l00496"></a><a class="code" href="a00184.html">00496</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><<a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>> {
|
|
<a name="l00497"></a>00497 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00498"></a><a class="code" href="a00185.html">00498</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00499"></a><a class="code" href="a00185.html#ad003dd6107f5d7fb145e02575338568c">00499</a> <span class="keyword">typedef</span> <a class="code" href="a00003.html" title="Base class of all bidirectional iterators.">bidirectional_iterator_base<sparse_bidirectional_iterator_tag, I, T></a> <a class="code" href="a00185.html#ad003dd6107f5d7fb145e02575338568c">type</a>;
|
|
<a name="l00500"></a>00500 };
|
|
<a name="l00501"></a>00501 };
|
|
<a name="l00502"></a>00502
|
|
<a name="l00503"></a>00503 <span class="keyword">template</span><>
|
|
<a name="l00504"></a><a class="code" href="a00190.html">00504</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><std::random_access_iterator_tag> {
|
|
<a name="l00505"></a>00505 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00506"></a><a class="code" href="a00191.html">00506</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00507"></a><a class="code" href="a00191.html#a234a5e19cf827c67025df399f0132ecf">00507</a> <span class="keyword">typedef</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base<std::random_access_iterator_tag, I, T></a> <a class="code" href="a00191.html#a234a5e19cf827c67025df399f0132ecf">type</a>;
|
|
<a name="l00508"></a>00508 };
|
|
<a name="l00509"></a>00509 };
|
|
<a name="l00510"></a>00510 <span class="keyword">template</span><>
|
|
<a name="l00511"></a><a class="code" href="a00182.html">00511</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><<a class="code" href="a00361.html">packed_random_access_iterator_tag</a>> {
|
|
<a name="l00512"></a>00512 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00513"></a><a class="code" href="a00183.html">00513</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00514"></a><a class="code" href="a00183.html#ad87073eea6d757f2ba8004f444bfaff9">00514</a> <span class="keyword">typedef</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base<packed_random_access_iterator_tag, I, T></a> <a class="code" href="a00183.html#ad87073eea6d757f2ba8004f444bfaff9">type</a>;
|
|
<a name="l00515"></a>00515 };
|
|
<a name="l00516"></a>00516 };
|
|
<a name="l00517"></a>00517 <span class="keyword">template</span><>
|
|
<a name="l00518"></a><a class="code" href="a00180.html">00518</a> <span class="keyword">struct </span><a class="code" href="a00179.html">iterator_base_traits</a><<a class="code" href="a00082.html">dense_random_access_iterator_tag</a>> {
|
|
<a name="l00519"></a>00519 <span class="keyword">template</span><<span class="keyword">class</span> I, <span class="keyword">class</span> T>
|
|
<a name="l00520"></a><a class="code" href="a00181.html">00520</a> <span class="keyword">struct </span>iterator_base {
|
|
<a name="l00521"></a><a class="code" href="a00181.html#af6b98d731e9622c8444e8a3bc9011a4e">00521</a> <span class="keyword">typedef</span> <a class="code" href="a00365.html" title="Base class of all random access iterators.">random_access_iterator_base<dense_random_access_iterator_tag, I, T></a> <a class="code" href="a00181.html#af6b98d731e9622c8444e8a3bc9011a4e">type</a>;
|
|
<a name="l00522"></a>00522 };
|
|
<a name="l00523"></a>00523 };
|
|
<a name="l00524"></a>00524
|
|
<a name="l00525"></a>00525 <span class="keyword">template</span><<span class="keyword">class</span> I1, <span class="keyword">class</span> I2>
|
|
<a name="l00526"></a><a class="code" href="a00192.html">00526</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a> {
|
|
<a name="l00527"></a><a class="code" href="a00192.html#a8dde94e45a58217d7be670af4be33e12">00527</a> <span class="keyword">typedef</span> I1 <a class="code" href="a00192.html#a8dde94e45a58217d7be670af4be33e12">iterator_category</a>;
|
|
<a name="l00528"></a>00528 };
|
|
<a name="l00529"></a>00529
|
|
<a name="l00530"></a>00530 <span class="keyword">template</span><>
|
|
<a name="l00531"></a><a class="code" href="a00196.html">00531</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00361.html">packed_random_access_iterator_tag</a>, <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>> {
|
|
<a name="l00532"></a><a class="code" href="a00196.html#a259f4852e2f34341ccaa33dd7f4de61b">00532</a> <span class="keyword">typedef</span> <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a> <a class="code" href="a00196.html#a259f4852e2f34341ccaa33dd7f4de61b">iterator_category</a>;
|
|
<a name="l00533"></a>00533 };
|
|
<a name="l00534"></a>00534 <span class="keyword">template</span><>
|
|
<a name="l00535"></a><a class="code" href="a00198.html">00535</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>, <a class="code" href="a00361.html">packed_random_access_iterator_tag</a>> {
|
|
<a name="l00536"></a><a class="code" href="a00198.html#a29cb285d4cd9030acec3940c56cb9d77">00536</a> <span class="keyword">typedef</span> <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a> <a class="code" href="a00198.html#a29cb285d4cd9030acec3940c56cb9d77">iterator_category</a>;
|
|
<a name="l00537"></a>00537 };
|
|
<a name="l00538"></a>00538
|
|
<a name="l00539"></a>00539 <span class="keyword">template</span><>
|
|
<a name="l00540"></a><a class="code" href="a00194.html">00540</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00082.html">dense_random_access_iterator_tag</a>, <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>> {
|
|
<a name="l00541"></a><a class="code" href="a00194.html#a36fd7f262800a37a5665734c96b5ed8e">00541</a> <span class="keyword">typedef</span> <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a> <a class="code" href="a00194.html#a36fd7f262800a37a5665734c96b5ed8e">iterator_category</a>;
|
|
<a name="l00542"></a>00542 };
|
|
<a name="l00543"></a>00543 <span class="keyword">template</span><>
|
|
<a name="l00544"></a><a class="code" href="a00197.html">00544</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>, <a class="code" href="a00082.html">dense_random_access_iterator_tag</a>> {
|
|
<a name="l00545"></a><a class="code" href="a00197.html#a1f1e597877625af1d4f81c871f6620e9">00545</a> <span class="keyword">typedef</span> <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a> <a class="code" href="a00197.html#a1f1e597877625af1d4f81c871f6620e9">iterator_category</a>;
|
|
<a name="l00546"></a>00546 };
|
|
<a name="l00547"></a>00547
|
|
<a name="l00548"></a>00548 <span class="keyword">template</span><>
|
|
<a name="l00549"></a><a class="code" href="a00193.html">00549</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00082.html">dense_random_access_iterator_tag</a>, <a class="code" href="a00361.html">packed_random_access_iterator_tag</a>> {
|
|
<a name="l00550"></a><a class="code" href="a00193.html#a13443a1ca74a6ecef27b627fcd2e372a">00550</a> <span class="keyword">typedef</span> <a class="code" href="a00361.html">packed_random_access_iterator_tag</a> <a class="code" href="a00193.html#a13443a1ca74a6ecef27b627fcd2e372a">iterator_category</a>;
|
|
<a name="l00551"></a>00551 };
|
|
<a name="l00552"></a>00552 <span class="keyword">template</span><>
|
|
<a name="l00553"></a><a class="code" href="a00195.html">00553</a> <span class="keyword">struct </span><a class="code" href="a00192.html">iterator_restrict_traits</a><<a class="code" href="a00361.html">packed_random_access_iterator_tag</a>, <a class="code" href="a00082.html">dense_random_access_iterator_tag</a>> {
|
|
<a name="l00554"></a><a class="code" href="a00195.html#ad48193169f00d035a7041c5ca2f417b6">00554</a> <span class="keyword">typedef</span> <a class="code" href="a00361.html">packed_random_access_iterator_tag</a> <a class="code" href="a00195.html#ad48193169f00d035a7041c5ca2f417b6">iterator_category</a>;
|
|
<a name="l00555"></a>00555 };
|
|
<a name="l00556"></a>00556
|
|
<a name="l00557"></a>00557 <span class="keyword">template</span><<span class="keyword">class</span> I>
|
|
<a name="l00558"></a>00558 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00559"></a><a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">00559</a> <span class="keywordtype">void</span> <a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">increment</a> (I &it, <span class="keyword">const</span> I &it_end, <span class="keyword">typename</span> I::difference_type compare, <a class="code" href="a00361.html">packed_random_access_iterator_tag</a>) {
|
|
<a name="l00560"></a>00560 it += (std::min) (compare, it_end - it);
|
|
<a name="l00561"></a>00561 }
|
|
<a name="l00562"></a>00562 <span class="keyword">template</span><<span class="keyword">class</span> I>
|
|
<a name="l00563"></a>00563 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00564"></a><a class="code" href="a00595.html#ab5d5caf6d6b37173efb0ad96e2fa34d9">00564</a> <span class="keywordtype">void</span> <a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">increment</a> (I &it, <span class="keyword">const</span> I &<span class="comment">/* it_end */</span>, <span class="keyword">typename</span> I::difference_type <span class="comment">/* compare */</span>, <a class="code" href="a00408.html">sparse_bidirectional_iterator_tag</a>) {
|
|
<a name="l00565"></a>00565 ++ it;
|
|
<a name="l00566"></a>00566 }
|
|
<a name="l00567"></a>00567 <span class="keyword">template</span><<span class="keyword">class</span> I>
|
|
<a name="l00568"></a>00568 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00569"></a><a class="code" href="a00595.html#ab654ddeeb09790fbc3db78619155fe0a">00569</a> <span class="keywordtype">void</span> <a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">increment</a> (I &it, <span class="keyword">const</span> I &it_end, <span class="keyword">typename</span> I::difference_type compare) {
|
|
<a name="l00570"></a>00570 <a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">increment</a> (it, it_end, compare, <span class="keyword">typename</span> I::iterator_category ());
|
|
<a name="l00571"></a>00571 }
|
|
<a name="l00572"></a>00572
|
|
<a name="l00573"></a>00573 <span class="keyword">template</span><<span class="keyword">class</span> I>
|
|
<a name="l00574"></a>00574 <a class="code" href="a00603.html#a578c14139742374e9a04e5afcb6cd24c">BOOST_UBLAS_INLINE</a>
|
|
<a name="l00575"></a><a class="code" href="a00595.html#a7aeb1a8137c5513102c9ba7ddf125a07">00575</a> <span class="keywordtype">void</span> <a class="code" href="a00595.html#a00e524ed262cdf2bef30737b1ad05b3e">increment</a> (I &it, <span class="keyword">const</span> I &it_end) {
|
|
<a name="l00576"></a>00576 <span class="preprocessor">#if BOOST_UBLAS_TYPE_CHECK</span>
|
|
<a name="l00577"></a>00577 <span class="preprocessor"></span> I cit (it);
|
|
<a name="l00578"></a>00578 <span class="keywordflow">while</span> (cit != it_end) {
|
|
<a name="l00579"></a>00579 <a class="code" href="a00610.html#aada705f9d1fd36fc1af3b703217ec69e">BOOST_UBLAS_CHECK</a> (*cit == <span class="keyword">typename</span> I::value_type<span class="comment">/*zero*/</span>(), <a class="code" href="a00178.html" title="Expception raised when some interal errors occurs like computations errors, zeros values where you sh...">internal_logic</a> ());
|
|
<a name="l00580"></a>00580 ++ cit;
|
|
<a name="l00581"></a>00581 }
|
|
<a name="l00582"></a>00582 <span class="preprocessor">#endif</span>
|
|
<a name="l00583"></a>00583 <span class="preprocessor"></span> it = it_end;
|
|
<a name="l00584"></a>00584 }
|
|
<a name="l00585"></a>00585
|
|
<a name="l00586"></a>00586 <span class="keyword">namespace </span>detail {
|
|
<a name="l00587"></a>00587
|
|
<a name="l00588"></a>00588 <span class="comment">// specialisation which define whether a type has a trivial constructor</span>
|
|
<a name="l00589"></a>00589 <span class="comment">// or not. This is used by array types.</span>
|
|
<a name="l00590"></a>00590 <span class="keyword">template</span><<span class="keyword">typename</span> T>
|
|
<a name="l00591"></a><a class="code" href="a00110.html">00591</a> <span class="keyword">struct </span><a class="code" href="a00110.html">has_trivial_constructor</a> : <span class="keyword">public</span> boost::<a class="code" href="a00110.html">has_trivial_constructor</a><T> {};
|
|
<a name="l00592"></a>00592
|
|
<a name="l00593"></a>00593 <span class="keyword">template</span><<span class="keyword">typename</span> T>
|
|
<a name="l00594"></a><a class="code" href="a00112.html">00594</a> <span class="keyword">struct </span><a class="code" href="a00112.html">has_trivial_destructor</a> : <span class="keyword">public</span> boost::<a class="code" href="a00112.html">has_trivial_destructor</a><T> {};
|
|
<a name="l00595"></a>00595
|
|
<a name="l00596"></a>00596 <span class="keyword">template</span><<span class="keyword">typename</span> FLT>
|
|
<a name="l00597"></a><a class="code" href="a00111.html">00597</a> <span class="keyword">struct </span><a class="code" href="a00110.html">has_trivial_constructor</a><std::complex<FLT> > : <span class="keyword">public</span> boost::true_type {};
|
|
<a name="l00598"></a>00598
|
|
<a name="l00599"></a>00599 <span class="keyword">template</span><<span class="keyword">typename</span> FLT>
|
|
<a name="l00600"></a><a class="code" href="a00113.html">00600</a> <span class="keyword">struct </span><a class="code" href="a00112.html">has_trivial_destructor</a><std::complex<FLT> > : <span class="keyword">public</span> boost::true_type {};
|
|
<a name="l00601"></a>00601
|
|
<a name="l00602"></a>00602 }
|
|
<a name="l00603"></a>00603
|
|
<a name="l00604"></a>00604
|
|
<a name="l00608"></a>00608 <span class="keyword">template</span> < <span class="keyword">class</span> E >
|
|
<a name="l00609"></a><a class="code" href="a00072.html">00609</a> <span class="keyword">struct </span><a class="code" href="a00072.html" title="Traits class to extract type information from a constant matrix or vector CONTAINER.">container_view_traits</a> {
|
|
<a name="l00611"></a><a class="code" href="a00072.html#af5064cd16c56c216204b48edaadc7ee7">00611</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::size_type <a class="code" href="a00072.html#af5064cd16c56c216204b48edaadc7ee7" title="type of indices">size_type</a>;
|
|
<a name="l00613"></a><a class="code" href="a00072.html#accf58d00f9fc9bb71cefe5dbc692d7ba">00613</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::difference_type <a class="code" href="a00072.html#accf58d00f9fc9bb71cefe5dbc692d7ba" title="type of differences of indices">difference_type</a>;
|
|
<a name="l00614"></a>00614
|
|
<a name="l00616"></a><a class="code" href="a00072.html#a091a1cb2814b6b67b478ac3922132df5">00616</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::storage_category <a class="code" href="a00072.html#a091a1cb2814b6b67b478ac3922132df5" title="storage category: unknown_storage_tag, dense_tag, packed_tag, ...">storage_category</a>;
|
|
<a name="l00617"></a>00617
|
|
<a name="l00619"></a><a class="code" href="a00072.html#a4ea7126fbacb0e0932fde071006121a2">00619</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::value_type <a class="code" href="a00072.html#a4ea7126fbacb0e0932fde071006121a2" title="type of elements">value_type</a>;
|
|
<a name="l00621"></a><a class="code" href="a00072.html#a898606cf70edd48e415188597be35bf8">00621</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::const_reference <a class="code" href="a00072.html#a898606cf70edd48e415188597be35bf8" title="const reference to an element">const_reference</a>;
|
|
<a name="l00622"></a>00622
|
|
<a name="l00624"></a><a class="code" href="a00072.html#a3e70e3fc95efe22c75e46254540fe102">00624</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::const_closure_type <a class="code" href="a00072.html#a3e70e3fc95efe22c75e46254540fe102" title="type used in expressions to mark a reference to this class (usually a const container_reference&lt;co...">const_closure_type</a>;
|
|
<a name="l00625"></a>00625 };
|
|
<a name="l00626"></a>00626
|
|
<a name="l00630"></a>00630 <span class="keyword">template</span> < <span class="keyword">class</span> E >
|
|
<a name="l00631"></a><a class="code" href="a00338.html">00631</a> <span class="keyword">struct </span><a class="code" href="a00338.html" title="Traits class to extract additional type information from a mutable matrix or vector CONTAINER...">mutable_container_traits</a> {
|
|
<a name="l00633"></a><a class="code" href="a00338.html#acaad8d9d2258ac81d1f03c4c7f0ccd7a">00633</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::reference <a class="code" href="a00338.html#acaad8d9d2258ac81d1f03c4c7f0ccd7a" title="reference to an element">reference</a>;
|
|
<a name="l00634"></a>00634
|
|
<a name="l00636"></a><a class="code" href="a00338.html#afc9b405e035bb649a71078a867a0a954">00636</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> E::closure_type <a class="code" href="a00338.html#afc9b405e035bb649a71078a867a0a954" title="type used in expressions to mark a reference to this class (usually a container_reference&lt;E&gt; or...">closure_type</a>;
|
|
<a name="l00637"></a>00637 };
|
|
<a name="l00638"></a>00638
|
|
<a name="l00642"></a>00642 <span class="keyword">template</span> < <span class="keyword">class</span> E >
|
|
<a name="l00643"></a><a class="code" href="a00071.html">00643</a> <span class="keyword">struct </span><a class="code" href="a00071.html" title="Traits class to extract type information from a matrix or vector CONTAINER.">container_traits</a>
|
|
<a name="l00644"></a>00644 : <a class="code" href="a00072.html" title="Traits class to extract type information from a constant matrix or vector CONTAINER.">container_view_traits</a><E>, <a class="code" href="a00338.html" title="Traits class to extract additional type information from a mutable matrix or vector CONTAINER...">mutable_container_traits</a><E> {
|
|
<a name="l00645"></a>00645
|
|
<a name="l00646"></a>00646 };
|
|
<a name="l00647"></a>00647
|
|
<a name="l00648"></a>00648
|
|
<a name="l00652"></a>00652 <span class="keyword">template</span> < <span class="keyword">class</span> MATRIX >
|
|
<a name="l00653"></a><a class="code" href="a00334.html">00653</a> <span class="keyword">struct </span><a class="code" href="a00334.html" title="Traits class to extract type information from a constant MATRIX.">matrix_view_traits</a> : <a class="code" href="a00072.html" title="Traits class to extract type information from a constant matrix or vector CONTAINER.">container_view_traits</a> <MATRIX> {
|
|
<a name="l00654"></a>00654
|
|
<a name="l00656"></a><a class="code" href="a00334.html#ac5889fcf13300a99e309fb9e046a05cd">00656</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIX::orientation_category <a class="code" href="a00334.html#ac5889fcf13300a99e309fb9e046a05cd" title="orientation of the matrix, either row_major_tag, column_major_tag or unknown_orientation_tag ...">orientation_category</a>;
|
|
<a name="l00657"></a>00657
|
|
<a name="l00659"></a><a class="code" href="a00334.html#ac7188352e006e69595cd3ef63b146981">00659</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIX::const_iterator1 <a class="code" href="a00334.html#ac7188352e006e69595cd3ef63b146981" title="row iterator for the matrix">const_iterator1</a>;
|
|
<a name="l00660"></a>00660
|
|
<a name="l00662"></a><a class="code" href="a00334.html#ac7631e36ed8151e8502e45fe209ffe7d">00662</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIX::const_iterator2 <a class="code" href="a00334.html#ac7631e36ed8151e8502e45fe209ffe7d" title="column iterator for the matrix">const_iterator2</a>;
|
|
<a name="l00663"></a>00663 };
|
|
<a name="l00664"></a>00664
|
|
<a name="l00668"></a>00668 <span class="keyword">template</span> < <span class="keyword">class</span> MATRIX >
|
|
<a name="l00669"></a><a class="code" href="a00343.html">00669</a> <span class="keyword">struct </span><a class="code" href="a00343.html" title="Traits class to extract additional type information from a mutable MATRIX.">mutable_matrix_traits</a>
|
|
<a name="l00670"></a>00670 : <a class="code" href="a00338.html" title="Traits class to extract additional type information from a mutable matrix or vector CONTAINER...">mutable_container_traits</a> <MATRIX> {
|
|
<a name="l00671"></a>00671
|
|
<a name="l00673"></a><a class="code" href="a00343.html#a4552d6a39479c012ddcd8e192137957f">00673</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIX::iterator1 <a class="code" href="a00343.html#a4552d6a39479c012ddcd8e192137957f" title="row iterator for the matrix">iterator1</a>;
|
|
<a name="l00674"></a>00674
|
|
<a name="l00676"></a><a class="code" href="a00343.html#ab69dd939738914bdb51477a87a639776">00676</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIX::iterator2 <a class="code" href="a00343.html#ab69dd939738914bdb51477a87a639776" title="column iterator for the matrix">iterator2</a>;
|
|
<a name="l00677"></a>00677 };
|
|
<a name="l00678"></a>00678
|
|
<a name="l00679"></a>00679
|
|
<a name="l00683"></a>00683 <span class="keyword">template</span> < <span class="keyword">class</span> MATRIX >
|
|
<a name="l00684"></a><a class="code" href="a00306.html">00684</a> <span class="keyword">struct </span><a class="code" href="a00306.html" title="Traits class to extract type information from a MATRIX.">matrix_traits</a>
|
|
<a name="l00685"></a>00685 : <a class="code" href="a00334.html" title="Traits class to extract type information from a constant MATRIX.">matrix_view_traits</a> <MATRIX>, <a class="code" href="a00343.html" title="Traits class to extract additional type information from a mutable MATRIX.">mutable_matrix_traits</a> <MATRIX> {
|
|
<a name="l00686"></a>00686 };
|
|
<a name="l00687"></a>00687
|
|
<a name="l00691"></a>00691 <span class="keyword">template</span> < <span class="keyword">class</span> VECTOR >
|
|
<a name="l00692"></a><a class="code" href="a00583.html">00692</a> <span class="keyword">struct </span><a class="code" href="a00583.html" title="Traits class to extract type information from a VECTOR.">vector_view_traits</a> : <a class="code" href="a00072.html" title="Traits class to extract type information from a constant matrix or vector CONTAINER.">container_view_traits</a> <VECTOR> {
|
|
<a name="l00693"></a>00693
|
|
<a name="l00695"></a><a class="code" href="a00583.html#a3f88a6766f3cea344482f21c1e4d0044">00695</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VECTOR::const_iterator <a class="code" href="a00583.html#a3f88a6766f3cea344482f21c1e4d0044" title="iterator for the VECTOR">const_iterator</a>;
|
|
<a name="l00696"></a>00696
|
|
<a name="l00698"></a>00698 <span class="keyword">static</span>
|
|
<a name="l00699"></a><a class="code" href="a00583.html#ab9b26cd5e6e24d6121c5c67f8044c8ec">00699</a> <a class="code" href="a00583.html#a3f88a6766f3cea344482f21c1e4d0044" title="iterator for the VECTOR">const_iterator</a> <a class="code" href="a00583.html#ab9b26cd5e6e24d6121c5c67f8044c8ec" title="iterator pointing to the first element">begin</a>(<span class="keyword">const</span> VECTOR & v) {
|
|
<a name="l00700"></a>00700 <span class="keywordflow">return</span> v.begin();
|
|
<a name="l00701"></a>00701 }
|
|
<a name="l00703"></a>00703 <span class="keyword">static</span>
|
|
<a name="l00704"></a><a class="code" href="a00583.html#a91351e230554759847870b45f4b63776">00704</a> <a class="code" href="a00583.html#a3f88a6766f3cea344482f21c1e4d0044" title="iterator for the VECTOR">const_iterator</a> <a class="code" href="a00583.html#a91351e230554759847870b45f4b63776" title="iterator pointing behind the last element">end</a>(<span class="keyword">const</span> VECTOR & v) {
|
|
<a name="l00705"></a>00705 <span class="keywordflow">return</span> v.end();
|
|
<a name="l00706"></a>00706 }
|
|
<a name="l00707"></a>00707
|
|
<a name="l00708"></a>00708 };
|
|
<a name="l00709"></a>00709
|
|
<a name="l00713"></a>00713 <span class="keyword">template</span> < <span class="keyword">class</span> VECTOR >
|
|
<a name="l00714"></a><a class="code" href="a00351.html">00714</a> <span class="keyword">struct </span><a class="code" href="a00351.html" title="Traits class to extract type information from a VECTOR.">mutable_vector_traits</a> : <a class="code" href="a00338.html" title="Traits class to extract additional type information from a mutable matrix or vector CONTAINER...">mutable_container_traits</a> <VECTOR> {
|
|
<a name="l00716"></a><a class="code" href="a00351.html#ac856b512dfca9d3e4cc6f5110c39da84">00716</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> VECTOR::iterator <a class="code" href="a00351.html#ac856b512dfca9d3e4cc6f5110c39da84" title="iterator for the VECTOR">iterator</a>;
|
|
<a name="l00717"></a>00717
|
|
<a name="l00719"></a>00719 <span class="keyword">static</span>
|
|
<a name="l00720"></a><a class="code" href="a00351.html#a48f4dfdc2d23d086594741e6363aaa00">00720</a> <a class="code" href="a00351.html#ac856b512dfca9d3e4cc6f5110c39da84" title="iterator for the VECTOR">iterator</a> <a class="code" href="a00351.html#a48f4dfdc2d23d086594741e6363aaa00" title="iterator pointing to the first element">begin</a>(VECTOR & v) {
|
|
<a name="l00721"></a>00721 <span class="keywordflow">return</span> v.begin();
|
|
<a name="l00722"></a>00722 }
|
|
<a name="l00723"></a>00723
|
|
<a name="l00725"></a>00725 <span class="keyword">static</span>
|
|
<a name="l00726"></a><a class="code" href="a00351.html#a96d3c5956a00bf8bd9bd5765cc055e81">00726</a> <a class="code" href="a00351.html#ac856b512dfca9d3e4cc6f5110c39da84" title="iterator for the VECTOR">iterator</a> <a class="code" href="a00351.html#a96d3c5956a00bf8bd9bd5765cc055e81" title="iterator pointing behind the last element">end</a>(VECTOR & v) {
|
|
<a name="l00727"></a>00727 <span class="keywordflow">return</span> v.end();
|
|
<a name="l00728"></a>00728 }
|
|
<a name="l00729"></a>00729 };
|
|
<a name="l00730"></a>00730
|
|
<a name="l00734"></a>00734 <span class="keyword">template</span> < <span class="keyword">class</span> VECTOR >
|
|
<a name="l00735"></a><a class="code" href="a00579.html">00735</a> <span class="keyword">struct </span><a class="code" href="a00579.html" title="Traits class to extract type information from a VECTOR.">vector_traits</a>
|
|
<a name="l00736"></a>00736 : <a class="code" href="a00583.html" title="Traits class to extract type information from a VECTOR.">vector_view_traits</a> <VECTOR>, <a class="code" href="a00351.html" title="Traits class to extract type information from a VECTOR.">mutable_vector_traits</a> <VECTOR> {
|
|
<a name="l00737"></a>00737 };
|
|
<a name="l00738"></a>00738
|
|
<a name="l00739"></a>00739
|
|
<a name="l00740"></a>00740 <span class="comment">// Note: specializations for T[N] and T[M][N] have been moved to traits/c_array.hpp</span>
|
|
<a name="l00741"></a>00741
|
|
<a name="l00742"></a>00742 }}}
|
|
<a name="l00743"></a>00743
|
|
<a name="l00744"></a>00744 <span class="preprocessor">#endif</span>
|
|
</pre></div></div>
|
|
</div>
|
|
<div id="nav-path" class="navpath">
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="a00639.html">traits.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>
|