class_8h-source.html
来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 665 行 · 第 1/4 页
HTML
665 行
00997 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><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&) 01001 { 01002 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><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>&) 01006 { 01007 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><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&) 01011 { 01012 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><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&) 01016 { 01017 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><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&)01022 {01023 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = dbField::tpString;01024 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpStdString;01025 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying);01026 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01027 fd-><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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01029 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><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>*&) 01034 { 01035 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 01036 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying); 01037 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01038 fd-><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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01040 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = 1;01041 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><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>*&) 01045 { 01046 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 01047 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <font class="keyword">sizeof</font>(dbVarying); 01048 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;01049 fd-><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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpInt1;01051 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm23">appSize</a> = 1;01052 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><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 >= 0x520 && __SUNPRO_CC_COMPAT == 5)</font>01094 <font class="preprocessor"></font>01097 <font class="keyword">template</font><<font class="keyword">class</font> T, <font class="keyword">class</font> R>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->cls-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))->*method)();01109 } <font class="keywordflow">else</font> { 01110 T rec;01111 cls-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&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><<font class="keyword">class</font> T, <font class="keyword">class</font> R><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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&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><<font class="keyword">class</font> T, <font class="keyword">class</font> R><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><T,R> { 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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))->*method)();01156 }01157 <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a>(<a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline<T,R></a>* mt) 01158 : <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a><T,R>(mt->cls, mt->method) { 01159 <font class="keyword">delete</font> mt;01160 }01161 };01162 01163 <font class="keyword">template</font><<font class="keyword">class</font> T, <font class="keyword">class</font> R><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<T,R>::optimize</a>() { 01165 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline<T,R></a>(this);01166 }01167 01168 <font class="preprocessor">#endif</font>01169 <font class="preprocessor"></font>01170 <font class="keyword">template</font><<font class="keyword">class</font> T, <font class="keyword">class</font> R>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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> <= dbField::tpReference);01176 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> += dbField::tpMethodBool;01177 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm30">method</a> = <font class="keyword">new</font> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline<T,R></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 + -
显示快捷键?