![]() |
s4g
0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
|
Макросы | |
| #define | S4G_VERSION "0.9.2" |
| версия | |
| #define | S4G_COPYRIGHT "Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017" |
| копирайт | |
| #define | S4G_SITE "https://s4g.su" |
| сайт | |
| #define | _VOID |
| for warning C4003: not enough actual parameters for macro | |
| #define | S4G_API extern |
| для использования в приложении либо при компилции в библиотеку необходимо глобально объявить дефайн S4G. Подробнее... | |
| #define | S4G_ERROR -1 |
| код ошибки | |
| #define | S4G_OK 0 |
| код успешного выполнения | |
| #define | S4G_MAX_LEN_TYPE_NAME 64 |
| максимальная длина имени типа | |
| #define | S4G_MAX_LEN_VAR_NAME 64 |
| максимальная длина имени переменной | |
| #define | S4G_MAX_LEN_STR_IN_FILE 1024 |
| максимальная длина загружаемого файла | |
| #define | S4G_MAX_CALL 1000 |
| максимальное количество вызовов (рекурсивных и вложенных) | |
| #define | S4G_START_COUNT_CONTEXTS 100 |
| стартовое количество контекстов | |
| #define | S4G_VM_MAX_SIZE_STACK_EXE 1000 |
| максимальный размер стека исполнения виртуальной машины, при превышении будет выдана ошибка | |
| #define | S4G_GLOBAL_NM "_g" |
| обращение в скрипте к глобальному пространству имен | |
| #define | S4G_MARG "args" |
| таблица для обращения к аргументам в случае если функция принимает неопределенное количество аргументов | |
| #define | S4G_NM_GLOBAL INT_MIN |
| глобальное пространство имен Подробнее... | |
| #define | S4G_NM_SYS INT_MIN+1 |
| языковое/системное простраство имен Подробнее... | |
Определения типов | |
| typedef int(* | s4g_c_function) (s4g_Main *s4gm) |
| тип си(++) функции Подробнее... | |
| typedef void(* | s4g_report_func) (s4g_Main *s4gm, int level, const char *format,...) |
| тип функции вывода информации и обработки ошибок | |
Перечисления | |
| enum | S4G_TYPE { S4G_TYPE_NONE = -1, S4G_TYPE_NULL = 0, S4G_TYPE_TABLE = 1, S4G_TYPE_ARRAY = 2, S4G_TYPE_STRING = 3, S4G_TYPE_FLOAT = 4, S4G_TYPE_INT = 5, S4G_TYPE_UINT = 6, S4G_TYPE_BOOL = 7, S4G_TYPE_PDATA = 8, S4G_TYPE_CFUNC = 9, S4G_TYPE_SFUNC = 10, S4G_TYPE_CLASS = 11, S4G_TYPE_CLASS_OBJECT = 12 } |
| все типы данных которые могут быть использованы в скриптах Подробнее... | |
Функции | |
| S4G_API const char * | s4g_MainGetName (s4g_Main *s4gm) |
| возвращает имя скриптовой системы | |
| S4G_API const char * | s4g_StackTrace (s4g_Main *s4gm) |
| возвращает строку с текстом результата трассировки стека вызовов | |
| void | s4g_Report (s4g_Main *s4gm, int level, const char *format,...) |
| стандартная функция выдачи сообщений (заменяема посредством api) | |
| S4G_API const char * | s4g_GetStrType (S4G_TYPE type, char *szStrType=0) |
| возвращает строковое представление типа type в szStrType. | |
| S4G_API void | s4g_SetRf (s4g_report_func fnRf) |
| установить новую функцию выдачи сообщений | |
| S4G_API void | s4g_GenMsg (s4g_Main *s4gm, int iLevel, const char *szFormat,...) |
| генерировать сообщение | |
Переменные | |
| const char | g_aS4GtypeStr [][S4G_MAX_LEN_TYPE_NAME] |
| строковое представление типов | |
Резервация памяти | |
| |
| #define | S4G_RESERVE_VALUE 1000 |
| резерв элементов для переменных | |
| #define | S4G_RESERVE_VALUE_MEM 1000 |
| резерв памяти элементов для переменных | |
| #define | S4G_RESERVE_DATA 1000 |
| резерв элементов для данных | |
| #define | S4G_RESERVE_DATA_MEM 1000 |
| резерв памяти элементов для данных | |
| #define | S4G_RESERVE_BLOCKS 10 |
| резерв элементов блоков | |
| #define | S4G_RESERVE_BLOCKS_MEM 100 |
| резерв элементов блоков | |
| #define | S4G_RESERVE_CONTEXTS 100 |
| резерв элементов для контекстов | |
| #define | S4G_ADD_MEM_CONTEXTS 8 |
| количество создаваемых контекстов на каждый случай нехватки | |
| #define | S4G_RESERVE_CONTEXTS_MEM 100 |
| резерв памяти элементов для контекстов | |
| #define | S4G_RESERVE_STRING_MEM 100 |
| резерв памяти элементов для строк | |
| #define | S4G_RESERVE_SFUNC_MEM 100 |
| резерв памяти элементов для скриптовых функций | |
| #define | S4G_RESERVE_TABLE_MEM 100 |
| резерв памяти элементов для таблиц и массивов | |
| #define | S4G_RESERVE_TABLE_ELEM 8 |
| на сколько элементов будет резервироваться место в таблицах | |
| #define | S4G_RESERVE_CLASS_MEM 10 |
| резерв памяти элементов для классов | |
| #define | S4G_RESERVE_CLASS_OBJECT_MEM 100 |
| резерв памяти элементов для объектов класса | |
Уровни сообщений | |
| #define | S4G_MSG_LEVEL_NOTICE 0 |
| уведомление | |
| #define | S4G_MSG_LEVEL_WARNING 1 |
| предупреждение | |
| #define | S4G_MSG_LEVEL_ERROR 2 |
| ошибка | |
Настраиваемые типы | |
| typedef long | s4g_int |
| int | |
| typedef unsigned long | s4g_uint |
| uint | |
| typedef float | s4g_float |
| float | |
| typedef short int | s4g_bool |
| bool | |
| typedef void * | s4g_pdata |
| указатель | |
Main | |
| S4G_API s4g_Main * | s4g_MainInit (const char *szName) |
| инициализация скриптовой системы | |
| S4G_API int | s4g_MainGetState (s4g_Main *s4gm) |
| возвращает состояние скриптовой системы, S4G_ERROR - ошибка, S4G_OK - все нормально | |
| S4G_API const char * | s4g_MainGetErrorStr (s4g_Main *s4gm) |
| возвращает текст с ошибкой | |
| S4G_API void | s4g_MainClear (s4g_Main *s4gm) |
| очистка скриптовой системы (для перезагрзуки кода) | |
| S4G_API void | s4g_MainKill (s4g_Main *s4gm) |
| завершение работы скриптовой системы | |
| S4G_API UINT | s4g_MainGetTime (s4g_Main *s4gm) |
| возвращает время инициализации скриптовой системы (в млсек) | |
Load | |
| S4G_API int | s4g_LoadCode (s4g_Main *s4gm, const char *szCode, bool isFile=true) |
| загрузить код, если isFile == true значит szCode содержит путь, иначе szCode содержит код, в случае успеха возвращает S4G_OK иначе S4G_ERROR. | |
GC | |
| S4G_API void | s4g_GCcall (s4g_Main *s4gm) |
| вызов сборки мусора | |
| S4G_API int | s4g_GCgetMemBusy (s4g_Main *s4gm) |
| количество занятой памяти в байтах | |
| S4G_API int | s4g_GCgetMemAllocated (s4g_Main *s4gm) |
| количество выделенной памяти в байтах | |
| S4G_API s4g_Variable * | s4g_GCgetNull (s4g_Main *s4gm) |
| возвращает константную переменную null (она уже создана и менять ее не надо) | |
| S4G_API s4g_Variable * | s4g_GCgetBool (s4g_Main *s4gm, bool bf) |
| возвращает константную переменную bool типа (она уже создана и менять ее не надо) | |
| S4G_API s4g_Variable * | s4g_GCgetTrue (s4g_Main *s4gm) |
| возвращает константную переменную bool типа true значения (она уже создана и менять ее не надо) | |
| S4G_API s4g_Variable * | s4g_GCgetFalse (s4g_Main *s4gm) |
| возвращает константную переменную bool типа false значения (она уже создана и менять ее не надо) | |
С(++) => stack | |
| S4G_API void | s4g_StackPush_TableEmpty (s4g_Main *s4gm, int iCountReserve) |
| вставка на вершину стека пустой таблицы, iCountReserve - резерв на количество элементов в таблице | |
| S4G_API void | s4g_StackPush_Cfunc (s4g_Main *s4gm, s4g_c_function fnFunc) |
| вставка на вершину стека C++ функции | |
| S4G_API void | s4g_StackPush_Int (s4g_Main *s4gm, s4g_int num) |
| вставка на вершину стека int. | |
| S4G_API void | s4g_StackPush_Uint (s4g_Main *s4gm, s4g_uint num) |
| вставка на вершину стека uint. | |
| S4G_API void | s4g_StackPush_Float (s4g_Main *s4gm, s4g_float num) |
| вставка на вершину стека float. | |
| S4G_API void | s4g_StackPush_Str (s4g_Main *s4gm, const char *szStr) |
| вставка на вершину стека строки | |
| S4G_API void | s4g_StackPush_Bool (s4g_Main *s4gm, s4g_bool bf) |
| вставка на вершину стека bool. | |
| S4G_API void | s4g_StackPush_Pdata (s4g_Main *s4gm, s4g_pdata pData) |
| вставка на вершину стека юзердаты | |
| S4G_API void | s4g_StackPush_Null (s4g_Main *s4gm) |
| вставка на вершину стека null. | |
| S4G_API void | s4g_StackPush_Var (s4g_Main *s4gm, s4g_Variable *pVar) |
| вставка на вершину стека s4g_Variable. | |
| S4G_API void | s4g_StackPush_ClassObject (s4g_Main *s4gm, s4g_pdata pData=0) |
| создание и вставка на вершину стека объекта класса, класс должен быть на вершине стека, после этого вызова класс будет вытолкнут из стека | |
| S4G_API void | s4g_StackPush_Class (s4g_Main *s4gm) |
| создание и вставка на вершину стека класса | |
| S4G_API void | s4g_StackPush_ClassVar (s4g_Main *s4gm, const char *szName) |
| создание переменной в классе (на вершине стека) szName. | |
| S4G_API void | s4g_StackPush_ClassMethod (s4g_Main *s4gm, const char *szName, s4g_c_function fnMethod) |
| добавление метода к классу (на вершине стека) с именем szName и C/C++ функции fnMethod. | |
stack => script | |
| S4G_API void | s4g_StackStore (s4g_Main *s4gm, int iIndex, const char *szName) |
| функция сохранения в пространство имен, аналогично table(stack[index])[name] = stack[-1];. Подробнее... | |
| S4G_API void | s4g_StackGet2Top (s4g_Main *s4gm, int iIndex, const char *szName) |
| получить значения Подробнее... | |
stack => C(++) | |
| S4G_API int | s4g_StackIs_Int (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом int. | |
| S4G_API int | s4g_StackIs_Uint (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом uint. | |
| S4G_API int | s4g_StackIs_Float (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом float. | |
| S4G_API int | s4g_StackIs_Str (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex строкой | |
| S4G_API int | s4g_StackIs_Bool (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом bool. | |
| S4G_API int | s4g_StackIs_Cfunc (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом C++ функцией | |
| S4G_API int | s4g_StackIs_Sfunc (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом скриптовой функцией | |
| S4G_API int | s4g_StackIs_Table (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом таблицей | |
| S4G_API int | s4g_StackIs_Pdata (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом юзердатой | |
| S4G_API int | s4g_StackIs_Null (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex типом null. | |
| S4G_API int | s4g_StackIs_Class (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex классом | |
| S4G_API int | s4g_StackIs_ClassObject (s4g_Main *s4gm, int iIndex) |
| является ли значение переменной в стеке по номеру iIndex объектом класса | |
| S4G_API S4G_TYPE | s4g_StackGet_Type (s4g_Main *s4gm, int iIndex) |
| возвращает тип значения переменной по номеру в стеке iIndex. | |
| S4G_API s4g_Variable * | s4g_StackGet_Var (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к int типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_int | s4g_StackGet_Int (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к int типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_uint | s4g_StackGet_Uint (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к uint типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_float | s4g_StackGet_Float (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к float типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_bool | s4g_StackGet_Bool (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к bool типу значение перменной по номеру iIndex в стеке | |
| S4G_API const char * | s4g_StackGet_Str (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к string типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_c_function | s4g_StackGet_Cfunc (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к C++ function типу значение перменной по номеру iIndex в стеке | |
| S4G_API s4g_pdata | s4g_StackGet_Pdata (s4g_Main *s4gm, int iIndex) |
| возвращает приведенное к юзердата типу значение перменной по номеру iIndex в стеке | |
| S4G_API void | s4g_StackPop (s4g_Main *s4gm, int iCount) |
| выталкивает из стека iCount значений | |
| S4G_API int | s4g_StackGetTop (s4g_Main *s4gm) |
| количество элементов в стеке, и есесно номер вершины стека | |
script call | |
| |
| S4G_API void | s4g_Call (s4g_Main *s4gm, bool isCallFunc=false) |
| вызов функции/исполнения скрипта | |
| S4G_API void | s4g_Precall (s4g_Main *s4gm) |
| сообщение скриптовой системе о том что будет вызывана функция Подробнее... | |
script => C(++) function | |
| |
| S4G_API int | s4g_Cfunc_CountArg (s4g_Main *s4gm) |
| количество аргументов которые были переданы функции | |
| S4G_API s4g_Variable * | s4g_CfuncGet_Arg (s4g_Main *s4gm, int nArg) |
| возвращает s4g_Variable значения аргумента | |
| S4G_API s4g_int | s4g_CfuncGet_ArgInt (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу int. | |
| S4G_API s4g_uint | s4g_CfuncGet_ArgUint (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу uint. | |
| S4G_API s4g_float | s4g_CfuncGet_ArgFloat (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу float. | |
| S4G_API s4g_bool | s4g_CfuncGet_ArgBool (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу bool. | |
| S4G_API const char * | s4g_CfuncGet_ArgStr (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу string. | |
| S4G_API String * | s4g_CfuncGet_ArgStr2 (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу string. | |
| S4G_API s4g_c_function | s4g_CfuncGet_ArgCfunc (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу int. | |
| S4G_API s4g_pdata | s4g_CfuncGet_ArgPdata (s4g_Main *s4gm, int nArg) |
| преобразование аргумента функции к типу юзердата | |
| S4G_API int | s4g_CfuncIs_ArgNull (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом null. | |
| S4G_API int | s4g_CfuncIs_ArgInt (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом int. | |
| S4G_API int | s4g_CfuncIs_ArgUint (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом uint. | |
| S4G_API int | s4g_CfuncIs_ArgFloat (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом float. | |
| S4G_API int | s4g_CfuncIs_ArgBool (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом bool. | |
| S4G_API int | s4g_CfuncIs_ArgStr (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом string. | |
| S4G_API int | s4g_CfuncIs_ArgTable (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом table. | |
| S4G_API int | s4g_CfuncIs_ArgArray (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом array. | |
| S4G_API int | s4g_CfuncIs_ArgCfunc (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом C++ function. | |
| S4G_API int | s4g_CfuncIs_ArgSfunc (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом скриптовой функции | |
| S4G_API int | s4g_CfuncIs_ArgPdata (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом юзердата | |
| S4G_API int | s4g_CfuncIs_ArgClassObject (s4g_Main *s4gm, int nArg) |
| является ли значение аргумента функции типом объект класса | |
| S4G_API S4G_TYPE | s4g_CfuncGet_Type (s4g_Main *s4gm, int nArg) |
| возвращает тип аргумента | |
| S4G_API const char * | s4g_CfuncGet_TypeStr (s4g_Main *s4gm, int nArg, char *szStr=0) |
| возвращает строковое предствление типа аргумента | |
Variable | |
| S4G_API const char * | s4g_VarGet_Name (s4g_Main *s4gm, s4g_Variable *pVar) |
| возвращает имя переменной | |
| S4G_API S4G_TYPE | s4g_VarGet_Type (s4g_Variable *pVar) |
| возвращает тип переменной | |
| S4G_API int | s4g_TableGet_Size (s4g_Table *pTable) |
| возвращает размер таблицы | |
| S4G_API void | s4g_TableAdd_Var (s4g_Table *pTable, s4g_Variable *pVar, const char *szName) |
| добавить переменную в таблицу | |
| S4G_API int | s4g_ArrayGet_Size (s4g_Array *pArray) |
| возвращает размер массива | |
| S4G_API bool | s4g_ClassObjectSet_Data (s4g_Variable *pVar, s4g_pdata pData) |
| установка юзердаты для объекта класса, возвращает true если удачно прошло | |
| S4G_API s4g_pdata | s4g_ClassObjectGet_Data (s4g_Variable *pVar) |
| возвращает юзердату объекта класса | |
| S4G_API s4g_Variable * | s4g_TableGat_Var (s4g_Table *pTable, int iKey) |
| возвращает s4g_Variable* которая располагается в таблице по ключу key, если есть, иначе 0. | |
DEBUG | |
| S4G_API const char * | s4g_Dbg_GetFile (s4g_Main *s4gm, ID id, char *szStr=0) |
| возвращает путь до файла загруженного скрипта по его id (если str то записывает в него) | |
| S4G_API const char * | s4g_Dbg_GetCurrFile (s4g_Main *s4gm, char *szStr=0) |
| возвращает путь до файла скрипта который выполняется в данный момент (если str то записывает в него) | |
| S4G_API int | s4g_Dbg_GetCurrStr (s4g_Main *s4gm, char *szStr=0) |
| возвращает номер строки файла скрипта который выполняется в данный момент (если str то записывает в него) | |
| S4G_API const char * | s4g_Dbg_GetCurrFunc (s4g_Main *s4gm, char *szStr=0) |
| возвращает функцию которая выполняется в данный момент (если str то записывает в него) | |
Pre Process | |
| S4G_API bool | s4g_PP_Defined (s4g_Main *s4gm, const char *szDefine) |
| объявлен ли дефайн | |
| S4G_API void | s4g_PP_Define (s4g_Main *s4gm, const char *szDefine) |
| обьявляет новый дефайн | |
| S4G_API void | s4g_PP_Undef (s4g_Main *s4gm, const char *szDefine) |
| удаляет указанный дефайн | |
| S4G_API void | s4g_PP_AddIncludePath (s4g_Main *s4gm, const char *szPath) |
| добавляет путь поиска включаемых файлов | |
| #define S4G_API extern |
#include <s4g.h>
для использования в приложении либо при компилции в библиотеку необходимо глобально объявить дефайн S4G.
| #define S4G_NM_GLOBAL INT_MIN |
#include <s4g.h>
глобальное пространство имен
| #define S4G_NM_SYS INT_MIN+1 |
#include <s4g.h>
языковое/системное простраство имен
| typedef int(* s4g_c_function) (s4g_Main *s4gm) |
| enum S4G_TYPE |
#include <s4g.h>
все типы данных которые могут быть использованы в скриптах
#include <s4g.h>
функция сохранения в пространство имен, аналогично table(stack[index])[name] = stack[-1];.
#include <s4g.h>
получить значения
#include <s4g.h>
сообщение скриптовой системе о том что будет вызывана функция