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

📄 cliproto_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 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_NAMESPACE
00364 
00365 <span class="preprocessor">#endif</span>
</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 + -