📄 cliproto_8h-source.html
字号:
00142 00143 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack2(int2& val) { 00144 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00145 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00146 <span class="preprocessor"></span> val = htons(val);00147 <span class="preprocessor">#else</span>00148 <span class="preprocessor"></span> pack2((<span class="keywordtype">char</span>*)&val, val); 00149 <span class="preprocessor">#endif</span>00150 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00151 <span class="preprocessor"></span>}00152 00153 00154 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, int4 val) { 00155 *dst++ = char(val >> 24);00156 *dst++ = char(val >> 16); 00157 *dst++ = char(val >> 8); 00158 *dst++ = char(val);00159 <span class="keywordflow">return</span> dst;00160 }00161 00162 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00163 <span class="keywordflow">return</span> pack4(dst, *(int4*)src); 00164 }00165 00166 <span class="keyword">inline</span> <span class="keywordtype">void</span> pack4(int4& val) { 00167 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00168 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00169 <span class="preprocessor"></span> val = htonl(val);00170 <span class="preprocessor">#else</span>00171 <span class="preprocessor"></span> pack4((<span class="keywordtype">char</span>*)&val, val); 00172 <span class="preprocessor">#endif</span>00173 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00174 <span class="preprocessor"></span>}00175 00176 00177 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00178 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00179 <span class="preprocessor"></span> <span class="keywordflow">return</span> pack4( pack4(dst, src), src + 4);00180 <span class="preprocessor">#else</span>00181 <span class="preprocessor"></span> <span class="keywordflow">return</span> pack4( pack4(dst, src + 4), src);00182 <span class="preprocessor">#endif</span>00183 <span class="preprocessor"></span>}00184 00185 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack8(<span class="keywordtype">char</span>* dst, db_int8 val) { 00186 <span class="keywordflow">return</span> pack8(dst, (<span class="keywordtype">char</span>*)&val);00187 }00188 00189 <span class="keyword">inline</span> <span class="keywordtype">char</span>* pack_oid(<span class="keywordtype">char</span>* dst, cli_oid_t oid)00190 {00191 <span class="keywordflow">return</span> (<span class="keyword">sizeof</span>(oid) == 4) ? pack4(dst, oid) : pack8(dst, (char*)&oid);00192 }00193 00194 <span class="keyword">inline</span> int2 unpack2(<span class="keywordtype">char</span>* src) { 00195 nat1* s = (nat1*)src;00196 <span class="keywordflow">return</span> (s[0] << 8) + s[1]; 00197 }00198 00199 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack2(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00200 *(int2*)dst = unpack2(src);00201 <span class="keywordflow">return</span> src + 2;00202 }00203 00204 <span class="keyword">inline</span> <span class="keywordtype">void</span> unpack2(int2& val) { 00205 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00206 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00207 <span class="preprocessor"></span> val = ntohs(val);00208 <span class="preprocessor">#else</span>00209 <span class="preprocessor"></span> val = unpack2((<span class="keywordtype">char</span>*)&val); 00210 <span class="preprocessor">#endif</span>00211 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00212 <span class="preprocessor"></span>}00213 00214 00215 <span class="keyword">inline</span> int4 unpack4(<span class="keywordtype">char</span>* src) { 00216 nat1* s = (nat1*)src;00217 <span class="keywordflow">return</span> (((((s[0] << 8) + s[1]) << 8) + s[2]) << 8) + s[3];00218 } 00219 00220 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack4(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00221 *(int4*)dst = unpack4(src);00222 <span class="keywordflow">return</span> src + 4;00223 }00224 00225 <span class="keyword">inline</span> <span class="keywordtype">void</span> unpack4(int4& val) { 00226 <span class="preprocessor">#if BYTE_ORDER != BIG_ENDIAN</span>00227 <span class="preprocessor"></span><span class="preprocessor">#ifdef USE_HTON_NTOH</span>00228 <span class="preprocessor"></span> val = ntohl(val);00229 <span class="preprocessor">#else</span>00230 <span class="preprocessor"></span> val = unpack4((<span class="keywordtype">char</span>*)&val); 00231 <span class="preprocessor">#endif</span>00232 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00233 <span class="preprocessor"></span>}00234 00235 <span class="keyword">inline</span> <span class="keywordtype">char</span>* unpack8(<span class="keywordtype">char</span>* dst, <span class="keywordtype">char</span>* src) { 00236 <span class="preprocessor">#if BYTE_ORDER == BIG_ENDIAN</span>00237 <span class="preprocessor"></span> *(int4*)dst = unpack4(src);00238 *((int4*)dst+1) = unpack4(src+4);00239 <span class="preprocessor">#else</span>00240 <span class="preprocessor"></span> *(int4*)dst = unpack4(src+4);00241 *((int4*)dst+1) = unpack4(src);00242 <span class="preprocessor">#endif</span>00243 <span class="preprocessor"></span> <span class="keywordflow">return</span> src + 8;00244 }00245 00246 <span class="keyword">inline</span> db_int8 unpack8(<span class="keywordtype">char</span>* src) { 00247 db_int8 val;00248 unpack8((<span class="keywordtype">char</span>*)&val, src);00249 <span class="keywordflow">return</span> val;00250 }00251 00252 <span class="keyword">inline</span> cli_oid_t unpack_oid(<span class="keywordtype">char</span>* src)00253 {00254 cli_oid_t oid;00255 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(oid) == 4) {00256 oid = unpack4(src);00257 } <span class="keywordflow">else</span> { 00258 unpack8((<span class="keywordtype">char</span>*)&oid, src);00259 }00260 <span class="keywordflow">return</span> oid;00261 }00262 00263 <span class="keyword">struct </span>cli_request { 00264 int4 length;00265 int4 cmd;00266 int4 stmt_id;00267 00268 <span class="keywordtype">void</span> pack() { 00269 pack4(length);00270 pack4(cmd);00271 pack4(stmt_id);00272 }00273 00274 <span class="keywordtype">void</span> unpack() { 00275 unpack4(length);00276 unpack4(cmd);00277 unpack4(stmt_id);00278 }00279 };00280 00281 <span class="preprocessor">#endif</span></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 + -