diff options
| author | Shauren <shauren.trinity@gmail.com> | 2012-12-31 20:43:14 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2012-12-31 20:43:14 +0100 |
| commit | f1170ba0fb00c32d55bc7db0c0a2bae2aef2ec82 (patch) | |
| tree | 30449c7ad27c0c4c064adbf91404964ccba2eed5 /src/server/shared/DataStores | |
| parent | b229f72bf44e5d4a8abb02efe454348670122271 (diff) | |
Core: Fixed some level 4 warnings (msvc)
Diffstat (limited to 'src/server/shared/DataStores')
| -rw-r--r-- | src/server/shared/DataStores/DBCStore.h | 76 |
1 files changed, 42 insertions, 34 deletions
diff --git a/src/server/shared/DataStores/DBCStore.h b/src/server/shared/DataStores/DBCStore.h index e872ead35db..a89b8a5f028 100644 --- a/src/server/shared/DataStores/DBCStore.h +++ b/src/server/shared/DataStores/DBCStore.h @@ -28,20 +28,20 @@ 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; for (uint32 i = 0; i< sqlTableName.size(); ++i) { if (isalpha(sqlTableName[i])) - sqlTableName[i] = tolower(sqlTableName[i]); + sqlTableName[i] = char(tolower(sqlTableName[i])); else if (sqlTableName[i] == '.') sqlTableName[i] = '_'; } @@ -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; } |
