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

📄 query_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00227         last = &amp;(*last)-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>;00228         operand = <span class="keyword">false</span>;00229         <span class="keywordflow">return</span> *<span class="keyword">this</span>;00230     }00231     dbQueryExpression&amp; operator,(dbComponent <span class="keyword">const</span>&amp; comp) { 00232         add(dbQueryElement::qExpression, comp.<a class="code" href="classdbComponent.html#dbComponentm0">structure</a>);00233         <span class="keywordflow">if</span> (comp.<a class="code" href="classdbComponent.html#dbComponentm1">field</a> != NULL) { 00234             add(dbQueryElement::qExpression, <span class="stringliteral">"."</span>);00235             add(dbQueryElement::qExpression, comp.<a class="code" href="classdbComponent.html#dbComponentm1">field</a>);00236         }00237         operand = <span class="keyword">false</span>;00238         <span class="keywordflow">return</span> *<span class="keyword">this</span>;00239     }00240     dbQueryExpression&amp; operator += (dbComponent <span class="keyword">const</span>&amp; comp) { 00241         <span class="keywordflow">return</span> *<span class="keyword">this</span>,comp;00242     }00243     dbQueryExpression&amp; operator += (<span class="keywordtype">char</span> <span class="keyword">const</span>* ptr) { 00244         <span class="keywordflow">return</span> add(dbQueryElement::qExpression, ptr);00245     }00246 <span class="preprocessor">#ifndef NO_MEMBER_TEMPLATES</span>00247 <span class="preprocessor"></span>    <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;00248     dbQueryExpression&amp; operator,(<a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> <span class="keyword">const</span>&amp; value) { 00249         <span class="keywordflow">return</span> add(dbQueryElement::qVarReference, &amp;value, &amp;T::dbDescriptor);00250     }00251 00252     <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;00253     <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray</a>&lt; <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> &gt; <span class="keyword">const</span>&amp; value) { 00254         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfRef, &amp;value, &amp;T::dbDescriptor);00255     }00256 00257     <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;00258     <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray</a>&lt; <a class="code" href="classdbReference.html">dbReference&lt;T&gt;</a> &gt;<span class="keyword">const</span>* <span class="keyword">const</span>&amp; value) { 00259         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfRefPtr, &amp;value, &amp;T::dbDescriptor);00260     }00261 <span class="preprocessor">#endif</span>00262 <span class="preprocessor"></span><span class="preprocessor">#if !defined(_MSC_VER) || _MSC_VER+0 &gt;= 1300</span>00263 <span class="preprocessor"></span>    <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray&lt;db_int4&gt;</a> <span class="keyword">const</span>&amp; value) { 00264         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfInt4, &amp;value);00265     }00266 00267     <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray&lt;db_int4&gt;</a><span class="keyword">const</span>* <span class="keyword">const</span>&amp; value) { 00268         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfInt4Ptr, &amp;value);00269     }00270 00271     <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray&lt;db_int8&gt;</a> <span class="keyword">const</span>&amp; value) { 00272         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfInt8, &amp;value);00273     }00274 00275     <span class="keyword">inline</span> dbQueryExpression&amp; operator,(<a class="code" href="classdbArray.html">dbArray&lt;db_int8&gt;</a><span class="keyword">const</span>* <span class="keyword">const</span>&amp; value) { 00276         <span class="keywordflow">return</span> add(dbQueryElement::qVarArrayOfInt8Ptr, &amp;value);00277     }00278 <span class="preprocessor">#endif</span>00279 <span class="preprocessor"></span>};00280 00281 <span class="keyword">class </span>dbOrderByNode;00282 <span class="keyword">class </span>dbFollowByNode;00283 00284 <a name="l00288"></a><a class="code" href="classdbCompiledQuery.html">00288</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCompiledQuery { 00289   <span class="keyword">public</span>:00290     dbExprNode*        tree;00291     dbOrderByNode*     order;00292     dbFollowByNode*    follow;00293     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00294     <span class="keywordtype">int</span>                schemeVersion;00295 00296     size_t             stmtLimitStart;00297     size_t             stmtLimitLen;00298     int4*              stmtLimitStartPtr;00299     int4*              stmtLimitLenPtr;00300     <span class="keywordtype">bool</span>               limitSpecified;00301 00302     <span class="keyword">enum</span> IteratorInit { 00303         StartFromAny,00304         StartFromFirst,00305         StartFromLast,00306         StartFromRef, 00307         StartFromArray,00308         StartFromArrayPtr00309     };00310     IteratorInit       startFrom;00311     <span class="keywordtype">void</span> <span class="keyword">const</span>*        root;00312 00313     <span class="keywordtype">void</span> destroy();00314 00315     <span class="keywordtype">bool</span> compiled() { <span class="keywordflow">return</span> tree != NULL; }00316 00317     dbCompiledQuery() { 00318         tree = NULL;00319         order = NULL;00320         follow = NULL;00321         table = NULL;00322         startFrom = StartFromAny;00323         limitSpecified = <span class="keyword">false</span>;00324     }00325 };00326 <a name="l00331"></a><a class="code" href="classdbQuery.html">00331</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbQuery : <span class="keyword">public</span> dbCompiledQuery { 00332     <span class="keyword">friend</span> <span class="keyword">class </span>dbCompiler;00333     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbDatabase.html">dbDatabase</a>;00334     <span class="keyword">friend</span> <span class="keyword">class </span>dbSubSql;00335     <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;00336   <span class="keyword">private</span>:00337     dbMutex            mutex;00338     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>*    elements;00339     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>**   nextElement;00340     <span class="keywordtype">bool</span>               operand;00341     <span class="keywordtype">bool</span>               mutexLocked;00342 00343     <span class="comment">//</span>00344     <span class="comment">// Prohibite query copying</span>00345     <span class="comment">//</span>00346     dbQuery(dbQuery <span class="keyword">const</span>&amp;) : dbCompiledQuery() {} 00347     dbQuery&amp; operator =(dbQuery <span class="keyword">const</span>&amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }00348 00349   <span class="keyword">public</span>:00350     <span class="keywordtype">int</span>                pos; <span class="comment">// position of condition in statement</span>00351 00352 00353     <span class="keywordtype">char</span>* dump(<span class="keywordtype">char</span>* buf) { 00354         <span class="keywordtype">char</span>* p = buf;00355         <span class="keywordflow">for</span> (<a class="code" href="classdbQueryElement.html">dbQueryElement</a>* elem = elements; elem != NULL; elem = elem-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>) { 00356             p = elem-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElementa4">dump</a>(p);00357         }00358         <span class="keywordflow">return</span> buf;00359     }00360 00361     <span class="keywordtype">char</span>* dumpValues(<span class="keywordtype">char</span>* buf) { 00362         <span class="keywordtype">char</span>* p = buf;00363         <span class="keywordflow">for</span> (<a class="code" href="classdbQueryElement.html">dbQueryElement</a>* elem = elements; elem != NULL; elem = elem-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>) { 00364             p = elem-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElementa5">dumpValues</a>(p);00365         }00366         <span class="keywordflow">return</span> buf;00367     }00368 00369     dbQuery&amp; append(dbQueryElement::ElementType type, <span class="keywordtype">void</span> <span class="keyword">const</span>* ptr,00370                     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table = NULL) 00371     { 00372         nextElement = &amp;(*nextElement=<span class="keyword">new</span> <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(type,ptr,table))-&gt;<a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>;00373         operand = (type == dbQueryElement::qExpression);00374         <span class="keywordflow">return</span> *<span class="keyword">this</span>;00375     }00376 00377     dbQuery&amp; reset();00378 00379     <span class="comment">//</span>00380     <span class="comment">// Redefined operator = and , make it possible to specify query in the</span>00381     <span class="comment">// following way:</span>00382     <span class="comment">//         int x, y;</span>00383     <span class="comment">//         dbDataTime dt;</span>00384     <span class="comment">//         dbQuery q; </span>00385     <span class="comment">//         dbCursor&lt;record&gt; cursor;</span>00386     <span class="comment">//         q = "x=",x,"and y=",y,"and",dt == "date";</span>00387     <span class="comment">//         for (x = 0; x &lt; max_x; x++) { </span>00388     <span class="comment">//             for (y = 0; y &lt; max_y; y++) { </span>00389     <span class="comment">//                 cursor.select(q);</span>00390     <span class="comment">//                 ...</span>00391     <span class="comment">//             }</span>00392     <span class="comment">//         }</span>00393 00394     dbQuery&amp; add(dbQueryExpression <span class="keyword">const</span>&amp; expr); 00395 00396     dbQuery&amp; And(<span class="keywordtype">char</span> <span class="keyword">const</span>* str) { 00397         <span class="keywordflow">if</span> (elements != NULL) { 00398             append(dbQueryElement::qExpression, <span class="stringliteral">"and"</span>);00399         }00400         <span class="keywordflow">return</span> append(dbQueryElement::qExpression, str);00401     }00402 00403     dbQuery&amp; Or(<span class="keywordtype">char</span> <span class="keyword">const</span>* str) { 00404         <span class="keywordflow">if</span> (elements != NULL) { 00405             append(dbQueryElement::qExpression, <span class="stringliteral">"or"</span>);00406         }00407         <span class="keywordflow">return</span> append(dbQueryElement::qExpression, str);00408     }00409 00410     dbQuery&amp; add(<span class="keywordtype">char</span> <span class="keyword">const</span>* str) { 00411         <span class="keywordflow">return</span> append(operand ? dbQueryElement::qVarString 00412                       : dbQueryElement::qExpression, str);00413     }00414     dbQuery&amp; add(<span class="keywordtype">char</span> <span class="keyword">const</span>** str) { 00415         <span class="keywordflow">return</span> append(dbQueryElement::qVarStringPtr, str);00416     }00417     dbQuery&amp; add(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; rect) {00418         <span class="keywordflow">return</span> append(dbQueryElement::qVarRectangle, &amp;rect);00419     }00420 <span class="preprocessor">#ifdef USE_STD_STRING</span>00421 <span class="preprocessor"></span>    dbQuery&amp; add(std::string <span class="keyword">const</span>&amp; str) { 00422         <span class="keywordflow">return</span> append(dbQueryElement::qVarStdString, &amp;str);00423     }00424     dbQuery&amp; operator,(std::string <span class="keyword">const</span>&amp; str) { <span class="keywordflow">return</span> add(str); }00425 <span class="preprocessor">#endif</span>00426 <span class="preprocessor"></span>    dbQuery&amp; add(<span class="keywordtype">char</span>** str) { 00427         <span class="keywordflow">return</span> append(dbQueryElement::qVarStringPtr, str);00428     }00429     dbQuery&amp; add(int1 <span class="keyword">const</span>&amp; value) { 00430         <span class="keywordflow">return</span> append(dbQueryElement::qVarInt1, &amp;value);00431     }00432     dbQuery&amp; add (int2 <span class="keyword">const</span>&amp; value) { 00433         <span class="keywordflow">return</span> append(dbQueryElement::qVarInt2, &amp;value);00434     }

⌨️ 快捷键说明

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