📄 class_8h-source.html
字号:
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>&)01019 {01020 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><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>&)01024 {01025 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><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>&) 01030 { 01031 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><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&) 01035 { 01036 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><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&) 01040 { 01041 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><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&)01046 {01047 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = dbField::tpString;01048 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpStdString;01049 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>);01050 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01051 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01052 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01053 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><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>*&) 01058 { 01059 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpString; 01060 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>); 01061 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01062 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01063 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01064 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = 1;01065 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><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>*&) 01069 { 01070 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpString; 01071 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = <span class="keyword">sizeof</span>(<a class="code" href="structdbVarying.html">dbVarying</a>); 01072 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro24">alignment</a> = 4;01073 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a> = <span class="keyword">new</span> dbFieldDescriptor(<span class="stringliteral">"[]"</span>);01074 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = dbField::tpInt1;01075 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro22">dbsSize</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro23">appSize</a> = 1;01076 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><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 >= 0x520 && __SUNPRO_CC_COMPAT == 5)</span>01121 <span class="preprocessor"></span>01124 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> R>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->cls-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro17">dbsOffs</a>))->*method)();01136 } <span class="keywordflow">else</span> { 01137 T rec;01138 cls-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&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><<span class="keyword">class</span> T, <span class="keyword">class</span> R><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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro19">components</a>-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptora7">fetchRecordFields</a>((byte*)&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><<span class="keyword">class</span> T, <span class="keyword">class</span> R><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><T,R> { 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-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro17">dbsOffs</a>))->*method)();01183 }01184 <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline</a>(<a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline<T,R></a>* mt) 01185 : <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline</a><T,R>(mt->cls, mt->method) { 01186 <span class="keyword">delete</span> mt;01187 }01188 };01189 01190 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> R><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<T,R>::optimize</a>() { 01192 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classdbMethodFastTrampoline.html">dbMethodFastTrampoline<T,R></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><<span class="keyword">class</span> T, <span class="keyword">class</span> R>01198 <span class="keyword">inline</span> dbFieldDescriptor* dbDescribeMethod(dbFieldDescriptor* fd, R (T::*p)()) 01199 { 01200 R ret;01201 dbDescribeField(fd, ret);01202 assert(fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> <= dbField::tpReference);01203 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro15">appType</a> = fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro14">type</a> += dbField::tpMethodBool;01204 fd-><a class="code" href="classdbFieldDescriptor.html#dbFieldDescriptoro30">method</a> = <span class="keyword">new</span> <a class="code" href="classdbMethodTrampoline.html">dbMethodTrampoline<T,R></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 + -