📄 localcli_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>localcli.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>localcli.h</h1><div class="fragment"><pre>00001 <span class="comment">//-< LOCALCLI.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-Jun-2002 K.A. Knizhnik * / [] \ *</span>00006 <span class="comment">// Last update: 20-Jun-2002 K.A. Knizhnik * GARRET *</span>00007 <span class="comment">//-------------------------------------------------------------------*--------*</span>00008 <span class="comment">// Header file for local C interface to database</span>00009 <span class="comment">//-------------------------------------------------------------------*--------*</span>00010 00011 <span class="preprocessor">#ifndef __LOCALCLI_H__</span>00012 <span class="preprocessor"></span><span class="preprocessor">#define __LOCALCLI_H__</span>00013 <span class="preprocessor"></span>00014 <span class="preprocessor">#include "fastdb.h"</span>00015 <span class="preprocessor">#include "compiler.h"</span>00016 <span class="preprocessor">#include "cli.h"</span>00017 <span class="preprocessor">#include "cliproto.h"</span>00018 <span class="preprocessor">#include "array.h"</span>00019 00020 BEGIN_FASTDB_NAMESPACE00021 00022 <span class="keyword">inline</span> <span class="keywordtype">int</span> map_type(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd) { 00023 <span class="keywordflow">return</span> (fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> < dbField::tpArray) 00024 ? (fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm16">indexType</a> & DB_TIMESTAMP) ? cli_datetime : fd2cli_type_mapping[fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a>] 00025 : (fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> == dbField::tpArray && fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> < dbField::tpArray)00026 ? cli_array_of_oid + fd2cli_type_mapping[fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a>] 00027 : (fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> == dbField::tpRectangle) 00028 ? cli_rectangle00029 : cli_unknown;00030 }00031 00032 00033 <span class="keyword">struct </span>parameter_binding {00034 parameter_binding* next;00035 <span class="keywordtype">char</span>* name;00036 <span class="keywordtype">int</span> var_type;00037 <span class="keywordtype">int</span> var_len;00038 <span class="keywordtype">void</span>* var_ptr;00039 00040 <span class="keywordtype">void</span> reset() {}00041 };00042 00043 <span class="keyword">struct </span>column_binding {00044 column_binding* next;00045 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00046 <span class="keywordtype">char</span>* name;00047 <span class="keywordtype">int</span> var_type;00048 <span class="keywordtype">int</span>* var_len;00049 <span class="keywordtype">void</span>* var_ptr;00050 cli_column_get_ex get_fnc;00051 cli_column_set_ex set_fnc;00052 <span class="keywordtype">void</span>* user_data;00053 00054 <span class="keywordtype">void</span> reset() {}00055 };00056 00057 <span class="keyword">struct </span>session_desc;00058 00059 <span class="keyword">struct </span>statement_desc {00060 <span class="keywordtype">int</span> id;00061 statement_desc* next;00062 <a class="code" href="classdbQuery.html">dbQuery</a> query;00063 <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a> cursor;00064 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00065 column_binding* columns;00066 parameter_binding* params;00067 session_desc* session;00068 <span class="keywordtype">bool</span> first_fetch;00069 <span class="keywordtype">bool</span> for_update;00070 <span class="keywordtype">bool</span> prepared;00071 <span class="keywordtype">bool</span> updated;00072 cli_oid_t oid;00073 <span class="keywordtype">int</span> n_params;00074 <span class="keywordtype">int</span> n_columns;00075 <span class="keywordtype">int</span> n_autoincremented_columns;00076 <span class="keywordtype">int</span> param_size;00077 <span class="keywordtype">void</span>* record_struct;00078 dbSmallBuffer sql;00079 00080 <span class="keywordtype">void</span> reset() 00081 { 00082 query.<a class="code" href="classdbQuery.html#dbQuerya3">reset</a>();00083 }00084 00085 statement_desc(<span class="keywordtype">int</span> id, statement_desc* next) 00086 {00087 this->id = id;00088 this->next = next;00089 } 00090 statement_desc() {}00091 };00092 00093 00094 <span class="keyword">class </span>sql_scanner {00095 <span class="keyword">private</span>:00096 <span class="keywordtype">char</span>* p;00097 <span class="keywordtype">char</span>* ident;00098 00099 <span class="keyword">public</span>:00100 <span class="keywordtype">int</span> get();00101 00102 <span class="keywordtype">char</span>* current_position() { 00103 <span class="keywordflow">return</span> p;00104 }00105 00106 <span class="keywordtype">char</span>* identifier() { 00107 <span class="keywordflow">return</span> ident;00108 }00109 00110 sql_scanner(<span class="keywordtype">char</span>* sql) {00111 p = sql;00112 }00113 };00114 00115 <span class="keyword">struct </span>session_desc {00116 <span class="keywordtype">int</span> id;00117 <span class="keywordtype">char</span>* name;00118 session_desc* next;00119 statement_desc* stmts;00120 <a class="code" href="classdbDatabase.html">dbDatabase</a>* db;00121 dbMutex mutex;00122 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* dropped_tables;00123 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* existed_tables;00124 00125 <span class="keywordtype">void</span> reset() {}00126 00127 session_desc(<span class="keywordtype">int</span> id, session_desc* next) {00128 this->id = id;00129 this->next = next;00130 }00131 session_desc() {}00132 };00133 00134 <span class="keyword">template</span><<span class="keyword">class</span> T>00135 <span class="keyword">class </span>fixed_size_object_allocator { 00136 <span class="keyword">protected</span>:00137 T* free_chain;00138 dbMutex mutex;00139 00140 <span class="keyword">public</span>:00141 T* allocate() {00142 dbCriticalSection cs(mutex);00143 T* obj = free_chain;00144 <span class="keywordflow">if</span> (obj == NULL) {00145 obj = <span class="keyword">new</span> T();00146 } <span class="keywordflow">else</span> { 00147 free_chain = obj->next;00148 }00149 <span class="keywordflow">return</span> obj;00150 }00151 00152 <span class="keywordtype">void</span> free(T* desc) {00153 dbCriticalSection cs(mutex);00154 desc->next = free_chain;00155 free_chain = desc;00156 desc->reset();00157 }00158 00159 fixed_size_object_allocator() {00160 free_chain = NULL;00161 }00162 00163 ~fixed_size_object_allocator() { 00164 T *obj, *next;00165 <span class="keywordflow">for</span> (obj = free_chain; obj != NULL; obj = next) { 00166 next = obj->next;00167 <span class="keyword">delete</span> obj;00168 }00169 }00170 };00171 00172 <span class="keyword">template</span><<span class="keyword">class</span> T>00173 <span class="keyword">class </span>descriptor_table : <span class="keyword">public</span> fixed_size_object_allocator<T> {00174 <span class="keyword">protected</span>:00175 T** table;00176 <span class="keywordtype">int</span> descriptor_table_size;00177 00178 <span class="keyword">public</span>:00179 descriptor_table() {00180 <span class="keywordtype">int</span> i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -