query_8h-source.html
来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 682 行 · 第 1/4 页
HTML
682 行
<!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.15 --><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>query.h</h1><div class="fragment"><pre>00001 <font class="comment">//-< QUERY.H >-------------------------------------------------------*--------*</font>00002 <font class="comment">// FastDB Version 1.0 (c) 1999 GARRET * ? *</font>00003 <font class="comment">// (Main Memory Database Management System) * /\| *</font>00004 <font class="comment">// * / \ *</font>00005 <font class="comment">// Created: 20-Nov-98 K.A. Knizhnik * / [] \ *</font>00006 <font class="comment">// Last update: 10-Dec-98 K.A. Knizhnik * GARRET *</font>00007 <font class="comment">//-------------------------------------------------------------------*--------*</font>00008 <font class="comment">// Constructing and hashing database query statements</font>00009 <font class="comment">//-------------------------------------------------------------------*--------*</font>00010 00011 <font class="preprocessor">#ifndef __QUERY_H__</font>00012 <font class="preprocessor"></font><font class="preprocessor">#define __QUERY_H__</font>00013 <font class="preprocessor"></font><a name="l00017"></a><a class="code" href="classdbQueryElement.html">00017</a> <font class="keyword">class </font>FASTDB_DLL_ENTRY <a class="code" href="classdbQueryElement.html">dbQueryElement</a> { 00018 <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQuery.html">dbQuery</a>;00019 <font class="keyword">friend</font> <font class="keyword">class </font>dbCompiler;00020 <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQueryExpression.html">dbQueryExpression</a>;00021 <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQueryElementAllocator.html">dbQueryElementAllocator</a>;00022 <font class="keyword">public</font>:00023 <font class="keyword">enum</font> ElementType { 00024 qExpression, <font class="comment">// part of SQL expression</font>00025 qVarBool,00026 qVarInt1,00027 qVarInt2,00028 qVarInt4,00029 qVarInt8,00030 qVarReal4,00031 qVarReal8,00032 qVarString,00033 qVarStringPtr,00034 qVarReference,00035 qVarArrayOfRef, 00036 qVarArrayOfRefPtr,00037 qVarRawData00038 <font class="preprocessor">#ifdef USE_STD_STRING</font>00039 <font class="preprocessor"></font> ,qVarStdString00040 <font class="preprocessor">#endif</font>00041 <font class="preprocessor"></font> };00042 00043 <font class="keywordtype">void</font>* operator new (size_t size);00044 <font class="keywordtype">void</font> operator delete(<font class="keywordtype">void</font>* p) { 00045 <font class="keyword">delete</font>[] (<font class="keywordtype">char</font>*)p;00046 }00047 00048 <font class="keywordtype">char</font>* dump(<font class="keywordtype">char</font>* buf);00049 <font class="keywordtype">char</font>* dumpValues(<font class="keywordtype">char</font>* buf);00050 00051 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(ElementType t, <font class="keywordtype">void</font> <font class="keyword">const</font>* p, 00052 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table = NULL) 00053 {00054 type = t;00055 ptr = p; 00056 ref = table;00057 next = NULL;00058 } 00059 <font class="keyword">private</font>:00060 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* next;00061 <font class="keywordtype">void</font> <font class="keyword">const</font>* ptr;00062 ElementType type;00063 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* ref;00064 };00065 00066 <a name="l00072"></a><a class="code" href="classdbQueryElementAllocator.html">00072</a> <font class="keyword">class </font>FASTDB_DLL_ENTRY dbQueryElementAllocator { 00073 <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbDatabase.html">dbDatabase</a>;00074 00075 dbMutex& mutex;00076 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* freeChain;00077 00078 <font class="keyword">public</font>:00079 <font class="keywordtype">void</font> deallocate(<a class="code" href="classdbQueryElement.html">dbQueryElement</a>* first, <a class="code" href="classdbQueryElement.html">dbQueryElement</a>** lastNext) { 00080 dbCriticalSection cs(mutex);00081 <font class="keywordflow">if</font> (first != NULL) { 00082 *lastNext = freeChain;00083 freeChain = first;00084 }00085 }00086 00087 <font class="keywordtype">void</font>* allocate(size_t size) { 00088 dbCriticalSection cs(mutex);00089 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* elem = freeChain;00090 <font class="keywordflow">if</font> (elem != NULL) {00091 freeChain = elem-><a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>;00092 <font class="keywordflow">return</font> elem;00093 } <font class="keywordflow">else</font> {00094 <font class="keywordflow">return</font> <font class="keyword">new</font> byte[size];00095 }00096 }00097 dbQueryElementAllocator();00098 ~dbQueryElementAllocator();00099 00100 <font class="keyword">static</font> dbQueryElementAllocator instance;00101 };00102 00103 <font class="keyword">inline</font> <font class="keywordtype">void</font>* dbQueryElement::operator new(size_t size) {00104 <font class="keywordflow">return</font> dbQueryElementAllocator::instance.<a class="code" href="classdbQueryElementAllocator.html#dbQueryElementAllocatora1">allocate</a>(size);00105 }00106 <a name="l00126"></a><a class="code" href="classdbComponent.html">00126</a> <font class="keyword">class </font>FASTDB_DLL_ENTRY dbComponent { 00127 <font class="keyword">public</font>:00128 <font class="keywordtype">char</font> <font class="keyword">const</font>* structure;00129 <font class="keywordtype">char</font> <font class="keyword">const</font>* field; 00130 00131 dbComponent(<font class="keywordtype">char</font> <font class="keyword">const</font>* s, <font class="keywordtype">char</font> <font class="keyword">const</font>* f=NULL) : structure(s), field(f) {}00132 };00133 00134 <a name="l00141"></a><a class="code" href="classdbQueryExpression.html">00141</a> <font class="keyword">class </font>FASTDB_DLL_ENTRY dbQueryExpression { 00142 <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQuery.html">dbQuery</a>;00143 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>* first;00144 <a class="code" href="classdbQueryElement.html">dbQueryElement</a>** last;00145 <font class="keywordtype">bool</font> operand;00146 00147 <font class="keyword">public</font>:00148 dbQueryExpression& add(dbQueryElement::ElementType type, <font class="keywordtype">void</font> <font class="keyword">const</font>* ptr, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table = NULL) {00149 last = &(*last = <font class="keyword">new</font> <a class="code" href="classdbQueryElement.html">dbQueryElement</a>(type, ptr, table))-><a class="code" href="classdbQueryElement.html#dbQueryElemento0">next</a>;00150 operand = (type == dbQueryElement::qExpression);00151 <font class="keywordflow">return</font> *<font class="keyword">this</font>;00152 }00153 00154 dbQueryExpression& operator = (<font class="keywordtype">char</font> <font class="keyword">const</font>* ptr) { 00155 first = NULL, last = &first;00156 <font class="keywordflow">return</font> add(dbQueryElement::qExpression, ptr);00157 }00158 dbQueryExpression& operator = (dbComponent <font class="keyword">const</font>& comp);00159 00160 dbQueryExpression& operator = (dbQueryExpression <font class="keyword">const</font>& expr);00161 00162 dbQueryExpression& operator,(int1 <font class="keyword">const</font>& ptr) { 00163 <font class="keywordflow">return</font> add(dbQueryElement::qVarInt1, &ptr);00164 }00165 dbQueryExpression& operator,(int2 <font class="keyword">const</font>& ptr) { 00166 <font class="keywordflow">return</font> add(dbQueryElement::qVarInt2, &ptr);00167 }00168 dbQueryExpression& operator,(int4 <font class="keyword">const</font>& ptr) { 00169 <font class="keywordflow">return</font> add(dbQueryElement::qVarInt4, &ptr);00170 }00171 dbQueryExpression& operator,(db_int8 <font class="keyword">const</font>& ptr) { 00172 <font class="keywordflow">return</font> add(dbQueryElement::qVarInt8, &ptr);00173 }00174 dbQueryExpression& operator,(real4 <font class="keyword">const</font>& ptr) { 00175 <font class="keywordflow">return</font> add(dbQueryElement::qVarReal4, &ptr);00176 }00177 dbQueryExpression& operator,(real8 <font class="keyword">const</font>& ptr) { 00178 <font class="keywordflow">return</font> add(dbQueryElement::qVarReal8, &ptr);00179 }00180 dbQueryExpression& operator,(<font class="keywordtype">bool</font> <font class="keyword">const</font>& ptr) { 00181 <font class="keywordflow">return</font> add(dbQueryElement::qVarBool, &ptr);00182 }00183 dbQueryExpression& operator,(<font class="keywordtype">char</font> <font class="keyword">const</font>* ptr) { 00184 <font class="keywordflow">return</font> add(operand ? dbQueryElement::qVarString 00185 : dbQueryElement::qExpression, ptr);00186 }00187 dbQueryExpression& operator,(<font class="keywordtype">char</font> <font class="keyword">const</font>** ptr) { 00188 <font class="keywordflow">return</font> add(dbQueryElement::qVarStringPtr, ptr);00189 }00190 dbQueryExpression& operator,(<font class="keywordtype">char</font>** ptr) { 00191 <font class="keywordflow">return</font> add(dbQueryElement::qVarStringPtr, ptr);00192 }00193 dbQueryExpression& operator,(<font class="keywordtype">void</font> <font class="keyword">const</font>* ptr) { 00194 <font class="keywordflow">return</font> add(dbQueryElement::qVarRawData, ptr);00195 }00196 <font class="preprocessor">#ifdef USE_STD_STRING</font>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?