31 #define S4G_VM_OP_ARIF_ERROR_TYPE1(tval1) \ 32 sprintf(this->m_szError, "[%s]:%d - attempt to perform arithmetic on arg #1 (a '%s' value)", getCurrExeFile(), getCurrExeStr(), s4g_GetStrType(tval1->m_pData->m_TypeValue)); \ 35 #define S4G_VM_OP_ARIF_ERROR_TYPE2(tval2) \ 36 sprintf(this->m_szError, "[%s]:%d - attempt to perform arithmetic on arg #2 (a '%s' value)", getCurrExeFile(), getCurrExeStr(), s4g_GetStrType(tval2->m_pData->m_TypeValue)); \ 39 #define S4G_VM_OP_ARIF_ERROR_UNSUN_UNRES(tval2) \ 40 sprintf(this->m_szError, "[%s]:%d - unary symbol is unresolved to '%s' type", getCurrExeFile(), getCurrExeStr(), s4g_GetStrType(tval2->m_pData->m_TypeValue)); \ 43 #define S4G_VM_OP_ARIF_INCR_DECR_ERR(tval) \ 44 sprintf(this->m_szError, "[%s]:%d - expected number type, but got '%s' type", getCurrExeFile(), getCurrExeStr(), s4g_GetStrType(tval->m_pData->m_TypeValue)); \ 47 #define S4G_VM_PRECOND_STACKEXE(state, retval) if(!state) return retval; 49 #define S4G_VM_PRECOND_COMMANDARG(arg, funcname) \ 53 sprintf(this->m_szError, "[%s]:%d - argument of command is empty, vm function '%s'", getCurrExeFile(), getCurrExeStr(), funcname); \ 120 void returnPrevState();
123 bool precondStackExe(
int iCountExpected,
const char *szFuncName);
156 void comClassParentAdd();
159 void comClassVarAdd();
162 void comClassMethodAdd();
169 void comTableInsert();
172 void comTableAppend();
196 void comArithmeticAdd();
199 void comArithmeticSub();
202 void comArithmeticMul();
205 void comArithmeticDiv();
208 void comArithmeticMod();
218 void comJumpNonZero();
275 void comTopContextClear();
301 const char* getCurrExeFile(
char *szStr = 0);
304 int getCurrExeStr(
char *szStr = 0);
307 const char* getCurrExeFunc(
char *szStr = 0);
310 const char* stackTrace();
315 void setError(
const char *szStr);
318 const char* getError();
377 char m_szError[1024];
ID m_idContextNew
созданный контекст (id)
Definition: s4g_vm.h:78
int getSizeStackExecute()
возвращает размер стека исполнения
Definition: s4g_vm.h:339
int m_idCurrPos2ArrCommand
позиция в стеке исполняемых команд
Definition: s4g_vm.h:76
S4G_TYPE getTypeLastCall()
возвращает тип последней исполняемой/исполненной функции
Definition: s4g_vm.h:342
S4G_TYPE typeLastCallFunc
тип последней исполняемой/исполненной функции
Definition: s4g_vm.h:353
сформированная команда, готовая к выполнению, возможно содерижит аргумент и дополнительную переменную...
Definition: s4g_types.h:497
s4g_Variable * m_pGvar
переменная хранящая в себе глобальное пространство имен
Definition: s4g_vm.h:365
S4G_TYPE
все типы данных которые могут быть использованы в скриптах
Definition: s4g.h:160
структура описывающая сохраненное предыдущее состояние при вызове функции и содержащее имя вызыванной...
Definition: s4g_vm.h:60
void popStackExecute(int iCount=1)
вытолкнуть со стека исполнения данные
Definition: s4g_vm.h:333
s4g_Table * m_pTableVars
таблица с переменными (окружением)
Definition: s4g_vm.h:75
s4g_Variable * getStackExecute(int iNum)
возвращает переменную со стека исполнения
Definition: s4g_vm.h:336
s4g_Stack< s4g_Variable *, 64 > m_aStackArgs
стек аргументов вызванной в даннй момент Си функции
Definition: s4g_vm.h:393
int m_iCountCurrOpenBlocks
количество текущих открытых блоков, именно текущих, потому что нужно их котролировать и внутри функци...
Definition: s4g_vm.h:391
s4g_Table * m_pCurrTable
текущее установленное пространство имен, если выполняется функция то пространство имен функции ...
Definition: s4g_vm.h:368
S4G_VM_LOCALEXE
локальное состоние работы машины
Definition: s4g_vm.h:24
запуск функции (пвторный запуск уже запущенной машины), при этом машина после завершения функции зака...
Definition: s4g_vm.h:28
s4g_Stack< s4g_CallData * > m_aStackCall
стэк вызовов с сохраненным предыдущим состоянием
Definition: s4g_vm.h:395
основной запуск
Definition: s4g_vm.h:27
Заголовочный файл основы взаимодествия хоста со скриптами
void pushStackExecute(s4g_Variable *pVar)
запихнуть в стек исполнения значение
Definition: s4g_vm.h:330
таблица, наиболее распространенный тип в скриптах
Definition: s4g_types.h:123
int m_iStackSize
размер стека исполнения
Definition: s4g_vm.h:81
ID m_idContextLastDeactivated
поледний деактивированный контекст (id)
Definition: s4g_vm.h:77
S4G_VM_COMMAND m_vm_command
текущая команда машины
Definition: s4g_vm.h:381
String m_sStackTrace
строка для трассировки стека
Definition: s4g_vm.h:374
выход, ожидает выхода
Definition: s4g_vm.h:26
int getStackArgsSize()
возвращает количество аргументов вызываемой С++ функции
Definition: s4g_vm.h:324
данные превызова функции
Definition: s4g_vm.h:88
s4g_Variable * getArgFromStackArgs(int iNum)
возвращает аргумент из стека аргументов для вызываемой C++ функции, по номеру (1 ... N)
Definition: s4g_vm.h:327
int m_iSizeStack
размер стека
Definition: s4g_vm.h:94
s4g_Stack< s4g_Command > * m_pCurrArrCommand
команды выполнения
Definition: s4g_vm.h:74
s4g_Stack< s4g_CallData * > m_aStackBloks
стэк блоков с сохраненным предыдущим состоянием
Definition: s4g_vm.h:386
int m_iCountCurrOpenBlocks
количество открытых блоков
Definition: s4g_vm.h:80
S4G_VM_COMMAND
команды виртуальной машины
Definition: s4g_types.h:411
s4g_Stack< s4g_Command > * m_pCurrArrCommand
текущий указатель на стэк команд в исполнении
Definition: s4g_vm.h:356
s4g_Table * m_pGtable
глобальное пространство имен _g.
Definition: s4g_vm.h:362
s4g_Variable * m_pVar
переменная объекта которому принадлежит функция, в случае вызова метода класса, иначе 0...
Definition: s4g_vm.h:97
основа взаимодествия
Definition: s4g_main.h:45
s4g_Stack< s4g_Variable *, S4G_VM_MAX_SIZE_STACK_EXE > m_oStackExecute
стек выполнения
Definition: s4g_vm.h:371
s4g_Stack< s4g_PrecallData *, S4G_MAX_CALL+1 > m_aStackSizesStackExe
хранит размер стека исполнения на момент добавления значения
Definition: s4g_vm.h:400
s4g_Variable * pVarCurrArg
аргумент текущей команды
Definition: s4g_vm.h:382
переменная
Definition: s4g_types.h:101
s4g_Command * m_pCurrCommand
текущая команда с данными
Definition: s4g_vm.h:379
bool m_canExecute
можно ли выполнять код ( run при удачном запуске установит ее в true)
Definition: s4g_vm.h:350
ID m_idContextExtern
подставляемый контекст для замыканий (id)
Definition: s4g_vm.h:79
bool hasError()
установлена ли ошибка машине?
Definition: s4g_vm.h:321
ID m_idCurrPos2ArrCommand
текущее положение в текущем стеке исполнения m_pCurrArrCommand.
Definition: s4g_vm.h:359
MemAlloc< s4g_CallData, S4G_RESERVE_BLOCKS_MEM > m_oMemCallData
резерваци памяти для s4g_CallData.
Definition: s4g_vm.h:402
s4g_Variable * m_pVarFunc
переменная со значением функции
Definition: s4g_vm.h:82
виртуальная машина
Definition: s4g_vm.h:104
Заголовочный файл с основными типами данных
int m_iError
есть ли ошибка? -1 есть, остальное все в норме
Definition: s4g_vm.h:376
размер всего массива команд
Definition: s4g_types.h:481