Sfoglia il codice sorgente

Remove value constructors for ConsoleValueRef & fix callbacks which use them. Fixes issue #1289

James Urquhart 10 anni fa
parent
commit
12d435c341

+ 4 - 2
Engine/source/T3D/gameBase/gameConnection.cpp

@@ -999,8 +999,10 @@ bool GameConnection::readDemoStartBlock(BitStream *stream)
 
 void GameConnection::demoPlaybackComplete()
 {
-   static ConsoleValueRef demoPlaybackArgv[1] = { "demoPlaybackComplete" };
-   Sim::postCurrentEvent(Sim::getRootGroup(), new SimConsoleEvent(1, demoPlaybackArgv, false));
+   static const char* demoPlaybackArgv[1] = { "demoPlaybackComplete" };
+   static StringStackConsoleWrapper demoPlaybackCmd(1, demoPlaybackArgv);
+
+   Sim::postCurrentEvent(Sim::getRootGroup(), new SimConsoleEvent(demoPlaybackCmd.argc, demoPlaybackCmd.argv, false));
    Parent::demoPlaybackComplete();
 }
 

+ 3 - 2
Engine/source/cinterface/c_scripting.cpp

@@ -76,9 +76,10 @@ extern "C" {
       if (!entry)
          return "";
 
-      ConsoleValueRef argv[] = {"consoleExportXML"};
+      static const char* exportArgv[1] = { "consoleExportXML" };
+      static StringStackConsoleWrapper exportCmd(1, exportArgv);
 
-      return entry->cb.mStringCallbackFunc(NULL, 1, argv);      
+      return entry->cb.mStringCallbackFunc(NULL, exportCmd.argc, exportCmd.argv);      
    }
 
    MarshalNativeEntry* script_get_namespace_entry(const char* nameSpace, const char* name)

+ 9 - 32
Engine/source/console/console.cpp

@@ -1534,9 +1534,16 @@ StringTableEntry getModNameFromPath(const char *path)
 void postConsoleInput( RawData data )
 {
    // Schedule this to happen at the next time event.
+   ConsoleValue values[2];
    ConsoleValueRef argv[2];
-   argv[0] = "eval";
-   argv[1] = ( const char* ) data.data;
+
+   values[0].init();
+   values[0].setStringValue("eval");
+   values[1].init();
+   values[1].setStringValue((const char*)data.data);
+   argv[0].value = &values[0];
+   argv[1].value = &values[1];
+
    Sim::postCurrentEvent(Sim::getRootGroup(), new SimConsoleEvent(2, argv, false));
 }
 
@@ -1610,36 +1617,6 @@ ConsoleValueRef::ConsoleValueRef(const ConsoleValueRef &ref)
    value = ref.value;
 }
 
-ConsoleValueRef::ConsoleValueRef(const char *newValue) : value(NULL)
-{
-   *this = newValue;
-}
-
-ConsoleValueRef::ConsoleValueRef(const String &newValue) : value(NULL)
-{
-   *this = (const char*)(newValue.utf8());
-}
-
-ConsoleValueRef::ConsoleValueRef(U32 newValue) : value(NULL)
-{
-   *this = newValue;
-}
-
-ConsoleValueRef::ConsoleValueRef(S32 newValue) : value(NULL)
-{
-   *this = newValue;
-}
-
-ConsoleValueRef::ConsoleValueRef(F32 newValue) : value(NULL)
-{
-   *this = newValue;
-}
-
-ConsoleValueRef::ConsoleValueRef(F64 newValue) : value(NULL)
-{
-   *this = newValue;
-}
-
 ConsoleValueRef& ConsoleValueRef::operator=(const ConsoleValueRef &newValue)
 {
    value = newValue.value;

+ 0 - 6
Engine/source/console/console.h

@@ -214,12 +214,6 @@ public:
    ~ConsoleValueRef() { ; }
 
    ConsoleValueRef(const ConsoleValueRef &ref);
-   ConsoleValueRef(const char *value);
-   ConsoleValueRef(const String &ref);
-   ConsoleValueRef(U32 value);
-   ConsoleValueRef(S32 value);
-   ConsoleValueRef(F32 value);
-   ConsoleValueRef(F64 value);
 
    static ConsoleValueRef fromValue(ConsoleValue *value) { ConsoleValueRef ref; ref.value = value; return ref; }
 

+ 1 - 1
Engine/source/console/simEvents.cpp

@@ -129,7 +129,7 @@ ConsoleValueRef SimConsoleThreadExecCallback::waitForResult()
       return retVal;
    }
 
-   return (const char*)NULL;
+   return ConsoleValueRef();
 }
 
 //-----------------------------------------------------------------------------