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

📄 cliproto_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00183 <span class="preprocessor"></span>00184 00185 00186 00187 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack2(<span class="keywordtype">char</span>* dst, int2 val) { 00188     *dst++ = char(val &gt;&gt; 8);00189     *dst++ = char(val);     00190     <span class="keywordflow">return</span> dst;00191 }00192 00193 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack2(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00194     <span class="keywordflow">return</span> pack2(dst, *(int2*)src); 00195 }00196 00197 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack2(int2&amp; val) { 00198 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00199 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00200 <span class="preprocessor"></span>    val = htons(val);00201 <span class="preprocessor">#else</span>00202 <span class="preprocessor"></span>    pack2((<span class="keywordtype">char</span>*)&amp;val, val); 00203 <span class="preprocessor">#endif</span>00204 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00205 <span class="preprocessor"></span>}00206 00207 00208 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, int4 val) { 00209     *dst++ = char(val &gt;&gt; 24);00210     *dst++ = char(val &gt;&gt; 16);     00211     *dst++ = char(val &gt;&gt; 8); 00212     *dst++ = char(val);00213     <span class="keywordflow">return</span> dst;00214 }00215 00216 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00217     <span class="keywordflow">return</span> pack4(dst, *(int4*)src); 00218 }00219 00220 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack4(int4&amp; val) { 00221 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00222 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00223 <span class="preprocessor"></span>    val = htonl(val);00224 <span class="preprocessor">#else</span>00225 <span class="preprocessor"></span>    pack4((<span class="keywordtype">char</span>*)&amp;val, val); 00226 <span class="preprocessor">#endif</span>00227 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00228 <span class="preprocessor"></span>}00229 00230 00231 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00232 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00233 <span class="preprocessor"></span>    <span class="keywordflow">return</span> pack4( pack4(dst, src), src + 4);00234 <span class="preprocessor">#else</span>00235 <span class="preprocessor"></span>    <span class="keywordflow">return</span> pack4( pack4(dst, src + 4), src);00236 <span class="preprocessor">#endif</span>00237 <span class="preprocessor"></span>}00238 00239 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, db_int8 val) { 00240     <span class="keywordflow">return</span> pack8(dst, (<span class="keywordtype">char</span>*)&amp;val);00241 }00242 00243 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack_oid(<span class="keywordtype">char</span>* dst, cli_oid_t oid)00244 {00245     <span class="keywordflow">return</span> (<span class="keyword">sizeof</span>(oid) == 4) ? pack4(dst, oid) : pack8(dst, (char*)&amp;oid);00246 }00247 00248 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack_rectangle(<span class="keywordtype">char</span>* dst, cli_rectangle_t* rect)00249 {00250     <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(cli_coord_t) == 4) { 00251         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; CLI_RECTANGLE_DIMENSION*2; i++) { 00252             dst = pack4(dst, (<span class="keywordtype">char</span>*)&amp;rect-&gt;boundary[i]);00253         }00254     } <span class="keywordflow">else</span> { 00255         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; CLI_RECTANGLE_DIMENSION*2; i++) { 00256             dst = pack8(dst, (<span class="keywordtype">char</span>*)&amp;rect-&gt;boundary[i]);00257         }00258     }00259     <span class="keywordflow">return</span> dst;00260 }00261 00262 <span class="keyword">inline</span> int2 unpack2(<span class="keywordtype">char</span>* src) { 00263     nat1* s = (nat1*)src;00264     <span class="keywordflow">return</span> (s[0] &lt;&lt; 8) + s[1]; 00265 }00266 00267 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack2(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00268     *(int2*)dst = unpack2(src);00269     <span class="keywordflow">return</span> src + 2;00270 }00271 00272 <span class="keyword">inline</span> <span class="keywordtype">void</span>  unpack2(int2&amp; val) { 00273 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00274 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00275 <span class="preprocessor"></span>    val = ntohs(val);00276 <span class="preprocessor">#else</span>00277 <span class="preprocessor"></span>    val = unpack2((<span class="keywordtype">char</span>*)&amp;val); 00278 <span class="preprocessor">#endif</span>00279 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00280 <span class="preprocessor"></span>}00281 00282 00283 <span class="keyword">inline</span> int4  unpack4(<span class="keywordtype">char</span>* src) { 00284     nat1* s = (nat1*)src;00285     <span class="keywordflow">return</span> (((((s[0] &lt;&lt; 8) + s[1]) &lt;&lt; 8) + s[2]) &lt;&lt; 8) + s[3];00286 } 00287 00288 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00289     *(int4*)dst = unpack4(src);00290     <span class="keywordflow">return</span> src + 4;00291 }00292 00293 <span class="keyword">inline</span> <span class="keywordtype">void</span> unpack4(int4&amp; val) { 00294 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00295 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00296 <span class="preprocessor"></span>    val = ntohl(val);00297 <span class="preprocessor">#else</span>00298 <span class="preprocessor"></span>    val = unpack4((<span class="keywordtype">char</span>*)&amp;val); 00299 <span class="preprocessor">#endif</span>00300 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00301 <span class="preprocessor"></span>}00302 00303 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00304 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00305 <span class="preprocessor"></span>    *(int4*)dst = unpack4(src);00306     *((int4*)dst+1) = unpack4(src+4);00307 <span class="preprocessor">#else</span>00308 <span class="preprocessor"></span>    *(int4*)dst = unpack4(src+4);00309     *((int4*)dst+1) = unpack4(src);00310 <span class="preprocessor">#endif</span>00311 <span class="preprocessor"></span>    <span class="keywordflow">return</span> src + 8;00312 }00313 00314 <span class="keyword">inline</span> db_int8 unpack8(<span class="keywordtype">char</span>* src) { 00315     db_int8 val;00316     unpack8((<span class="keywordtype">char</span>*)&amp;val, src);00317     <span class="keywordflow">return</span> val;00318 }00319 00320 <span class="keyword">inline</span> cli_oid_t unpack_oid(<span class="keywordtype">char</span>* src)00321 {00322     cli_oid_t oid;00323     <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(oid) == 4) {00324         oid = unpack4(src);00325     } <span class="keywordflow">else</span> { 00326         unpack8((<span class="keywordtype">char</span>*)&amp;oid, src);00327     }00328     <span class="keywordflow">return</span> oid;00329 }00330 00331 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack_rectangle(cli_rectangle_t* rect, <span class="keywordtype">char</span>* src)00332 {00333     <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(cli_coord_t) == 4) { 00334         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; CLI_RECTANGLE_DIMENSION*2; i++) { 00335             src = unpack4((<span class="keywordtype">char</span>*)&amp;rect-&gt;boundary[i], src);00336         }00337     } <span class="keywordflow">else</span> { 00338         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; CLI_RECTANGLE_DIMENSION*2; i++) { 00339             src = unpack8((<span class="keywordtype">char</span>*)&amp;rect-&gt;boundary[i], src);00340         }00341     }00342     <span class="keywordflow">return</span> src;00343 }00344 00345 <span class="keyword">struct </span>cli_request { 00346     int4 length;00347     int4 cmd;00348     int4 stmt_id;00349     00350     <span class="keywordtype">void</span> pack() { 00351         pack4(length);00352         pack4(cmd);00353         pack4(stmt_id);00354     }00355 00356     <span class="keywordtype">void</span> unpack() { 00357         unpack4(length);00358         unpack4(cmd);00359         unpack4(stmt_id);00360     }00361 };00362 00363 END_FASTDB_NAMESPACE00364 00365 <span class="preprocessor">#endif</span></pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 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 + -