// LuaDumpObject(file, key, value, alphabetical, indentLevel, maxIndentLevel, writeAll) static int LS_LuaDumpObject( LuaState* state ) { LuaStateOutFile file; LuaStateOutString stringFile; LuaStack args(state); LuaStackObject fileObj = args[1]; const char* fileName = NULL; if ( fileObj.IsUserData() ) { FILE* stdioFile = (FILE *)fileObj.GetUserData(); file.Assign( stdioFile ); } else if ( fileObj.IsString() ) { fileName = fileObj.GetString(); } LuaObject nameObj = args[2]; LuaObject valueObj = args[3]; LuaStackObject alphabeticalObj = args[4]; LuaStackObject indentLevelObj = args[5]; LuaStackObject maxIndentLevelObj = args[6]; LuaStackObject writeAllObj = args[7]; bool writeAll = writeAllObj.IsBoolean() ? writeAllObj.GetBoolean() : false; bool alphabetical = alphabeticalObj.IsBoolean() ? alphabeticalObj.GetBoolean() : true; unsigned int maxIndentLevel = maxIndentLevelObj.IsInteger() ? (unsigned int)maxIndentLevelObj.GetInteger() : 0xFFFFFFFF; unsigned int flags = (alphabetical ? LuaState::DUMP_ALPHABETICAL : 0) | (writeAll ? LuaState::DUMP_WRITEALL : 0); if (fileName) { if (strcmp(fileName, ":string") == 0) { state->DumpObject(stringFile, nameObj, valueObj, flags, indentLevelObj.GetInteger(), maxIndentLevel); state->PushString(stringFile.GetBuffer()); return 1; } else { state->DumpObject(fileName, nameObj, valueObj, flags, (unsigned int)indentLevelObj.GetInteger(), maxIndentLevel); } } else { state->DumpObject(file, nameObj, valueObj, flags, (unsigned int)indentLevelObj.GetInteger(), maxIndentLevel); } return 0; }
// LuaDumpGlobals(file, alphabetical, maxIndentLevel, writeAll) extern "C" int LS_LuaDumpGlobals(lua_State* L) { LuaStateOutFile file; LuaState* state = lua_State_To_LuaState(L); LuaStack args(state); LuaStackObject fileObj = args[1]; const char* fileName = NULL; if ( fileObj.IsUserData() ) { FILE* stdioFile = (FILE *)fileObj.GetUserData(); file.Assign( stdioFile ); } else if ( fileObj.IsString() ) { fileName = fileObj.GetString(); } LuaStackObject alphabeticalObj = args[2]; LuaStackObject maxIndentLevelObj = args[3]; LuaStackObject writeAllObj = args[4]; bool alphabetical = alphabeticalObj.IsBoolean() ? alphabeticalObj.GetBoolean() : true; unsigned int maxIndentLevel = maxIndentLevelObj.IsInteger() ? (unsigned int)maxIndentLevelObj.GetInteger() : 0xFFFFFFFF; bool writeAll = writeAllObj.IsBoolean() ? writeAllObj.GetBoolean() : false; unsigned int flags = (alphabetical ? LuaState::DUMP_ALPHABETICAL : 0) | (writeAll ? LuaState::DUMP_WRITEALL : 0); if (fileName) { state->DumpGlobals(fileName, flags, maxIndentLevel); } else { state->DumpGlobals(file, flags, maxIndentLevel); } return 0; }