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

📄 subsql_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
字号:
<!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>subsql.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>subsql.h</h1><div class="fragment"><pre>00001 <span class="comment">//-&lt; SUBSQL.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">// Interactive data manipulation language (subset of SQL)</span>
00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>
00010 
00011 <span class="preprocessor">#ifndef __SUBSQL_H__</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define __SUBSQL_H__</span>
00013 <span class="preprocessor"></span>
00014 BEGIN_FASTDB_NAMESPACE
00015 
00016 <span class="keyword">enum</span> SubSqlTokens { 
00017     tkn_alter = tkn_last_token,
00018     tkn_array,
00019     tkn_autoincrement,
00020     tkn_autocommit,
00021     tkn_backup,
00022     tkn_bool,
00023     tkn_commit,
00024     tkn_compactify,
00025     tkn_count,
00026     tkn_create,
00027     tkn_delete,
00028     tkn_describe,
00029     tkn_drop,
00030     tkn_exit,
00031     tkn_export,
00032     tkn_hash,
00033     tkn_help,
00034     tkn_http,
00035     tkn_import,
00036     tkn_index,
00037     tkn_int1,
00038     tkn_int2,
00039     tkn_int4,
00040     tkn_int8,
00041     tkn_inverse,
00042     tkn_memory, 
00043     tkn_of,
00044     tkn_off,
00045     tkn_on,
00046     tkn_open,
00047     tkn_profile, 
00048     tkn_real4, 
00049     tkn_real8, 
00050     tkn_rectangle,
00051     tkn_reference,
00052     tkn_rollback,
00053     tkn_server,
00054     tkn_set,
00055     tkn_stop,
00056     tkn_semi,
00057     tkn_show,
00058     tkn_to, 
00059     tkn_update,
00060     tkn_values,
00061     tkn_version
00062 };
00063         
00064     
00065 
00066 <span class="keyword">class </span>dbList { 
00067   <span class="keyword">public</span>:
00068     <span class="keyword">enum</span> NodeType { 
00069         nInteger,
00070         nBool,
00071         nReal,
00072         nString,
00073         nTuple,
00074         nAutoinc,
00075         nIdentifier
00076     };
00077 
00078     dbList* next;
00079     <span class="keywordtype">int</span>     type;
00080     <span class="keyword">union </span>{ 
00081         <span class="keywordtype">bool</span>  bval;
00082         db_int8  ival;
00083         real8 fval;
00084         <span class="keywordtype">char</span>* sval;
00085         <span class="keyword">struct </span>{ 
00086             <span class="keywordtype">int</span>     nComponents;
00087             dbList* components;
00088         } aggregate;
00089     };
00090 
00091     ~dbList() { 
00092         <span class="keywordflow">if</span> (type == nTuple) {
00093             dbList* list = aggregate.components;
00094             <span class="keywordflow">while</span> (list != NULL) { 
00095                 dbList* tail = list-&gt;next;
00096                 <span class="keyword">delete</span> list;
00097                 list = tail;
00098             }
00099         } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == nString || type == nIdentifier) {
00100             <span class="keyword">delete</span>[] sval;
00101         }
00102     }
00103 
00104     dbList(<span class="keywordtype">int</span> type) { 
00105         this-&gt;type = type;
00106         next = NULL; 
00107     }
00108 };
00109 
00110 
00111 <span class="keyword">struct </span>tableField { 
00112     <span class="keywordtype">char</span>* name;
00113     <span class="keywordtype">char</span>* refTableName;
00114     <span class="keywordtype">char</span>* inverseRefName;
00115     <span class="keywordtype">int</span>   type;
00116     
00117     tableField() { name = refTableName = inverseRefName = NULL; }
00118     ~tableField() { <span class="keyword">delete</span>[] name; <span class="keyword">delete</span>[] refTableName; <span class="keyword">delete</span>[] inverseRefName; }
00119 };
00120 
00121 <span class="keyword">class </span>dbUpdateElement { 
00122   <span class="keyword">public</span>:
00123     dbUpdateElement*   next;
00124     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;
00125     dbExprNode*        value;
00126     <span class="keywordtype">char</span>*              strValue;
00127 
00128     dbUpdateElement() { 
00129         next = NULL;
00130         strValue = NULL;
00131         value = NULL;
00132     }
00133     ~dbUpdateElement() { 
00134         <span class="keyword">delete</span>[] strValue;
00135         <span class="keyword">delete</span> value;
00136     }
00137 };
00138 
00139 
00140 <span class="preprocessor">#define MAX_HISTORY_SIZE 16</span>
00141 <span class="preprocessor"></span>
00142 
00143 <span class="keyword">class </span>dbSubSql : <span class="keyword">public</span> <a class="code" href="classdbDatabase.html">dbDatabase</a> { 
00144   <span class="keyword">private</span>:
00145     <span class="keywordtype">int</span>   pos;
00146     <span class="keywordtype">int</span>   line;
00147     <span class="keywordtype">int</span>   tknPos;
00148     <span class="keywordtype">char</span>* buf;
00149     <span class="keywordtype">int</span>   buflen;
00150     FILE* in;
00151     <span class="keywordtype">bool</span>  opened;
00152     db_int8  ival;
00153     real8 fval;
00154     <span class="keywordtype">char</span>* name;
00155 
00156     <span class="keyword">static</span> <span class="keywordtype">char</span>* prompt;
00157 
00158     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* droppedTables;
00159     <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* existedTables;
00160 
00161     <a class="code" href="classdbQuery.html">dbQuery</a> query;
00162     dbCompiler compiler;
00163 
00164     <span class="keywordtype">int</span>      ungetToken;
00165     <span class="keywordtype">bool</span>     autocommit;
00166 
00167     <span class="keywordtype">bool</span>     dotIsPartOfIdentifier;
00168     <span class="keywordtype">char</span>*    dateFormat;
00169 
00170     dbThread httpServerThread;
00171     HTTPapi* httpServer;
00172     <span class="keywordtype">bool</span>     httpServerRunning;
00173     <span class="keywordtype">char</span>*    queryHistory[MAX_HISTORY_SIZE];
00174     <span class="keywordtype">unsigned</span> historyUsed;
00175     <span class="keywordtype">unsigned</span> historyCurr;
00176     <span class="keyword">static</span> <span class="keywordtype">void</span> thread_proc httpServerThreadProc(<span class="keywordtype">void</span>* arg);
00177     
00178     <span class="keywordtype">void</span> deleteColumns(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* columns);
00179 
00180     <span class="keywordtype">void</span> httpServerLoop();
00181 
00182     <span class="keywordtype">void</span> startHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);
00183     <span class="keywordtype">void</span> stopHttpServer(<span class="keywordtype">char</span> <span class="keyword">const</span>* address);
00184 
00185     <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);
00186 
00187     <span class="keywordtype">void</span> error(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);
00188     <span class="keywordtype">void</span> warning(<span class="keywordtype">char</span> <span class="keyword">const</span>* msg);
00189 
00190     <span class="keywordtype">void</span> profile();
00191 
00192     <span class="keywordtype">int</span>  <a class="code" href="classdbDatabase.html#dbSubSqlb17">get</a>();
00193     <span class="keywordtype">void</span> unget(<span class="keywordtype">int</span> ch);
00194     <span class="keywordtype">int</span>  scan();
00195     <span class="keywordtype">bool</span> parse();
00196 
00197     <span class="keywordtype">bool</span> expect(<span class="keywordtype">char</span>* expected, <span class="keywordtype">int</span> token);
00198     
00199     <span class="keywordtype">void</span> recovery();
00200 
00201     <span class="keywordtype">bool</span> isValidOid(oid_t oid);
00202 
00203     <span class="keywordtype">void</span> dumpRecord(byte* record, <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00204     <span class="keyword">static</span> <span class="keywordtype">int</span> calculateRecordSize(dbList* list, <span class="keywordtype">int</span> offs,
00205                                    <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00206     <span class="keywordtype">int</span>  initializeRecordFields(dbList* node, byte* dst, <span class="keywordtype">int</span> offs, 
00207                                       <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* first);
00208     <span class="keywordtype">bool</span> <a class="code" href="classdbDatabase.html#dbSubSqla33">insertRecord</a>(dbList* list, <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* desc);
00209     <span class="keywordtype">bool</span> readCondition();
00210     <span class="keywordtype">int</span>  readExpression();
00211     <span class="keywordtype">int</span>  readValues(dbList** chain);
00212     <span class="keywordtype">bool</span> updateFields(<a class="code" href="classdbAnyCursor.html">dbAnyCursor</a>* cursor, dbUpdateElement* elems);
00213     <span class="keywordtype">bool</span> updateTable(<span class="keywordtype">bool</span> create);
00214     <span class="keywordtype">int</span>  parseType(<span class="keywordtype">char</span>*&amp; refTableName, <span class="keywordtype">char</span>*&amp; inverseRefName);
00215     <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);
00216     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* readFieldName();
00217 
00218   <span class="keyword">public</span>:
00219     <span class="keywordtype">void</span> run(<span class="keywordtype">int</span> firstParam, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]);
00220     <span class="keywordtype">void</span> selectionPage(WWWconnection&amp; con);
00221     <span class="keywordtype">void</span> queryPage(WWWconnection&amp; con);
00222     <span class="keywordtype">void</span> defaultPage(WWWconnection&amp; con);
00223     
00224     dbSubSql(dbAccessType accessType);
00225     <span class="keyword">virtual</span>~dbSubSql();
00226 };   
00227 
00228 
00229 END_FASTDB_NAMESPACE
00230 
00231 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 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 + -