diff --git a/Engine/source/console/console.cpp b/Engine/source/console/console.cpp index fec923819..015ee7540 100644 --- a/Engine/source/console/console.cpp +++ b/Engine/source/console/console.cpp @@ -71,7 +71,7 @@ char* ConsoleValue::convertToBuffer() const const char* ConsoleValue::getConsoleData() const { - return Con::getData(ct->consoleType, ct->dataPtr, 0, ct->enumTable); + return Con::getData(type, dataPtr, 0, enumTable); } ConsoleDocFragment* ConsoleDocFragment::smFirst; diff --git a/Engine/source/console/console.h b/Engine/source/console/console.h index ce3c96e14..dcd9d4531 100644 --- a/Engine/source/console/console.h +++ b/Engine/source/console/console.h @@ -128,15 +128,9 @@ enum ConsoleValueType cvConsoleValueType = 0 }; -struct ConsoleValueConsoleType -{ - S32 consoleType; - void* dataPtr; - EnumTable* enumTable; -}; - class ConsoleValue { +public: #pragma warning( push ) #pragma warning( disable : 4201 ) // warning C4201: nonstandard extension used : nameless struct/union union @@ -150,7 +144,8 @@ class ConsoleValue struct { - ConsoleValueConsoleType* ct; + void* dataPtr; + EnumTable* enumTable; }; }; @@ -164,15 +159,14 @@ class ConsoleValue TORQUE_FORCEINLINE void cleanupData() { - if (type == ConsoleValueType::cvString) + if (type == cvString) { if (s != StringTable->EmptyString()) dFree(s); } + type = ConsoleValueType::cvNULL; } - -public: ConsoleValue() { type = ConsoleValueType::cvSTEntry; @@ -199,7 +193,7 @@ public: setString(ref.s); break; default: - setConsoleData(ref.ct->consoleType, ref.ct->dataPtr, ref.ct->enumTable); + setConsoleData(ref.type, ref.dataPtr, ref.enumTable); break; } } @@ -224,7 +218,7 @@ public: setString(ref.s); break; default: - setConsoleData(ref.ct->consoleType, ref.ct->dataPtr, ref.ct->enumTable); + setConsoleData(ref.type, ref.dataPtr, ref.enumTable); break; } return *this; @@ -322,8 +316,6 @@ public: } cleanupData(); - U32 oldLen = dStrlen(s); - type = ConsoleValueType::cvString; s = (char*)dMalloc(len + 1); @@ -357,12 +349,13 @@ public: setStringTableEntry(StringTable->EmptyString()); } - TORQUE_FORCEINLINE void setConsoleData(S32 consoleType, void* dataPtr, const EnumTable* enumTable) + TORQUE_FORCEINLINE void setConsoleData(S32 inConsoleType, void* inDataPtr, const EnumTable* inEnumTable) { cleanupData(); - type = ConsoleValueType::cvConsoleValueType; - ct = new ConsoleValueConsoleType{ consoleType, dataPtr, const_cast(enumTable) }; - } + type = inConsoleType; + dataPtr = inDataPtr; + enumTable = const_cast(inEnumTable); + }; TORQUE_FORCEINLINE S32 getType() const { @@ -384,11 +377,11 @@ public: return type >= ConsoleValueType::cvConsoleValueType; } - TORQUE_FORCEINLINE ConsoleValueConsoleType* getConsoleType() const + TORQUE_FORCEINLINE S32 getConsoleType() const { if(type >= ConsoleValueType::cvConsoleValueType) { - return ct; + return type; } else { diff --git a/Engine/source/console/consoleInternal.h b/Engine/source/console/consoleInternal.h index 9a32dbe7c..beffb2e2c 100644 --- a/Engine/source/console/consoleInternal.h +++ b/Engine/source/console/consoleInternal.h @@ -349,8 +349,7 @@ public: if (value.isConsoleType()) { const char* dptr = Con::getData(TypeS32, &val, 0); - ConsoleValueConsoleType* cvt = value.getConsoleType(); - Con::setData(cvt->consoleType, cvt->dataPtr, 0, 1, &dptr, cvt->enumTable); + Con::setData(value.type, value.dataPtr, 0, 1, &dptr, value.enumTable); } else { @@ -373,8 +372,7 @@ public: if (value.isConsoleType()) { const char* dptr = Con::getData(TypeF32, &val, 0); - ConsoleValueConsoleType* cvt = value.getConsoleType(); - Con::setData(cvt->consoleType, cvt->dataPtr, 0, 1, &dptr, cvt->enumTable); + Con::setData(value.type, value.dataPtr, 0, 1, &dptr, value.enumTable); } else { @@ -397,8 +395,7 @@ public: if (value.isConsoleType()) { - ConsoleValueConsoleType* cvt = value.getConsoleType(); - Con::setData(cvt->consoleType, cvt->dataPtr, 0, 1, &val, cvt->enumTable); + Con::setData(value.type, value.dataPtr, 0, 1, &val, value.enumTable); } else { diff --git a/Engine/source/console/engineDoc.cpp b/Engine/source/console/engineDoc.cpp index baffb12e6..6dde4ab7c 100644 --- a/Engine/source/console/engineDoc.cpp +++ b/Engine/source/console/engineDoc.cpp @@ -148,7 +148,7 @@ static void dumpVariable( Stream& stream, // Skip variables for which we can't decipher their type. - ConsoleBaseType* type = ConsoleBaseType::getType( entry->value.getConsoleType()->consoleType ); + ConsoleBaseType* type = ConsoleBaseType::getType( entry->value.type ); if( !type ) { Con::errorf( "Can't find type for variable '%s'", entry->name );