📄 rectangle_8h-source.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> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center><hr><h1>rectangle.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< RECTANGLE.H >---------------------------------------------------*--------*</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_NAMESPACE00015 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>& r, <a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& 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>& r) { 00053 area_t area = 1;00054 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = dim; --i >= 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>& r) { 00062 <span class="keywordtype">int</span> i = dim; 00063 <span class="keywordflow">while</span> (--i >= 0) { 00064 boundary[i] = (boundary[i] <= 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] >= 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>& 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 >= 0) { 00077 res.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] = (boundary[i] <= 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] >= 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 & (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& r)<span class="keyword"> const </span>{00088 <span class="keywordtype">int</span> i = dim; 00089 <span class="keywordflow">while</span> (--i >= 0) { 00090 <span class="keywordflow">if</span> (boundary[i] > r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] ||00091 r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] > 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 <= (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& r)<span class="keyword"> const </span>{ 00103 <span class="keywordtype">int</span> i = dim; 00104 <span class="keywordflow">while</span> (--i >= 0) { 00105 <span class="keywordflow">if</span> (boundary[i] < r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] ||00106 boundary[i+dim] > 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 >= (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& r)<span class="keyword"> const </span>{ 00118 <span class="keywordtype">int</span> i = dim; 00119 <span class="keywordflow">while</span> (--i >= 0) { 00120 <span class="keywordflow">if</span> (r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i] < boundary[i] ||00121 r.<a class="code" href="classrectangle.html#rectanglem0">boundary</a>[i+dim] > 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 < (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& r)<span class="keyword"> const </span>{ 00134 <span class="keywordflow">return</span> *<span class="keyword">this</span> <= r && *<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 > (<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>& r)<span class="keyword"> const </span>{ 00141 <span class="keywordflow">return</span> *<span class="keyword">this</span> >= r && *<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>& r)<span class="keyword"> const </span>{ 00147 <span class="keywordtype">int</span> i = dim*2; 00148 <span class="keywordflow">while</span> (--i >= 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>& r)<span class="keyword"> const </span>{ 00159 <span class="keywordtype">int</span> i = dim*2; 00160 <span class="keywordflow">while</span> (--i >= 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>& r) <span class="keyword">const</span>;00169 };00170 00171 END_FASTDB_NAMESPACE00172 00173 <span class="preprocessor">#endif</span>00174 <span class="preprocessor"></span>00175 </pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 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 + -