📄 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_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>& 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_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 + -