📄 subsql_8h-source.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> <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>subsql.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< SUBSQL.H >------------------------------------------------------*--------*</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_NAMESPACE00015 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_version00062 };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 nIdentifier00076 };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->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->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 <span class="keyword">class </span>dbXmlScanner { 00143 <span class="keyword">public</span>:00144 <span class="keyword">enum</span> { 00145 MaxIdentSize = 25600146 };00147 <span class="keyword">enum</span> token { 00148 xml_ident, 00149 xml_sconst, 00150 xml_iconst, 00151 xml_fconst, 00152 xml_lt, 00153 xml_gt, 00154 xml_lts, 00155 xml_gts,00156 xml_eq, 00157 xml_eof,00158 xml_error00159 }; 00160 dbXmlScanner(FILE* f) { 00161 in = f;00162 sconst = <span class="keyword">new</span> <span class="keywordtype">char</span>[size = 1024];00163 line = 1;00164 pos = 0;00165 }00166 token scan();00167 00168 <span class="keywordtype">char</span>* getString() { 00169 <span class="keywordflow">return</span> sconst;00170 }00171 00172 <span class="keywordtype">char</span>* getIdentifier() { 00173 <span class="keywordflow">return</span> ident;00174 }00175 00176 size_t getStringLength() { 00177 <span class="keywordflow">return</span> slen;00178 }00179 00180 db_int8 getInt() { 00181 <span class="keywordflow">return</span> iconst;00182 }00183 00184 <span class="keywordtype">double</span> getReal() { 00185 <span class="keywordflow">return</span> fconst;00186 }00187 00188 <span class="keywordtype">bool</span> expect(<span class="keywordtype">int</span> sourcePos, token expected) { 00189 token tkn = scan();00190 <span class="keywordflow">if</span> (tkn != expected) { 00191 fprintf(stderr, <span class="stringliteral">"subsql.cpp:%d: line %d, column %d: Get token %d instead of expected token %d\n"</span>, 00192 sourcePos, line, pos, tkn, expected);00193 <span class="keywordflow">return</span> <span class="keyword">false</span>;00194 }00195 <span class="keywordflow">return</span> <span class="keyword">true</span>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -