/* 读入解析出来的bin,生成程序定义的结构,并将其以lightuserdata的形式压入 */ static int lnewproto(lua_State *L) { struct sproto * sp; size_t sz; void * buffer = (void *)luaL_checklstring(L,1,&sz); sp = sproto_create(buffer, sz); if (sp) { lua_pushlightuserdata(L, sp); return 1; } return 0; }
static int lnewproto(lua_State *L) { size_t sz = 0; void * buffer; struct sproto * sp; if (lua_isuserdata(L,1)) { buffer = lua_touserdata(L,1); sz = luaL_checkinteger(L,2); } else { buffer = (void *)luaL_checklstring(L,1,&sz); } sp = sproto_create(buffer, sz); if (sp) { lua_pushlightuserdata(L, sp); return 1; } return 0; }