| 1737 | } |
| 1738 | |
| 1739 | static void lpb_pushtypetable(lua_State *L, lpb_State *LS, const pb_Type *t) { |
| 1740 | int mode = LS->encode_mode; |
| 1741 | luaL_checkstack(L, 2, "too many levels"); |
| 1742 | lpb_newmsgtable(L, t); |
| 1743 | switch (t->is_proto3 && mode == LPB_DEFDEF ? LPB_COPYDEF : mode) { |
| 1744 | case LPB_COPYDEF: |
| 1745 | lpb_setdeffields(L, LS, t, (lpb_DefFlags)(USE_FIELD|USE_REPEAT|USE_MESSAGE)); |
| 1746 | break; |
| 1747 | case LPB_METADEF: |
| 1748 | lpb_setdeffields(L, LS, t, (lpb_DefFlags)(USE_REPEAT|USE_MESSAGE)); |
| 1749 | lpb_pushdefmeta(L, LS, t); |
| 1750 | lua_setmetatable(L, -2); |
| 1751 | break; |
| 1752 | default: |
| 1753 | if (LS->decode_default_array || LS->decode_default_message) |
| 1754 | lpb_setdeffields(L, LS, t, (lpb_DefFlags)(USE_REPEAT|USE_MESSAGE)); |
| 1755 | break; |
| 1756 | } |
| 1757 | } |
| 1758 | |
| 1759 | static void lpb_fetchtable(lpb_Env *e, const pb_Field *f) { |
| 1760 | lua_State *L = e->L; |
no test coverage detected