Beginnings of the "pass everything using a native type wrapper" console code.

- ConsoleValue class is now the base value class.
- ConsoleValueRef is now used to supply function parameters. Values are disposable.
- Script functions return values instead of just strings where possible.
- Variables can be disposable strings
- Bytecode changed

Fix the issues with console method parameters and fields which prevented missions from loading.
This commit is contained in:
James Urquhart 2012-09-23 09:59:48 +01:00
parent 394d87cd54
commit 38c8e52c1d
68 changed files with 1511 additions and 529 deletions

View file

@ -262,7 +262,8 @@ extern "C" {
if (!entry)
return;
entry->cb.mVoidCallbackFunc(NULL, argc, argv);
StringStackConsoleWrapper args(argc, argv);
entry->cb.mVoidCallbackFunc(NULL, args.count(), args);
}
F32 torque_callfloatfunction(const char* nameSpace, const char* name, S32 argc, const char ** argv)
@ -273,7 +274,8 @@ extern "C" {
if (!entry)
return 0.0f;
return entry->cb.mFloatCallbackFunc(NULL, argc, argv);
StringStackConsoleWrapper args(argc, argv);
return entry->cb.mFloatCallbackFunc(NULL, args.count(), args);
}
S32 torque_callintfunction(const char* nameSpace, const char* name, S32 argc, const char ** argv)
@ -284,7 +286,8 @@ extern "C" {
if (!entry)
return 0;
return entry->cb.mIntCallbackFunc(NULL, argc, argv);
StringStackConsoleWrapper args(argc, argv);
return entry->cb.mIntCallbackFunc(NULL, args.count(), args);
}
@ -295,7 +298,8 @@ extern "C" {
if (!entry)
return "";
return entry->cb.mStringCallbackFunc(NULL, argc, argv);
StringStackConsoleWrapper args(argc, argv);
return entry->cb.mStringCallbackFunc(NULL, args.count(), args);
}
bool torque_callboolfunction(const char* nameSpace, const char* name, S32 argc, const char ** argv)
@ -305,7 +309,8 @@ extern "C" {
if (!entry)
return "";
return entry->cb.mBoolCallbackFunc(NULL, argc, argv);
StringStackConsoleWrapper args(argc, argv);
return entry->cb.mBoolCallbackFunc(NULL, args.count(), args);
}
@ -319,7 +324,8 @@ extern "C" {
if(!entry->mFunctionOffset)
return "";
const char* ret = entry->mCode->exec(entry->mFunctionOffset, StringTable->insert(name), entry->mNamespace, argc, argv, false, entry->mPackage);
StringStackConsoleWrapper args(argc, argv);
const char* ret = entry->mCode->exec(entry->mFunctionOffset, StringTable->insert(name), entry->mNamespace, args.count(), args, false, entry->mPackage);
if (!ret || !dStrlen(ret))
return "";