diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/inifile/iniFile.cpp | 18 | ||||
-rw-r--r-- | lib/inifile/iniFile.h | 5 | ||||
-rw-r--r-- | lib/tolua++/include/tolua++.h | 4 | ||||
-rw-r--r-- | lib/tolua++/src/lib/tolua_push.c | 11 |
4 files changed, 33 insertions, 5 deletions
diff --git a/lib/inifile/iniFile.cpp b/lib/inifile/iniFile.cpp index 2bf6c91ed..7cfe7661f 100644 --- a/lib/inifile/iniFile.cpp +++ b/lib/inifile/iniFile.cpp @@ -668,6 +668,24 @@ void cIniFile::Clear(void) +bool cIniFile::HasValue(const AString & a_KeyName, const AString & a_ValueName) +{ + // Find the key: + int keyID = FindKey(a_KeyName); + if (keyID == noID) + { + return false; + } + + // Find the value: + int valueID = FindValue(keyID, a_ValueName); + return (valueID != noID); +} + + + + + void cIniFile::AddHeaderComment(const AString & comment) { comments.push_back(comment); diff --git a/lib/inifile/iniFile.h b/lib/inifile/iniFile.h index 58fecd0cf..33229bff0 100644 --- a/lib/inifile/iniFile.h +++ b/lib/inifile/iniFile.h @@ -53,7 +53,9 @@ private: /// Removes the UTF-8 BOMs (Byte order makers), if present. void RemoveBom(AString & a_line) const; + public: + enum errors { noID = -1, @@ -79,6 +81,9 @@ public: /// Deletes all stored ini data (but doesn't touch the file) void Clear(void); + + /** Returns true iff the specified value exists. */ + bool HasValue(const AString & a_KeyName, const AString & a_ValueName); /// Returns index of specified key, or noID if not found int FindKey(const AString & keyname) const; diff --git a/lib/tolua++/include/tolua++.h b/lib/tolua++/include/tolua++.h index 8da427fe3..c8b654ae6 100644 --- a/lib/tolua++/include/tolua++.h +++ b/lib/tolua++/include/tolua++.h @@ -36,7 +36,9 @@ extern "C" { #define TEMPLATE_BIND(p) #endif -#define TOLUA_TEMPLATE_BIND(p) +#ifndef TOLUA_TEMPLATE_BIND + #define TOLUA_TEMPLATE_BIND(p) +#endif #define TOLUA_PROTECTED_DESTRUCTOR #define TOLUA_PROPERTY_TYPE(p) diff --git a/lib/tolua++/src/lib/tolua_push.c b/lib/tolua++/src/lib/tolua_push.c index 947f0e7a5..73a5f6ec0 100644 --- a/lib/tolua++/src/lib/tolua_push.c +++ b/lib/tolua++/src/lib/tolua_push.c @@ -16,6 +16,7 @@ #include "../../../lua/src/lauxlib.h" #include <stdlib.h> +#include <assert.h> TOLUA_API void tolua_pushvalue (lua_State* L, int lo) { @@ -55,12 +56,14 @@ TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type) else { luaL_getmetatable(L, type); + assert(!lua_isnil(L, -1)); /* Failure here means that the usertype is unknown to ToLua. Check what type you're pushing. */ lua_pushstring(L,"tolua_ubox"); lua_rawget(L,-2); /* stack: mt ubox */ - if (lua_isnil(L, -1)) { - lua_pop(L, 1); - lua_pushstring(L, "tolua_ubox"); - lua_rawget(L, LUA_REGISTRYINDEX); + if (lua_isnil(L, -1)) + { + lua_pop(L, 1); + lua_pushstring(L, "tolua_ubox"); + lua_rawget(L, LUA_REGISTRYINDEX); }; lua_pushlightuserdata(L,value); lua_rawget(L,-2); /* stack: mt ubox ubox[u] */ |