19 #include <common/array.h> 20 #include <common/assotiativearray.h> 21 #include <common/memalloc.h> 24 #include <common/sxtypes.h> 33 #define S4G_GC_TYPE_DATA_FREE 0 37 #define S4G_GC_TYPE_DATA_PRIVATE 1 40 #define S4G_GC_TYPE_DATA_SYS 2 52 #define S4G_GC_TYPE_VAR_FREE 0 55 #define S4G_GC_TYPE_VAR_SYS 1 62 S4G_OWNERVAR_NONE = -1,
63 S4G_OWNERVAR_CONTEXT = 0,
70 virtual ~s4g_OwnerVar(){}
72 virtual S4G_OWNERVAR getType() = 0;
81 virtual S4G_OWNERVAR getType();
131 ID getKey(
const char *szName);
138 const char* getNameByNum(ID key);
140 void reserve(
int iCount);
142 void remove(
const char *szName);
151 ID isExistsName(
const char *str);
152 bool isExistsNum(ID key);
155 ID isExistsName2(
const char *szName,
s4g_Variable **ppVar);
160 void addVarName(
const char *szName,
s4g_Variable *pVar);
169 mutable const char * tmpName;
170 __forceinline
bool operator==(
const item_name & str)
const 172 return(strcmp(tmpName ? tmpName : Name, str.tmpName ? str.tmpName : str.Name) == 0);
175 __forceinline
bool operator<(
const item_name & str)
const 177 return(strcmp(tmpName ? tmpName : Name, str.tmpName ? str.tmpName : str.Name) < 0);
180 __forceinline
void SetName(
const char * str)
const 186 __forceinline
const char * GetName()
const 188 return(tmpName ? tmpName : Name);
191 __forceinline item_name(
const char * str)
197 __forceinline item_name()
205 const item_name * name;
210 MemAlloc<table_desc, S4G_RESERVE_TABLE_ELEM, 8> m_Mem;
211 typedef AssotiativeArray<item_name, long, false, S4G_RESERVE_TABLE_ELEM> IndexType;
212 typedef const IndexType::Node * IndexNode;
272 const char* getNameByNum(ID key);
275 void setName(
const char *szName);
278 const char* getName();
284 void addVar(
const char *szName);
292 bool isExported(){
return m_isExported; }
328 const char* getNameByNum(ID key);
364 s4g_Sfunction(){ m_pExternVar = 0; m_pExternTable = 0; m_isMarg =
false; m_pMargVar = 0; m_pMargTable = 0; }
392 virtual S4G_OWNERVAR getType() {
return S4G_OWNERVAR_CONTEXT; }
438 S4G_VM_COMMAND_ARITHMETIC_MOD,
474 S4G_VM_COMMAND_BIT_XOR,
475 S4G_VM_COMMAND_BIT_NOT,
476 S4G_VM_COMMAND_BIT_SHIFTR,
477 S4G_VM_COMMAND_BIT_SHIFTL,
478 S4G_VM_COMMAND_BIT_AND,
479 S4G_VM_COMMAND_BIT_OR,
487 #define S4G_COMMAND_EXTRADATA_FETCH_GET_STRING 0 491 #define S4G_COMMAND_EXTRADATA_FETCH_GET_NUMERIC 1 503 m_numFile = m_numStr = -1;
513 m_iExtraData = iExtraData;
(-2) != (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:466
создать и положить на вершину стека значение переменной, имя берет из аргумента
Definition: s4g_types.h:416
сформированная команда, готовая к выполнению, возможно содерижит аргумент и дополнительную переменную...
Definition: s4g_types.h:497
(-2) <= (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:468
получить значение из объекта (таблица, массив, объект класса, строка), который должен содержать други...
Definition: s4g_types.h:429
не рабочий
Definition: s4g_types.h:380
Заголовочный файл стека для языка
сообщение о том что вскоре будет вызвана функция, записать в стек вызовов размер стека исполнения ...
Definition: s4g_types.h:445
S4G_TYPE
все типы данных которые могут быть использованы в скриптах
Definition: s4g.h:160
s4g_Table * m_pOldTable
прошлая таблица с переменными каждый контекст при создании создает себе таблицу, и если мы в текущий ...
Definition: s4g_types.h:400
(-2) - (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:435
int m_iCurrNumCollect
текущй номер сборки мусора
Definition: s4g_types.h:109
переход условный, на вершине стека исполнения должно быть Zero (выталкивается со стека) ...
Definition: s4g_types.h:458
(-2) === (равенство без приведения типов) (-1), оба выталкиваются, на стек ложится результат ...
Definition: s4g_types.h:472
s4g_Variable * m_pExternVar
значение для m_pExternTable.
Definition: s4g_types.h:366
положить на вершину стека
Definition: s4g_types.h:431
ID m_idVar
идентификатор этой переменной в массиве переменных (управляемым сборщиком мусора) ...
Definition: s4g_types.h:107
(-2) == (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:465
тип скриптовая функция
Definition: s4g_types.h:362
контекст содержащий в себе все переменные текущего исполнения
Definition: s4g_types.h:388
Заголовочный файл со всеми необхожимыми данными для использования языка, посредством api функций ...
ID getIdData()
получить id значения этого значения в общем массиве значений (в сборщике мусора)
Definition: s4g_types.h:342
long s4g_int
int
Definition: s4g.h:270
создать массив, поместить в него все элементы со стека (после этого все элементы будут вытолкнуты со ...
Definition: s4g_types.h:417
s4g_Main * s4gm
скриптовая система которая создала
Definition: s4g_types.h:349
удалить значение с вершины стека
Definition: s4g_types.h:432
(-2) < (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:470
void * s4g_pdata
указатель
Definition: s4g.h:282
создать метод, имя в аргументе, -1 - функция-аргумент, -2 сам класс
Definition: s4g_types.h:425
ложит на вершину стека переменную из контекста, из аргумента извлеваются: номер контекста относительн...
Definition: s4g_types.h:428
таблица, наиболее распространенный тип в скриптах
Definition: s4g_types.h:123
создать переменную класса, имя в аргументе, -1 сам класс
Definition: s4g_types.h:424
добавить в таблицу, которая -2, -1 элемент со стека, если есть аргумент то значит это имя для этого п...
Definition: s4g_types.h:419
переход без условный
Definition: s4g_types.h:457
s4g_Variable * m_pMargVar
значение для m_pMargTable.
Definition: s4g_types.h:372
(-2) + (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:434
удаление окружения блока выражений
Definition: s4g_types.h:453
(-2) > (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:469
ID m_numFile
номер файла с кодом
Definition: s4g_types.h:520
s4g_Table * m_pTable
таблица с переменными
Definition: s4g_types.h:393
S4G_VM_COMMAND m_Command
команда виртуальной машины
Definition: s4g_types.h:518
остановить текущее выполнение
Definition: s4g_types.h:413
ID m_numStr
номер строки с кодом которая сгенерировала данную команду
Definition: s4g_types.h:521
создать таблицу и положить на вершину стека
Definition: s4g_types.h:418
добавить родителя (-1) к к классу (-2), после pop(1)
Definition: s4g_types.h:423
s4g_Table * m_pExternTable
подстановка переменных из предыдщуего контекста, в случае если у нас замыкание
Definition: s4g_types.h:367
s4g_Table * m_pTableVars
таблица данных
Definition: s4g_types.h:353
bool m_isMarg
принимает ли функция перенное количество аргументов?
Definition: s4g_types.h:371
S4G_CONTEXT_TYPE_WORK m_TypeWork
тип контекста S4G_CONTEXT_TYPE_WORK, это нужно в случе когда вызывается функция, вызываемая блокирует...
Definition: s4g_types.h:404
s4g_Main * s4gm
скриптовая система которая создала
Definition: s4g_types.h:300
s4g_Stack< String > m_aExternStrs
имена переменных для подстановки из предыдущего контекста, в случае если у нас замыкание ...
Definition: s4g_types.h:368
ID getIdData()
получить id значения этого значения в общем массиве значений (в сборщике мусора)
Definition: s4g_types.h:246
S4G_CONTEXT_TYPE_WORK
типы контекстов
Definition: s4g_types.h:378
переход условный, на вершине стека исполнения должно быть Non-Zero (выталкивается со стека) ...
Definition: s4g_types.h:459
int m_iCurrNumCollect
текущй номер сборки мусора
Definition: s4g_types.h:92
s4g_OwnerVar * m_pOwner
идентификатор владельца (в массиве значений) к которому принадлежит данная переменная ...
Definition: s4g_types.h:108
s4g_Stack< String > m_aArgsNames
имена аргументов
Definition: s4g_types.h:369
(-2) * (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:436
s4g_Table * m_pMargTable
таблица с переменным количеством аргументов
Definition: s4g_types.h:373
постинкремент val++ (-1 элемент стека)
Definition: s4g_types.h:442
!(-1), выталкивается, на стек ложится результат (если значение было что-то похожее на true - значит f...
Definition: s4g_types.h:471
преинкремент ++val (-1 элемент стека)
Definition: s4g_types.h:440
int m_iTypeClass
тип данных для сборщика мусора, см.
Definition: s4g_types.h:94
(-2) !== (неравенство без приведения типов) (-1), оба выталкиваются, на стек ложится результат ...
Definition: s4g_types.h:464
s4g_Data * m_pData
значение переменной
Definition: s4g_types.h:114
Сборщик мусора
Definition: s4g_gc.h:32
s4g_Stack< s4g_Variable * > m_aListVarBaseClass
список базовых классов
Definition: s4g_types.h:310
S4G_VM_COMMAND
команды виртуальной машины
Definition: s4g_types.h:411
рабочий
Definition: s4g_types.h:381
S4G_TYPE m_TypeValue
тип хранимый в data S4G_TYPE.
Definition: s4g_types.h:93
short int s4g_bool
bool
Definition: s4g.h:279
s4g_Stack< String > m_aListVars
список переменных
Definition: s4g_types.h:305
int m_iExtraData
дополнительные переменная
Definition: s4g_types.h:522
сохранить в переменной -2 значение из -1, затем -1 выталкивает
Definition: s4g_types.h:430
s4g_pdata m_pData
указатель на юзердату в случае экпортированного класса
Definition: s4g_types.h:339
int getSize()
размер таблицы в элементах
Definition: s4g_types.h:137
добавить новый (null) элемент в конец таблицы, которая -1, выталкивает таблицу, ложит новый элемент н...
Definition: s4g_types.h:420
bool m_isExported
экспортирован ли класс из C++?
Definition: s4g_types.h:302
ID getIdData()
получить id значения этой таблицы в общем массиве значений (в сборщике мусора)
Definition: s4g_types.h:146
предекремент – val (-1 элемент стека)
Definition: s4g_types.h:441
#define S4G_MAX_LEN_VAR_NAME
максимальная длина имени переменной
Definition: s4g.h:188
создание нового окружения для блока выражений (выделяется новый контекст куда сохраняются все созданн...
Definition: s4g_types.h:452
основа взаимодествия
Definition: s4g_main.h:45
массив переменной длины
Definition: s4g_types.h:221
ID getIdData()
получить id значения этого значения в общем массиве значений (в сборщике мусора)
Definition: s4g_types.h:290
s4g_Stack< s4g_Command > m_aCommands
команды исполнения функции
Definition: s4g_types.h:370
переменная
Definition: s4g_types.h:101
(-2) / (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:437
unsigned long s4g_uint
uint
Definition: s4g.h:273
постдекремент val++ (-1 элемент стека)
Definition: s4g_types.h:443
создать пустой класс и положить его на стек, имя в аргументе
Definition: s4g_types.h:422
s4g_Table * m_pTableMethods
таблица с методами
Definition: s4g_types.h:308
виртуальная машина
Definition: s4g_vm.h:104
вызов функции, из precall бере количество аргументов (count_arg), забирает их со стека, берет переменную функции (count_arg-1) со стека и выталкивает ее
Definition: s4g_types.h:450
s4g_Variable * m_pVarMetaClass
метакласс
Definition: s4g_types.h:351
String m_sName
имя класса
Definition: s4g_types.h:304
мета класс
Definition: s4g_types.h:262
значение
Definition: s4g_types.h:76
очистить верхний контекст
Definition: s4g_types.h:454
ID m_idData
ключ по которому можно обратится к массиву значений и найти этот экземпляр
Definition: s4g_types.h:95
s4g_Variable * m_pVarTableVars
переменная для m_pTableVars.
Definition: s4g_types.h:352
float s4g_float
float
Definition: s4g.h:276
положить на вершину стека значение переменной, имя переменной берется из аргумента, поиск осуществляется во всех доступных контекстах
Definition: s4g_types.h:427
int m_iTypeClass
тип данных для сборщика мусора, см.
Definition: s4g_types.h:106
создать объект класса, класс берет -1 из стека и выталкивает, на стек ложит объект класса ...
Definition: s4g_types.h:415
объект класса
Definition: s4g_types.h:317
s4g_Variable * m_pArg
аргумент для команды (может быть NULL)
Definition: s4g_types.h:519
поместить вершину стека на вершину, то есть -2 и -1 идентичны (не копирует!)
Definition: s4g_types.h:414
рабочий всегда
Definition: s4g_types.h:382
размер всего массива команд
Definition: s4g_types.h:481
(-2) >= (-1), оба выталкиваются, на стек ложится результат
Definition: s4g_types.h:467