diff --git a/BattleGroundMethods.h b/BattleGroundMethods.h index b71902e..d8480db 100644 --- a/BattleGroundMethods.h +++ b/BattleGroundMethods.h @@ -9,7 +9,6 @@ namespace LuaBattleGround { -#ifdef MANGOS // Currently only tested on Mangos. May need tweaking for TC /** * Returns the name of the [Battleground] * @@ -216,6 +215,5 @@ namespace LuaBattleGround Eluna::Push(L, bg->GetStatus()); return 1; } -#endif }; #endif \ No newline at end of file diff --git a/ElunaIncludes.h b/ElunaIncludes.h index af84882..7d2bbed 100644 --- a/ElunaIncludes.h +++ b/ElunaIncludes.h @@ -7,7 +7,6 @@ // Required #include "AccountMgr.h" #include "AuctionHouseMgr.h" -#include "BattleGround/BattleGroundMgr.h" #include "Cell.h" #include "CellImpl.h" #include "Chat.h" @@ -42,10 +41,12 @@ #include "ScriptedCreature.h" #include "SpellInfo.h" #include "WeatherMgr.h" +#include "Battleground.h" #else #include "Config/Config.h" #include "ReactorAI.h" #include "revision_nr.h" +#include "BattleGround/BattleGroundMgr.h" #endif #if (!defined(TBC) && !defined(CLASSIC)) @@ -121,9 +122,3 @@ enum SelectAggroTarget SELECT_TARGET_FARTHEST }; #endif - -// Some dummy includes containing BOOST_VERSION: -// ObjectAccessor.h Config.h Log.h -#ifdef BOOST_VERSION -#define USING_BOOST -#endif diff --git a/ElunaQueryMethods.h b/ElunaQueryMethods.h index 5681a1f..2abcf7a 100644 --- a/ElunaQueryMethods.h +++ b/ElunaQueryMethods.h @@ -14,147 +14,155 @@ #endif namespace LuaQuery { - /* BOOLEAN */ - int IsNull(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); + void CheckFields(lua_State* L, ElunaQuery* result) + { + if (Eluna::CHECKVAL(L, 2) >= RESULT->GetFieldCount()) + luaL_argerror(L, 2, "invalid field index"); + } + + /* BOOLEAN */ + int IsNull(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + #ifndef TRINITY - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].IsNULL()); + Eluna::Push(L, RESULT->Fetch()[col].IsNULL()); #else - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].IsNull()); + Eluna::Push(L, RESULT->Fetch()[col].IsNull()); #endif - return 1; - } + return 1; + } - /* GETTERS */ - int GetColumnCount(lua_State* L, ElunaQuery* result) - { - Eluna::Push(L, RESULT->GetFieldCount()); - return 1; - } + /* GETTERS */ + int GetColumnCount(lua_State* L, ElunaQuery* result) + { + Eluna::Push(L, RESULT->GetFieldCount()); + return 1; + } - int GetRowCount(lua_State* L, ElunaQuery* result) - { - if (RESULT->GetRowCount() > (uint32)-1) - Eluna::Push(L, (uint32)-1); - else - Eluna::Push(L, RESULT->GetRowCount()); - return 1; - } + int GetRowCount(lua_State* L, ElunaQuery* result) + { + if (RESULT->GetRowCount() > (uint32)-1) + Eluna::Push(L, (uint32)-1); + else + Eluna::Push(L, RESULT->GetRowCount()); + return 1; + } - int GetBool(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetBool()); - return 1; - } + int GetBool(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetBool()); + return 1; + } - int GetUInt8(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetUInt8()); - return 1; - } + int GetUInt8(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetUInt8()); + return 1; + } - int GetUInt16(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetUInt16()); - return 1; - } + int GetUInt16(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetUInt16()); + return 1; + } - int GetUInt32(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetUInt32()); - return 1; - } + int GetUInt32(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetUInt32()); + return 1; + } - int GetUInt64(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetUInt64()); - return 1; - } + int GetUInt64(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetUInt64()); + return 1; + } - int GetInt8(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetInt8()); - return 1; - } + int GetInt8(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetInt8()); + return 1; + } - int GetInt16(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetInt16()); - return 1; - } + int GetInt16(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetInt16()); + return 1; + } - int GetInt32(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetInt32()); - return 1; - } + int GetInt32(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetInt32()); + return 1; + } - int GetInt64(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetInt64()); - return 1; - } + int GetInt64(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetInt64()); + return 1; + } - int GetFloat(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetFloat()); - return 1; - } + int GetFloat(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetFloat()); + return 1; + } - int GetDouble(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) - Eluna::Push(L, RESULT->Fetch()[col].GetDouble()); - return 1; - } + int GetDouble(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); + Eluna::Push(L, RESULT->Fetch()[col].GetDouble()); + return 1; + } + + int GetString(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); - int GetString(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) #ifndef TRINITY - Eluna::Push(L, RESULT->Fetch()[col].GetCppString()); + Eluna::Push(L, RESULT->Fetch()[col].GetCppString()); #else - Eluna::Push(L, RESULT->Fetch()[col].GetString()); + Eluna::Push(L, RESULT->Fetch()[col].GetString()); #endif - return 1; - } + return 1; + } + + int GetCString(lua_State* L, ElunaQuery* result) + { + uint32 col = Eluna::CHECKVAL(L, 2); + CheckFields(L, result); - int GetCString(lua_State* L, ElunaQuery* result) - { - uint32 col = Eluna::CHECKVAL(L, 2); - if (col < RESULT->GetFieldCount()) #ifndef TRINITY - Eluna::Push(L, RESULT->Fetch()[col].GetString()); + Eluna::Push(L, RESULT->Fetch()[col].GetString()); #else - Eluna::Push(L, RESULT->Fetch()[col].GetCString()); + Eluna::Push(L, RESULT->Fetch()[col].GetCString()); #endif - return 1; - } + return 1; + } /* OTHER */ @@ -182,7 +190,7 @@ namespace LuaQuery { lua_newtable(L); int tbl = lua_gettop(L); - + uint32 col = RESULT->GetFieldCount(); Field* row = RESULT->Fetch(); diff --git a/ElunaUtility.h b/ElunaUtility.h index ea73025..370c058 100644 --- a/ElunaUtility.h +++ b/ElunaUtility.h @@ -9,6 +9,8 @@ #include "Common.h" #include "SharedDefines.h" +#include +#include #ifdef TRINITY #include "QueryResult.h" #ifdef CATA @@ -19,6 +21,17 @@ #include "Database/QueryResult.h" #endif +// Some dummy includes containing BOOST_VERSION: +// ObjectAccessor.h Config.h Log.h +#ifdef BOOST_VERSION +#define USING_BOOST +#endif + +#ifdef USING_BOOST +#include +#include +#endif + #ifdef TRINITY typedef QueryResult ElunaQuery; #ifndef CATA diff --git a/LuaEngine.h b/LuaEngine.h index bcbd557..b7211bb 100644 --- a/LuaEngine.h +++ b/LuaEngine.h @@ -27,6 +27,7 @@ extern "C" #ifdef TRINITY struct ItemTemplate; +typedef BattlegroundTypeId BattleGroundTypeId; #else struct ItemPrototype; typedef ItemPrototype ItemTemplate; @@ -38,7 +39,10 @@ typedef int Difficulty; struct AreaTriggerEntry; class AuctionHouseObject; -class BattleGround; +#ifdef TRINITY +class Battleground; +typedef Battleground BattleGround; +#endif class Channel; class Corpse; class Creature;