⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class_8h-source.html

📁 嵌入式数据库软件 嵌入式数据库软件 嵌入式数据库软件
💻 HTML
📖 第 1 页 / 共 4 页
字号:
01017 <span class="preprocessor">#if SIZEOF_LONG != 8</span>01018 <span class="preprocessor"></span><span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, <span class="keywordtype">long</span>&amp;)01019 {01020     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt4;01021     <span class="keywordflow">return</span> fd;01022 }01023 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span>&amp;)01024 {01025     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt4;01026     <span class="keywordflow">return</span> fd;01027 }01028 <span class="preprocessor">#endif</span>01029 <span class="preprocessor"></span><span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, <span class="keywordtype">bool</span>&amp;) 01030 { 01031     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpBool; 01032     <span class="keywordflow">return</span> fd;01033 }01034 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, real4&amp;) 01035 { 01036     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpReal4; 01037     <span class="keywordflow">return</span> fd;01038 }01039 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, real8&amp;) 01040 { 01041     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpReal8; 01042     <span class="keywordflow">return</span> fd;01043 }01044 <span class="preprocessor">#ifdef USE_STD_STRING</span>01045 <span class="preprocessor"></span><span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, std::string&amp;)01046 {01047     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = dbField::tpString;01048     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpStdString;01049     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>);01050     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01051     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01052     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01053     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 1; 01054     <span class="keywordflow">return</span> fd;01055 }01056 <span class="preprocessor">#endif</span>01057 <span class="preprocessor"></span><span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, <span class="keywordtype">char</span> <span class="keyword">const</span>*&amp;) 01058 { 01059     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpString; 01060     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>); 01061     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01062     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01063     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01064     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = 1;01065     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 1; 01066     <span class="keywordflow">return</span> fd;01067 }01068 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeField(dbFieldDescriptor* fd, <span class="keywordtype">char</span>*&amp;) 01069 { 01070     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpString; 01071     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>); 01072     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01073     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01074     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01075     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = 1;01076     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 1; 01077     <span class="keywordflow">return</span> fd;01078 }01079 01080 <a name="l01084"></a><a class="code" href="classdbAnyMethodTrampoline.html">01084</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbAnyMethodTrampoline { 01085   <span class="keyword">public</span>:01086     dbFieldDescriptor* cls;01087 01093     <span class="keyword">virtual</span> <span class="keywordtype">void</span> invoke(byte* data, <span class="keywordtype">void</span>* result) = 0;01094 01101     <span class="keyword">virtual</span> dbAnyMethodTrampoline* optimize() = 0;01102 <a name="l01107"></a><a class="code" href="classdbAnyMethodTrampoline.html#dbAnyMethodTrampolinea2">01107</a>     dbAnyMethodTrampoline(dbFieldDescriptor* fd) { cls = fd; }01108     01109     <span class="keywordtype">void</span>* operator new(size_t size EXTRA_DEBUG_NEW_PARAMS);01110     <span class="keywordtype">void</span>  operator delete(<span class="keywordtype">void</span>* p EXTRA_DEBUG_NEW_PARAMS);01111 01115     <span class="keyword">virtual</span>~dbAnyMethodTrampoline();01116 };01117     01118 01119 <span class="preprocessor">#if defined(__APPLE__) || defined(__VACPP_MULTI__) || defined(__IBMCPP__) || \</span>01120 <span class="preprocessor">    (__SUNPRO_CC &gt;= 0x520 &amp;&amp; __SUNPRO_CC_COMPAT == 5)</span>01121 <span class="preprocessor"></span>01124 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;01125 <span class="keyword">class </span><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <span class="keyword">public</span> dbAnyMethodTrampoline {01126   <span class="keyword">public</span>:01127     <span class="keyword">typedef</span> R (T::*mfunc)();01128 01129     mfunc              method;01130     dbFieldDescriptor* cls;01131     <span class="keywordtype">bool</span>               optimized;01132 01133     <span class="keywordtype">void</span> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {01134         <span class="keywordflow">if</span> (optimized) { 01135             *(R*)result = (((T*)(data + this-&gt;cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro17">dbsOffs</a>))-&gt;*method)();01136         } <span class="keywordflow">else</span> { 01137             T rec;01138             cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&amp;rec, data);01139             *(R*)result = (rec.*method)();01140         }01141     }01142     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>() { 01143         optimized = <span class="keyword">true</span>;01144         <span class="keywordflow">return</span> <span class="keyword">this</span>;01145     }01146 01147     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(dbFieldDescriptor* fd, mfunc f)01148     : dbAnyMethodTrampoline(fd), method(f), cls(fd), optimized(false) {}01149 };01150 01151 <span class="preprocessor">#else</span>01152 <span class="preprocessor"></span>01156 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;<a name="l01157"></a><a class="code" href="classdbMethodTrampoline.html">01157</a> <span class="keyword">class </span><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <span class="keyword">public</span> dbAnyMethodTrampoline { 01158   <span class="keyword">public</span>:01159     <span class="keyword">typedef</span> R (T::*mfunc)();01160     mfunc method;01161 <a name="l01162"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">01162</a>     <span class="keywordtype">void</span> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {01163         T rec;01164         cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&amp;rec, data);01165         *(R*)result = (rec.*method)();01166     }01167     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>();01168  01169     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(dbFieldDescriptor* fd, mfunc f) 01170     : dbAnyMethodTrampoline(fd), method(f) {} 01171 };01172 01173 01178 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;<a name="l01179"></a><a class="code" href="classdbMethodFastTrampoline.html">01179</a> <span class="keyword">class </span><a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a> : <span class="keyword">public</span> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>&lt;T,R&gt; { 01180   <span class="keyword">public</span>:<a name="l01181"></a><a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">01181</a>     <span class="keywordtype">void</span> <a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {01182         *(R*)result = (((T*)(data + cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro17">dbsOffs</a>))-&gt;*method)();01183     }01184     <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a>(<a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>* mt) 01185     : <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>&lt;T,R&gt;(mt-&gt;cls, mt-&gt;method) { 01186         <span class="keyword">delete</span> mt;01187     }01188 };01189 01190 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;<a name="l01191"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">01191</a> <span class="keyword">inline</span> dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">dbMethodTrampoline&lt;T,R&gt;::optimize</a>() { 01192     <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline&lt;T,R&gt;</a>(<span class="keyword">this</span>);01193 }01194     01195 <span class="preprocessor">#endif</span>01196 <span class="preprocessor"></span>01197 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;01198 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeMethod(dbFieldDescriptor* fd, R (T::*p)()) 01199 { 01200     R ret;01201     dbDescribeField(fd, ret);01202     assert(fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> &lt;= dbField::tpReference);01203     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> += dbField::tpMethodBool;01204     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro30">method</a> = <span class="keyword">new</span> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>(fd, p);01205     <span class="keywordflow">return</span> fd;01206 }01207 01208 <span class="preprocessor">#endif</span>01209 <span class="preprocessor"></span>01210 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Feb 12 13:04:48 2004 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.5 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -