MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / mp_encode_int

Function mp_encode_int

deps/lua/src/lua_cmsgpack.c:221–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

219}
220
221void mp_encode_int(lua_State *L, mp_buf *buf, int64_t n) {
222 unsigned char b[9];
223 int enclen;
224
225 if (n >= 0) {
226 if (n <= 127) {
227 b[0] = n & 0x7f; /* positive fixnum */
228 enclen = 1;
229 } else if (n <= 0xff) {
230 b[0] = 0xcc; /* uint 8 */
231 b[1] = n & 0xff;
232 enclen = 2;
233 } else if (n <= 0xffff) {
234 b[0] = 0xcd; /* uint 16 */
235 b[1] = (n & 0xff00) >> 8;
236 b[2] = n & 0xff;
237 enclen = 3;
238 } else if (n <= 0xffffffffLL) {
239 b[0] = 0xce; /* uint 32 */
240 b[1] = (n & 0xff000000) >> 24;
241 b[2] = (n & 0xff0000) >> 16;
242 b[3] = (n & 0xff00) >> 8;
243 b[4] = n & 0xff;
244 enclen = 5;
245 } else {
246 b[0] = 0xcf; /* uint 64 */
247 b[1] = (n & 0xff00000000000000LL) >> 56;
248 b[2] = (n & 0xff000000000000LL) >> 48;
249 b[3] = (n & 0xff0000000000LL) >> 40;
250 b[4] = (n & 0xff00000000LL) >> 32;
251 b[5] = (n & 0xff000000) >> 24;
252 b[6] = (n & 0xff0000) >> 16;
253 b[7] = (n & 0xff00) >> 8;
254 b[8] = n & 0xff;
255 enclen = 9;
256 }
257 } else {
258 if (n >= -32) {
259 b[0] = ((signed char)n); /* negative fixnum */
260 enclen = 1;
261 } else if (n >= -128) {
262 b[0] = 0xd0; /* int 8 */
263 b[1] = n & 0xff;
264 enclen = 2;
265 } else if (n >= -32768) {
266 b[0] = 0xd1; /* int 16 */
267 b[1] = (n & 0xff00) >> 8;
268 b[2] = n & 0xff;
269 enclen = 3;
270 } else if (n >= -2147483648LL) {
271 b[0] = 0xd2; /* int 32 */
272 b[1] = (n & 0xff000000) >> 24;
273 b[2] = (n & 0xff0000) >> 16;
274 b[3] = (n & 0xff00) >> 8;
275 b[4] = n & 0xff;
276 enclen = 5;
277 } else {
278 b[0] = 0xd3; /* int 64 */

Callers 1

mp_encode_lua_integerFunction · 0.85

Calls 1

mp_buf_appendFunction · 0.85

Tested by

no test coverage detected