Buildsystem: Separate strict database type checks from TRINITY_DEBUG/WITH_COREDEBUG option

(cherry picked from commit ddd60a948c)
This commit is contained in:
Shauren
2018-03-14 20:50:54 +01:00
parent 4a386b97d2
commit 376ac0eeba
3 changed files with 22 additions and 12 deletions

View File

@@ -48,6 +48,7 @@ else()
endif()
option(WITH_WARNINGS "Show all warnings during compile" 0)
option(WITH_COREDEBUG "Include additional debug-code in core" 0)
option(WITH_STRICT_DATABASE_TYPE_CHECKS "Enable strict checking of database field value accessors" 0)
set(WITH_SOURCE_TREE "hierarchical" CACHE STRING "Build the source tree for IDE's.")
set_property(CACHE WITH_SOURCE_TREE PROPERTY STRINGS no flat hierarchical hierarchical-folders)
option(WITHOUT_GIT "Disable the GIT testing routines" 0)

View File

@@ -59,7 +59,7 @@ if( WITH_COREDEBUG )
message(" *** additional core debug logs have been enabled!")
message(" *** this setting doesn't help to get better crash logs!")
message(" *** in case you are searching for better crash logs use")
message(" *** -DCMAKE_BUILD_TYPE=RelWithDebug")
message(" *** -DCMAKE_BUILD_TYPE=RelWithDebInfo")
message(" *** DO NOT ENABLE IT UNLESS YOU KNOW WHAT YOU'RE DOING!")
message("* Use coreside debug : Yes")
add_definitions(-DTRINITY_DEBUG)
@@ -111,6 +111,15 @@ if ( PERFORMANCE_PROFILING )
add_definitions(-DPERFORMANCE_PROFILING)
endif()
if( WITH_STRICT_DATABASE_TYPE_CHECKS )
message("")
message(" *** WITH_STRICT_DATABASE_TYPE_CHECKS - WARNING!")
message(" *** Validates uses of database Get***() functions from Field class")
message(" *** invalid calls will result in returning value 0")
message(" *** NOT COMPATIBLE WITH MARIADB!")
add_definitions(-DTRINITY_STRICT_DATABASE_TYPE_CHECKS)
endif()
if (BUILD_SHARED_LIBS)
message("")
message(" *** WITH_DYNAMIC_LINKING - INFO!")

View File

@@ -35,7 +35,7 @@ uint8 Field::GetUInt8() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int8))
{
LogWrongType(__FUNCTION__);
@@ -53,7 +53,7 @@ int8 Field::GetInt8() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int8))
{
LogWrongType(__FUNCTION__);
@@ -71,7 +71,7 @@ uint16 Field::GetUInt16() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int16))
{
LogWrongType(__FUNCTION__);
@@ -89,7 +89,7 @@ int16 Field::GetInt16() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int16))
{
LogWrongType(__FUNCTION__);
@@ -107,7 +107,7 @@ uint32 Field::GetUInt32() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int32))
{
LogWrongType(__FUNCTION__);
@@ -125,7 +125,7 @@ int32 Field::GetInt32() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int32))
{
LogWrongType(__FUNCTION__);
@@ -143,7 +143,7 @@ uint64 Field::GetUInt64() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int64))
{
LogWrongType(__FUNCTION__);
@@ -161,7 +161,7 @@ int64 Field::GetInt64() const
if (!data.value)
return 0;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Int64))
{
LogWrongType(__FUNCTION__);
@@ -179,7 +179,7 @@ float Field::GetFloat() const
if (!data.value)
return 0.0f;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Float))
{
LogWrongType(__FUNCTION__);
@@ -197,7 +197,7 @@ double Field::GetDouble() const
if (!data.value)
return 0.0f;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (!IsType(DatabaseFieldTypes::Double) && !IsType(DatabaseFieldTypes::Decimal))
{
LogWrongType(__FUNCTION__);
@@ -215,7 +215,7 @@ char const* Field::GetCString() const
if (!data.value)
return nullptr;
#ifdef TRINITY_DEBUG
#ifdef TRINITY_STRICT_DATABASE_TYPE_CHECKS
if (IsNumeric() && data.raw)
{
LogWrongType(__FUNCTION__);