s4g
0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
|
Заголовочный файл со всеми необхожимыми данными для использования языка, посредством api функций Подробнее...
#include <common/string.h>
#include <limits.h>
#include <cstdio>
Макросы | |
#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 |
языковое/системное простраство имен Подробнее... | |
Резервация памяти | |
| |
#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 int(* | s4g_c_function) (s4g_Main *s4gm) |
тип си(++) функции Подробнее... | |
typedef void(* | s4g_report_func) (s4g_Main *s4gm, int level, const char *format,...) |
тип функции вывода информации и обработки ошибок | |
Настраиваемые типы | |
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 |
указатель | |
Перечисления | |
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,...) |
генерировать сообщение | |
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) |
добавляет путь поиска включаемых файлов | |
Переменные | |
const char | g_aS4GtypeStr [][S4G_MAX_LEN_TYPE_NAME] |
строковое представление типов | |
Заголовочный файл со всеми необхожимыми данными для использования языка, посредством api функций