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

📄 class_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 HTML
📖 第 1 页 / 共 5 页
字号:
01112     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;
01113     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <span class="keyword">new</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<span class="stringliteral">"[]"</span>);
01114     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;
01115     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; 
01116     <span class="keywordflow">return</span> fd;
01117 }
01118 <span class="preprocessor">#endif</span>
01119 <span class="preprocessor"></span><span class="keyword">inline</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, <span class="keywordtype">char</span> <span class="keyword">const</span>*&amp;) 
01120 { 
01121     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 
01122     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <span class="keyword">sizeof</span>(dbVarying); 
01123     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;
01124     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <span class="keyword">new</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<span class="stringliteral">"[]"</span>);
01125     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;
01126     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;
01127     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 1; 
01128     <span class="keywordflow">return</span> fd;
01129 }
01130 <span class="keyword">inline</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeField(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, <span class="keywordtype">char</span>*&amp;) 
01131 { 
01132     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = dbField::tpString; 
01133     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm22">dbsSize</a> = <span class="keyword">sizeof</span>(dbVarying); 
01134     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 4;
01135     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a> = <span class="keyword">new</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>(<span class="stringliteral">"[]"</span>);
01136     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;
01137     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;
01138     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm19">components</a>-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm24">alignment</a> = 1; 
01139     <span class="keywordflow">return</span> fd;
01140 }
01141 
01142 
<a name="l01146"></a><a class="code" href="classdbAnyMethodTrampoline.html">01146</a> <span class="keyword">class </span>FASTDB_DLL_ENTRY dbAnyMethodTrampoline { 
01147   <span class="keyword">public</span>:
01148     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* cls;
01149 
01155     <span class="keyword">virtual</span> <span class="keywordtype">void</span> invoke(byte* data, <span class="keywordtype">void</span>* result) = 0;
01156 
01163     <span class="keyword">virtual</span> dbAnyMethodTrampoline* optimize() = 0;
01164 
<a name="l01169"></a><a class="code" href="classdbAnyMethodTrampoline.html#dbAnyMethodTrampolinea2">01169</a>     dbAnyMethodTrampoline(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd) { cls = fd; }
01170     
01171     <span class="keywordtype">void</span>* operator new(size_t size EXTRA_DEBUG_NEW_PARAMS);
01172     <span class="keywordtype">void</span>  operator delete(<span class="keywordtype">void</span>* p EXTRA_DEBUG_NEW_PARAMS);
01173 
01177     <span class="keyword">virtual</span>~dbAnyMethodTrampoline();
01178 };
01179     
01180 
01181 <span class="preprocessor">#if defined(__APPLE__) || defined(__VACPP_MULTI__) || defined(__IBMCPP__) || defined(__HP_aCC) || (defined(__SUNPRO_CC) &amp;&amp; __SUNPRO_CC &gt;= 0x510 &amp;&amp; __SUNPRO_CC_COMPAT == 5)</span>
01182 <span class="preprocessor"></span>
01185 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;
01186 <span class="keyword">class </span><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <span class="keyword">public</span> dbAnyMethodTrampoline {
01187   <span class="keyword">public</span>:
01188     <span class="keyword">typedef</span> R (T::*mfunc)();
01189 
01190     mfunc              method;
01191     <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* cls;
01192     <span class="keywordtype">bool</span>               optimized;
01193 
01194     <span class="keywordtype">void</span> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {
01195         <span class="keywordflow">if</span> (optimized) { 
01196             *(R*)result = (((T*)(data + this-&gt;cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))-&gt;*method)();
01197         } <span class="keywordflow">else</span> { 
01198             T rec;
01199             this-&gt;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);
01200             *(R*)result = (rec.*method)();
01201         }
01202     }
01203     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>() { 
01204         optimized = <span class="keyword">true</span>;
01205         <span class="keywordflow">return</span> <span class="keyword">this</span>;
01206     }
01207 
01208     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, mfunc f)
01209     : dbAnyMethodTrampoline(fd)
01210     {
01211         this-&gt;method = f;
01212         this-&gt;cls = fd;
01213         this-&gt;optimized = <span class="keyword">false</span>;
01214     }
01215 };
01216 
01217 <span class="preprocessor">#else</span>
01218 <span class="preprocessor"></span>
01222 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;
<a name="l01223"></a><a class="code" href="classdbMethodTrampoline.html">01223</a> <span class="keyword">class </span><a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a> : <span class="keyword">public</span> dbAnyMethodTrampoline { 
01224   <span class="keyword">public</span>:
01225     <span class="keyword">typedef</span> R (T::*mfunc)();
01226     mfunc method;
<a name="l01227"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">01227</a>     <span class="keywordtype">void</span> <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea0">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {
01228         T rec;
01229         this-&gt;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);
01230         *(R*)result = (rec.*method)();
01231     }
01232     dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">optimize</a>();
01233  
01234     <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a>(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, mfunc f) 
01235     : dbAnyMethodTrampoline(fd), method(f) {} 
01236 };
01237 
01238 
01243 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;
<a name="l01244"></a><a class="code" href="classdbMethodFastTrampoline.html">01244</a> <span class="keyword">class </span><a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a> : <span class="keyword">public</span> dbAnyMethodTrampoline { 
01245     <span class="keyword">typedef</span> R (T::*mfunc)();
01246     mfunc method;
01247   <span class="keyword">public</span>:
<a name="l01248"></a><a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">01248</a>     dbAnyMethodTrampoline* <a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea0">optimize</a>() { 
01249         <span class="keywordflow">return</span> <span class="keyword">this</span>;
01250     }
<a name="l01251"></a><a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea1">01251</a>     <span class="keywordtype">void</span> <a class="code" href="classdbMethodFastTrampoline.html#dbMethodFastTrampolinea1">invoke</a>(byte* data, <span class="keywordtype">void</span>* result) {
01252         *(R*)result = (((T*)(data + this-&gt;cls-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm17">dbsOffs</a>))-&gt;*method)();
01253     }
01254     <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a>(<a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>* mt) 
01255     : dbAnyMethodTrampoline(mt-&gt;cls), method(mt-&gt;method) {
01256         <span class="keyword">delete</span> mt;
01257     }
01258 };
01259 
01260 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;
<a name="l01261"></a><a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">01261</a> <span class="keyword">inline</span> dbAnyMethodTrampoline* <a class="code" href="classdbMethodTrampoline.html#dbMethodTrampolinea1">dbMethodTrampoline&lt;T,R&gt;::optimize</a>() { 
01262     <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline&lt;T,R&gt;</a>(this);
01263 }
01264     
01265 <span class="preprocessor">#endif</span>
01266 <span class="preprocessor"></span>
01267 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> R&gt;
01268 <span class="keyword">inline</span> <a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* dbDescribeMethod(<a class="code" href="classdbFieldDescriptor.html">dbFieldDescriptor</a>* fd, R (T::*p)()) 
01269 { 
01270     R ret;
01271     dbDescribeField(fd, ret);
01272     assert(fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> &lt;= dbField::tpReference);
01273     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm15">appType</a> = fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm14">type</a> += dbField::tpMethodBool;
01274     fd-&gt;<a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptorm30">method</a> = <span class="keyword">new</span> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline&lt;T,R&gt;</a>(fd, p);
01275     <span class="keywordflow">return</span> fd;
01276 }
01277 
01278 END_FASTDB_NAMESPACE
01279 
01280 <span class="preprocessor">#endif</span>
01281 <span class="preprocessor"></span>
01282 
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 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.18 </small></address>
</body>
</html>

⌨️ 快捷键说明

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