localcli_8h-source.html
来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 293 行 · 第 1/2 页
HTML
293 行
<!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.15 --><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 <font class="comment">//-< LOCALCLI.H >----------------------------------------------------*--------*</font>00002 <font class="comment">// FastDB Version 1.0 (c) 1999 GARRET * ? *</font>00003 <font class="comment">// (Main Memory Database Management System) * /\| *</font>00004 <font class="comment">// * / \ *</font>00005 <font class="comment">// Created: 20-Jun-2002 K.A. Knizhnik * / [] \ *</font>00006 <font class="comment">// Last update: 20-Jun-2002 K.A. Knizhnik * GARRET *</font>00007 <font class="comment">//-------------------------------------------------------------------*--------*</font>00008 <font class="comment">// Header file for local C interface to database</font>00009 <font class="comment">//-------------------------------------------------------------------*--------*</font>00010 00011 <font class="preprocessor">#include "fastdb.h"</font>00012 <font class="preprocessor">#include "compiler.h"</font>00013 <font class="preprocessor">#include "cli.h"</font>00014 <font class="preprocessor">#include "cliproto.h"</font>00015 <font class="preprocessor">#include "array.h"</font>00016 00017 <font class="keyword">inline</font> <font class="keywordtype">int</font> map_type(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd) { 00018 <font class="keywordflow">return</font> (fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> < dbField::tpArray) 00019 ? fd2cli_type_mapping[fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a>] 00020 : (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)00021 ? 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>] 00022 : cli_unknown;00023 }00024 00025 00026 <font class="keyword">struct </font>parameter_binding {00027 parameter_binding* next;00028 <font class="keywordtype">char</font>* name;00029 <font class="keywordtype">int</font> var_type;00030 <font class="keywordtype">int</font> var_len;00031 <font class="keywordtype">void</font>* var_ptr;00032 };00033 00034 <font class="keyword">struct </font>column_binding {00035 column_binding* next;00036 <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* field;00037 <font class="keywordtype">char</font>* name;00038 <font class="keywordtype">int</font> var_type;00039 <font class="keywordtype">int</font>* var_len;00040 <font class="keywordtype">void</font>* var_ptr;00041 cli_column_get_ex get_fnc;00042 cli_column_set_ex set_fnc;00043 };00044 00045 <font class="keyword">struct </font>session_desc;00046 00047 <font class="keyword">struct </font>statement_desc {00048 <font class="keywordtype">int</font> id;00049 <font class="keywordtype">char</font>* sql;00050 statement_desc* next;00051 <a class="code" href="classdbQuery.html">dbQuery</a> query;00052 <a class="code" href="classdbAnyCursor.html">dbAnyCursor</a> cursor;00053 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* table;00054 column_binding* columns;00055 parameter_binding* params;00056 session_desc* session;00057 <font class="keywordtype">bool</font> first_fetch;00058 <font class="keywordtype">bool</font> for_update;00059 <font class="keywordtype">bool</font> prepared;00060 <font class="keywordtype">bool</font> updated;00061 cli_oid_t oid;00062 <font class="keywordtype">int</font> n_params;00063 <font class="keywordtype">int</font> n_columns;00064 <font class="keywordtype">int</font> n_autoincremented_columns;00065 00066 statement_desc(<font class="keywordtype">int</font> id, statement_desc* next) 00067 {00068 this->id = id;00069 this->next = next;00070 }00071 };00072 00073 00074 <font class="keyword">class </font>sql_scanner {00075 <font class="keyword">private</font>:00076 <font class="keywordtype">char</font>* p;00077 <font class="keywordtype">char</font>* ident;00078 00079 <font class="keyword">public</font>:00080 <font class="keywordtype">int</font> get();00081 00082 <font class="keywordtype">char</font>* current_position() { 00083 <font class="keywordflow">return</font> p;00084 }00085 00086 <font class="keywordtype">char</font>* identifier() { 00087 <font class="keywordflow">return</font> ident;00088 }00089 00090 sql_scanner(<font class="keywordtype">char</font>* sql) {00091 p = sql;00092 }00093 };00094 00095 <font class="keyword">struct </font>session_desc {00096 <font class="keywordtype">int</font> id;00097 <font class="keywordtype">char</font>* name;00098 session_desc* next;00099 statement_desc* stmts;00100 <a class="code" href="classdbDatabase.html">dbDatabase</a>* db;00101 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* dropped_tables;00102 <a class="code" href="classdbTableDescriptor.html">dbTableDescriptor</a>* existed_tables;00103 00104 session_desc(<font class="keywordtype">int</font> id, session_desc* next) {00105 this->id = id;00106 this->next = next;00107 }00108 };00109 00110 <font class="keyword">template</font><<font class="keyword">class</font> T>00111 <font class="keyword">class </font>fixed_size_object_allocator { 00112 <font class="keyword">protected</font>:00113 T* free_chain;00114 dbMutex mutex;00115 00116 <font class="keyword">public</font>:00117 T* allocate() {00118 dbCriticalSection cs(mutex);00119 T* obj = free_chain;00120 <font class="keywordflow">if</font> (obj == NULL) {00121 obj = <font class="keyword">new</font> T();00122 } <font class="keywordflow">else</font> { 00123 free_chain = obj->next;00124 }00125 <font class="keywordflow">return</font> obj;00126 }00127 00128 <font class="keywordtype">void</font> free(T* desc) {00129 dbCriticalSection cs(mutex);00130 desc->next = free_chain;00131 free_chain = desc;00132 }00133 00134 fixed_size_object_allocator() {00135 free_chain = NULL;00136 }00137 00138 ~fixed_size_object_allocator() { 00139 T *obj, *next;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?