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

📄 subsql_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00196     }00197 00198     <span class="keywordtype">bool</span> expect(<span class="keywordtype">int</span> sourcePos, <span class="keywordtype">char</span>* expected) { 00199         token tkn = scan();00200         <span class="keywordflow">if</span> (tkn != xml_ident) { 00201             fprintf(stderr, <span class="stringliteral">"subsql.cpp:%d: line %d, column %d: Get token %d instead of expected identifier\n"</span>, 00202                     sourcePos, line, pos, tkn);00203             <span class="keywordflow">return</span> <span class="keyword">false</span>;00204         }00205         <span class="keywordflow">if</span> (strcmp(ident, expected) != 0) { 00206             fprintf(stderr, <span class="stringliteral">"subsql.cpp:%d: line %d, column %d: Get tag '%s' instead of expected '%s'\n"</span>, 00207                     sourcePos, line, pos, ident, expected);00208             <span class="keywordflow">return</span> <span class="keyword">false</span>;00209         }00210         <span class="keywordflow">return</span> <span class="keyword">true</span>;00211     }00212 00213   <span class="keyword">private</span>:00214     <span class="keywordtype">int</span>   get();00215     <span class="keywordtype">void</span>  unget(<span class="keywordtype">int</span> ch);00216 00217     <span class="keywordtype">int</span>       line;00218     <span class="keywordtype">int</span>       pos;00219     FILE*     in;00220     <span class="keywordtype">char</span>*     sconst;00221     size_t    size;00222     size_t    slen;00223     db_int8   iconst;00224     <span class="keywordtype">double</span>    fconst;00225     <span class="keywordtype">char</span>      ident[MaxIdentSize];00226 };00227 00228 <span class="keyword">class </span>dbTmpAllocator { 00229     <span class="keyword">enum</span> { 00230         CHUNK_SIZE = 409600231     };00232     <span class="keyword">struct </span>Chunk { 00233         Chunk* next;00234         Chunk* prev; <span class="comment">// is not used, added for alignment</span>00235     };00236     Chunk* curr;00237     size_t used;00238 00239   <span class="keyword">public</span>:00240     dbTmpAllocator() { 00241         curr = NULL;00242         used = CHUNK_SIZE;00243     }00244 00245     ~dbTmpAllocator() { 00246         reset();00247     }00248 00249     <span class="keywordtype">void</span> reset() { 00250         Chunk *c, *next; 00251         <span class="keywordflow">for</span> (c = curr; c != NULL; c = next) { 00252             next = c-&gt;next;00253             dbFree(c);00254         }00255         curr = NULL;00256         used = CHUNK_SIZE;00257     }00258 00259 00260     <span class="keywordtype">void</span>* alloc(size_t size) { 00261         size = DOALIGN(size, 8);00262         <span class="keywordflow">if</span> (size &gt; CHUNK_SIZE/2) { 00263             Chunk* newChunk = (Chunk*)dbMalloc(size + <span class="keyword">sizeof</span>(Chunk));00264             <span class="keywordflow">if</span> (curr != NULL) { 00265                 newChunk-&gt;next = curr-&gt;next;00266                 curr-&gt;next = newChunk;00267             } <span class="keywordflow">else</span> { 00268                 curr = newChunk;00269                 newChunk-&gt;next = NULL;00270                 used = CHUNK_SIZE;00271             }00272             <span class="keywordflow">return</span> newChunk+1;00273         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (size &lt;= CHUNK_SIZE - used) { 00274             used += size;00275             <span class="keywordflow">return</span> (<span class="keywordtype">char</span>*)curr + used - size;00276         } <span class="keywordflow">else</span> { 00277             Chunk* newChunk = (Chunk*)dbMalloc(CHUNK_SIZE);00278             used = <span class="keyword">sizeof</span>(Chunk) + size;00279             newChunk-&gt;next = curr;00280             curr = newChunk;00281             <span class="keywordflow">return</span> newChunk+1;00282         }00283     }00284 };00285 00286 <span class="keyword">class </span>dbSubSql : <span class="keyword">public</span> <a class="code" href="classdbDatabase.html">dbDatabase</a> { 00287   <span class="keyword">private</span>:00288     <span class="keywordtype">int</span>   pos;00289     <span class="keywordtype">int</span>   line;00290     <span class="keywordtype">int</span>   tknPos;00291     <span class="keywordtype">char</span>* buf;00292     <span class="keywordtype">int</span>   buflen;00293     FILE* in;00294     <span class="keywordtype">bool</span>  opened;00295     db_int8  ival;00296     real8 fval;00297     <span class="keywordtype">char</span>* name;00298 00299     oid_t*  oidMap;00300     oid_t   oidMapSize;00301 00302     dbTmpAllocator tmpAlloc;00303  00304     <span class="keyword">static</span> <span class="keywordtype">char</span>* prompt;00305 00306     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* droppedTables;00307     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* existedTables;00308 00309     <a class="code" href="classdbQuery.html">dbQuery</a> query;00310     dbCompiler compiler;00311 00312     <span class="keywordtype">int</span>      ungetToken;00313     <span class="keywordtype">bool</span>     autocommit;00314 00315     <span class="keywordtype">bool</span>     dotIsPartOfIdentifier;00316     <span class="keywordtype">char</span>*    dateFormat;00317 00318     dbThread httpServerThread;00319     HTTPapi* httpServer;00320     <span class="keywordtype">bool</span>     httpServerRunning;00321     <span class="keywordtype">char</span>*    queryHistory[MAX_HISTORY_SIZE];00322     <span class="keywordtype">unsigned</span> historyUsed;00323     <span class="keywordtype">unsigned</span> historyCurr;00324     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc httpServerThreadProc(<span class="keywordtype">void</span>* arg);00325     00326     <span class="keywordtype">void</span> deleteColumns(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* columns);00327 00328     <span class="keywordtype">void</span> httpServerLoop();00329 00330     <span class="keywordtype">void</span> startHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);00331     <span class="keywordtype">void</span> stopHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);00332 00333     <span class="keywordtype">void</span> handleError(dbErrorClass error, <span class="keywordtype">char</span> <span class="keyword">const</span>* msg = NULL,  <span class="keywordtype">int</span> arg = 0);00334 00335     <span class="keywordtype">void</span> error(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);00336     <span class="keywordtype">void</span> warning(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);00337 00338     <span class="keywordtype">void</span> profile();00339 00340     <span class="keywordtype">int</span>  <a class="code" href="classdbDatabase.html#dbSubSqlb10">get</a>();00341     <span class="keywordtype">void</span> unget(<span class="keywordtype">int</span> ch);00342     <span class="keywordtype">int</span>  scan();00343     <span class="keywordtype">bool</span> parse();00344 00345     <span class="keywordtype">bool</span> expect(<span class="keywordtype">char</span>* expected, <span class="keywordtype">int</span> token);00346     00347     <span class="keywordtype">void</span> recovery();00348 00349     <span class="keywordtype">void</span> exportDatabase(FILE* out);00350     <span class="keywordtype">bool</span> importDatabase(FILE* in);00351    00352     <span class="keywordtype">void</span> exportScheme(FILE* out);00353     <span class="keywordtype">void</span> exportClass(FILE* out, <span class="keywordtype">char</span>* name, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fieldList);00354    00355     oid_t mapId(<span class="keywordtype">long</span> id);00356     <span class="keywordtype">bool</span> importField(<span class="keywordtype">char</span>* terminator, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, byte* rec, dbXmlScanner&amp; scanner);00357     <span class="keywordtype">bool</span> importRecord(<span class="keywordtype">char</span>* terminator, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fieldList, byte* rec, dbXmlScanner&amp; scanner);00358     <span class="keywordtype">void</span> <a class="code" href="classdbDatabase.html#dbSubSqla30">insertRecord</a>(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, oid_t oid, <span class="keywordtype">void</span> <span class="keyword">const</span>* record);00359 00360     <span class="keywordtype">bool</span> isValidOid(oid_t oid);00361 00362     <span class="keywordtype">void</span> dumpRecord(byte* record, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);00363     <span class="keyword">static</span> <span class="keywordtype">int</span> calculateRecordSize(dbList* list, <span class="keywordtype">int</span> offs,00364                                    <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);00365     <span class="keywordtype">int</span>  initializeRecordFields(dbList* node, byte* dst, <span class="keywordtype">int</span> offs, 00366                                       <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);00367     <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla30">insertRecord</a>(dbList* list, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);00368     <span class="keywordtype">bool</span> readCondition();00369     <span class="keywordtype">int</span>  readExpression();00370     <span class="keywordtype">int</span>  readValues(dbList** chain);00371     <span class="keywordtype">bool</span> updateFields(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, dbUpdateElement* elems);00372     <span class="keywordtype">bool</span> updateTable(<span class="keywordtype">bool</span> create);00373     <span class="keywordtype">int</span>  parseType(<span class="keywordtype">char</span>*&amp; refTableName, <span class="keywordtype">char</span>*&amp; inverseRefName);00374     <span class="keywordtype">int</span>  updateRecords(<a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc, dbList *fields, dbList *values, <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a> &amp;cursor, byte *buf);00375     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* readFieldName();00376 00377   <span class="keyword">public</span>:00378     <span class="keywordtype">void</span> run(<span class="keywordtype">int</span> firstParam, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]);00379     <span class="keywordtype">void</span> selectionPage(WWWconnection&amp; con);00380     <span class="keywordtype">void</span> queryPage(WWWconnection&amp; con);00381     <span class="keywordtype">void</span> defaultPage(WWWconnection&amp; con);00382     00383     dbSubSql(dbAccessType accessType);00384     <span class="keyword">virtual</span>~dbSubSql();00385 };   00386 00387 00388 END_FASTDB_NAMESPACE00389 00390 <span class="preprocessor">#endif</span></pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 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.18 </small></address></body></html>

⌨️ 快捷键说明

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