📄 subsql_8h-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>FastDB: subsql.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.5 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a></div><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 <span class="keyword">enum</span> SubSqlTokens { 00015 tkn_alter = tkn_last_token,00016 tkn_array,00017 tkn_autoincrement,00018 tkn_autocommit,00019 tkn_backup,00020 tkn_bool,00021 tkn_commit,00022 tkn_compactify,00023 tkn_count,00024 tkn_create,00025 tkn_delete,00026 tkn_describe,00027 tkn_drop,00028 tkn_exit,00029 tkn_export,00030 tkn_hash,00031 tkn_help,00032 tkn_http,00033 tkn_import,00034 tkn_index,00035 tkn_int1,00036 tkn_int2,00037 tkn_int4,00038 tkn_int8,00039 tkn_inverse,00040 tkn_of,00041 tkn_off,00042 tkn_on,00043 tkn_open,00044 tkn_real4, 00045 tkn_real8, 00046 tkn_reference,00047 tkn_rollback,00048 tkn_server,00049 tkn_set,00050 tkn_stop,00051 tkn_semi,00052 tkn_show,00053 tkn_to, 00054 tkn_update,00055 tkn_values,00056 tkn_version00057 };00058 00059 00060 00061 <span class="keyword">class </span>dbList { 00062 <span class="keyword">public</span>:00063 <span class="keyword">enum</span> NodeType { 00064 nInteger,00065 nBool,00066 nReal,00067 nString,00068 nTuple,00069 nAutoinc,00070 nIdentifier00071 };00072 00073 dbList* next;00074 <span class="keywordtype">int</span> type;00075 <span class="keyword">union </span>{ 00076 <span class="keywordtype">bool</span> bval;00077 db_int8 ival;00078 real8 fval;00079 <span class="keywordtype">char</span>* sval;00080 <span class="keyword">struct </span>{ 00081 <span class="keywordtype">int</span> nComponents;00082 dbList* components;00083 } aggregate;00084 };00085 00086 ~dbList() { 00087 <span class="keywordflow">if</span> (type == nTuple) {00088 <span class="keyword">delete</span> aggregate.components;00089 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == nString || type == nIdentifier) {00090 <span class="keyword">delete</span>[] sval;00091 }00092 }00093 00094 dbList(<span class="keywordtype">int</span> type) { 00095 this->type = type;00096 next = NULL; 00097 }00098 };00099 00100 00101 <span class="keyword">struct </span>tableField { 00102 <span class="keywordtype">char</span>* name;00103 <span class="keywordtype">char</span>* refTableName;00104 <span class="keywordtype">char</span>* inverseRefName;00105 <span class="keywordtype">int</span> type;00106 00107 tableField() { name = refTableName = inverseRefName = NULL; }00108 ~tableField() { <span class="keyword">delete</span>[] name; <span class="keyword">delete</span>[] refTableName; <span class="keyword">delete</span>[] inverseRefName; }00109 };00110 00111 <span class="keyword">class </span>dbUpdateElement { 00112 <span class="keyword">public</span>:00113 dbUpdateElement* next;00114 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00115 dbExprNode* value;00116 <span class="keywordtype">char</span>* strValue;00117 00118 dbUpdateElement() { 00119 next = NULL;00120 strValue = NULL;00121 }00122 ~dbUpdateElement() { 00123 <span class="keyword">delete</span>[] strValue;00124 }00125 };00126 00127 00128 <span class="preprocessor">#define MAX_HISTORY_SIZE 16</span>00129 <span class="preprocessor"></span>00130 <span class="keyword">class </span>dbXmlScanner { 00131 <span class="keyword">public</span>:00132 <span class="keyword">enum</span> { 00133 MaxIdentSize = 25600134 };00135 <span class="keyword">enum</span> token { 00136 xml_ident, 00137 xml_sconst, 00138 xml_iconst, 00139 xml_fconst, 00140 xml_lt, 00141 xml_gt, 00142 xml_lts, 00143 xml_gts,00144 xml_eq, 00145 xml_eof,00146 xml_error00147 }; 00148 dbXmlScanner(FILE* f) { 00149 in = f;00150 sconst = <span class="keyword">new</span> <span class="keywordtype">char</span>[size = 1024];00151 line = 1;00152 pos = 0;00153 }00154 token scan();00155 00156 <span class="keywordtype">char</span>* getString() { 00157 <span class="keywordflow">return</span> sconst;00158 }00159 00160 <span class="keywordtype">char</span>* getIdentifier() { 00161 <span class="keywordflow">return</span> ident;00162 }00163 00164 size_t getStringLength() { 00165 <span class="keywordflow">return</span> slen;00166 }00167 00168 db_int8 getInt() { 00169 <span class="keywordflow">return</span> iconst;00170 }00171 00172 <span class="keywordtype">double</span> getReal() { 00173 <span class="keywordflow">return</span> fconst;00174 }00175 00176 <span class="keywordtype">bool</span> expect(<span class="keywordtype">int</span> sourcePos, token expected) { 00177 token tkn = scan();00178 <span class="keywordflow">if</span> (tkn != expected) { 00179 fprintf(stderr, <span class="stringliteral">"subsql.cpp:%d: line %d, column %d: Get token %d instead of expected token %d\n"</span>, 00180 sourcePos, line, pos, tkn, expected);00181 <span class="keywordflow">return</span> <span class="keyword">false</span>;00182 }00183 <span class="keywordflow">return</span> <span class="keyword">true</span>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -