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> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center><hr><h1>localcli.h</h1><div class="fragment"><pre>00001 <font class="comment">//-&lt; LOCALCLI.H &gt;----------------------------------------------------*--------*</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-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> &lt; dbField::tpArray) 00019         ? fd2cli_type_mapping[fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a>] 00020         : (fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> == dbField::tpArray &amp;&amp; fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> &lt; dbField::tpArray)00021           ? cli_array_of_oid + fd2cli_type_mapping[fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<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-&gt;id = id;00069         this-&gt;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-&gt;id = id;00106         this-&gt;next = next;00107     }00108 };00109 00110 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T&gt;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-&gt;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-&gt;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 + -
显示快捷键?