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-&gt;next;00142             <font class="keyword">delete</font> obj;00143         }00144     }00145 };00146 00147 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T&gt;00148 <font class="keyword">class </font>descriptor_table : <font class="keyword">public</font> fixed_size_object_allocator&lt;T&gt; {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 &lt; 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 &gt;= 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 &lt; 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-&gt;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&lt;column_binding&gt; column_allocator;00198     fixed_size_object_allocator&lt;parameter_binding&gt; parameter_allocator;00199     00200     descriptor_table&lt;session_desc&gt;   sessions;00201     descriptor_table&lt;statement_desc&gt; 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 + -
显示快捷键?