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

📄 query_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<!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>query.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>query.h</h1><div class="fragment"><pre>00001 <span class="comment">//-&lt; QUERY.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">// Constructing and hashing database query statements</span>00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>00010 00011 <span class="preprocessor">#ifndef __QUERY_H__</span>00012 <span class="preprocessor"></span><span class="preprocessor">#define __QUERY_H__</span>00013 <span class="preprocessor"></span>00014 BEGIN_FASTDB_NAMESPACE00015 <a name="l00019"></a><a class="code" href="classdbQueryElement.html">00019</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY <a class="code" href="classdbQueryElement.html">dbQueryElement</a> { 00020     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;00021     <span class="keyword">friend</span> <span class="keyword">class </span>dbCompiler;00022     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQueryExpression.html">dbQueryExpression</a>;00023     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQueryElementAllocator.html">dbQueryElementAllocator</a>;00024     <span class="keyword">friend</span> <span class="keyword">class </span>dbCLI;00025   <span class="keyword">public</span>:00026     <span class="keyword">enum</span> ElementType { 00027         qExpression, <span class="comment">// part of SQL expression</span>00028         qVarBool,00029         qVarInt1,00030         qVarInt2,00031         qVarInt4,00032         qVarInt8,00033         qVarReal4,00034         qVarReal8,00035         qVarString,00036         qVarStringPtr,00037         qVarReference,00038         qVarRectangle, 00039         qVarArrayOfRef, 00040         qVarArrayOfInt4,00041         qVarArrayOfInt8,00042         qVarArrayOfRefPtr,00043         qVarArrayOfInt4Ptr,00044         qVarArrayOfInt8Ptr,00045         qVarRawData,00046 <span class="preprocessor">#ifdef USE_STD_STRING</span>00047 <span class="preprocessor"></span>        qVarStdString,00048 <span class="preprocessor">#endif</span>00049 <span class="preprocessor"></span>        qVarUnknown00050     };00051     00052     ElementType getType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type; }00053     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* nextElement()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> next; }00054 00055     <span class="keywordtype">void</span>* operator new (size_t size EXTRA_DEBUG_NEW_PARAMS);00056     <span class="keywordtype">void</span>  operator delete(<span class="keywordtype">void</span>* p EXTRA_DEBUG_NEW_PARAMS);00057 00058     <span class="keywordtype">char</span>* dump(<span class="keywordtype">char</span>* buf);00059     <span class="keywordtype">char</span>* dumpValues(<span class="keywordtype">char</span>* buf);00060 00061     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(ElementType t, <span class="keywordtype">void</span> <span class="keyword">const</span>* p, 00062                    <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table = NULL) 00063     {00064         type = t;00065         ptr  = p;       00066         ref  = table;00067         next = NULL;00068     } 00069   <span class="keyword">private</span>:00070     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>*    next;00071     <span class="keywordtype">void</span> <span class="keyword">const</span>*        ptr;00072     ElementType        type;00073     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* ref;00074 };00075 00076 <a name="l00082"></a><a class="code" href="classdbQueryElementAllocator.html">00082</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbQueryElementAllocator { 00083     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbDatabase.html">dbDatabase</a>;00084 00085     dbMutex         mutex;00086     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* freeChain;00087     00088   <span class="keyword">public</span>:00089     <span class="keywordtype">void</span> deallocate(<a class="code" href="classdbQueryElement.html">dbQueryElement</a>* first, <a class="code" href="classdbQueryElement.html">dbQueryElement</a>** lastNext) { 00090         dbCriticalSection cs(mutex);00091         <span class="keywordflow">if</span> (first != NULL) { 00092             *lastNext = freeChain;00093             freeChain = first;00094         }00095     }00096         00097     <span class="keywordtype">void</span>* allocate(size_t size);00098 00099     dbQueryElementAllocator();00100     ~dbQueryElementAllocator();00101 00102     <span class="keyword">static</span> dbQueryElementAllocator instance;00103 };00104 <a name="l00124"></a><a class="code" href="classdbComponent.html">00124</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbComponent { 00125   <span class="keyword">public</span>:00126     <span class="keywordtype">char</span> <span class="keyword">const</span>* structure;00127     <span class="keywordtype">char</span> <span class="keyword">const</span>* field; 00128 00129     dbComponent(<span class="keywordtype">char</span> <span class="keyword">const</span>* s, <span class="keywordtype">char</span> <span class="keyword">const</span>* f=NULL) : structure(s), field(f) {}00130 };00131 00132 <a name="l00139"></a><a class="code" href="classdbQueryExpression.html">00139</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbQueryExpression { 00140     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;00141     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>*  first;00142     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>** last;00143     <span class="keywordtype">bool</span>             operand;00144 00145   <span class="keyword">public</span>:00146     dbQueryExpression&amp; add(dbQueryElement::ElementType type, <span class="keywordtype">void</span> <span class="keyword">const</span>* ptr, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table = NULL) {00147         last = &amp;(*last = <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>;00148         operand = (type == dbQueryElement::qExpression);00149         <span class="keywordflow">return</span> *<span class="keyword">this</span>;00150     }00151         00152     dbQueryExpression&amp; operator = (<span class="keywordtype">char</span> <span class="keyword">const</span>* ptr) { 00153         first = NULL, last = &amp;first;00154         <span class="keywordflow">return</span> add(dbQueryElement::qExpression, ptr);00155     }00156     dbQueryExpression&amp; operator = (dbComponent <span class="keyword">const</span>&amp; comp);00157 00158     dbQueryExpression&amp; operator = (dbQueryExpression <span class="keyword">const</span>&amp; expr);00159 00160     dbQueryExpression&amp; operator,(int1 <span class="keyword">const</span>&amp; ptr) { 00161         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt1, &amp;ptr);00162     }00163     dbQueryExpression&amp; operator,(int2 <span class="keyword">const</span>&amp; ptr) { 00164         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt2, &amp;ptr);00165     }00166     dbQueryExpression&amp; operator,(int4 <span class="keyword">const</span>&amp; ptr) { 00167         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt4, &amp;ptr);00168     }00169     dbQueryExpression&amp; operator,(db_int8 <span class="keyword">const</span>&amp; ptr) { 00170         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt8, &amp;ptr);00171     }00172     dbQueryExpression&amp; operator,(nat1 <span class="keyword">const</span>&amp; ptr) {00173         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt1, &amp;ptr);00174     }00175     dbQueryExpression&amp; operator,(nat2 <span class="keyword">const</span>&amp; ptr) {00176         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt2, &amp;ptr);00177     }00178     dbQueryExpression&amp; operator,(nat4 <span class="keyword">const</span>&amp; ptr) {00179         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt4, &amp;ptr);00180     }00181     dbQueryExpression&amp; operator,(db_nat8 <span class="keyword">const</span>&amp; ptr) {00182         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt8, &amp;ptr);00183     }00184 <span class="preprocessor">#if SIZEOF_LONG != 8</span>00185 <span class="preprocessor"></span>    dbQueryExpression&amp; operator,(<span class="keywordtype">long</span> <span class="keyword">const</span>&amp; ptr) {00186         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt4, &amp;ptr);00187     }00188     dbQueryExpression&amp; operator,(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keyword">const</span>&amp; ptr) {00189         <span class="keywordflow">return</span> add(dbQueryElement::qVarInt4, &amp;ptr);00190     }00191 <span class="preprocessor">#endif</span>00192 <span class="preprocessor"></span>    dbQueryExpression&amp; operator,(real4 <span class="keyword">const</span>&amp; ptr) { 00193         <span class="keywordflow">return</span> add(dbQueryElement::qVarReal4, &amp;ptr);00194     }00195     dbQueryExpression&amp; operator,(real8 <span class="keyword">const</span>&amp; ptr) { 00196         <span class="keywordflow">return</span> add(dbQueryElement::qVarReal8, &amp;ptr);00197     }00198     dbQueryExpression&amp; operator,(<span class="keywordtype">bool</span> <span class="keyword">const</span>&amp; ptr) { 00199         <span class="keywordflow">return</span> add(dbQueryElement::qVarBool, &amp;ptr);00200     }00201     dbQueryExpression&amp; operator,(<span class="keywordtype">char</span> <span class="keyword">const</span>* ptr) { 00202         <span class="keywordflow">return</span> add(operand ? dbQueryElement::qVarString 00203                    : dbQueryElement::qExpression, ptr);00204     }00205     dbQueryExpression&amp; operator,(<span class="keywordtype">char</span> <span class="keyword">const</span>** ptr) { 00206         <span class="keywordflow">return</span> add(dbQueryElement::qVarStringPtr, ptr);00207     }00208     dbQueryExpression&amp; operator,(<span class="keywordtype">char</span>** ptr) { 00209         <span class="keywordflow">return</span> add(dbQueryElement::qVarStringPtr, ptr);00210     }00211     dbQueryExpression&amp; operator,(<span class="keywordtype">void</span> <span class="keyword">const</span>* ptr) { 00212         <span class="keywordflow">return</span> add(dbQueryElement::qVarRawData, ptr);00213     }00214     dbQueryExpression&amp; operator,(<a class="code" href="classrectangle.html">rectangle</a> <span class="keyword">const</span>&amp; rect) {00215         <span class="keywordflow">return</span> add(dbQueryElement::qVarRectangle, &amp;rect);00216     }00217 <span class="preprocessor">#ifdef USE_STD_STRING</span>00218 <span class="preprocessor"></span>    dbQueryExpression&amp; operator,(std::string <span class="keyword">const</span>&amp; str) {00219         <span class="keywordflow">return</span> add(dbQueryElement::qVarStdString, &amp;str);00220     }00221 <span class="preprocessor">#endif</span>00222 <span class="preprocessor"></span>    dbQueryExpression&amp; operator,(dbQueryExpression <span class="keyword">const</span>&amp; expr) { 00223         *last = <span class="keyword">new</span> <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(dbQueryElement::qExpression, <span class="stringliteral">"("</span>);00224         (*last)-&gt;next = expr.<a class="code" href="classdbQueryExpression.html#dbQueryExpressiono0">first</a>;00225         last = expr.<a class="code" href="classdbQueryExpression.html#dbQueryExpressiono1">last</a>;00226         *last = <span class="keyword">new</span> <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(dbQueryElement::qExpression, <span class="stringliteral">")"</span>);

⌨️ 快捷键说明

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