25 #include "common/textconsole.h" 35 class ScriptFunctions;
37 const int kScriptStackSize = 1000;
38 const int kScriptStackLimit = kScriptStackSize + 1;
43 for (int16 i = 0; i < kScriptStackSize; i++)
45 _stackPos = kScriptStackSize;
48 inline int16 top()
const {
return _stack[_stackPos]; }
50 if (_stackPos == kScriptStackSize)
51 error(
"ScriptStack::pop() Stack underflow");
52 return _stack[_stackPos++];
54 inline void push(int16 value = 0) {
56 error(
"ScriptStack::push() Stack overflow");
57 _stack[--_stackPos] = value;
59 inline void setTop(int16 value) { _stack[_stackPos] = value; }
60 inline int16 peek(int16 index)
const {
61 if (index >= kScriptStackSize)
62 error(
"ScriptStack::peek(%d) Stack underflow", index);
64 error(
"ScriptStack::peek(%d) Stack overflow", index);
67 inline void poke(int16 index, int16 value) {
68 if (index >= kScriptStackSize)
69 error(
"ScriptStack::poke(%d) Stack underflow", index);
71 error(
"ScriptStack::poke(%d) Stack overflow", index);
72 _stack[index] = value;
74 inline void alloc(int16 count) { _stackPos -= count; }
75 inline void free(int16 count) { _stackPos += count; }
76 inline int16 getStackPos()
const {
return _stackPos; }
77 inline void setStackPos(int16 stackPtr) {
78 if (stackPtr > kScriptStackSize)
79 error(
"ScriptStack::setStackPos(%d) Stack underflow", stackPtr);
80 else if (stackPtr < 0)
81 error(
"ScriptStack::setStackPos(%d) Stack overflow", stackPtr);
84 inline int16 *getStackPtr() {
return &_stack[_stackPos]; }
86 int16 _stack[kScriptStackSize];
94 int16 runScript(int16 scriptObjectIndex, int16 argc = 0, int16 *argv =
nullptr);
96 void dumpScript(int16 objectIndex,
int *opcodeStats,
int *externStats);
97 void dumpObject(int16 objectIndex);
98 void dumpAllScripts();
104 int16 _entryStackPos, _localStackPos;
105 int16 _runningScriptObjectIndex;
106 byte *_codeBase, *_codeIp;
126 void cmd_branchTrue();
127 void cmd_branchFalse();
144 void cmd_loadConstant();
145 void cmd_loadVariable();
146 void cmd_getObjectProperty();
147 void cmd_setObjectProperty();
151 void cmd_printNumber();
175 void cmd_randomize();
181 void cmd_functionp();
void NORETURN_PRE error(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: scriptfuncs.h:38