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

📄 compiler_8h-source.html

📁 FastDb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00221         func.arg[1] = expr2;00222         func.arg[2] = expr3;00223         func.fptr = fptr;00224         type = nodeTypes[cop];00225     }00226     ~dbExprNode();00227 00228     <span class="keywordtype">void</span>* operator new(size_t size EXTRA_DEBUG_NEW_PARAMS) { 00229         <span class="keywordflow">return</span> dbExprNodeAllocator::instance.allocate();00230     }00231 00232     <span class="keywordtype">void</span> operator delete(<span class="keywordtype">void</span>* ptr EXTRA_DEBUG_NEW_PARAMS) { 00233         dbExprNodeAllocator::instance.deallocate((dbExprNode*)ptr);00234     }00235 };00236 00237 00238 <span class="keyword">class </span>dbExprNodeSegment { 00239   <span class="keyword">public</span>:00240     <span class="keyword">enum</span> { allocationQuantum = 1024};00241     <span class="keywordtype">char</span>               buf[<span class="keyword">sizeof</span>(dbExprNode)*allocationQuantum];00242     dbExprNodeSegment* next;00243 };00244 00245 00246 <span class="keyword">class </span>dbBinding { 00247   <span class="keyword">public</span>:00248     dbBinding*  next;00249     <span class="keywordtype">char</span> <span class="keyword">const</span>* name;00250     <span class="keywordtype">bool</span>        used;00251     <span class="keywordtype">int</span>         index;00252 };00253 00254 <span class="keyword">class </span>dbOrderByNode { 00255   <span class="keyword">public</span>:00256     dbOrderByNode*     next;00257     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00258     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00259     dbExprNode*        expr;00260     <span class="keywordtype">bool</span>               ascent;  <span class="comment">// true for ascent order, false for descent </span>00261 };00262 00263 <span class="keyword">class </span>dbFollowByNode { 00264   <span class="keyword">public</span>:00265     dbFollowByNode*    next;00266     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00267 };00268 00269 <span class="keyword">class </span>FASTDB_DLL_ENTRY dbCompiler { 00270     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQuery.html">dbQuery</a>;00271     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classdbQueryElement.html">dbQueryElement</a>;00272   <span class="keyword">public</span>:00273     <span class="keyword">enum</span> { 00274         maxStrLen    = 4096,00275         maxFreeVars  = 400276     };00277 00278     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00279     <a class="code" href="classdbQueryElement.html">dbQueryElement</a>*    queryElement;00280     <span class="keywordtype">int</span>                currPos;00281     <span class="keywordtype">int</span>                firstPos;00282     <span class="keywordtype">int</span>                offsetWithinStatement;00283     <span class="keywordtype">int</span>                bvalue;00284     db_int8               ivalue;00285     real8              fvalue;00286     dbStrLiteral       svalue;00287     <span class="keywordtype">bool</span>               hasToken;00288     <span class="keywordtype">int</span>                lex;00289     <span class="keywordtype">char</span>*              name;00290     dbBinding*         bindings;00291     <span class="keywordtype">int</span>                nFreeVars;00292     <span class="keywordtype">int</span>                varType;00293     <span class="keywordtype">void</span> <span class="keyword">const</span>*        varPtr;00294     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* varRefTable;00295 00296     jmp_buf            abortCompilation;00297     <span class="keyword">static</span> <span class="keywordtype">bool</span>        initialized;00298 00299     <span class="keywordtype">int</span>         compare(dbExprNode* expr, dbExprNode* list);00300 00301     <span class="keywordtype">int</span>         scan();00302     <span class="keywordtype">void</span>        ungetToken(<span class="keywordtype">int</span> tkn) {00303         lex = tkn;00304         hasToken = <span class="keyword">true</span>;00305     }00306     <span class="keywordtype">void</span>        error(<span class="keyword">const</span> <span class="keywordtype">char</span>* msg, <span class="keywordtype">int</span> pos = -1);00307     dbExprNode* conjunction();    00308     dbExprNode* disjunction();00309     dbExprNode* comparison();    00310     dbExprNode* addition();    00311     dbExprNode* multiplication();    00312     dbExprNode* power();00313     dbExprNode* term();00314     dbExprNode* userDefinedOperator();00315     dbExprNode* field(dbExprNode* expr, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* refTable,00316                       <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd);00317 00318     <span class="keywordtype">bool</span>        compile(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table, <a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00319     dbExprNode* compileExpression(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table,  <span class="keywordtype">char</span> <span class="keyword">const</span>* expr, <span class="keywordtype">int</span> startPos);00320     <span class="keywordtype">void</span>        compileOrderByPart(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00321     <span class="keywordtype">void</span>        compileStartFollowPart(<a class="code" href="classdbQuery.html">dbQuery</a>&amp; query);00322 00323     dbCompiler();00324 };00325 00326 <span class="keyword">class </span>dbDatabaseThreadContext : <span class="keyword">public</span> <a class="code" href="classdbL2List.html">dbL2List</a> { 00327   <span class="keyword">public</span>:00328     <span class="keywordtype">int</span> readAccess;00329     <span class="keywordtype">int</span> writeAccess;00330     <span class="keywordtype">int</span> concurrentId;00331     <span class="keywordtype">int</span> mutatorCSLocked;00332 00333     <a class="code" href="classdbL2List.html">dbL2List</a> cursors; 00334     00335     dbCompiler compiler;00336 00337     dbProcessId currPid;00338 00339     <span class="keywordtype">bool</span>     interactive;00340     <span class="keywordtype">bool</span>     catched;00341     <span class="keywordtype">bool</span>     commitDelayed;00342     <span class="keywordtype">bool</span>     removeContext;00343     jmp_buf  unwind;00344     00345     dbDatabaseThreadContext() { 00346         concurrentId = 0;00347         readAccess = <span class="keyword">false</span>;00348         writeAccess = <span class="keyword">false</span>;00349         mutatorCSLocked = <span class="keyword">false</span>;00350         interactive = <span class="keyword">false</span>;00351         catched = <span class="keyword">false</span>;00352         commitDelayed = <span class="keyword">false</span>;00353         removeContext = <span class="keyword">false</span>;00354         currPid = dbProcessId::getCurrent();00355     }00356 };00357 00358 <span class="keyword">union </span>dbSynthesizedAttribute { 00359     byte*   base;00360     <span class="keywordtype">int</span>     bvalue;00361     db_int8 ivalue;00362     real8   fvalue;00363     <span class="keywordtype">void</span>*   raw;00364     oid_t   oid;00365 00366     <span class="keyword">struct </span>{ 00367         <span class="keywordtype">char</span>* base;00368         <span class="keywordtype">int</span>   size;00369     } array;00370 };00371 00372 <span class="keyword">struct </span>dbStringValue;00373 00374 <span class="keyword">struct </span>FASTDB_DLL_ENTRY dbInheritedAttribute { 00375     byte*          record;00376     oid_t          oid;00377     <a class="code" href="classdbTable.html">dbTable</a>*       table;00378     <a class="code" href="classdbDatabase.html">dbDatabase</a>*    db;00379     dbStringValue* tempStrings;00380     size_t         paramBase;00381     <span class="keyword">enum</span> { 00382         internalStrBufSize = 8*1024 00383     };00384     size_t         strBufPos;00385     <span class="keywordtype">char</span>           strBuf[internalStrBufSize];00386     00387     <span class="keyword">struct </span>{ 00388         <span class="keywordtype">int</span>     index;00389         jmp_buf unwind;00390     } exists_iterator[dbCompiler::maxFreeVars];00391 00392     <span class="keywordtype">void</span> removeTemporaries();00393 00394     dbInheritedAttribute() { 00395         tempStrings = NULL;00396         strBufPos = 0;00397     }00398 00399     ~dbInheritedAttribute() { 00400         removeTemporaries(); 00401     }00402 };00403 00404 <span class="keyword">struct </span>dbStringValue { 00405     dbStringValue* next;00406     <span class="keywordtype">char</span>           str[1];00407 00408     <span class="keyword">static</span> <span class="keywordtype">char</span>* create(size_t size, dbInheritedAttribute&amp; attr) { 00409         <span class="keywordflow">if</span> (attr.strBufPos + size &gt; <span class="keyword">sizeof</span>(attr.strBuf)) { 00410             dbStringValue* sv = 00411                 (dbStringValue*)<span class="keyword">new</span> <span class="keywordtype">char</span>[offsetof(dbStringValue, str) + size];00412             sv-&gt;next = attr.tempStrings;00413             attr.tempStrings = sv;00414             <span class="keywordflow">return</span> sv-&gt;str;00415         } <span class="keywordflow">else</span> { 00416             <span class="keywordtype">char</span>* p = attr.strBuf + attr.strBufPos;00417             attr.strBufPos += size;00418             <span class="keywordflow">return</span> p;00419         }00420     }00421 00422     <span class="keyword">static</span> <span class="keywordtype">char</span>* create(<span class="keywordtype">char</span> <span class="keyword">const</span>* s, dbInheritedAttribute&amp; attr) {00423         size_t len = strlen(s) + 1;00424         <span class="keywordtype">char</span>*  buf;00425         <span class="keywordflow">if</span> (attr.strBufPos + len &gt; <span class="keyword">sizeof</span>(attr.strBuf)) { 00426             dbStringValue* sv = 00427                 (dbStringValue*)<span class="keyword">new</span> <span class="keywordtype">char</span>[offsetof(dbStringValue,str)+len];00428             sv-&gt;next = attr.tempStrings;00429             attr.tempStrings = sv;00430             buf = sv-&gt;str;00431         } <span class="keywordflow">else</span> { 00432             buf = attr.strBuf + attr.strBufPos;00433             attr.strBufPos += len;00434         }00435         <span class="keywordflow">return</span> strcpy(buf, s);00436     }00437 };00438     00439 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:48 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>

⌨️ 快捷键说明

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