MCPcopy Create free account
hub / github.com/Tencent/UnLua / lpb_addtype

Function lpb_addtype

Plugins/UnLuaExtensions/LuaProtobuf/Source/src/pb.cpp:378–456  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376} lpb_Value;
377
378static int lpb_addtype(lua_State *L, pb_Buffer *b, int idx, int type, size_t *plen) {
379 int ret = 0, expected = LUA_TNUMBER;
380 lpb_Value v;
381 size_t len = 0;
382 switch (type) {
383 case PB_Tbool:
384 len = pb_addvarint32(b, ret = lua_toboolean(L, idx));
385 if (ret) len = 0;
386 ret = 1;
387 break;
388 case PB_Tdouble:
389 v.lnum = lua_tonumberx(L, idx, &ret);
390 if (ret) len = pb_addfixed64(b, pb_encode_double((double)v.lnum));
391 if (v.lnum != 0.0) len = 0;
392 break;
393 case PB_Tfloat:
394 v.lnum = lua_tonumberx(L, idx, &ret);
395 if (ret) len = pb_addfixed32(b, pb_encode_float((float)v.lnum));
396 if (v.lnum != 0.0) len = 0;
397 break;
398 case PB_Tfixed32:
399 v.u64 = lpb_tointegerx(L, idx, &ret);
400 if (ret) len = pb_addfixed32(b, v.u32);
401 if (v.u64 != 0) len = 0;
402 break;
403 case PB_Tsfixed32:
404 v.u64 = lpb_tointegerx(L, idx, &ret);
405 if (ret) len = pb_addfixed32(b, v.u32);
406 if (v.u64 != 0) len = 0;
407 break;
408 case PB_Tint32:
409 v.u64 = lpb_tointegerx(L, idx, &ret);
410 if (ret) len = pb_addvarint64(b, pb_expandsig((uint32_t)v.u64));
411 if (v.u64 != 0) len = 0;
412 break;
413 case PB_Tuint32:
414 v.u64 = lpb_tointegerx(L, idx, &ret);
415 if (ret) len = pb_addvarint32(b, v.u32);
416 if (v.u64 != 0) len = 0;
417 break;
418 case PB_Tsint32:
419 v.u64 = lpb_tointegerx(L, idx, &ret);
420 if (ret) len = pb_addvarint32(b, pb_encode_sint32(v.u32));
421 if (v.u64 != 0) len = 0;
422 break;
423 case PB_Tfixed64:
424 v.u64 = lpb_tointegerx(L, idx, &ret);
425 if (ret) len = pb_addfixed64(b, v.u64);
426 if (v.u64 != 0) len = 0;
427 break;
428 case PB_Tsfixed64:
429 v.u64 = lpb_tointegerx(L, idx, &ret);
430 if (ret) len = pb_addfixed64(b, v.u64);
431 if (v.u64 != 0) len = 0;
432 break;
433 case PB_Tint64: case PB_Tuint64:
434 v.u64 = lpb_tointegerx(L, idx, &ret);
435 if (ret) len = pb_addvarint64(b, v.u64);

Callers 2

lpb_packfmtFunction · 0.85
lpbE_fieldFunction · 0.85

Calls 15

pb_addvarint32Function · 0.85
lua_tobooleanFunction · 0.85
pb_addfixed64Function · 0.85
pb_encode_doubleFunction · 0.85
pb_addfixed32Function · 0.85
pb_encode_floatFunction · 0.85
lpb_tointegerxFunction · 0.85
pb_addvarint64Function · 0.85
pb_expandsigFunction · 0.85
pb_encode_sint32Function · 0.85
pb_encode_sint64Function · 0.85
lpb_tosliceFunction · 0.85

Tested by

no test coverage detected