⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rectangle_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>rectangle.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>rectangle.h</h1><div class="fragment"><pre>00001 <span class="comment">//-&lt; RECTANGLE.H &gt;---------------------------------------------------*--------*</span>
00002 <span class="comment">// FastDB                   Version 1.0         (c) 1999  GARRET     *     ?  *</span>
00003 <span class="comment">// (Post Relational Database Management System)                      *   /\|  *</span>
00004 <span class="comment">//                                                                   *  /  \  *</span>
00005 <span class="comment">//                          Created:     26-Nov-2001  K.A. Knizhnik  * / [] \ *</span>
00006 <span class="comment">//                          Last update: 26-Nov-2001  K.A. Knizhnik  * GARRET *</span>
00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00008 <span class="comment">// Rectangle class</span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010 
00011 <span class="preprocessor">#ifndef __RECTANGLE_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __RECTANGLE_H__</span>
00013 <span class="preprocessor"></span>
00014 BEGIN_FASTDB_NAMESPACE
00015 
00016 <span class="preprocessor">#ifndef RECTANGLE_DIMENSION</span>
00017 <span class="preprocessor"></span><span class="preprocessor">#define RECTANGLE_DIMENSION 2</span>
00018 <span class="preprocessor"></span><span class="preprocessor">#endif </span>
00019 <span class="preprocessor"></span>
00020 <span class="preprocessor">#ifndef RECTANGLE_COORDINATE_TYPE</span>
00021 <span class="preprocessor"></span><span class="preprocessor">#define RECTANGLE_COORDINATE_TYPE int4</span>
00022 <span class="preprocessor"></span><span class="preprocessor">#define RECTANGLE_AREA_TYPE int8</span>
00023 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00024 <span class="preprocessor"></span>
00025 
00026 <span class="keyword">typedef</span> RECTANGLE_COORDINATE_TYPE coord_t;
00027 <span class="keyword">typedef</span> RECTANGLE_AREA_TYPE       area_t;
00028 
<a name="l00032"></a><a class="code" href="classrectangle.html">00032</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY <a class="code" href="classrectangle.html">rectangle</a>
00033 {
00034   <span class="keyword">public</span>:
00035     <span class="keyword">enum</span> { dim = RECTANGLE_DIMENSION };
<a name="l00042"></a><a class="code" href="classrectangle.html#rectanglem0">00042</a>     coord_t boundary[dim*2];
00043 
00047     <span class="keyword">friend</span> coord_t FASTDB_DLL_ENTRY distance(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r, <a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; q);
00048 
<a name="l00052"></a><a class="code" href="classrectangle.html#rectanglel1">00052</a>     <span class="keyword">friend</span> area_t area(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r) { 
00053         area_t area = 1;
00054         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = dim; --i &gt;= 0; area *= r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] - r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i]);
00055         <span class="keywordflow">return</span> area;
00056     }
00057 
<a name="l00061"></a><a class="code" href="classrectangle.html#rectanglea0">00061</a>     <span class="keywordtype">void</span> operator +=(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r) { 
00062         <span class="keywordtype">int</span> i = dim; 
00063         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00064             boundary[i] = (boundary[i] &lt;= r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i]) 
00065                 ? boundary[i] : r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i];
00066             boundary[i+dim] = (boundary[i+dim] &gt;= r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim]) 
00067                 ? boundary[i+dim] : r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim];
00068         }
00069     }
<a name="l00073"></a><a class="code" href="classrectangle.html#rectanglea1">00073</a>     <a class="code" href="classrectangle.html">rectangle</a> operator + (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00074         <a class="code" href="classrectangle.html">rectangle</a> res;
00075         <span class="keywordtype">int</span> i = dim; 
00076         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00077             res.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] = (boundary[i] &lt;= r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i]) 
00078                 ? boundary[i] : r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i];
00079             res.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] = (boundary[i+dim] &gt;= r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim]) 
00080                 ? boundary[i+dim] : r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim];
00081         }
00082         <span class="keywordflow">return</span> res;
00083     }
<a name="l00087"></a><a class="code" href="classrectangle.html#rectanglea2">00087</a>     <span class="keywordtype">bool</span> operator &amp; (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{
00088         <span class="keywordtype">int</span> i = dim; 
00089         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00090             <span class="keywordflow">if</span> (boundary[i] &gt; r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] ||
00091                 r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] &gt; boundary[i+dim])
00092             {
00093                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00094             }
00095         }
00096         <span class="keywordflow">return</span> <span class="keyword">true</span>;
00097     }
<a name="l00102"></a><a class="code" href="classrectangle.html#rectanglea3">00102</a>     <span class="keywordtype">bool</span> operator &lt;= (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00103         <span class="keywordtype">int</span> i = dim; 
00104         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00105             <span class="keywordflow">if</span> (boundary[i] &lt; r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] ||
00106                 boundary[i+dim] &gt; r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim])
00107             {
00108                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00109             }
00110         }
00111         <span class="keywordflow">return</span> <span class="keyword">true</span>;
00112     }
<a name="l00117"></a><a class="code" href="classrectangle.html#rectanglea4">00117</a>     <span class="keywordtype">bool</span> operator &gt;= (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00118         <span class="keywordtype">int</span> i = dim; 
00119         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00120             <span class="keywordflow">if</span> (r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] &lt; boundary[i] ||
00121                 r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] &gt; boundary[i+dim])
00122             {
00123                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00124             }
00125         }
00126         <span class="keywordflow">return</span> <span class="keyword">true</span>;
00127     }
00128 
<a name="l00133"></a><a class="code" href="classrectangle.html#rectanglea5">00133</a>     <span class="keywordtype">bool</span> operator &lt; (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00134         <span class="keywordflow">return</span> *<span class="keyword">this</span> &lt;= r &amp;&amp; *<span class="keyword">this</span> != r;
00135     }
<a name="l00140"></a><a class="code" href="classrectangle.html#rectanglea6">00140</a>     <span class="keywordtype">bool</span> operator &gt; (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00141         <span class="keywordflow">return</span> *<span class="keyword">this</span> &gt;= r &amp;&amp; *<span class="keyword">this</span> != r;
00142     }
<a name="l00146"></a><a class="code" href="classrectangle.html#rectanglea7">00146</a>     <span class="keywordtype">bool</span> operator == (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00147         <span class="keywordtype">int</span> i = dim*2; 
00148         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00149             <span class="keywordflow">if</span> (boundary[i] != r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i]) { 
00150                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00151             }
00152         }
00153         <span class="keywordflow">return</span> <span class="keyword">true</span>;
00154     }
<a name="l00158"></a><a class="code" href="classrectangle.html#rectanglea8">00158</a>     <span class="keywordtype">bool</span> operator != (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r)<span class="keyword"> const </span>{ 
00159         <span class="keywordtype">int</span> i = dim*2; 
00160         <span class="keywordflow">while</span> (--i &gt;= 0) { 
00161             <span class="keywordflow">if</span> (boundary[i] != r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i]) { 
00162                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
00163             }
00164         }
00165         <span class="keywordflow">return</span> <span class="keyword">false</span>;
00166     }
00167 
00168     <span class="keyword">typedef</span> bool (rectangle::*comparator)(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; r) <span class="keyword">const</span>;
00169 };
00170 
00171 END_FASTDB_NAMESPACE
00172 
00173 <span class="preprocessor">#endif</span>
00174 <span class="preprocessor"></span>
00175 
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 for FastDB by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -