summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorpixel <pixel>2005-03-30 10:32:25 +0000
committerpixel <pixel>2005-03-30 10:32:25 +0000
commitfae7028e83b317caffbb03bcfaa181e7f6862b4a (patch)
tree49326174cb52dcbff57cb5f4a39a510fafbf5037 /lib
parent4d3e0102a2629ffb26945259c65f1a5f5fda7ab9 (diff)
Adding LuaConfig class.
Diffstat (limited to 'lib')
-rw-r--r--lib/LuaConfigFile.cc158
1 files changed, 158 insertions, 0 deletions
diff --git a/lib/LuaConfigFile.cc b/lib/LuaConfigFile.cc
new file mode 100644
index 0000000..3babda0
--- /dev/null
+++ b/lib/LuaConfigFile.cc
@@ -0,0 +1,158 @@
+/*
+ * Baltisot
+ * Copyright (C) 1999-2003 Nicolas "Pixel" Noble
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: LuaConfigFile.cc,v 1.1 2005-03-30 10:32:25 pixel Exp $ */
+
+#include "LuaConfigFile.h"
+
+class LuaConfigSectionContents : public LuaObject {
+ public:
+ static void pushstatics(Lua *) throw (GeneralException);
+ LuaConfigSectionContents(ConfigSectionContents *);
+ protected:
+ virtual void pushmembers(Lua *);
+ ConfigSectionContents * c;
+};
+
+LuaConfigFile::LuaConfigFile(ConfigFile * _c) : c(_c) { }
+
+enum ConfigFile_methods_t {
+ CONFIGFILE_INDEX = 0,
+ CONFIGFILE_NEWINDEX,
+};
+
+enum ConfigFile_functions_t {
+ CONFIGFILE_NEWCONFIGFILE = 0,
+};
+
+struct lua_functypes_t ConfigFile_methods[] = {
+ { CONFIGFILE_INDEX, "index", 1, 1, {LUA_STRING} },
+ { CONFIGFILE_NEWINDEX, "newindex", 1, 1, {LUA_ANY} },
+ { -1, 0, 0, 0, 0 }
+};
+
+struct lua_functypes_t ConfigFile_functions[] = {
+ { CONFIGFILE_NEWCONFIGFILE, "ConfigFile" , 1, 1, {LUA_OBJECT } },
+ { -1, 0, 0, 0, 0 }
+};
+
+class sLua_ConfigFile : public Base {
+ public:
+ DECLARE_METHOD(ConfigFile, CONFIGFILE_INDEX);
+ DECLARE_METHOD(ConfigFile, CONFIGFILE_NEWINDEX);
+
+ DECLARE_FUNCTION(ConfigFile, CONFIGFILE_NEWCONFIGFILE);
+ private:
+ static int ConfigFile_proceed(Lua * L, int n, ConfigFile * obj, int caller);
+ static int ConfigFile_proceed_statics(Lua * L, int n, int caller);
+};
+
+void LuaConfigFile::pushmembers(Lua * L) {
+ pushme(L, c);
+
+ PUSH_METAMETHOD(ConfigFile, CONFIGFILE_INDEX);
+ PUSH_METAMETHOD(ConfigFile, CONFIGFILE_NEWINDEX);
+}
+
+void LuaConfigFile::pushstatics(Lua * L) throw (GeneralException) {
+ CHECK_METHODS(ConfigFile);
+ CHECK_FUNCTIONS(ConfigFile);
+
+ PUSH_FUNCTION(ConfigFile, CONFIGFILE_NEWCONFIGFILE);
+}
+
+int sLua_ConfigFile::ConfigFile_proceed(Lua * L, int n, ConfigFile * c, int caller) {
+ String i;
+
+ switch (caller) {
+ case CONFIGFILE_INDEX:
+ i = L->tostring(2);
+ {
+ LuaConfigSectionContents csc(&((*c)[i]));
+ csc.pushdestruct(L);
+ }
+ break;
+ case CONFIGFILE_NEWINDEX:
+ L->error("ConfigFile is read only.");
+ break;
+ }
+
+ return 1;
+}
+
+int sLua_ConfigFile::ConfigFile_proceed_statics(Lua * L, int n, int caller) {
+ Handle * h;
+
+ switch (caller) {
+ case CONFIGFILE_NEWCONFIGFILE:
+ h = (Handle *) LuaObject::getme(L, 1);
+ {
+ LuaConfigFile c(new ConfigFile(h));
+ c.pushdestruct(L);
+ }
+ break;
+ }
+
+ return 1;
+}
+
+LuaConfigSectionContents::LuaConfigSectionContents(ConfigSectionContents * _c) : c(_c) { }
+
+enum ConfigSectionContents_methods_t {
+ CONFIGSECTIONCONTENTS_INDEX = 0,
+ CONFIGSECTIONCONTENTS_NEWINDEX,
+};
+
+struct lua_functypes_t ConfigSectionContents_methods[] = {
+ { CONFIGSECTIONCONTENTS_INDEX, "index", 1, 1, {LUA_STRING} },
+ { CONFIGSECTIONCONTENTS_NEWINDEX, "newindex", 1, 1, {LUA_ANY} },
+ { -1, 0, 0, 0, 0 }
+};
+
+class sLua_ConfigSectionContents : public Base {
+ public:
+ DECLARE_METHOD(ConfigSectionContents, CONFIGSECTIONCONTENTS_INDEX);
+ DECLARE_METHOD(ConfigSectionContents, CONFIGSECTIONCONTENTS_NEWINDEX);
+ private:
+ static int ConfigSectionContents_proceed(Lua * L, int n, ConfigSectionContents * obj, int caller);
+ static int ConfigSectionContents_proceed_statics(Lua * L, int n, int caller);
+};
+
+void LuaConfigSectionContents::pushmembers(Lua * L) {
+ pushme(L, c);
+
+ PUSH_METAMETHOD(ConfigSectionContents, CONFIGSECTIONCONTENTS_INDEX);
+ PUSH_METAMETHOD(ConfigSectionContents, CONFIGSECTIONCONTENTS_NEWINDEX);
+}
+
+int sLua_ConfigSectionContents::ConfigSectionContents_proceed(Lua * L, int n, ConfigSectionContents * c, int caller) {
+ String i;
+
+ switch (caller) {
+ case CONFIGSECTIONCONTENTS_INDEX:
+ i = L->tostring(2);
+ L->push((*c)[i]);
+ break;
+ case CONFIGSECTIONCONTENTS_NEWINDEX:
+ L->error("ConfigSectionContents is read only.");
+ break;
+ }
+
+ return 1;
+}