compiler_8h-source.html

来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 437 行 · 第 1/2 页

HTML
437
字号
00212 00213     <font class="keywordtype">void</font>* operator new(size_t size);00214 00215     <font class="keywordtype">void</font> operator delete(<font class="keywordtype">void</font>* ptr) { 00216         <font class="keywordflow">if</font> (ptr != NULL) { 00217             dbExprNode* node = (dbExprNode*)ptr;00218             node-&gt;next = freeNodeList;00219             freeNodeList = node;00220         }00221     }00222 00223     <font class="keyword">static</font> <font class="keywordtype">void</font> cleanup();00224 };00225 00226 00227 <font class="keyword">class </font>dbExprNodeSegment { 00228   <font class="keyword">public</font>:00229     <font class="keyword">enum</font> { allocationQuantum = 1024};00230     <font class="keywordtype">char</font>               buf[<font class="keyword">sizeof</font>(dbExprNode)*allocationQuantum];00231     dbExprNodeSegment* next;00232 };00233 00234 00235 <font class="keyword">class </font>dbBinding { 00236   <font class="keyword">public</font>:00237     dbBinding*  next;00238     <font class="keywordtype">char</font> <font class="keyword">const</font>* name;00239     <font class="keywordtype">bool</font>        used;00240     <font class="keywordtype">int</font>         index;00241 };00242 00243 <font class="keyword">class </font>dbOrderByNode { 00244   <font class="keyword">public</font>:00245     dbOrderByNode*     next;00246     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00247     <font class="keywordtype">bool</font>               stringLength;  <font class="comment">// true if order by length of string instead of string value</font>00248     <font class="keywordtype">bool</font>               ascent;  <font class="comment">// true for ascent order, false for descent </font>00249 };00250 00251 <font class="keyword">class </font>dbFollowByNode { 00252   <font class="keyword">public</font>:00253     dbFollowByNode*    next;00254     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00255 };00256 00257 <font class="keyword">class </font>FASTDB_DLL_ENTRY dbCompiler { 00258     <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQuery.html">dbQuery</a>;00259     <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="classdbQueryElement.html">dbQueryElement</a>;00260   <font class="keyword">public</font>:00261     <font class="keyword">enum</font> { 00262         maxStrLen    = 4096,00263         maxFreeVars  = 400264     };00265 00266     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00267     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>*    queryElement;00268     <font class="keywordtype">int</font>                currPos;00269     <font class="keywordtype">int</font>                firstPos;00270     <font class="keywordtype">int</font>                offsetWithinStatement;00271     <font class="keywordtype">int</font>                bvalue;00272     db_int8               ivalue;00273     real8              fvalue;00274     dbStrLiteral       svalue;00275     <font class="keywordtype">int</font>                lex;00276     <font class="keywordtype">char</font>*              name;00277     dbBinding*         bindings;00278     <font class="keywordtype">int</font>                nFreeVars;00279     <font class="keywordtype">int</font>                varType;00280     <font class="keywordtype">void</font> <font class="keyword">const</font>*        varPtr;00281     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* varRefTable;00282 00283     jmp_buf            abortCompilation;00284     <font class="keyword">static</font> <font class="keywordtype">bool</font>        initialized;00285 00286     <font class="keywordtype">int</font>         compare(dbExprNode* expr, dbExprNode* list);00287 00288     <font class="keywordtype">int</font>         scan();00289     <font class="keywordtype">void</font>        error(<font class="keyword">const</font> <font class="keywordtype">char</font>* msg, <font class="keywordtype">int</font> pos = -1);00290     dbExprNode* conjunction();    00291     dbExprNode* disjunction();00292     dbExprNode* comparison();    00293     dbExprNode* addition();    00294     dbExprNode* multiplication();    00295     dbExprNode* power();00296     dbExprNode* term();00297     dbExprNode* userDefinedOperator();00298     dbExprNode* field(dbExprNode* expr, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* refTable,00299                       <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);00300 00301     <font class="keywordtype">bool</font>        compile(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, <a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00302     dbExprNode* compileExpression(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table,  <font class="keywordtype">char</font> <font class="keyword">const</font>* expr, <font class="keywordtype">int</font> startPos);00303     <font class="keywordtype">void</font>        compileOrderByPart(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00304     <font class="keywordtype">void</font>        compileStartFollowPart(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00305 00306     dbCompiler();00307 };00308 00309 <font class="keyword">class </font>dbDatabaseThreadContext : <font class="keyword">public</font> <a class="code" href="classdbL2List.html">dbL2List</a> { 00310   <font class="keyword">public</font>:00311     <font class="keywordtype">int</font> readAccess;00312     <font class="keywordtype">int</font> writeAccess;00313     <font class="keywordtype">int</font> concurrentId;00314     <font class="keywordtype">int</font> mutatorCSLocked;00315 00316     <a class="code" href="classdbL2List.html">dbL2List</a> cursors; 00317     00318     dbCompiler compiler;00319 00320     dbProcessId currPid;00321 00322     <font class="keywordtype">bool</font>     interactive;00323     <font class="keywordtype">bool</font>     catched;00324     <font class="keywordtype">bool</font>     commitDelayed;00325     <font class="keywordtype">bool</font>     removeContext;00326     jmp_buf  unwind;00327     00328     dbDatabaseThreadContext() { 00329         concurrentId = 0;00330         readAccess = <font class="keyword">false</font>;00331         writeAccess = <font class="keyword">false</font>;00332         mutatorCSLocked = <font class="keyword">false</font>;00333         interactive = <font class="keyword">false</font>;00334         catched = <font class="keyword">false</font>;00335         commitDelayed = <font class="keyword">false</font>;00336         removeContext = <font class="keyword">false</font>;00337         currPid = dbProcessId::getCurrent();00338     }00339 };00340 00341 <font class="keyword">union </font>dbSynthesizedAttribute { 00342     byte* base;00343     <font class="keywordtype">int</font>   bvalue;00344     db_int8  ivalue;00345     real8 fvalue;00346     <font class="keywordtype">void</font>* raw;00347     oid_t oid;00348 00349     <font class="keyword">struct </font>{ 00350         <font class="keywordtype">char</font>* base;00351         <font class="keywordtype">int</font>   size;00352     } array;00353 };00354 00355 <font class="keyword">struct </font>dbStringValue;00356 00357 <font class="keyword">struct </font>FASTDB_DLL_ENTRY dbInheritedAttribute { 00358     byte*          record;00359     oid_t          oid;00360     <a class="code" href="classdbTable.html">dbTable</a>*       table;00361     <a class="code" href="classdbDatabase.html">dbDatabase</a>*    db;00362     dbStringValue* tempStrings;00363     size_t         paramBase;00364     <font class="keyword">enum</font> { 00365         internalStrBufSize = 8*1024 00366     };00367     size_t         strBufPos;00368     <font class="keywordtype">char</font>           strBuf[internalStrBufSize];00369     00370     <font class="keyword">struct </font>{ 00371         <font class="keywordtype">int</font>     index;00372         jmp_buf unwind;00373     } exists_iterator[dbCompiler::maxFreeVars];00374 00375     <font class="keywordtype">void</font> removeTemporaries();00376 00377     dbInheritedAttribute() { 00378         tempStrings = NULL;00379         strBufPos = 0;00380     }00381 00382     ~dbInheritedAttribute() { 00383         removeTemporaries(); 00384     }00385 };00386 00387 <font class="keyword">struct </font>dbStringValue { 00388     dbStringValue* next;00389     <font class="keywordtype">char</font>           str[1];00390 00391     <font class="keyword">static</font> <font class="keywordtype">char</font>* create(size_t size, dbInheritedAttribute&amp; attr) { 00392         <font class="keywordflow">if</font> (attr.strBufPos + size &gt; <font class="keyword">sizeof</font>(attr.strBuf)) { 00393             dbStringValue* sv = 00394                 (dbStringValue*)<font class="keyword">new</font> <font class="keywordtype">char</font>[offsetof(dbStringValue, str) + size];00395             sv-&gt;next = attr.tempStrings;00396             attr.tempStrings = sv;00397             <font class="keywordflow">return</font> sv-&gt;str;00398         } <font class="keywordflow">else</font> { 00399             <font class="keywordtype">char</font>* p = attr.strBuf + attr.strBufPos;00400             attr.strBufPos += size;00401             <font class="keywordflow">return</font> p;00402         }00403     }00404 00405     <font class="keyword">static</font> <font class="keywordtype">char</font>* create(<font class="keywordtype">char</font> <font class="keyword">const</font>* s, dbInheritedAttribute&amp; attr) {00406         size_t len = strlen(s) + 1;00407         <font class="keywordtype">char</font>*  buf;00408         <font class="keywordflow">if</font> (attr.strBufPos + len &gt; <font class="keyword">sizeof</font>(attr.strBuf)) { 00409             dbStringValue* sv = 00410                 (dbStringValue*)<font class="keyword">new</font> <font class="keywordtype">char</font>[offsetof(dbStringValue,str)+len];00411             sv-&gt;next = attr.tempStrings;00412             attr.tempStrings = sv;00413             buf = sv-&gt;str;00414         } <font class="keywordflow">else</font> { 00415             buf = attr.strBuf + attr.strBufPos;00416             attr.strBufPos += len;00417         }00418         <font class="keywordflow">return</font> strcpy(buf, s);00419     }00420 };00421     00422 <font class="preprocessor">#endif</font></pre></div><hr><address align="right"><small>Generated on Fri Nov 15 21:06:28 2002 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.15 </small></address></body></html>

⌨️ 快捷键说明

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