diff options
| author | Spp <spp@jorge.gr> | 2013-01-02 13:30:51 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2013-01-02 13:30:51 +0100 |
| commit | aed36a8375538dfb7ebe6da4c32c012a95dc14c6 (patch) | |
| tree | eca30ab36e47bcedc1f0380f0f8a600326cac41f /src/server/shared/DataStores | |
| parent | 91f8ca32445f839e36ec699627a12781907950c9 (diff) | |
| parent | ebd14b4f01cc64a2a488bdbb1046897cc4da8e9a (diff) | |
Merge branch 'master' into 4.3.4
Conflicts:
dep/libmpq/CMakeLists.txt
src/server/game/AI/EventAI/CreatureEventAI.cpp
src/server/game/AI/EventAI/CreatureEventAI.h
src/server/game/AI/EventAI/CreatureEventAIMgr.cpp
src/server/game/AI/EventAI/CreatureEventAIMgr.h
src/server/game/Entities/Creature/Creature.h
src/server/game/Entities/Item/ItemPrototype.h
src/server/game/Entities/Object/ObjectDefines.h
src/server/game/Entities/Player/Player.cpp
src/server/game/Handlers/ReferAFriendHandler.cpp
src/server/game/Movement/Spline/MoveSplineInit.h
src/server/game/World/World.h
src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp
src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
src/server/scripts/EasternKingdoms/boss_kruul.cpp
src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp
src/server/scripts/OutdoorPvP/OutdoorPvPEP.h
src/server/shared/Database/Implementation/CharacterDatabase.cpp
src/server/shared/Database/Implementation/CharacterDatabase.h
src/server/shared/Database/Implementation/WorldDatabase.cpp
Diffstat (limited to 'src/server/shared/DataStores')
| -rw-r--r-- | src/server/shared/DataStores/DBCFileLoader.cpp | 2 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DBCFileLoader.h | 2 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DBCStore.h | 76 |
3 files changed, 44 insertions, 36 deletions
diff --git a/src/server/shared/DataStores/DBCFileLoader.cpp b/src/server/shared/DataStores/DBCFileLoader.cpp index 6f78ce5a02d..5e82579d29d 100644 --- a/src/server/shared/DataStores/DBCFileLoader.cpp +++ b/src/server/shared/DataStores/DBCFileLoader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify it diff --git a/src/server/shared/DataStores/DBCFileLoader.h b/src/server/shared/DataStores/DBCFileLoader.h index 3d5c23dcb85..884418f6896 100644 --- a/src/server/shared/DataStores/DBCFileLoader.h +++ b/src/server/shared/DataStores/DBCFileLoader.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify it diff --git a/src/server/shared/DataStores/DBCStore.h b/src/server/shared/DataStores/DBCStore.h index 91c3f935c7b..30547ff9873 100644 --- a/src/server/shared/DataStores/DBCStore.h +++ b/src/server/shared/DataStores/DBCStore.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2012 TrinityCore <http://www.trinitycore.org/> + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/> * * This program is free software; you can redistribute it and/or modify it @@ -28,13 +28,13 @@ struct SqlDbc { - const std::string * formatString; - const std::string * indexName; + std::string const* formatString; + std::string const* indexName; std::string sqlTableName; int32 indexPos; int32 sqlIndexPos; - SqlDbc(const std::string * _filename, const std::string * _format, const std::string * _idname, const char * fmt) - :formatString(_format), indexName (_idname), sqlIndexPos(0) + SqlDbc(std::string const* _filename, std::string const* _format, std::string const* _idname, char const* fmt) + : formatString(_format), indexName (_idname), sqlIndexPos(0) { // Convert dbc file name to sql table name sqlTableName = *_filename; @@ -70,22 +70,24 @@ class DBCStorage { typedef std::list<char*> StringPoolList; public: - explicit DBCStorage(const char *f) : - fmt(f), nCount(0), fieldCount(0), dataTable(NULL) + explicit DBCStorage(char const* f) + : fmt(f), nCount(0), fieldCount(0), dataTable(NULL) { indexTable.asT = NULL; } + ~DBCStorage() { Clear(); } T const* LookupEntry(uint32 id) const { return (id >= nCount) ? NULL : indexTable.asT[id]; } + uint32 GetNumRows() const { return nCount; } char const* GetFormat() const { return fmt; } uint32 GetFieldCount() const { return fieldCount; } - bool Load(char const* fn, SqlDbc * sql) + bool Load(char const* fn, SqlDbc* sql) { DBCFileLoader dbc; // Check if load was sucessful, only then continue @@ -114,8 +116,9 @@ class DBCStorage fields = result->Fetch(); sqlHighestIndex = fields[sql->sqlIndexPos].GetUInt32(); } + // Check if sql index pos is valid - if (int32(result->GetFieldCount()-1) < sql->sqlIndexPos) + if (int32(result->GetFieldCount() - 1) < sql->sqlIndexPos) { sLog->outError(LOG_FILTER_SERVER_LOADING, "Invalid index pos for dbc:'%s'", sql->sqlTableName.c_str()); return false; @@ -123,13 +126,13 @@ class DBCStorage } } - char * sqlDataTable; + char* sqlDataTable = NULL; fieldCount = dbc.GetCols(); - dataTable = (T*)dbc.AutoProduceData(fmt, nCount, indexTable.asChar, - sqlRecordCount, sqlHighestIndex, sqlDataTable); + dataTable = reinterpret_cast<T*>(dbc.AutoProduceData(fmt, nCount, indexTable.asChar, + sqlRecordCount, sqlHighestIndex, sqlDataTable)); - stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)dataTable)); + stringPoolList.push_back(dbc.AutoProduceStrings(fmt, reinterpret_cast<char*>(dataTable))); // Insert sql data into arrays if (result) @@ -151,10 +154,12 @@ class DBCStorage sLog->outError(LOG_FILTER_SERVER_LOADING, "Index %d already exists in dbc:'%s'", id, sql->sqlTableName.c_str()); return false; } - indexTable.asT[id]=(T*)&sqlDataTable[offset]; + + indexTable.asT[id] = reinterpret_cast<T*>(&sqlDataTable[offset]); } else - indexTable.asT[rowIndex]=(T*)&sqlDataTable[offset]; + indexTable.asT[rowIndex]= reinterpret_cast<T*>(&sqlDataTable[offset]); + uint32 columnNumber = 0; uint32 sqlColumnNumber = 0; @@ -165,22 +170,22 @@ class DBCStorage switch (fmt[columnNumber]) { case FT_FLOAT: - *((float*)(&sqlDataTable[offset]))= 0.0f; - offset+=4; + *reinterpret_cast<float*>(&sqlDataTable[offset]) = 0.0f; + offset += 4; break; case FT_IND: case FT_INT: - *((uint32*)(&sqlDataTable[offset]))=uint32(0); - offset+=4; + *reinterpret_cast<uint32*>(&sqlDataTable[offset]) = uint32(0); + offset += 4; break; case FT_BYTE: - *((uint8*)(&sqlDataTable[offset]))=uint8(0); - offset+=1; + *reinterpret_cast<uint8*>(&sqlDataTable[offset]) = uint8(0); + offset += 1; break; case FT_STRING: // Beginning of the pool - empty string - *((char**)(&sqlDataTable[offset]))=stringPoolList.back(); - offset+=sizeof(char*); + *reinterpret_cast<char**>(&sqlDataTable[offset]) = stringPoolList.back(); + offset += sizeof(char*); break; } } @@ -190,17 +195,17 @@ class DBCStorage switch (fmt[columnNumber]) { case FT_FLOAT: - *((float*)(&sqlDataTable[offset]))=fields[sqlColumnNumber].GetFloat(); - offset+=4; + *reinterpret_cast<float*>(&sqlDataTable[offset]) = fields[sqlColumnNumber].GetFloat(); + offset += 4; break; case FT_IND: case FT_INT: - *((uint32*)(&sqlDataTable[offset]))=fields[sqlColumnNumber].GetUInt32(); - offset+=4; + *reinterpret_cast<uint32*>(&sqlDataTable[offset]) = fields[sqlColumnNumber].GetUInt32(); + offset += 4; break; case FT_BYTE: - *((uint8*)(&sqlDataTable[offset]))=fields[sqlColumnNumber].GetUInt8(); - offset+=1; + *reinterpret_cast<uint8*>(&sqlDataTable[offset]) = fields[sqlColumnNumber].GetUInt8(); + offset += 1; break; case FT_STRING: sLog->outError(LOG_FILTER_SERVER_LOADING, "Unsupported data type in table '%s' at char %d", sql->sqlTableName.c_str(), columnNumber); @@ -209,6 +214,7 @@ class DBCStorage break; default: validSqlColumn = false; + break; } if (validSqlColumn && (columnNumber != (sql->formatString->size()-1))) sqlColumnNumber++; @@ -219,7 +225,8 @@ class DBCStorage return false; } } - if (sqlColumnNumber != (result->GetFieldCount()-1)) + + if (sqlColumnNumber != (result->GetFieldCount() - 1)) { sLog->outError(LOG_FILTER_SERVER_LOADING, "SQL and DBC format strings are not matching for table: '%s'", sql->sqlTableName.c_str()); return false; @@ -227,7 +234,7 @@ class DBCStorage fields = NULL; ++rowIndex; - }while (result->NextRow()); + } while (result->NextRow()); } } @@ -246,7 +253,7 @@ class DBCStorage if (!dbc.Load(fn, fmt)) return false; - stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)dataTable)); + stringPoolList.push_back(dbc.AutoProduceStrings(fmt, reinterpret_cast<char*>(dataTable))); return true; } @@ -256,9 +263,9 @@ class DBCStorage if (!indexTable.asT) return; - delete[] ((char*)indexTable.asT); + delete[] reinterpret_cast<char*>(indexTable.asT); indexTable.asT = NULL; - delete[] ((char*)dataTable); + delete[] reinterpret_cast<char*>(dataTable); dataTable = NULL; while (!stringPoolList.empty()) @@ -266,6 +273,7 @@ class DBCStorage delete[] stringPoolList.front(); stringPoolList.pop_front(); } + nCount = 0; } |
