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

📄 cursor_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!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>cursor.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>cursor.h</h1><div class="fragment"><pre>00001 <span class="comment">//-&lt; CURSOR.H &gt;------------------------------------------------------*--------*</span>00002 <span class="comment">// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *</span>00003 <span class="comment">// (Main Memory Database Management System)                          *   /\|  *</span>00004 <span class="comment">//                                                                   *  /  \  *</span>00005 <span class="comment">//                          Created:     20-Nov-98    K.A. Knizhnik  * / [] \ *</span>00006 <span class="comment">//                          Last update: 10-Dec-98    K.A. Knizhnik  * GARRET *</span>00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>00008 <span class="comment">// Table cursor</span>00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>00010 00011 <span class="preprocessor">#ifndef __CURSOR_H__</span>00012 <span class="preprocessor"></span><span class="preprocessor">#define __CURSOR_H__</span>00013 <span class="preprocessor"></span>00014 BEGIN_FASTDB_NAMESPACE00015 00016 <span class="keyword">class </span>dbOrderByNode;00017 00018 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbSelection { 00019   <span class="keyword">public</span>:00020     <span class="keyword">enum</span> { quantum = 1024 };00021     <span class="keyword">class </span>segment { 00022       <span class="keyword">public</span>:00023         segment* prev;00024         segment* next;00025         size_t   nRows;00026         oid_t    rows[quantum];00027 00028         segment(segment* after) { 00029             prev = after;00030             next = NULL;00031             nRows = 0;00032         }       00033     };00034     segment*  first;00035     segment*  last;00036     segment*  curr;00037     size_t    nRows;00038     size_t    pos;00039 00040     segment*  createNewSegment(segment* after);00041 00042     <span class="keywordtype">void</span> add(oid_t oid) {00043         <span class="keywordflow">if</span> (last == NULL) { 00044             first = last = createNewSegment(NULL);00045         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (last-&gt;nRows == quantum) { 00046             last = last-&gt;next = createNewSegment(last);00047         }00048         last-&gt;rows[last-&gt;nRows++] = oid;00049         nRows += 1;00050     }00051    00052     <span class="keywordtype">void</span> sort(<a class="code" href="classdbDatabase.html">dbDatabase</a>* db, dbOrderByNode* order);00053     <span class="keyword">static</span> <span class="keywordtype">int</span> compare(oid_t a, oid_t b, dbOrderByNode* order);00054 00055     <span class="keywordtype">void</span> toArray(oid_t* oids) <span class="keyword">const</span>;00056     <span class="keywordtype">void</span> truncate(size_t from, size_t length);00057 00058     dbSelection() { 00059         nRows = 0;00060         pos = 0;00061         first = curr = last = NULL;00062     }00063     <span class="keywordtype">void</span> reverse();00064     <span class="keywordtype">void</span> reset();00065 };00066 00067 <span class="keyword">enum</span> dbCursorType { 00068     dbCursorViewOnly,00069     dbCursorForUpdate00070 };00071 <a name="l00075"></a><a class="code" href="classdbAnyCursor.html">00075</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbAnyCursor : <span class="keyword">public</span> <a class="code" href="classdbL2List.html">dbL2List</a> { 00076     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbAnyContainer.html">dbAnyContainer</a>;00077     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbDatabase.html">dbDatabase</a>;00078     <span class="keyword">friend</span> <span class="keyword">class </span>dbHashTable;00079     <span class="keyword">friend</span> <span class="keyword">class </span>dbTtreeNode;00080     <span class="keyword">friend</span> <span class="keyword">class </span>dbRtreePage;00081     <span class="keyword">friend</span> <span class="keyword">class </span>dbSubSql;00082     <span class="keyword">friend</span> <span class="keyword">class </span>dbStatement;00083     <span class="keyword">friend</span> <span class="keyword">class </span>dbServer;00084     <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;00085     <span class="keyword">friend</span> <span class="keyword">class </span>JniResultSet;00086   <span class="keyword">public</span>:<a name="l00091"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a15">00091</a>     <span class="keywordtype">int</span> getNumberOfRecords()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (int)selection.nRows; }00092 00096     <span class="keywordtype">void</span> remove();00097     <a name="l00102"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a17">00102</a>     <span class="keywordtype">bool</span> isEmpty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> currId == 0; }00103 <a name="l00108"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a19">00108</a>     <span class="keywordtype">bool</span> isUpdateCursor()<span class="keyword"> const </span>{ 00109         <span class="keywordflow">return</span> type == dbCursorForUpdate;00110     }00111 <a name="l00116"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a20">00116</a>     <span class="keywordtype">bool</span> isLimitReached()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> selection.nRows &gt;= limit || selection.nRows &gt;= stmtLimitLen; }00117 00125     oid_t* toArrayOfOid(oid_t* arr) <span class="keyword">const</span>; 00126 <a name="l00137"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a22">00137</a>     <span class="keywordtype">int</span> select(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query, dbCursorType aType, <span class="keywordtype">void</span>* paramStruct = NULL) {00138         type = aType;00139         reset();00140         paramBase = paramStruct;00141         db-&gt;select(<span class="keyword">this</span>, query);00142         paramBase = NULL;00143         <span class="keywordflow">if</span> (gotoFirst() &amp;&amp; prefetch) { 00144             fetch();00145         }00146         <span class="keywordflow">return</span> (int)selection.nRows;00147     } 00148     <a name="l00155"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a23">00155</a>     <span class="keywordtype">int</span> select(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query, <span class="keywordtype">void</span>* paramStruct = NULL) { 00156         <span class="keywordflow">return</span> select(query, defaultType, paramStruct);00157     }00158      <a name="l00166"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a24">00166</a>     <span class="keywordtype">int</span> select(<span class="keywordtype">char</span> <span class="keyword">const</span>* condition, dbCursorType aType, <span class="keywordtype">void</span>* paramStruct = NULL) { 00167         <a class="code" href="classdbQuery.html">dbQuery</a> query(condition);00168         <span class="keywordflow">return</span> select(query, aType, paramStruct);00169     } 00170 <a name="l00177"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a25">00177</a>     <span class="keywordtype">int</span> select(<span class="keywordtype">char</span> <span class="keyword">const</span>* condition, <span class="keywordtype">void</span>* paramStruct = NULL) { 00178         <span class="keywordflow">return</span> select(condition, defaultType, paramStruct);00179     }00180 <a name="l00186"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a26">00186</a>     <span class="keywordtype">int</span> select(dbCursorType aType) { 00187         type = aType;00188         reset();00189         db-&gt;select(<span class="keyword">this</span>); 00190         <span class="keywordflow">if</span> (gotoFirst() &amp;&amp; prefetch) { 00191             fetch();00192         }00193         <span class="keywordflow">return</span> (int)selection.nRows;00194     } 00195 <a name="l00200"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a27">00200</a>     <span class="keywordtype">int</span> select() {00201         <span class="keywordflow">return</span> select(defaultType);00202     }00203 00210     <span class="keywordtype">int</span> selectByKey(<span class="keywordtype">char</span> <span class="keyword">const</span>* key, <span class="keywordtype">void</span> <span class="keyword">const</span>* value);00211 00219     <span class="keywordtype">int</span> selectByKeyRange(<span class="keywordtype">char</span> <span class="keyword">const</span>* key, <span class="keywordtype">void</span> <span class="keyword">const</span>* minValue, <span class="keywordtype">void</span> <span class="keyword">const</span>* maxValue);00220 <a name="l00225"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a30">00225</a>     <span class="keywordtype">void</span> update() { 00226         assert(type == dbCursorForUpdate &amp;&amp; currId != 0);00227         db-&gt;update(currId, table, record);00228     }00229 <a name="l00233"></a><a class="code" href="classdbAnyCursor.html#dbCursor_3_01dbTimeSeriesBlock_3_01T_01_4_01_4a31">00233</a>     <span class="keywordtype">void</span> removeAll() {00234         assert(db != NULL);00235         db-&gt;deleteTable(table);

⌨️ 快捷键说明

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