/* ====================================================================== */ static int lzlib_crc32(lua_State *L) { if (lua_gettop(L) == 0) { /* crc32 initial value */ push_u32(L, crc32(0L, Z_NULL, 0)); } else { /* update crc32 checksum */ size_t len; uLong crc = check_u32(L, 1); const unsigned char* buf = (unsigned char*)luaL_checklstring(L, 2, &len); push_u32(L, crc32(crc, buf, len)); } return 1; }
static bool push_foo(char **p, size_t *len, const struct foo *foo) { return push_u64(p, len, foo->vu64) && push_u32(p, len, foo->vu32) && push_u16(p, len, foo->vu16) && push_u8(p, len, foo->vu8) && push_uchar(p, len, foo->vuchar) && push_s64(p, len, foo->vs64) && push_s32(p, len, foo->vs32) && push_s16(p, len, foo->vs16) && push_s8(p, len, foo->vs8) && push_char(p, len, foo->vchar) && push_bytes(p, len, foo->bytes, sizeof(foo->bytes)); }