mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-16 00:54:54 +00:00
cleanup
This commit is contained in:
parent
02447f0996
commit
f776e73b04
11 changed files with 50 additions and 54 deletions
|
|
@ -1076,7 +1076,7 @@ ConsoleValue CodeBlock::exec(U32 ip, const char* functionName, Namespace* thisNa
|
||||||
STR.rewind();
|
STR.rewind();
|
||||||
|
|
||||||
returnValue.setString(retVal, STR.mLen);
|
returnValue.setString(retVal, STR.mLen);
|
||||||
//STR.setStringValue(returnValue); // Not nice but works.
|
STR.setStringValue(retVal); // Not nice but works.
|
||||||
}
|
}
|
||||||
|
|
||||||
goto execFinished;
|
goto execFinished;
|
||||||
|
|
@ -2070,9 +2070,6 @@ ConsoleValue CodeBlock::exec(U32 ip, const char* functionName, Namespace* thisNa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
execFinished:
|
execFinished:
|
||||||
#ifdef TORQUE_DEBUG
|
|
||||||
AssertFatal(returnValue.getType() == ConsoleValueType::cvNone, "returnValue was never set during script exec");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (telDebuggerOn && setFrame < 0)
|
if (telDebuggerOn && setFrame < 0)
|
||||||
TelDebugger->popStackFrame();
|
TelDebugger->popStackFrame();
|
||||||
|
|
@ -2129,8 +2126,6 @@ execFinished:
|
||||||
AssertFatal(!(STR.mStartStackSize < stackStart), "String stack popped too much in script exec");
|
AssertFatal(!(STR.mStartStackSize < stackStart), "String stack popped too much in script exec");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (returnValue.getType() == ConsoleValueType::cvNone)
|
|
||||||
returnValue.setStringTableEntry(StringTable->EmptyString());
|
|
||||||
return std::move(returnValue);
|
return std::move(returnValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1555,7 +1555,7 @@ ConsoleValue _internalExecute(S32 argc, ConsoleValue argv[])
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
ConsoleValue ret;
|
ConsoleValue ret;
|
||||||
ret.setString(methodRes, dStrlen(methodRes));
|
ret.setString(methodRes);
|
||||||
return std::move(ret);
|
return std::move(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1644,7 +1644,7 @@ static ConsoleValue _internalExecute(SimObject *object, S32 argc, ConsoleValue a
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
ConsoleValue val;
|
ConsoleValue val;
|
||||||
val.setString(methodRes, dStrlen(methodRes));
|
val.setString(methodRes);
|
||||||
return std::move(val);
|
return std::move(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1672,7 +1672,7 @@ static ConsoleValue _internalExecute(SimObject *object, S32 argc, ConsoleValue a
|
||||||
gEvalState.thisObject = save;
|
gEvalState.thisObject = save;
|
||||||
|
|
||||||
// Twiddle it back
|
// Twiddle it back
|
||||||
argv[1].setString(oldIdent, dStrlen(oldIdent));
|
argv[1].setString(oldIdent);
|
||||||
|
|
||||||
return std::move(ret);
|
return std::move(ret);
|
||||||
}
|
}
|
||||||
|
|
@ -1934,8 +1934,8 @@ void postConsoleInput( RawData data )
|
||||||
// TODO(JTH): Mem leak
|
// TODO(JTH): Mem leak
|
||||||
// Schedule this to happen at the next time event.
|
// Schedule this to happen at the next time event.
|
||||||
ConsoleValue* argv = new ConsoleValue[2];
|
ConsoleValue* argv = new ConsoleValue[2];
|
||||||
argv[0].setString("eval", 4);
|
argv[0].setString("eval");
|
||||||
argv[1].setString(reinterpret_cast<const char*>(data.data), dStrlen(reinterpret_cast<const char*>(data.data)));
|
argv[1].setString(reinterpret_cast<const char*>(data.data));
|
||||||
|
|
||||||
Sim::postCurrentEvent(Sim::getRootGroup(), new SimConsoleEvent(2, argv, false));
|
Sim::postCurrentEvent(Sim::getRootGroup(), new SimConsoleEvent(2, argv, false));
|
||||||
}
|
}
|
||||||
|
|
@ -2577,7 +2577,7 @@ StringArrayToConsoleValueWrapper::StringArrayToConsoleValueWrapper(int targc, co
|
||||||
|
|
||||||
for (int i=0; i<targc; i++)
|
for (int i=0; i<targc; i++)
|
||||||
{
|
{
|
||||||
argv[i].setString(targv[i], dStrlen(targv[i]));
|
argv[i].setString(targv[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include "core/util/str.h"
|
#include "core/util/str.h"
|
||||||
#include "core/util/journal/journaledSignal.h"
|
#include "core/util/journal/journaledSignal.h"
|
||||||
|
#include "core/stringTable.h"
|
||||||
|
|
||||||
class SimObject;
|
class SimObject;
|
||||||
class Namespace;
|
class Namespace;
|
||||||
|
|
@ -119,7 +120,6 @@ extern char *typeValueEmpty;
|
||||||
|
|
||||||
enum ConsoleValueType
|
enum ConsoleValueType
|
||||||
{
|
{
|
||||||
cvNone = -5,
|
|
||||||
cvInteger = -4,
|
cvInteger = -4,
|
||||||
cvFloat = -3,
|
cvFloat = -3,
|
||||||
cvString = -2,
|
cvString = -2,
|
||||||
|
|
@ -160,7 +160,7 @@ class ConsoleValue
|
||||||
|
|
||||||
TORQUE_FORCEINLINE bool hasAllocatedData() const
|
TORQUE_FORCEINLINE bool hasAllocatedData() const
|
||||||
{
|
{
|
||||||
return type == ConsoleValueType::cvString || isConsoleType();
|
return (type == ConsoleValueType::cvString || isConsoleType()) && data != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* getConsoleData() const;
|
const char* getConsoleData() const;
|
||||||
|
|
@ -170,13 +170,14 @@ class ConsoleValue
|
||||||
if (hasAllocatedData())
|
if (hasAllocatedData())
|
||||||
{
|
{
|
||||||
dFree(data);
|
dFree(data);
|
||||||
|
data = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ConsoleValue()
|
ConsoleValue()
|
||||||
{
|
{
|
||||||
type = ConsoleValueType::cvNone;
|
setEmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
ConsoleValue(ConsoleValue&& ref) noexcept
|
ConsoleValue(ConsoleValue&& ref) noexcept
|
||||||
|
|
@ -186,9 +187,6 @@ public:
|
||||||
|
|
||||||
switch (ref.type)
|
switch (ref.type)
|
||||||
{
|
{
|
||||||
TORQUE_UNLIKELY
|
|
||||||
case cvNone:
|
|
||||||
break;
|
|
||||||
case cvInteger:
|
case cvInteger:
|
||||||
i = ref.i;
|
i = ref.i;
|
||||||
break;
|
break;
|
||||||
|
|
@ -205,7 +203,7 @@ public:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref.type = cvNone;
|
ref.setEmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
ConsoleValue(const ConsoleValue&) = delete;
|
ConsoleValue(const ConsoleValue&) = delete;
|
||||||
|
|
@ -219,12 +217,11 @@ public:
|
||||||
TORQUE_FORCEINLINE void reset()
|
TORQUE_FORCEINLINE void reset()
|
||||||
{
|
{
|
||||||
cleanupData();
|
cleanupData();
|
||||||
type = ConsoleValueType::cvNone;
|
setEmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
TORQUE_FORCEINLINE F64 getFloat() const
|
TORQUE_FORCEINLINE F64 getFloat() const
|
||||||
{
|
{
|
||||||
AssertFatal(type == ConsoleValueType::cvNone, "Attempted to access ConsoleValue when it has no value!");
|
|
||||||
if (type == ConsoleValueType::cvFloat)
|
if (type == ConsoleValueType::cvFloat)
|
||||||
return f;
|
return f;
|
||||||
if (type == ConsoleValueType::cvInteger)
|
if (type == ConsoleValueType::cvInteger)
|
||||||
|
|
@ -236,7 +233,6 @@ public:
|
||||||
|
|
||||||
TORQUE_FORCEINLINE S64 getInt() const
|
TORQUE_FORCEINLINE S64 getInt() const
|
||||||
{
|
{
|
||||||
AssertFatal(type == ConsoleValueType::cvNone, "Attempted to access ConsoleValue when it has no value!");
|
|
||||||
if (type == ConsoleValueType::cvInteger)
|
if (type == ConsoleValueType::cvInteger)
|
||||||
return i;
|
return i;
|
||||||
if (type == ConsoleValueType::cvFloat)
|
if (type == ConsoleValueType::cvFloat)
|
||||||
|
|
@ -248,7 +244,6 @@ public:
|
||||||
|
|
||||||
TORQUE_FORCEINLINE const char* getString() const
|
TORQUE_FORCEINLINE const char* getString() const
|
||||||
{
|
{
|
||||||
AssertFatal(type == ConsoleValueType::cvNone, "Attempted to access ConsoleValue when it has no value!");
|
|
||||||
if (isStringType())
|
if (isStringType())
|
||||||
return s;
|
return s;
|
||||||
if (isNumberType())
|
if (isNumberType())
|
||||||
|
|
@ -263,7 +258,6 @@ public:
|
||||||
|
|
||||||
TORQUE_FORCEINLINE bool getBool() const
|
TORQUE_FORCEINLINE bool getBool() const
|
||||||
{
|
{
|
||||||
AssertFatal(type == ConsoleValueType::cvNone, "Attempted to access ConsoleValue when it has no value!");
|
|
||||||
if (type == ConsoleValueType::cvInteger)
|
if (type == ConsoleValueType::cvInteger)
|
||||||
return (bool)i;
|
return (bool)i;
|
||||||
if (type == ConsoleValueType::cvFloat)
|
if (type == ConsoleValueType::cvFloat)
|
||||||
|
|
@ -275,7 +269,6 @@ public:
|
||||||
|
|
||||||
TORQUE_FORCEINLINE void setFloat(const F64 val)
|
TORQUE_FORCEINLINE void setFloat(const F64 val)
|
||||||
{
|
{
|
||||||
AssertFatal(type == ConsoleValueType::cvNone, "Attempted to access ConsoleValue when it has no value!");
|
|
||||||
cleanupData();
|
cleanupData();
|
||||||
type = ConsoleValueType::cvFloat;
|
type = ConsoleValueType::cvFloat;
|
||||||
f = val;
|
f = val;
|
||||||
|
|
@ -290,11 +283,17 @@ public:
|
||||||
|
|
||||||
TORQUE_FORCEINLINE void setString(const char* val)
|
TORQUE_FORCEINLINE void setString(const char* val)
|
||||||
{
|
{
|
||||||
setString(val, dStrlen(val));
|
setString(val, dStrlen(val) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TORQUE_FORCEINLINE void setString(const char* val, S32 len)
|
TORQUE_FORCEINLINE void setString(const char* val, S32 len)
|
||||||
{
|
{
|
||||||
|
if (len == 0)
|
||||||
|
{
|
||||||
|
setEmptyString();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cleanupData();
|
cleanupData();
|
||||||
|
|
||||||
type = ConsoleValueType::cvString;
|
type = ConsoleValueType::cvString;
|
||||||
|
|
@ -318,6 +317,11 @@ public:
|
||||||
s = const_cast<char*>(val);
|
s = const_cast<char*>(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TORQUE_FORCEINLINE void setEmptyString()
|
||||||
|
{
|
||||||
|
setStringTableEntry(StringTable->EmptyString());
|
||||||
|
}
|
||||||
|
|
||||||
TORQUE_FORCEINLINE void setConsoleData(S32 consoleType, void* dataPtr, const EnumTable* enumTable)
|
TORQUE_FORCEINLINE void setConsoleData(S32 consoleType, void* dataPtr, const EnumTable* enumTable)
|
||||||
{
|
{
|
||||||
cleanupData();
|
cleanupData();
|
||||||
|
|
|
||||||
|
|
@ -633,6 +633,10 @@ void ExprEvalState::pushFrame(StringTableEntry frameName, Namespace *ns, S32 reg
|
||||||
|
|
||||||
AssertFatal(!newFrame.getCount(), "ExprEvalState::pushFrame - Dictionary not empty!");
|
AssertFatal(!newFrame.getCount(), "ExprEvalState::pushFrame - Dictionary not empty!");
|
||||||
|
|
||||||
|
ConsoleValue* consoleValArray = new ConsoleValue[registerCount];
|
||||||
|
localStack.push_back(ConsoleValueFrame(consoleValArray, false));
|
||||||
|
currentRegisterArray = &localStack.last();
|
||||||
|
|
||||||
#ifdef DEBUG_SPEW
|
#ifdef DEBUG_SPEW
|
||||||
validate();
|
validate();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -653,6 +657,13 @@ void ExprEvalState::popFrame()
|
||||||
stack[mStackDepth]->reset();
|
stack[mStackDepth]->reset();
|
||||||
currentVariable = NULL;
|
currentVariable = NULL;
|
||||||
|
|
||||||
|
const ConsoleValueFrame& frame = localStack.last();
|
||||||
|
localStack.pop_back();
|
||||||
|
if (!frame.isReference)
|
||||||
|
delete[] frame.values;
|
||||||
|
|
||||||
|
currentRegisterArray = localStack.size() ? &localStack.last() : NULL;
|
||||||
|
|
||||||
#ifdef DEBUG_SPEW
|
#ifdef DEBUG_SPEW
|
||||||
validate();
|
validate();
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1296,7 +1307,7 @@ ConsoleValue Namespace::Entry::execute(S32 argc, ConsoleValue *argv, ExprEvalSta
|
||||||
case StringCallbackType:
|
case StringCallbackType:
|
||||||
{
|
{
|
||||||
const char* str = cb.mStringCallbackFunc(state->thisObject, argc, argv);
|
const char* str = cb.mStringCallbackFunc(state->thisObject, argc, argv);
|
||||||
result.setString(str, dStrlen(str));
|
result.setString(str);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IntCallbackType:
|
case IntCallbackType:
|
||||||
|
|
|
||||||
|
|
@ -372,7 +372,7 @@ public:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
value.setString(newValue, dStrlen(newValue));
|
value.setString(newValue);
|
||||||
|
|
||||||
// Fire off the notification if we have one.
|
// Fire off the notification if we have one.
|
||||||
if (notify)
|
if (notify)
|
||||||
|
|
@ -456,6 +456,9 @@ struct ConsoleValueFrame
|
||||||
ConsoleValue* values;
|
ConsoleValue* values;
|
||||||
bool isReference;
|
bool isReference;
|
||||||
|
|
||||||
|
ConsoleValueFrame() : values(NULL), isReference(false)
|
||||||
|
{}
|
||||||
|
|
||||||
ConsoleValueFrame(ConsoleValue* vals, bool isRef)
|
ConsoleValueFrame(ConsoleValue* vals, bool isRef)
|
||||||
{
|
{
|
||||||
values = vals;
|
values = vals;
|
||||||
|
|
|
||||||
|
|
@ -171,11 +171,11 @@ inline void EngineMarshallData( F32 arg, S32& argc, ConsoleValue *argv )
|
||||||
}
|
}
|
||||||
inline void EngineMarshallData( const char* arg, S32& argc, ConsoleValue *argv )
|
inline void EngineMarshallData( const char* arg, S32& argc, ConsoleValue *argv )
|
||||||
{
|
{
|
||||||
argv[ argc++ ].setString(arg, dStrlen(arg));
|
argv[ argc++ ].setString(arg);
|
||||||
}
|
}
|
||||||
inline void EngineMarshallData( char* arg, S32& argc, ConsoleValue *argv )
|
inline void EngineMarshallData( char* arg, S32& argc, ConsoleValue *argv )
|
||||||
{
|
{
|
||||||
argv[ argc++ ].setString(arg, dStrlen(arg));
|
argv[ argc++ ].setString(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
|
|
@ -1232,7 +1232,7 @@ public:
|
||||||
if (Con::isMainThread())
|
if (Con::isMainThread())
|
||||||
{
|
{
|
||||||
ConsoleStackFrameSaver sav; sav.save();
|
ConsoleStackFrameSaver sav; sav.save();
|
||||||
mArgv[ 0 ].setString(simCB, dStrlen(simCB));
|
mArgv[ 0 ].setString(simCB);
|
||||||
|
|
||||||
Helper::marshallEach(mArgc, mArgv, args...);
|
Helper::marshallEach(mArgc, mArgv, args...);
|
||||||
|
|
||||||
|
|
@ -1243,7 +1243,7 @@ public:
|
||||||
SimConsoleThreadExecCallback cb;
|
SimConsoleThreadExecCallback cb;
|
||||||
SimConsoleThreadExecEvent *evt = new SimConsoleThreadExecEvent(mArgc+sizeof...(ArgTs), NULL, true, &cb);
|
SimConsoleThreadExecEvent *evt = new SimConsoleThreadExecEvent(mArgc+sizeof...(ArgTs), NULL, true, &cb);
|
||||||
evt->populateArgs(mArgv);
|
evt->populateArgs(mArgv);
|
||||||
mArgv[ 0 ].setString(simCB, dStrlen(simCB));
|
mArgv[ 0 ].setString(simCB);
|
||||||
|
|
||||||
Helper::marshallEach(mArgc, mArgv, args...);
|
Helper::marshallEach(mArgc, mArgv, args...);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ SimConsoleEvent::SimConsoleEvent(S32 argc, ConsoleValue *argv, bool onObject)
|
||||||
{
|
{
|
||||||
if (argv)
|
if (argv)
|
||||||
{
|
{
|
||||||
mArgv->setString(argv[i].getString(), dStrlen(argv[i].getString()));
|
mArgv->setString(argv[i].getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -92,7 +92,7 @@ void SimConsoleEvent::populateArgs(ConsoleValue *argv)
|
||||||
{
|
{
|
||||||
for (U32 i=0; i<mArgc; i++)
|
for (U32 i=0; i<mArgc; i++)
|
||||||
{
|
{
|
||||||
argv[i].setString(mArgv[i].getString(), dStrlen(mArgv[i].getString()));
|
argv[i].setString(mArgv[i].getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,7 +111,7 @@ SimConsoleThreadExecCallback::~SimConsoleThreadExecCallback()
|
||||||
void SimConsoleThreadExecCallback::handleCallback(ConsoleValue ret)
|
void SimConsoleThreadExecCallback::handleCallback(ConsoleValue ret)
|
||||||
{
|
{
|
||||||
// can we move this pls?
|
// can we move this pls?
|
||||||
retVal.setString(ret.getString(), dStrlen(ret.getString()));
|
retVal.setString(ret.getString());
|
||||||
sem->release();
|
sem->release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -388,8 +388,6 @@ SimObject* findObject(const char* name)
|
||||||
|
|
||||||
SimObject* findObject(const ConsoleValue &val)
|
SimObject* findObject(const ConsoleValue &val)
|
||||||
{
|
{
|
||||||
if (val.getType() == ConsoleValueType::cvNone)
|
|
||||||
return NULL;
|
|
||||||
if (val.getType() == ConsoleValueType::cvInteger)
|
if (val.getType() == ConsoleValueType::cvInteger)
|
||||||
return findObject((SimObjectId)val.getInt());
|
return findObject((SimObjectId)val.getInt());
|
||||||
return findObject(val.getString());
|
return findObject(val.getString());
|
||||||
|
|
@ -397,8 +395,6 @@ SimObject* findObject(const ConsoleValue &val)
|
||||||
|
|
||||||
SimObject* findObject(ConsoleValue* val)
|
SimObject* findObject(ConsoleValue* val)
|
||||||
{
|
{
|
||||||
if (val->getType() == ConsoleValueType::cvNone)
|
|
||||||
return NULL;
|
|
||||||
if (val->getType() == ConsoleValueType::cvInteger)
|
if (val->getType() == ConsoleValueType::cvInteger)
|
||||||
return findObject((SimObjectId)val->getInt());
|
return findObject((SimObjectId)val->getInt());
|
||||||
return findObject(val->getString());
|
return findObject(val->getString());
|
||||||
|
|
|
||||||
|
|
@ -2962,7 +2962,7 @@ DefineEngineStringlyVariadicMethod( SimObject, call, const char*, 3, 0, "( strin
|
||||||
"@param args Zero or more arguments for the method.\n"
|
"@param args Zero or more arguments for the method.\n"
|
||||||
"@return The result of the method call." )
|
"@return The result of the method call." )
|
||||||
{
|
{
|
||||||
argv[1].setString(argv[2], dStrlen(argv[2]));
|
argv[1].setString(argv[2]);
|
||||||
return Con::execute( object, argc - 1, argv + 1 );
|
return Con::execute( object, argc - 1, argv + 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ void StringStack::setIntValue(U32 i)
|
||||||
void StringStack::setFloatValue(F64 v)
|
void StringStack::setFloatValue(F64 v)
|
||||||
{
|
{
|
||||||
validateBufferSize(mStart + 32);
|
validateBufferSize(mStart + 32);
|
||||||
dSprintf(mBuffer + mStart, 32, "%g", v);
|
dSprintf(mBuffer + mStart, 32, "%.9g", v);
|
||||||
mLen = dStrlen(mBuffer + mStart);
|
mLen = dStrlen(mBuffer + mStart);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -138,16 +138,6 @@ struct StringStack
|
||||||
return mBuffer + mStartOffsets[mStartStackSize-1];
|
return mBuffer + mStartOffsets[mStartStackSize-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline StringStackPtr getStringValuePtr()
|
|
||||||
{
|
|
||||||
return (getStringValue() - mBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline StringStackPtr getPreviousStringValuePtr()
|
|
||||||
{
|
|
||||||
return (getPreviousStringValue() - mBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Advance the start stack, placing a zero length string on the top.
|
/// Advance the start stack, placing a zero length string on the top.
|
||||||
///
|
///
|
||||||
/// @note You should use StringStack::push, not this, if you want to
|
/// @note You should use StringStack::push, not this, if you want to
|
||||||
|
|
@ -184,9 +174,6 @@ struct StringStack
|
||||||
void popFrame();
|
void popFrame();
|
||||||
|
|
||||||
void clearFrames();
|
void clearFrames();
|
||||||
|
|
||||||
/// Get the arguments for a function call from the stack.
|
|
||||||
void getArgcArgv(StringTableEntry name, U32 *argc, const char ***in_argv, bool popStackFrame = false);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern StringStack STR;
|
extern StringStack STR;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue