//----------------------------------------------------------------// void MOAIHarness::ReceiveEvaluate(lua_State *L, json_t* node) { // Get the evaluation. json_t* np_eval = json_object_get(node, "Evaluation"); if (np_eval == NULL || json_typeof(np_eval) != JSON_STRING) return; // Get the current stack index so we know how many // positions to clear afterward. int top = lua_gettop(L); // Load the string from the message MOAIScopedLuaState state ( L ); int status = luaL_loadstring ( state, json_string_value(np_eval) ); if ( state.PrintErrors ( ZLLog::CONSOLE, status )) return; // Call the string state.DebugCall ( 0, 0 ); // Now unload all of the things we just put on the stack // until the stack is the same size. std::string indent = " "; json_t* result = MOAIHarness::ConvertStackPartialToJSON(L, top + 1, lua_gettop(L)); lua_pop(L, lua_gettop(L) - top); // Send the message back to the IDE. MOAIHarness::SendResult(result); }
//----------------------------------------------------------------// u32 MOAIDeserializer::SerializeFromFile ( cc8* filename ) { this->Clear (); int status; MOAIScopedLuaState state = MOAILuaRuntime::Get ().State (); // load the lua file status = luaL_loadfile ( state, filename ); if ( state.PrintErrors ( ZLLog::CONSOLE, status )) return LOAD_ERROR; // load self as the func param this->PushLuaUserdata ( state ); // call the chunk if ( state.DebugCall ( 1, 0 )) return LUA_ERROR; // done! return SUCCESS; }