localcli_8h-source.html
来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 293 行 · 第 1/2 页
HTML
293 行
00140 <font class="keywordflow">for</font> (obj = free_chain; obj != NULL; obj = next) { 00141 next = obj->next;00142 <font class="keyword">delete</font> obj;00143 }00144 }00145 };00146 00147 <font class="keyword">template</font><<font class="keyword">class</font> T>00148 <font class="keyword">class </font>descriptor_table : <font class="keyword">public</font> fixed_size_object_allocator<T> {00149 <font class="keyword">protected</font>:00150 T** table;00151 <font class="keywordtype">int</font> descriptor_table_size;00152 00153 <font class="keyword">public</font>:00154 descriptor_table() {00155 <font class="keywordtype">int</font> i;00156 descriptor_table_size = 16;00157 table = <font class="keyword">new</font> T*[descriptor_table_size];00158 T* next = NULL;00159 <font class="keywordflow">for</font> (i = 0; i < descriptor_table_size; i++) {00160 table[i] = next = <font class="keyword">new</font> T(i, next);00161 }00162 free_chain = next;00163 }00164 00165 ~descriptor_table() { 00166 <font class="keyword">delete</font>[] table;00167 }00168 00169 T* get(<font class="keywordtype">int</font> desc) {00170 dbCriticalSection cs(mutex);00171 <font class="keywordflow">return</font> (desc >= descriptor_table_size) ? (T*)0 : table[desc];00172 }00173 00174 T* allocate() {00175 dbCriticalSection cs(mutex);00176 <font class="keywordflow">if</font> (free_chain == NULL) {00177 <font class="keywordtype">int</font> i, n;00178 T** desc = <font class="keyword">new</font> T*[descriptor_table_size * 2];00179 memcpy(desc, table, descriptor_table_size*<font class="keyword">sizeof</font>(T*));00180 <font class="keyword">delete</font>[] table;00181 table = desc;00182 T* next = NULL;00183 <font class="keywordflow">for</font> (i = descriptor_table_size, n = i*2; i < n; i++) {00184 table[i] = next = <font class="keyword">new</font> T(i, next);00185 }00186 free_chain = next;00187 descriptor_table_size = n;00188 }00189 T* desc = free_chain;00190 free_chain = desc->next;00191 <font class="keywordflow">return</font> desc;00192 }00193 };00194 00195 <font class="keyword">class </font>FASTDB_DLL_ENTRY dbCLI { 00196 <font class="keyword">private</font>:00197 fixed_size_object_allocator<column_binding> column_allocator;00198 fixed_size_object_allocator<parameter_binding> parameter_allocator;00199 00200 descriptor_table<session_desc> sessions;00201 descriptor_table<statement_desc> statements;00202 00203 session_desc* active_session_list;00204 00205 dbMutex sessionMutex; 00206 00207 <font class="keyword">public</font>:00208 <font class="keyword">static</font> dbCLI instance;00209 00210 dbCLI() { 00211 active_session_list = NULL; 00212 }00213 00214 <font class="keywordtype">int</font> create_session(<font class="keywordtype">char</font> <font class="keyword">const</font>* databasePath,00215 <font class="keywordtype">char</font> <font class="keyword">const</font>* filePath,00216 <font class="keywordtype">unsigned</font> transactionCommitDelay, 00217 <font class="keywordtype">int</font> openAttr, 00218 size_t initDatabaseSize); 00219 00220 <font class="keywordtype">int</font> create_statement(<font class="keywordtype">int</font> session, <font class="keywordtype">char</font> <font class="keyword">const</font>* sql);00221 00222 <font class="keywordtype">int</font> bind_parameter(<font class="keywordtype">int</font> statement,00223 <font class="keywordtype">char</font> <font class="keyword">const</font>* param_name,00224 <font class="keywordtype">int</font> var_type,00225 <font class="keywordtype">void</font>* var_ptr);00226 00227 <font class="keywordtype">int</font> bind_column(<font class="keywordtype">int</font> statement,00228 <font class="keywordtype">char</font> <font class="keyword">const</font>* column_name,00229 <font class="keywordtype">int</font> var_type,00230 <font class="keywordtype">int</font>* var_len,00231 <font class="keywordtype">void</font>* var_ptr);00232 00233 <font class="keywordtype">int</font> bind_array_column(<font class="keywordtype">int</font> statement,00234 <font class="keywordtype">char</font> <font class="keyword">const</font>* column_name,00235 <font class="keywordtype">int</font> var_type,00236 <font class="keywordtype">void</font>* var_ptr,00237 cli_column_set_ex set,00238 cli_column_get_ex get);00239 00240 <font class="keywordtype">int</font> fetch(<font class="keywordtype">int</font> statement, <font class="keywordtype">int</font> for_update);00241 00242 <font class="keywordtype">int</font> fetch_columns(statement_desc* stmt);00243 <font class="keywordtype">int</font> store_columns(<font class="keywordtype">char</font>* buf, statement_desc* stmt);00244 00245 <font class="keywordtype">int</font> insert(<font class="keywordtype">int</font> statement, cli_oid_t* oid);00246 <font class="keywordtype">int</font> update(<font class="keywordtype">int</font> statement);00247 00248 <font class="keywordtype">int</font> get_first(<font class="keywordtype">int</font> statement);00249 <font class="keywordtype">int</font> get_last(<font class="keywordtype">int</font> statement);00250 <font class="keywordtype">int</font> get_next(<font class="keywordtype">int</font> statement);00251 <font class="keywordtype">int</font> get_prev(<font class="keywordtype">int</font> statement);00252 00253 cli_oid_t get_current_oid(<font class="keywordtype">int</font> statement);00254 <font class="keywordtype">int</font> free_statement(<font class="keywordtype">int</font> statement);00255 <font class="keywordtype">int</font> free_statement(statement_desc* stmt);00256 00257 <font class="keywordtype">int</font> commit(<font class="keywordtype">int</font> session);00258 <font class="keywordtype">int</font> precommit(<font class="keywordtype">int</font> session);00259 <font class="keywordtype">int</font> abort(<font class="keywordtype">int</font> session);00260 00261 <font class="keywordtype">int</font> remove(<font class="keywordtype">int</font> statement);00262 00263 <font class="keywordtype">int</font> describe(<font class="keywordtype">int</font> session, <font class="keywordtype">char</font> <font class="keyword">const</font>* table, cli_field_descriptor** fields);00264 <font class="keywordtype">int</font> show_tables(<font class="keywordtype">int</font> session, cli_table_descriptor** tables);00265 00266 <font class="keywordtype">int</font> match_columns(<font class="keywordtype">char</font> <font class="keyword">const</font>* table_name, statement_desc* stmt);00267 00268 <font class="keywordtype">int</font> create_table(<font class="keywordtype">int</font> session, <font class="keywordtype">char</font> <font class="keyword">const</font>* tableName, <font class="keywordtype">int</font> nColumns, 00269 cli_field_descriptor* columns);00270 00271 <font class="keywordtype">int</font> drop_table(<font class="keywordtype">int</font> session, <font class="keywordtype">char</font> <font class="keyword">const</font>* tableName);00272 00273 <font class="keywordtype">int</font> alter_index(<font class="keywordtype">int</font> session, <font class="keywordtype">char</font> <font class="keyword">const</font>* tableName, <font class="keywordtype">char</font> <font class="keyword">const</font>* fieldName, <font class="keywordtype">int</font> newFlags);00274 00275 cli_error_handler set_error_handler(<font class="keywordtype">int</font> session, cli_error_handler new_handler);00276 00277 <font class="keywordtype">int</font> close(<font class="keywordtype">int</font> session);00278 };</pre></div><hr><address align="right"><small>Generated on Fri Nov 15 21:06:29 2002 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.15 </small></address></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?