diff --git a/Engine/source/T3D/assets/assetImporter.cpp b/Engine/source/T3D/assets/assetImporter.cpp index f399fc108..8c25446b1 100644 --- a/Engine/source/T3D/assets/assetImporter.cpp +++ b/Engine/source/T3D/assets/assetImporter.cpp @@ -2546,8 +2546,8 @@ void AssetImporter::importAssets(AssetImportObject* assetItem) processCommand += childItem->assetType; if (isMethod(processCommand.c_str())) { - ConsoleValueRef importReturnVal = Con::executef(this, processCommand.c_str(), childItem); - assetPath = Torque::Path(importReturnVal.getStringValue()); + const char* importReturnVal = Con::executef(this, processCommand.c_str(), childItem).getString(); + assetPath = Torque::Path(importReturnVal); } } diff --git a/Engine/source/afx/afxSelectron.cpp b/Engine/source/afx/afxSelectron.cpp index 67cd32849..63157a4f1 100644 --- a/Engine/source/afx/afxSelectron.cpp +++ b/Engine/source/afx/afxSelectron.cpp @@ -1070,7 +1070,7 @@ afxSelectron::start_selectron(SceneObject* picked, U8 subcode, SimObject* extra) // CALL SCRIPT afxSelectronData::onPreactivate(%params, %extra) const char* result = Con::executef(datablock, "onPreactivate", Con::getIntArg(param_holder->getId()), - (extra) ? Con::getIntArg(extra->getId()) : ""); + (extra) ? Con::getIntArg(extra->getId()) : "").getString(); if (result && result[0] != '\0' && !dAtob(result)) { #if defined(TORQUE_DEBUG) diff --git a/Engine/source/console/ICallMethod.h b/Engine/source/console/ICallMethod.h index fdda77fa7..0c0d50299 100644 --- a/Engine/source/console/ICallMethod.h +++ b/Engine/source/console/ICallMethod.h @@ -27,7 +27,7 @@ class ICallMethod { public: virtual const char* callMethod( S32 argc, const char* methodName, ... ) = 0; - virtual const char* callMethodArgList( U32 argc, ConsoleValueRef argv[], bool callThis = true ) = 0; + virtual const char* callMethodArgList( U32 argc, ConsoleValue argv[], bool callThis = true ) = 0; }; -#endif \ No newline at end of file +#endif diff --git a/Engine/source/console/console.cpp b/Engine/source/console/console.cpp index efa46f148..150b3f823 100644 --- a/Engine/source/console/console.cpp +++ b/Engine/source/console/console.cpp @@ -2592,7 +2592,7 @@ ConsoleValue _BaseEngineConsoleCallbackHelper::_exec() { ConsoleValue returnValue = std::move(Con::_internalExecute( mThis, mArgc, mArgv, false )); mArgc = mInitialArgc; // reset - return returnValue; + return std::move(returnValue); } STR.clearFunctionOffset(); @@ -2609,7 +2609,7 @@ ConsoleValue _BaseEngineConsoleCallbackHelper::_execLater(SimConsoleThreadExecEv { mArgc = mInitialArgc; // reset args Sim::postEvent((SimObject*)Sim::getRootGroup(), evt, Sim::getCurrentTime()); - return evt->getCB().waitForResult(); + return std::move(evt->getCB().waitForResult()); } //------------------------------------------------------------------------------ diff --git a/Engine/source/console/console.h b/Engine/source/console/console.h index ee44aaca8..cb49911c2 100644 --- a/Engine/source/console/console.h +++ b/Engine/source/console/console.h @@ -1254,9 +1254,9 @@ public: static ConsoleConstructor cfg_ConsoleFunctionGroup_##groupName##_GroupBegin(NULL,#groupName,usage) # define ConsoleToolFunction(name,returnType,minArgs,maxArgs,usage1) \ - returnType ctf_##name(SimObject *, S32, ConsoleValueRef *argv); \ + returnType ctf_##name(SimObject *, S32, ConsoleValue *argv); \ ConsoleConstructor cc_##name##_obj(NULL,#name,ctf_##name,usage1,minArgs,maxArgs, true); \ - returnType ctf_##name(SimObject *, S32 argc, ConsoleValueRef *argv) + returnType ctf_##name(SimObject *, S32 argc, ConsoleValue *argv) # define ConsoleFunctionGroupEnd(groupName) \ static ConsoleConstructor cfg_##groupName##_GroupEnd(NULL,#groupName,NULL) @@ -1289,23 +1289,23 @@ public: // These are identical to what's above, we just want to null out the usage strings. # define ConsoleFunction(name,returnType,minArgs,maxArgs,usage1) \ - static returnType c##name(SimObject *, S32, ConsoleValueRef*); \ + static returnType c##name(SimObject *, S32, ConsoleValue*); \ static ConsoleConstructor g##name##obj(NULL,#name,c##name,"",minArgs,maxArgs);\ - static returnType c##name(SimObject *, S32 argc, ConsoleValueRef *argv) + static returnType c##name(SimObject *, S32 argc, ConsoleValue *argv) # define ConsoleToolFunction(name,returnType,minArgs,maxArgs,usage1) \ - static returnType c##name(SimObject *, S32, ConsoleValueRef*); \ + static returnType c##name(SimObject *, S32, ConsoleValue*); \ static ConsoleConstructor g##name##obj(NULL,#name,c##name,"",minArgs,maxArgs, true);\ - static returnType c##name(SimObject *, S32 argc, ConsoleValueRef *argv) + static returnType c##name(SimObject *, S32 argc, ConsoleValue *argv) # define ConsoleMethod(className,name,returnType,minArgs,maxArgs,usage1) \ - static inline returnType c##className##name(className *, S32, ConsoleValueRef *argv); \ - static returnType c##className##name##caster(SimObject *object, S32 argc, ConsoleValueRef *argv) { \ + static inline returnType c##className##name(className *, S32, ConsoleValue *argv); \ + static returnType c##className##name##caster(SimObject *object, S32 argc, ConsoleValue *argv) { \ conmethod_return_##returnType ) c##className##name(static_cast(object),argc,argv); \ }; \ static ConsoleConstructor \ className##name##obj(#className,#name,c##className##name##caster,"",minArgs,maxArgs); \ - static inline returnType c##className##name(className *object, S32 argc, ConsoleValueRef *argv) + static inline returnType c##className##name(className *object, S32 argc, ConsoleValue *argv) #define ConsoleDoc( text ) diff --git a/Engine/source/console/consoleInternal.cpp b/Engine/source/console/consoleInternal.cpp index a498be154..4fd2aaa0b 100644 --- a/Engine/source/console/consoleInternal.cpp +++ b/Engine/source/console/consoleInternal.cpp @@ -613,7 +613,7 @@ void Dictionary::validate() "Dictionary::validate() - Dictionary not owner of own hashtable!"); } -void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns) +void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns, S32 registerCount) { #ifdef DEBUG_SPEW validate(); @@ -1266,7 +1266,7 @@ void Namespace::markGroup(const char* name, const char* usage) extern S32 executeBlock(StmtNode *block, ExprEvalState *state); -ConsoleValueRef Namespace::Entry::execute(S32 argc, ConsoleValueRef *argv, ExprEvalState *state) +ConsoleValue Namespace::Entry::execute(S32 argc, ConsoleValue *argv, ExprEvalState *state) { STR.clearFunctionOffset(); @@ -1274,11 +1274,11 @@ ConsoleValueRef Namespace::Entry::execute(S32 argc, ConsoleValueRef *argv, ExprE { if (mFunctionOffset) { - return mCode->exec(mFunctionOffset, argv[0], mNamespace, argc, argv, false, mPackage); + return std::move(mCode->exec(mFunctionOffset, argv[0].getString(), mNamespace, argc, argv, false, mPackage)); } else { - return ConsoleValueRef(); + return std::move(ConsoleValue()); } } @@ -1288,7 +1288,7 @@ ConsoleValueRef Namespace::Entry::execute(S32 argc, ConsoleValueRef *argv, ExprE if (mToolOnly && !Con::isCurrentScriptToolScript()) { Con::errorf(ConsoleLogEntry::Script, "%s::%s - attempting to call tools only function from outside of tools", mNamespace->mName, mFunctionName); - return ConsoleValueRef(); + return std::move(ConsoleValue()); } #endif @@ -1296,25 +1296,31 @@ ConsoleValueRef Namespace::Entry::execute(S32 argc, ConsoleValueRef *argv, ExprE { Con::warnf(ConsoleLogEntry::Script, "%s::%s - wrong number of arguments.", mNamespace->mName, mFunctionName); Con::warnf(ConsoleLogEntry::Script, "usage: %s", mUsage); - return ConsoleValueRef(); + return std::move(ConsoleValue()); } + ConsoleValue result; switch (mType) { case StringCallbackType: - return ConsoleValueRef::fromValue(CSTK.pushStackString(cb.mStringCallbackFunc(state->thisObject, argc, argv))); + const char* str = cb.mStringCallbackFunc(state->thisObject, argc, argv); + result.setString(str, dStrlen(str)); + break; case IntCallbackType: - return ConsoleValueRef::fromValue(CSTK.pushUINT((U32)cb.mBoolCallbackFunc(state->thisObject, argc, argv))); + result.setInt(cb.mIntCallbackFunc(state->thisObject, argc, argv)); + break; case FloatCallbackType: - return ConsoleValueRef::fromValue(CSTK.pushFLT((U32)cb.mBoolCallbackFunc(state->thisObject, argc, argv))); + result.setFloat(cb.mBoolCallbackFunc(state->thisObject, argc, argv)); + break; case VoidCallbackType: cb.mVoidCallbackFunc(state->thisObject, argc, argv); - return ConsoleValueRef(); + break; case BoolCallbackType: - return ConsoleValueRef::fromValue(CSTK.pushUINT((U32)cb.mBoolCallbackFunc(state->thisObject, argc, argv))); + result.setBool(cb.mBoolCallbackFunc(state->thisObject, argc, argv)); + break; } - return ConsoleValueRef(); + return std::move(result); } //----------------------------------------------------------------------------- diff --git a/Engine/source/console/consoleInternal.h b/Engine/source/console/consoleInternal.h index 151a75ac2..ac61f5331 100644 --- a/Engine/source/console/consoleInternal.h +++ b/Engine/source/console/consoleInternal.h @@ -150,7 +150,7 @@ public: void clear(); /// - ConsoleValueRef execute(S32 argc, ConsoleValueRef* argv, ExprEvalState* state); + ConsoleValue execute(S32 argc, ConsoleValue* argv, ExprEvalState* state); /// Return a one-line documentation text string for the function. String getBriefDescription(String* outRemainingDocText = NULL) const; diff --git a/Engine/source/console/engineAPI.h b/Engine/source/console/engineAPI.h index 553cc7e71..8fefd5fdc 100644 --- a/Engine/source/console/engineAPI.h +++ b/Engine/source/console/engineAPI.h @@ -148,55 +148,45 @@ inline const char* EngineMarshallData( U32 value ) /// Marshal data from native into client form stored directly in /// client function invocation vector. template< typename T > -inline void EngineMarshallData( const T& arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( const T& arg, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = castConsoleTypeToString( arg ); - argc ++; + const char* str = castConsoleTypeToString(arg);; + argv[ argc++ ].setString(str, dStrlen(str)); } -inline void EngineMarshallData( bool arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( bool arg, S32& argc, ConsoleValue *argv ) { - if( arg ) - argv[ argc ] = 1; - else - argv[ argc ] = 0; - argc ++; + argv[ argc++ ].setBool(arg); } -inline void EngineMarshallData( S32 arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( S32 arg, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = arg; - argc ++; + argv[ argc++ ].setInt(arg); } -inline void EngineMarshallData( U32 arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( U32 arg, S32& argc, ConsoleValue *argv ) { EngineMarshallData( S32( arg ), argc, argv ); } -inline void EngineMarshallData( F32 arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( F32 arg, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = arg; - argc ++; + argv[ argc++ ].setFloat(arg); } -inline void EngineMarshallData( const char* arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( const char* arg, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = arg; - argc ++; + argv[ argc++ ].setString(arg, dStrlen(arg)); } -inline void EngineMarshallData( char* arg, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( char* arg, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = arg; - argc ++; + argv[ argc++ ].setString(arg, dStrlen(arg)); } template< typename T > -inline void EngineMarshallData( T* object, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( T* object, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = object ? object->getId() : 0; - argc ++; + argv[ argc++ ].setInt(object ? object->getId() : 0); } template< typename T > -inline void EngineMarshallData( const T* object, S32& argc, ConsoleValueRef *argv ) +inline void EngineMarshallData( const T* object, S32& argc, ConsoleValue *argv ) { - argv[ argc ] = object ? object->getId() : 0; - argc ++; + argv[ argc++ ].setInt(object ? object->getId() : 0); } /// Unmarshal data from client form to engine form. @@ -216,9 +206,9 @@ struct EngineUnmarshallData template<> struct EngineUnmarshallData< S32 > { - S32 operator()( ConsoleValueRef &ref ) const + S32 operator()( ConsoleValue &ref ) const { - return (S32)ref; + return (S32)ref.getInt(); } S32 operator()( const char* str ) const @@ -229,9 +219,9 @@ struct EngineUnmarshallData< S32 > template<> struct EngineUnmarshallData< U32 > { - U32 operator()( ConsoleValueRef &ref ) const + U32 operator()( ConsoleValue &ref ) const { - return (U32)((S32)ref); + return (U32)ref.getInt(); } U32 operator()( const char* str ) const @@ -242,9 +232,9 @@ struct EngineUnmarshallData< U32 > template<> struct EngineUnmarshallData< F32 > { - F32 operator()( ConsoleValueRef &ref ) const + F32 operator()( ConsoleValue &ref ) const { - return (F32)ref; + return (F32)ref.getFloat(); } F32 operator()( const char* str ) const @@ -255,9 +245,9 @@ struct EngineUnmarshallData< F32 > template<> struct EngineUnmarshallData< U8 > { - U8 operator()( ConsoleValueRef &ref ) const + U8 operator()( ConsoleValue &ref ) const { - return (U8)((S32)ref); + return (U8)((S32)ref.getInt()); } U8 operator()( const char* str ) const @@ -268,9 +258,9 @@ struct EngineUnmarshallData< U8 > template<> struct EngineUnmarshallData< const char* > { - const char* operator()( ConsoleValueRef &ref ) const + const char* operator()( ConsoleValue &ref ) const { - return ref.getStringValue(); + return ref.getString(); } const char* operator()( const char* str ) const @@ -281,9 +271,9 @@ struct EngineUnmarshallData< const char* > template< typename T > struct EngineUnmarshallData< T* > { - T* operator()( ConsoleValueRef &ref ) const + T* operator()( ConsoleValue &ref ) const { - return dynamic_cast< T* >( Sim::findObject( ref.getStringValue() ) ); + return dynamic_cast< T* >( Sim::findObject( ref ) ); } T* operator()( const char* str ) const @@ -294,17 +284,17 @@ struct EngineUnmarshallData< T* > template<> struct EngineUnmarshallData< void > { - void operator()( ConsoleValueRef& ) const {} + void operator()( ConsoleValue& ) const {} void operator()( const char* ) const {} }; template<> -struct EngineUnmarshallData< ConsoleValueRef > +struct EngineUnmarshallData< ConsoleValue > { - ConsoleValueRef operator()( ConsoleValueRef ref ) const + ConsoleValue operator()( ConsoleValue &ref ) const { - return ref; + return std::move(ref); } }; @@ -548,7 +538,7 @@ namespace engineAPI{ static const S32 NUM_ARGS = sizeof...(ArgTs) + startArgc; template - static IthArgType getRealArgValue(S32 argc, ConsoleValueRef *argv, const _EngineFunctionDefaultArguments< void(RealArgTs...) >& defaultArgs) + static IthArgType getRealArgValue(S32 argc, ConsoleValue *argv, const _EngineFunctionDefaultArguments< void(RealArgTs...) >& defaultArgs) { if((startArgc + index) < argc) { @@ -559,12 +549,12 @@ namespace engineAPI{ } template - static R dispatchHelper(S32 argc, ConsoleValueRef *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs, Seq){ + static R dispatchHelper(S32 argc, ConsoleValue *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs, Seq){ return fn(SelfType::getRealArgValue(argc, argv, defaultArgs) ...); } template - static R dispatchHelper(S32 argc, ConsoleValueRef *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs, Seq){ + static R dispatchHelper(S32 argc, ConsoleValue *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs, Seq){ return (frame->*fn)(SelfType::getRealArgValue(argc, argv, defaultArgs) ...); } @@ -579,9 +569,9 @@ namespace engineAPI{ } }; - template<> struct MarshallHelpers { - template static void marshallEach(S32 &argc, ConsoleValueRef *argv, const ArgTs& ...args){} - template static void marshallEach(S32 &argc, ConsoleValueRef *argv, const H& head, const Tail& ...tail){ + template<> struct MarshallHelpers { + template static void marshallEach(S32 &argc, ConsoleValue *argv, const ArgTs& ...args){} + template static void marshallEach(S32 &argc, ConsoleValue *argv, const H& head, const Tail& ...tail){ EngineMarshallData(head, argc, argv); marshallEach(argc, argv, tail...); } @@ -604,12 +594,12 @@ public: template using MethodType = typename Helper::template MethodType; static const S32 NUM_ARGS = Helper::NUM_ARGS; - static ReturnType thunk( S32 argc, ConsoleValueRef *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs) + static ReturnType thunk( S32 argc, ConsoleValue *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs) { return _EngineConsoleThunkReturnValue( Helper::dispatchHelper(argc, argv, fn, defaultArgs, SeqType())); } template< typename Frame > - static ReturnType thunk( S32 argc, ConsoleValueRef *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs) + static ReturnType thunk( S32 argc, ConsoleValue *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs) { return _EngineConsoleThunkReturnValue( Helper::dispatchHelper(argc, argv, fn, frame, defaultArgs, SeqType())); } @@ -627,12 +617,12 @@ public: template using MethodType = typename Helper::template MethodType; static const S32 NUM_ARGS = Helper::NUM_ARGS; - static void thunk( S32 argc, ConsoleValueRef *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs) + static void thunk( S32 argc, ConsoleValue *argv, FunctionType fn, const _EngineFunctionDefaultArguments< void(ArgTs...) >& defaultArgs) { Helper::dispatchHelper(argc, argv, fn, defaultArgs, SeqType()); } template< typename Frame > - static void thunk( S32 argc, ConsoleValueRef *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs) + static void thunk( S32 argc, ConsoleValue *argv, MethodType fn, Frame* frame, const _EngineFunctionDefaultArguments< void( typename Frame::ObjectType*, ArgTs...) >& defaultArgs) { Helper::dispatchHelper(argc, argv, fn, frame, defaultArgs, SeqType()); } @@ -705,7 +695,7 @@ public: ( void* ) &fn ## name, \ 0 \ ); \ - static _EngineConsoleThunkType< returnType >::ReturnType _ ## name ## caster( SimObject*, S32 argc, ConsoleValueRef *argv ) \ + static _EngineConsoleThunkType< returnType >::ReturnType _ ## name ## caster( SimObject*, S32 argc, ConsoleValue *argv ) \ { \ return _EngineConsoleThunkType< returnType >::ReturnType( _EngineConsoleThunk< 1, returnType args >::thunk( \ argc, argv, &_fn ## name ## impl, _fn ## name ## DefaultArgs \ @@ -785,7 +775,7 @@ public: ( void* ) &fn ## className ## _ ## name, \ 0 \ ); \ - static _EngineConsoleThunkType< returnType >::ReturnType _ ## className ## name ## caster( SimObject* object, S32 argc, ConsoleValueRef *argv ) \ + static _EngineConsoleThunkType< returnType >::ReturnType _ ## className ## name ## caster( SimObject* object, S32 argc, ConsoleValue *argv ) \ { \ _ ## className ## name ## frame frame; \ frame.object = static_cast< className* >( object ); \ @@ -842,7 +832,7 @@ public: ( void* ) &fn ## className ## _ ## name, \ 0 \ ); \ - static _EngineConsoleThunkType< returnType >::ReturnType _ ## className ## name ## caster( SimObject*, S32 argc, ConsoleValueRef *argv )\ + static _EngineConsoleThunkType< returnType >::ReturnType _ ## className ## name ## caster( SimObject*, S32 argc, ConsoleValue *argv )\ { \ return _EngineConsoleThunkType< returnType >::ReturnType( _EngineConsoleThunk< 1, returnType args >::thunk( \ argc, argv, &_fn ## className ## name ## impl, _fn ## className ## name ## DefaultArgs \ @@ -859,7 +849,7 @@ public: static inline returnType _fn ## className ## name ## impl args # define DefineEngineStringlyVariadicFunction(name,returnType,minArgs,maxArgs,usage) \ - static inline returnType _fn ## name ## impl (SimObject *, S32 argc, ConsoleValueRef *argv); \ + static inline returnType _fn ## name ## impl (SimObject *, S32 argc, ConsoleValue *argv); \ TORQUE_API EngineTypeTraits< returnType >::ReturnValueType fn ## name \ (Vector* vec) \ { \ @@ -882,14 +872,14 @@ public: 0 \ ); \ ConsoleConstructor cc_##name##_obj(NULL,#name,_fn ## name ## impl,usage,minArgs,maxArgs); \ - returnType _fn ## name ## impl(SimObject *, S32 argc, ConsoleValueRef *argv) + returnType _fn ## name ## impl(SimObject *, S32 argc, ConsoleValue *argv) # define DefineEngineStringlyVariadicMethod(className, name,returnType,minArgs,maxArgs,usage) \ struct _ ## className ## name ## frame \ { \ typedef className ObjectType; \ className* object; \ - inline returnType _exec (S32 argc, ConsoleValueRef* argv) const; \ + inline returnType _exec (S32 argc, ConsoleValue* argv) const; \ }; \ TORQUE_API EngineTypeTraits< returnType >::ReturnValueType fn ## className ## _ ## name \ (className* object, Vector* vec) \ @@ -915,14 +905,14 @@ public: ( void* ) &fn ## className ## _ ## name, \ 0 \ ); \ - returnType cm_##className##_##name##_caster(SimObject* object, S32 argc, ConsoleValueRef* argv) { \ + returnType cm_##className##_##name##_caster(SimObject* object, S32 argc, ConsoleValue* argv) { \ AssertFatal( dynamic_cast( object ), "Object passed to " #name " is not a " #className "!" ); \ _ ## className ## name ## frame frame {}; \ frame.object = static_cast< className* >( object ); \ conmethod_return_##returnType ) frame._exec(argc,argv); \ }; \ ConsoleConstructor cc_##className##_##name##_obj(#className,#name,cm_##className##_##name##_caster,usage,minArgs,maxArgs); \ - inline returnType _ ## className ## name ## frame::_exec(S32 argc, ConsoleValueRef *argv) const + inline returnType _ ## className ## name ## frame::_exec(S32 argc, ConsoleValue *argv) const @@ -1167,10 +1157,10 @@ public: S32 mInitialArgc; S32 mArgc; StringTableEntry mCallbackName; - ConsoleValueRef mArgv[ MAX_ARGUMENTS + 2 ]; + ConsoleValue mArgv[ MAX_ARGUMENTS + 2 ]; - ConsoleValueRef _exec(); - ConsoleValueRef _execLater(SimConsoleThreadExecEvent *evt); + ConsoleValue _exec(); + ConsoleValue _execLater(SimConsoleThreadExecEvent *evt); _BaseEngineConsoleCallbackHelper(): mThis(NULL), mInitialArgc(0), mArgc(0), mCallbackName(StringTable->EmptyString()){;} }; @@ -1181,7 +1171,7 @@ public: struct _EngineConsoleCallbackHelper : public _BaseEngineConsoleCallbackHelper { private: - using Helper = engineAPI::detail::MarshallHelpers; + using Helper = engineAPI::detail::MarshallHelpers; public: _EngineConsoleCallbackHelper( StringTableEntry callbackName, SimObject* pThis ) @@ -1244,7 +1234,7 @@ public: { ConsoleStackFrameSaver sav; sav.save(); CSTK.reserveValues(mArgc+sizeof...(ArgTs), mArgv); - mArgv[ 0 ].value->setStackStringValue(simCB); + mArgv[ 0 ].setString(simCB, dStrlen(simCB)); Helper::marshallEach(mArgc, mArgv, args...); @@ -1255,7 +1245,7 @@ public: SimConsoleThreadExecCallback cb; SimConsoleThreadExecEvent *evt = new SimConsoleThreadExecEvent(mArgc+sizeof...(ArgTs), NULL, true, &cb); evt->populateArgs(mArgv); - mArgv[ 0 ].value->setStackStringValue(simCB); + mArgv[ 0 ].setString(simCB, dStrlen(simCB)); Helper::marshallEach(mArgc, mArgv, args...); @@ -1270,7 +1260,7 @@ public: template<> struct _EngineConsoleExecCallbackHelper : public _BaseEngineConsoleCallbackHelper { private: - using Helper = engineAPI::detail::MarshallHelpers; + using Helper = engineAPI::detail::MarshallHelpers; public: _EngineConsoleExecCallbackHelper( const char *callbackName ) { @@ -1285,10 +1275,9 @@ public: if (Con::isMainThread()) { ConsoleStackFrameSaver sav; sav.save(); - CSTK.reserveValues(mArgc+sizeof...(ArgTs), mArgv); - mArgv[ 0 ].value->setStackStringValue(mCallbackName); + mArgv[ 0 ].setStringTableEntry(mCallbackName); - Helper::marshallEach(mArgc, mArgv, args...); + Helper::marshallEach(mArgc, mArgv, args...); return R( EngineUnmarshallData< R >()( _exec() ) ); } @@ -1297,7 +1286,7 @@ public: SimConsoleThreadExecCallback cb; SimConsoleThreadExecEvent *evt = new SimConsoleThreadExecEvent(mArgc+sizeof...(ArgTs), NULL, false, &cb); evt->populateArgs(mArgv); - mArgv[ 0 ].value->setStackStringValue(mCallbackName); + mArgv[ 0 ].setStringTableEntry(mCallbackName); Helper::marshallEach(mArgc, mArgv, args...); diff --git a/Engine/source/console/simEvents.cpp b/Engine/source/console/simEvents.cpp index ab87f5f0b..97eb74d40 100644 --- a/Engine/source/console/simEvents.cpp +++ b/Engine/source/console/simEvents.cpp @@ -28,30 +28,23 @@ // Stupid globals not declared in a header extern ExprEvalState gEvalState; -SimConsoleEvent::SimConsoleEvent(S32 argc, ConsoleValueRef *argv, bool onObject) +SimConsoleEvent::SimConsoleEvent(S32 argc, ConsoleValue *argv, bool onObject) { mOnObject = onObject; mArgc = argc; - mArgv = new ConsoleValueRef[argc]; + mArgv = new ConsoleValue[argc]; for (int i=0; itype = ConsoleValue::TypeInternalString; - mArgv[i].value->init(); - if (argv) - { - mArgv[i].value->setStringValue((const char*)argv[i]); - } + if (argv) + { + mArgv->setString(argv[i].getString(), dStrlen(argv[i].getString())); + } } } SimConsoleEvent::~SimConsoleEvent() { - for (int i=0; irelease(); } -ConsoleValueRef SimConsoleThreadExecCallback::waitForResult() +ConsoleValue SimConsoleThreadExecCallback::waitForResult() { if(sem->acquire(true)) { - return retVal; + return std::move(retVal); } - return ConsoleValueRef(); + return ConsoleValue(); } //----------------------------------------------------------------------------- -SimConsoleThreadExecEvent::SimConsoleThreadExecEvent(S32 argc, ConsoleValueRef *argv, bool onObject, SimConsoleThreadExecCallback *callback) : +SimConsoleThreadExecEvent::SimConsoleThreadExecEvent(S32 argc, ConsoleValue *argv, bool onObject, SimConsoleThreadExecCallback *callback) : SimConsoleEvent(argc, argv, onObject), cb(callback) { } void SimConsoleThreadExecEvent::process(SimObject* object) { - ConsoleValueRef retVal; - if(mOnObject) - retVal = Con::execute(object, mArgc, mArgv); + if (cb) + { + if (mOnObject) + cb->handleCallback(std::move(Con::execute(object, mArgc, mArgv))); + else + cb->handleCallback(std::move(Con::execute(mArgc, mArgv))); + } else - retVal = Con::execute(mArgc, mArgv); - - if(cb) - cb->handleCallback(retVal); + { + if (mOnObject) + Con::execute(object, mArgc, mArgv); + else + Con::execute(mArgc, mArgv); + } } diff --git a/Engine/source/console/simEvents.h b/Engine/source/console/simEvents.h index 6fbb6a798..20fa53f5b 100644 --- a/Engine/source/console/simEvents.h +++ b/Engine/source/console/simEvents.h @@ -91,7 +91,7 @@ class SimConsoleEvent : public SimEvent { protected: S32 mArgc; - ConsoleValueRef *mArgv; + ConsoleValue *mArgv; bool mOnObject; public: @@ -108,13 +108,13 @@ public: /// /// @see Con::execute(S32 argc, const char *argv[]) /// @see Con::execute(SimObject *object, S32 argc, const char *argv[]) - SimConsoleEvent(S32 argc, ConsoleValueRef *argv, bool onObject); + SimConsoleEvent(S32 argc, ConsoleValue *argv, bool onObject); ~SimConsoleEvent(); virtual void process(SimObject *object); /// Creates a reference to our internal args list in argv - void populateArgs(ConsoleValueRef *argv); + void populateArgs(ConsoleValue *argv); }; @@ -123,13 +123,13 @@ public: struct SimConsoleThreadExecCallback { Semaphore *sem; - ConsoleValueRef retVal; + ConsoleValue retVal; SimConsoleThreadExecCallback(); ~SimConsoleThreadExecCallback(); - void handleCallback(ConsoleValueRef ret); - ConsoleValueRef waitForResult(); + void handleCallback(ConsoleValue ret); + ConsoleValue waitForResult(); }; class SimConsoleThreadExecEvent : public SimConsoleEvent @@ -137,7 +137,7 @@ class SimConsoleThreadExecEvent : public SimConsoleEvent SimConsoleThreadExecCallback *cb; public: - SimConsoleThreadExecEvent(S32 argc, ConsoleValueRef *argv, bool onObject, SimConsoleThreadExecCallback *callback); + SimConsoleThreadExecEvent(S32 argc, ConsoleValue *argv, bool onObject, SimConsoleThreadExecCallback *callback); SimConsoleThreadExecCallback& getCB() { return *cb; } virtual void process(SimObject *object); diff --git a/Engine/source/console/simObject.cpp b/Engine/source/console/simObject.cpp index ea0da309c..008ba9698 100644 --- a/Engine/source/console/simObject.cpp +++ b/Engine/source/console/simObject.cpp @@ -141,7 +141,7 @@ SimObject::~SimObject() //----------------------------------------------------------------------------- -bool SimObject::processArguments(S32 argc, ConsoleValueRef *argv) +bool SimObject::processArguments(S32 argc, ConsoleValue *argv) { return argc == 0; } diff --git a/Engine/source/console/simObject.h b/Engine/source/console/simObject.h index 102689b41..9cef85f0f 100644 --- a/Engine/source/console/simObject.h +++ b/Engine/source/console/simObject.h @@ -587,7 +587,7 @@ class SimObject: public ConsoleObject, public TamlCallbacks virtual ~SimObject(); - virtual bool processArguments(S32 argc, ConsoleValueRef *argv); ///< Process constructor options. (ie, new SimObject(1,2,3)) + virtual bool processArguments(S32 argc, ConsoleValue *argv); ///< Process constructor options. (ie, new SimObject(1,2,3)) /// @} diff --git a/Engine/source/console/simPersistSet.cpp b/Engine/source/console/simPersistSet.cpp index 00840c649..771e8ce0c 100644 --- a/Engine/source/console/simPersistSet.cpp +++ b/Engine/source/console/simPersistSet.cpp @@ -47,7 +47,7 @@ SimPersistSet::SimPersistSet() //----------------------------------------------------------------------------- -bool SimPersistSet::processArguments( S32 argc, ConsoleValueRef *argv ) +bool SimPersistSet::processArguments( S32 argc, ConsoleValue *argv ) { for( U32 i = 0; i < argc; ++ i ) { diff --git a/Engine/source/console/simPersistSet.h b/Engine/source/console/simPersistSet.h index d1769cff0..e09a828ff 100644 --- a/Engine/source/console/simPersistSet.h +++ b/Engine/source/console/simPersistSet.h @@ -58,7 +58,7 @@ class SimPersistSet : public SimSet // SimSet. virtual void addObject( SimObject* ); virtual void write( Stream &stream, U32 tabStop, U32 flags = 0 ); - virtual bool processArguments( S32 argc, ConsoleValueRef *argv ); + virtual bool processArguments( S32 argc, ConsoleValue *argv ); DECLARE_CONOBJECT( SimPersistSet ); DECLARE_CATEGORY( "Console" ); diff --git a/Engine/source/console/test/ScriptTest.cpp b/Engine/source/console/test/ScriptTest.cpp index b0674765b..1b937c755 100644 --- a/Engine/source/console/test/ScriptTest.cpp +++ b/Engine/source/console/test/ScriptTest.cpp @@ -20,7 +20,6 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- -#ifdef 0 #ifdef TORQUE_TESTS_ENABLED #include "testing/unitTesting.h" #include "platform/platform.h" @@ -32,40 +31,40 @@ #include "console/stringStack.h" template -inline T Convert(ConsoleValueRef); +inline T Convert(ConsoleValue&); template<> -inline U32 Convert(ConsoleValueRef val) +inline U32 Convert(ConsoleValue &val) { - return val.getIntValue(); + return val.getInt(); } template<> -inline S32 Convert(ConsoleValueRef val) +inline S32 Convert(ConsoleValue &val) { - return val.getSignedIntValue(); + return val.getInt(); } template<> -inline bool Convert(ConsoleValueRef val) +inline bool Convert(ConsoleValue &val) { - return val.getBoolValue(); + return val.getBool(); } template<> -inline F32 Convert(ConsoleValueRef val) +inline F32 Convert(ConsoleValue &val) { - return val.getFloatValue(); + return val.getFloat(); } template<> -inline const char* Convert(ConsoleValueRef val) +inline const char* Convert(ConsoleValue &val) { - return val.getStringValue(); + return val.getString(); } template<> -inline SimObject* Convert(ConsoleValueRef val) +inline SimObject* Convert(ConsoleValue &val) { return Sim::findObject(val); } @@ -73,7 +72,7 @@ inline SimObject* Convert(ConsoleValueRef val) template inline T RunScript(const char* str) { - return Convert(Con::evaluate(str, false, NULL)); + return Convert(std::move(Con::evaluate(str, false, NULL))); } TEST(Script, Basic_Arithmetic) @@ -394,4 +393,3 @@ TEST(Script, Basic_Package) } #endif -#endif