📄 cliproto_8h-source.html
字号:
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 >> 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& 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>*)&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 >> 24);00210 *dst++ = char(val >> 16); 00211 *dst++ = char(val >> 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& 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>*)&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>*)&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*)&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 < CLI_RECTANGLE_DIMENSION*2; i++) { 00252 dst = pack4(dst, (<span class="keywordtype">char</span>*)&rect->boundary[i]);00253 }00254 } <span class="keywordflow">else</span> { 00255 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < CLI_RECTANGLE_DIMENSION*2; i++) { 00256 dst = pack8(dst, (<span class="keywordtype">char</span>*)&rect->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] << 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& 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>*)&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] << 8) + s[1]) << 8) + s[2]) << 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& 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>*)&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>*)&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>*)&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 < CLI_RECTANGLE_DIMENSION*2; i++) { 00335 src = unpack4((<span class="keywordtype">char</span>*)&rect->boundary[i], src);00336 }00337 } <span class="keywordflow">else</span> { 00338 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < CLI_RECTANGLE_DIMENSION*2; i++) { 00339 src = unpack8((<span class="keywordtype">char</span>*)&rect->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 + -