class_8h-source.html

来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 665 行 · 第 1/4 页

HTML
665
字号
00997     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt4; 00998     <font class="keywordflow">return</font> fd;00999 }01000 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, nat8&amp;) 01001 { 01002     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt8; 01003     <font class="keywordflow">return</font> fd;01004 }01005 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, <font class="keywordtype">bool</font>&amp;) 01006 { 01007     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpBool; 01008     <font class="keywordflow">return</font> fd;01009 }01010 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, real4&amp;) 01011 { 01012     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpReal4; 01013     <font class="keywordflow">return</font> fd;01014 }01015 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, real8&amp;) 01016 { 01017     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpReal8; 01018     <font class="keywordflow">return</font> fd;01019 }01020 <font class="preprocessor">#ifdef USE_STD_STRING</font>01021 <font class="preprocessor"></font><font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, std::string&amp;)01022 {01023     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = dbField::tpString;01024     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpStdString;01025     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying);01026     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01027     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <font class="keyword">new</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<font class="stringliteral">"[]"</font>);01028     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01029     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 1; 01030     <font class="keywordflow">return</font> fd;01031 }01032 <font class="preprocessor">#endif</font>01033 <font class="preprocessor"></font><font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, <font class="keywordtype">char</font> <font class="keyword">const</font>*&amp;) 01034 { 01035     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 01036     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying); 01037     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01038     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <font class="keyword">new</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<font class="stringliteral">"[]"</font>);01039     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01040     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = 1;01041     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 1; 01042     <font class="keywordflow">return</font> fd;01043 }01044 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, <font class="keywordtype">char</font>*&amp;) 01045 { 01046     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 01047     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying); 01048     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01049     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <font class="keyword">new</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<font class="stringliteral">"[]"</font>);01050     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01051     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = 1;01052     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 1; 01053     <font class="keywordflow">return</font> fd;01054 }01055 01056 <a name="l01060"></a><a class="code" href="classdbAnyMethodTrampoline.html">01060</a> <font class="keyword">class </font>FASTDB_DLL_ENTRY dbAnyMethodTrampoline { 01061   <font class="keyword">public</font>:01062     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* cls;01063 01069     <font class="keyword">virtual</font> <font class="keywordtype">void</font> invoke(byte* data, <font class="keywordtype">void</font>* result) = 0;01070 01077     <font class="keyword">virtual</font> dbAnyMethodTrampoline* optimize() = 0;01078 <a name="l01083"></a><a class="code" href="classdbAnyMethodTrampoline.html#dbAnyMethodTrampolinea2">01083</a>     dbAnyMethodTrampoline(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd) { cls = fd; }01084     01088     <font class="keyword">virtual</font>~dbAnyMethodTrampoline();01089 };01090     01091 01092 <font class="preprocessor">#if defined(__APPLE__) || defined(__VACPP_MULTI__) || defined(__IBMCPP__) || \</font>01093 <font class="preprocessor">    (__SUNPRO_CC &gt;= 0x520 &amp;&amp; __SUNPRO_CC_COMPAT == 5)</font>01094 <font class="preprocessor"></font>01097 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T, <font class="keyword">class</font> R&gt;01098 <font class="keyword">class </font><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <font class="keyword">public</font> dbAnyMethodTrampoline {01099   <font class="keyword">public</font>:01100     <font class="keyword">typedef</font> R (T::*mfunc)();01101 01102     mfunc              method;01103     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* cls;01104     <font class="keywordtype">bool</font>               optimized;01105 01106     <font class="keywordtype">void</font> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <font class="keywordtype">void</font>* result) {01107         <font class="keywordflow">if</font> (optimized) { 01108             *(R*)result = (((T*)(data + this-&gt;cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))-&gt;*method)();01109         } <font class="keywordflow">else</font> { 01110             T rec;01111             cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&amp;rec, data);01112             *(R*)result = (rec.*method)();01113         }01114     }01115     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>() { 01116         optimized = <font class="keyword">true</font>;01117         <font class="keywordflow">return</font> <font class="keyword">this</font>;01118     }01119 01120     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, mfunc f)01121     : dbAnyMethodTrampoline(fd), method(f), cls(fd), optimized(false) {}01122 };01123 01124 <font class="preprocessor">#else</font>01125 <font class="preprocessor"></font>01129 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T, <font class="keyword">class</font> R&gt;<a name="l01130"></a><a class="code" href="classdbMethodTrampoline.html">01130</a> <font class="keyword">class </font><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <font class="keyword">public</font> dbAnyMethodTrampoline { 01131   <font class="keyword">public</font>:01132     <font class="keyword">typedef</font> R (T::*mfunc)();01133     mfunc method;01134 <a name="l01135"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">01135</a>     <font class="keywordtype">void</font> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <font class="keywordtype">void</font>* result) {01136         T rec;01137         cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&amp;rec, data);01138         *(R*)result = (rec.*method)();01139     }01140     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>();01141  01142     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, mfunc f) 01143     : dbAnyMethodTrampoline(fd), method(f) {} 01144 };01145 01146 01151 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T, <font class="keyword">class</font> R&gt;<a name="l01152"></a><a class="code" href="classdbMethodFastTrampoline.html">01152</a> <font class="keyword">class </font><a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a> : <font class="keyword">public</font> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>&lt;T,R&gt; { 01153   <font class="keyword">public</font>:<a name="l01154"></a><a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">01154</a>     <font class="keywordtype">void</font> <a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">invoke</a>(byte* data, <font class="keywordtype">void</font>* result) {01155         *(R*)result = (((T*)(data + cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))-&gt;*method)();01156     }01157     <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a>(<a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>* mt) 01158     : <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>&lt;T,R&gt;(mt-&gt;cls, mt-&gt;method) { 01159         <font class="keyword">delete</font> mt;01160     }01161 };01162 01163 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T, <font class="keyword">class</font> R&gt;<a name="l01164"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">01164</a> <font class="keyword">inline</font> dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">dbMethodTrampoline&lt;T,R&gt;::optimize</a>() { 01165     <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline&lt;T,R&gt;</a>(this);01166 }01167     01168 <font class="preprocessor">#endif</font>01169 <font class="preprocessor"></font>01170 <font class="keyword">template</font>&lt;<font class="keyword">class</font> T, <font class="keyword">class</font> R&gt;01171 <font class="keyword">inline</font> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeMethod(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, R (T::*p)()) 01172 { 01173     R ret;01174     dbDescribeField(fd, ret);01175     assert(fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> &lt;= dbField::tpReference);01176     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> += dbField::tpMethodBool;01177     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm30">method</a> = <font class="keyword">new</font> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>(fd, p);01178     <font class="keywordflow">return</font> fd;01179 }01180 01181 <font class="preprocessor">#endif</font>01182 <font class="preprocessor"></font>01183 </pre></div><hr><address align="right"><small>Generated on Fri Nov 15 21:06:28 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 + -
显示快捷键?