s4g  0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
s4g.h
См. документацию.
1 
2 /*
3 Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017
4 license MIT see in LICENSE or
5 https://s4g.su/
6 s4g version 0.9.2
7 */
8 
14 #ifndef __S4G_H
15 #define __S4G_H
16 
114 #include <common/string.h>
115 #include <limits.h>
116 #include <cstdio>
117 
118 #if defined(_WINDOWS)
119 # include <Windows.h>
120 #endif
121 
122 
127 #define S4G_VERSION "0.9.2"
129 
131 #define S4G_COPYRIGHT "Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017"
132 
134 #define S4G_SITE "https://s4g.su"
135 
137 #define _VOID
138 
143 #if defined(S4G_BUILD_LIB)
144  #if defined(S4G_EXE)
145  #define S4G_API extern "C" __declspec (dllimport)
146  #elif defined(S4G_LIB)
147  #define S4G_API extern "C" __declspec (dllexport)
148  #endif
149 #else
150  #define S4G_API extern
151 #endif
152 
154 #define S4G_ERROR -1
155 
157 #define S4G_OK 0
158 
161 {
176 };
177 
178 struct s4g_Main;
179 struct s4g_Variable;
180 struct s4g_Table;
181 struct s4g_Array;
182 struct String;
183 typedef int ID;
184 
185 
186 //const
187 #define S4G_MAX_LEN_TYPE_NAME 64
188 #define S4G_MAX_LEN_VAR_NAME 64
189 #define S4G_MAX_LEN_STR_IN_FILE 1024
191 #define S4G_MAX_CALL 1000
192 #define S4G_START_COUNT_CONTEXTS 100
193 #define S4G_VM_MAX_SIZE_STACK_EXE 1000
195 #define S4G_GLOBAL_NM "_g"
196 #define S4G_MARG "args"
204 #define S4G_RESERVE_VALUE 1000
206 #define S4G_RESERVE_VALUE_MEM 1000
208 
209 
211 #define S4G_RESERVE_DATA 1000
212 #define S4G_RESERVE_DATA_MEM 1000
214 
216 #define S4G_RESERVE_BLOCKS 10
217 #define S4G_RESERVE_BLOCKS_MEM 100
219 #define S4G_RESERVE_CONTEXTS 100
221 #define S4G_ADD_MEM_CONTEXTS 8
223 #define S4G_RESERVE_CONTEXTS_MEM 100
225 
227 #define S4G_RESERVE_STRING_MEM 100
228 
230 #define S4G_RESERVE_SFUNC_MEM 100
231 
233 #define S4G_RESERVE_TABLE_MEM 100
234 #define S4G_RESERVE_TABLE_ELEM 8
236 
238 #define S4G_RESERVE_CLASS_MEM 10
239 
241 #define S4G_RESERVE_CLASS_OBJECT_MEM 100
242 
244 
245 
249 #define S4G_MSG_LEVEL_NOTICE 0
251 
253 #define S4G_MSG_LEVEL_WARNING 1
254 
256 #define S4G_MSG_LEVEL_ERROR 2
257 
259 
260 #if defined(_WINDOWS)
261 #define DBG_BREAK _asm { int 3 }
262 #else
263 #define DBG_BREAK asm("int $3");
264 #endif
265 
269 typedef long s4g_int;
271 
273 typedef unsigned long s4g_uint;
274 
276 typedef float s4g_float;
277 
279 typedef short int s4g_bool;
280 
282 typedef void* s4g_pdata;
283 
285 
289 typedef int(*s4g_c_function) (s4g_Main* s4gm);
290 
292 typedef void(*s4g_report_func) (s4g_Main* s4gm, int level, const char* format, ...);
293 
294 S4G_API const char* s4g_MainGetName(s4g_Main *s4gm);
295 
296 
297 S4G_API const char* s4g_StackTrace(s4g_Main *s4gm);
298 
300 inline void s4g_Report(s4g_Main* s4gm, int level, const char* format, ...)
301 {
302 #if defined(_WINDOWS)
303  AllocConsole();
304  freopen("CONOUT$", "wt", stdout);
305 #endif
306  char buf[4096];
307  va_list va;
308  va_start(va, format);
309  vsprintf_s(buf, sizeof(buf), format, va);
310  va_end(va);
311 
312  if (!s4gm)
313  {
314  fprintf(stdout, "s4g null object s4g_Main! Message: %s", buf);
315 /*#ifndef S4G_FASTFAIL
316  Sleep(S4G_COUNT_TIME_EXPECT_EXIT);
317 #endif
318  exit(1);*/
319  }
320 
321  if (level == 0)
322  fprintf(stdout, "s4g %s notice: %s\n", s4g_MainGetName(s4gm), buf);
323  else if (level == 1)
324  fprintf(stdout, "s4g %s warning: %s\n", s4g_MainGetName(s4gm), buf);
325  else
326  {
327  fprintf(stdout, "s4g %s error: %s\n", s4g_MainGetName(s4gm), buf);
328  //fprintf(stdout, "stack trace: %s", s4g_StackTrace(s4gm));
329 /*#ifndef S4G_FASTFAIL
330  Sleep(S4G_COUNT_TIME_EXPECT_EXIT);
331 #endif
332  exit(1);*/
333  }
334 }
335 
338 "none",
339 "null",
340 "table",
341 "array",
342 "string",
343 "float",
344 "int",
345 "uint",
346 "bool",
347 "pointer_data",
348 "cfunc",
349 "sfunc",
350 "class",
351 "class_object"
352 };
353 
354 //############################################################################
355 
359 #define S4G_NM_GLOBAL INT_MIN
360 
364 #define S4G_NM_SYS INT_MIN+1
365 
366 //##########################################################################
367 
369 S4G_API const char* s4g_GetStrType(S4G_TYPE type, char *szStrType = 0);
370 
372 S4G_API void s4g_SetRf(s4g_report_func fnRf);
373 
375 S4G_API void s4g_GenMsg(s4g_Main *s4gm, int iLevel, const char *szFormat, ...);
376 
377 //##########################################################################
378 
382 S4G_API s4g_Main* s4g_MainInit(const char *szName);
384 
387 
389 S4G_API const char* s4g_MainGetErrorStr(s4g_Main *s4gm);
390 
392 S4G_API void s4g_MainClear(s4g_Main* s4gm);
393 
395 S4G_API void s4g_MainKill(s4g_Main *s4gm);
396 
398 S4G_API UINT s4g_MainGetTime(s4g_Main *s4gm);
399 
401 S4G_API const char* s4g_MainGetName(s4g_Main *s4gm);
402 
404 
405 //##########################################################################
406 
410 S4G_API int s4g_LoadCode(s4g_Main *s4gm, const char *szCode, bool isFile = true);
412 
414 
415 //##########################################################################
416 
420 S4G_API void s4g_GCcall(s4g_Main *s4gm);
422 
424 S4G_API int s4g_GCgetMemBusy(s4g_Main *s4gm);
425 
428 
431 
433 S4G_API s4g_Variable* s4g_GCgetBool(s4g_Main *s4gm, bool bf);
434 
437 
440 
442 
443 //##########################################################################
444 
448 S4G_API void s4g_StackPush_TableEmpty(s4g_Main *s4gm, int iCountReserve);
450 
453 
455 S4G_API void s4g_StackPush_Int(s4g_Main *s4gm, s4g_int num);
456 
459 
462 
464 S4G_API void s4g_StackPush_Str(s4g_Main *s4gm, const char *szStr);
465 
468 
470 S4G_API void s4g_StackPush_Pdata(s4g_Main *s4gm, s4g_pdata pData);
471 
474 
477 
480 
483 
485 S4G_API void s4g_StackPush_ClassVar(s4g_Main *s4gm, const char *szName);
486 
488 S4G_API void s4g_StackPush_ClassMethod(s4g_Main *s4gm, const char *szName, s4g_c_function fnMethod);
489 
491 
492 //##########################################################################
493 
502 S4G_API void s4g_StackStore(s4g_Main *s4gm, int iIndex, const char *szName);
503 
509 S4G_API void s4g_StackGet2Top(s4g_Main *s4gm, int iIndex, const char *szName);
510 
512 
513 //##########################################################################
514 
518 S4G_API int s4g_StackIs_Int(s4g_Main *s4gm, int iIndex);
520 
522 S4G_API int s4g_StackIs_Uint(s4g_Main *s4gm, int iIndex);
523 
525 S4G_API int s4g_StackIs_Float(s4g_Main *s4gm, int iIndex);
526 
528 S4G_API int s4g_StackIs_Str(s4g_Main *s4gm, int iIndex);
529 
531 S4G_API int s4g_StackIs_Bool(s4g_Main *s4gm, int iIndex);
532 
534 S4G_API int s4g_StackIs_Cfunc(s4g_Main *s4gm, int iIndex);
535 
537 S4G_API int s4g_StackIs_Sfunc(s4g_Main *s4gm, int iIndex);
538 
540 S4G_API int s4g_StackIs_Table(s4g_Main *s4gm, int iIndex);
541 
543 S4G_API int s4g_StackIs_Pdata(s4g_Main *s4gm, int iIndex);
544 
546 S4G_API int s4g_StackIs_Null(s4g_Main *s4gm, int iIndex);
547 
549 S4G_API int s4g_StackIs_Class(s4g_Main *s4gm, int iIndex);
550 
552 S4G_API int s4g_StackIs_ClassObject(s4g_Main *s4gm, int iIndex);
553 
554 
556 S4G_API S4G_TYPE s4g_StackGet_Type(s4g_Main *s4gm, int iIndex);
557 
559 S4G_API s4g_Variable* s4g_StackGet_Var(s4g_Main *s4gm, int iIndex);
560 
562 S4G_API s4g_int s4g_StackGet_Int(s4g_Main *s4gm, int iIndex);
563 
565 S4G_API s4g_uint s4g_StackGet_Uint(s4g_Main *s4gm, int iIndex);
566 
568 S4G_API s4g_float s4g_StackGet_Float(s4g_Main *s4gm, int iIndex);
569 
571 S4G_API s4g_bool s4g_StackGet_Bool(s4g_Main *s4gm, int iIndex);
572 
574 S4G_API const char* s4g_StackGet_Str(s4g_Main *s4gm, int iIndex);
575 
578 
580 S4G_API s4g_pdata s4g_StackGet_Pdata(s4g_Main *s4gm, int iIndex);
581 
582 
584 S4G_API void s4g_StackPop(s4g_Main *s4gm, int iCount);
585 
587 S4G_API int s4g_StackGetTop(s4g_Main *s4gm);
588 
590 
591 //##########################################################################
592 
597 S4G_API void s4g_Call(s4g_Main *s4gm, bool isCallFunc = false);
599 
603 S4G_API void s4g_Precall(s4g_Main *s4gm);
604 
606 
607 //##########################################################################
608 
615 
617 S4G_API s4g_Variable* s4g_CfuncGet_Arg(s4g_Main *s4gm, int nArg);
618 
619 
622 
625 
628 
631 
633 S4G_API const char* s4g_CfuncGet_ArgStr(s4g_Main *s4gm, int nArg);
634 
636 S4G_API String* s4g_CfuncGet_ArgStr2(s4g_Main *s4gm, int nArg);
637 
640 
643 
644 
646 S4G_API int s4g_CfuncIs_ArgNull(s4g_Main *s4gm, int nArg);
647 
649 S4G_API int s4g_CfuncIs_ArgInt(s4g_Main *s4gm, int nArg);
650 
652 S4G_API int s4g_CfuncIs_ArgUint(s4g_Main *s4gm, int nArg);
653 
655 S4G_API int s4g_CfuncIs_ArgFloat(s4g_Main *s4gm, int nArg);
656 
658 S4G_API int s4g_CfuncIs_ArgBool(s4g_Main *s4gm, int nArg);
659 
661 S4G_API int s4g_CfuncIs_ArgStr(s4g_Main *s4gm, int nArg);
662 
664 S4G_API int s4g_CfuncIs_ArgTable(s4g_Main *s4gm, int nArg);
665 
667 S4G_API int s4g_CfuncIs_ArgArray(s4g_Main *s4gm, int nArg);
668 
670 S4G_API int s4g_CfuncIs_ArgCfunc(s4g_Main *s4gm, int nArg);
671 
673 S4G_API int s4g_CfuncIs_ArgSfunc(s4g_Main *s4gm, int nArg);
674 
676 S4G_API int s4g_CfuncIs_ArgPdata(s4g_Main *s4gm, int nArg);
677 
679 S4G_API int s4g_CfuncIs_ArgClassObject(s4g_Main *s4gm, int nArg);
680 
681 
683 S4G_API S4G_TYPE s4g_CfuncGet_Type(s4g_Main *s4gm, int nArg);
684 
686 S4G_API const char* s4g_CfuncGet_TypeStr(s4g_Main *s4gm, int nArg, char *szStr = 0);
687 
689 
690 //##########################################################################
691 
695 S4G_API const char* s4g_VarGet_Name(s4g_Main *s4gm, s4g_Variable *pVar);
697 
700 
702 S4G_API int s4g_TableGet_Size(s4g_Table *pTable);
703 
705 S4G_API void s4g_TableAdd_Var(s4g_Table *pTable, s4g_Variable *pVar, const char *szName);
706 
708 S4G_API int s4g_ArrayGet_Size(s4g_Array *pArray);
709 
712 
715 
717 S4G_API s4g_Variable* s4g_TableGat_Var(s4g_Table *pTable, int iKey);
718 
720 
721 //##########################################################################
722 
726 S4G_API const char* s4g_StackTrace(s4g_Main *s4gm);
728 
730 S4G_API const char* s4g_Dbg_GetFile(s4g_Main *s4gm, ID id, char *szStr = 0);
731 
733 S4G_API const char* s4g_Dbg_GetCurrFile(s4g_Main *s4gm, char *szStr = 0);
734 
736 S4G_API int s4g_Dbg_GetCurrStr(s4g_Main *s4gm, char *szStr = 0);
737 
739 S4G_API const char* s4g_Dbg_GetCurrFunc(s4g_Main *s4gm, char *szStr = 0);
740 
742 
743 //##########################################################################
744 
748 S4G_API bool s4g_PP_Defined(s4g_Main *s4gm, const char *szDefine);
750 
752 S4G_API void s4g_PP_Define(s4g_Main *s4gm, const char *szDefine);
753 
755 S4G_API void s4g_PP_Undef(s4g_Main *s4gm, const char *szDefine);
756 
758 S4G_API void s4g_PP_AddIncludePath(s4g_Main *s4gm, const char *szPath);
759 
761 
763 
764 #endif
S4G_API void s4g_PP_AddIncludePath(s4g_Main *s4gm, const char *szPath)
добавляет путь поиска включаемых файлов
Definition: s4g.cpp:1143
S4G_API int s4g_GCgetMemBusy(s4g_Main *s4gm)
количество занятой памяти в байтах
S4G_API s4g_pdata s4g_CfuncGet_ArgPdata(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу юзердата
Definition: s4g.cpp:859
#define S4G_MAX_LEN_TYPE_NAME
максимальная длина имени типа
Definition: s4g.h:187
S4G_API s4g_bool s4g_StackGet_Bool(s4g_Main *s4gm, int iIndex)
возвращает приведенное к bool типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:674
S4G_API s4g_int s4g_StackGet_Int(s4g_Main *s4gm, int iIndex)
возвращает приведенное к int типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:630
S4G_API int s4g_Dbg_GetCurrStr(s4g_Main *s4gm, char *szStr=0)
возвращает номер строки файла скрипта который выполняется в данный момент (если str то записывает в н...
Definition: s4g.cpp:1108
S4G_TYPE
все типы данных которые могут быть использованы в скриптах
Definition: s4g.h:160
S4G_API void s4g_SetRf(s4g_report_func fnRf)
установить новую функцию выдачи сообщений
Definition: s4g.cpp:20
S4G_API void s4g_StackPush_Pdata(s4g_Main *s4gm, s4g_pdata pData)
вставка на вершину стека юзердаты
Definition: s4g.cpp:303
S4G_API void s4g_StackPush_Int(s4g_Main *s4gm, s4g_int num)
вставка на вершину стека int.
Definition: s4g.cpp:263
S4G_API void s4g_StackPush_Cfunc(s4g_Main *s4gm, s4g_c_function fnFunc)
вставка на вершину стека C++ функции
Definition: s4g.cpp:255
S4G_API s4g_bool s4g_CfuncGet_ArgBool(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу bool.
Definition: s4g.cpp:819
S4G_API S4G_TYPE s4g_VarGet_Type(s4g_Variable *pVar)
возвращает тип переменной
Definition: s4g.cpp:1020
S4G_API void s4g_StackPush_Class(s4g_Main *s4gm)
создание и вставка на вершину стека класса
Definition: s4g.cpp:344
тип отсутствует ...
Definition: s4g.h:162
S4G_API UINT s4g_MainGetTime(s4g_Main *s4gm)
возвращает время инициализации скриптовой системы (в млсек)
Definition: s4g.cpp:46
S4G_API const char * s4g_CfuncGet_TypeStr(s4g_Main *s4gm, int nArg, char *szStr=0)
возвращает строковое предствление типа аргумента
Definition: s4g.cpp:1002
таблица (ассоциативный массив)
Definition: s4g.h:164
S4G_API void s4g_StackPush_Null(s4g_Main *s4gm)
вставка на вершину стека null.
Definition: s4g.cpp:311
с(++) функция
Definition: s4g.h:172
long s4g_int
int
Definition: s4g.h:270
S4G_API int s4g_Cfunc_CountArg(s4g_Main *s4gm)
количество аргументов которые были переданы функции
Definition: s4g.cpp:754
S4G_API const char * s4g_MainGetErrorStr(s4g_Main *s4gm)
возвращает текст с ошибкой
Definition: s4g.cpp:39
S4G_API void s4g_StackPush_Str(s4g_Main *s4gm, const char *szStr)
вставка на вершину стека строки
Definition: s4g.cpp:287
S4G_API int s4g_MainGetState(s4g_Main *s4gm)
возвращает состояние скриптовой системы, S4G_ERROR - ошибка, S4G_OK - все нормально ...
Definition: s4g.cpp:32
S4G_API int s4g_CfuncIs_ArgPdata(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом юзердата
Definition: s4g.cpp:971
S4G_API S4G_TYPE s4g_StackGet_Type(s4g_Main *s4gm, int iIndex)
возвращает тип значения переменной по номеру в стеке iIndex.
Definition: s4g.cpp:599
const char g_aS4GtypeStr[][S4G_MAX_LEN_TYPE_NAME]
строковое представление типов
Definition: s4g.h:337
void * s4g_pdata
указатель
Definition: s4g.h:282
S4G_API int s4g_StackIs_Bool(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом bool.
Definition: s4g.cpp:541
скриптовая функция
Definition: s4g.h:173
S4G_API int s4g_StackIs_Class(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex классом
Definition: s4g.cpp:583
пустое значение
Definition: s4g.h:163
таблица, наиболее распространенный тип в скриптах
Definition: s4g_types.h:123
S4G_API void s4g_GenMsg(s4g_Main *s4gm, int iLevel, const char *szFormat,...)
генерировать сообщение
Definition: s4g_main.cpp:82
S4G_API S4G_TYPE s4g_CfuncGet_Type(s4g_Main *s4gm, int nArg)
возвращает тип аргумента
Definition: s4g.cpp:993
S4G_API void s4g_MainClear(s4g_Main *s4gm)
очистка скриптовой системы (для перезагрзуки кода)
Definition: s4g.cpp:60
S4G_API int s4g_StackIs_ClassObject(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex объектом класса
Definition: s4g.cpp:590
S4G_API int s4g_StackIs_Table(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом таблицей
Definition: s4g.cpp:562
S4G_API void s4g_StackPush_Float(s4g_Main *s4gm, s4g_float num)
вставка на вершину стека float.
Definition: s4g.cpp:279
S4G_API void s4g_StackPush_TableEmpty(s4g_Main *s4gm, int iCountReserve)
вставка на вершину стека пустой таблицы, iCountReserve - резерв на количество элементов в таблице ...
Definition: s4g.cpp:244
S4G_API int s4g_StackIs_Sfunc(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом скриптовой функцией ...
Definition: s4g.cpp:555
указатель на пользовательские данные
Definition: s4g.h:171
S4G_API void s4g_StackPush_ClassObject(s4g_Main *s4gm, s4g_pdata pData=0)
создание и вставка на вершину стека объекта класса, класс должен быть на вершине стека, после этого вызова класс будет вытолкнут из стека
Definition: s4g.cpp:327
S4G_API s4g_float s4g_StackGet_Float(s4g_Main *s4gm, int iIndex)
возвращает приведенное к float типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:660
S4G_API int s4g_GCgetMemAllocated(s4g_Main *s4gm)
количество выделенной памяти в байтах
число с плавающей запятой
Definition: s4g.h:167
S4G_API const char * s4g_MainGetName(s4g_Main *s4gm)
возвращает имя скриптовой системы
Definition: s4g.cpp:68
S4G_API int s4g_CfuncIs_ArgTable(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом table.
Definition: s4g.cpp:931
S4G_API s4g_Variable * s4g_TableGat_Var(s4g_Table *pTable, int iKey)
возвращает s4g_Variable* которая располагается в таблице по ключу key, если есть, иначе 0...
Definition: s4g.cpp:1071
S4G_API void s4g_StackPop(s4g_Main *s4gm, int iCount)
выталкивает из стека iCount значений
Definition: s4g.cpp:737
S4G_API int s4g_ArrayGet_Size(s4g_Array *pArray)
возвращает размер массива
Definition: s4g.cpp:1044
S4G_API s4g_Variable * s4g_GCgetTrue(s4g_Main *s4gm)
возвращает константную переменную bool типа true значения (она уже создана и менять ее не надо) ...
Definition: s4g.cpp:173
S4G_API void s4g_StackGet2Top(s4g_Main *s4gm, int iIndex, const char *szName)
получить значения
Definition: s4g.cpp:452
S4G_API int s4g_StackIs_Pdata(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом юзердатой
Definition: s4g.cpp:569
класс
Definition: s4g.h:174
S4G_API int s4g_CfuncIs_ArgFloat(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом float.
Definition: s4g.cpp:901
S4G_API void s4g_MainKill(s4g_Main *s4gm)
завершение работы скриптовой системы
Definition: s4g.cpp:53
S4G_API s4g_Main * s4g_MainInit(const char *szName)
инициализация скриптовой системы
Definition: s4g.cpp:27
знаковое целое десятичное число
Definition: s4g.h:169
S4G_API int s4g_StackIs_Float(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом float.
Definition: s4g.cpp:527
S4G_API int s4g_TableGet_Size(s4g_Table *pTable)
возвращает размер таблицы
Definition: s4g.cpp:1028
S4G_API s4g_uint s4g_CfuncGet_ArgUint(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу uint.
Definition: s4g.cpp:799
S4G_API void s4g_TableAdd_Var(s4g_Table *pTable, s4g_Variable *pVar, const char *szName)
добавить переменную в таблицу
Definition: s4g.cpp:1036
логическое значение
Definition: s4g.h:170
S4G_API const char * s4g_Dbg_GetCurrFile(s4g_Main *s4gm, char *szStr=0)
возвращает путь до файла скрипта который выполняется в данный момент (если str то записывает в него) ...
Definition: s4g.cpp:1102
S4G_API const char * s4g_StackGet_Str(s4g_Main *s4gm, int iIndex)
возвращает приведенное к string типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:689
S4G_API int s4g_CfuncIs_ArgBool(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом bool.
Definition: s4g.cpp:911
S4G_API void s4g_PP_Define(s4g_Main *s4gm, const char *szDefine)
обьявляет новый дефайн
Definition: s4g.cpp:1129
S4G_API void s4g_StackPush_ClassVar(s4g_Main *s4gm, const char *szName)
создание переменной в классе (на вершине стека) szName.
Definition: s4g.cpp:353
S4G_API const char * s4g_VarGet_Name(s4g_Main *s4gm, s4g_Variable *pVar)
возвращает имя переменной
Definition: s4g.cpp:1013
int(* s4g_c_function)(s4g_Main *s4gm)
тип си(++) функции
Definition: s4g.h:289
S4G_API s4g_Variable * s4g_GCgetFalse(s4g_Main *s4gm)
возвращает константную переменную bool типа false значения (она уже создана и менять ее не надо) ...
Definition: s4g.cpp:181
S4G_API int s4g_CfuncIs_ArgSfunc(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом скриптовой функции
Definition: s4g.cpp:961
S4G_API s4g_pdata s4g_ClassObjectGet_Data(s4g_Variable *pVar)
возвращает юзердату объекта класса
Definition: s4g.cpp:1063
S4G_API int s4g_StackIs_Str(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex строкой
Definition: s4g.cpp:534
S4G_API bool s4g_ClassObjectSet_Data(s4g_Variable *pVar, s4g_pdata pData)
установка юзердаты для объекта класса, возвращает true если удачно прошло
Definition: s4g.cpp:1052
S4G_API s4g_Variable * s4g_GCgetNull(s4g_Main *s4gm)
возвращает константную переменную null (она уже создана и менять ее не надо)
Definition: s4g.cpp:158
S4G_API void s4g_Call(s4g_Main *s4gm, bool isCallFunc=false)
вызов функции/исполнения скрипта
Definition: s4g.cpp:199
short int s4g_bool
bool
Definition: s4g.h:279
S4G_API int s4g_CfuncIs_ArgUint(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом uint.
Definition: s4g.cpp:891
S4G_API int s4g_CfuncIs_ArgArray(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом array.
Definition: s4g.cpp:941
S4G_API s4g_float s4g_CfuncGet_ArgFloat(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу float.
Definition: s4g.cpp:809
S4G_API void s4g_PP_Undef(s4g_Main *s4gm, const char *szDefine)
удаляет указанный дефайн
Definition: s4g.cpp:1136
S4G_API s4g_Variable * s4g_CfuncGet_Arg(s4g_Main *s4gm, int nArg)
возвращает s4g_Variable значения аргумента
Definition: s4g.cpp:761
S4G_API int s4g_StackGetTop(s4g_Main *s4gm)
количество элементов в стеке, и есесно номер вершины стека
Definition: s4g.cpp:745
S4G_API s4g_int s4g_CfuncGet_ArgInt(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу int.
Definition: s4g.cpp:789
строковое значение (пользовательская строка)
Definition: s4g.h:166
#define S4G_API
для использования в приложении либо при компилции в библиотеку необходимо глобально объявить дефайн S...
Definition: s4g.h:150
S4G_API void s4g_GCcall(s4g_Main *s4gm)
вызов сборки мусора
Definition: s4g.cpp:139
S4G_API const char * s4g_CfuncGet_ArgStr(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу string.
Definition: s4g.cpp:829
S4G_API void s4g_StackPush_Bool(s4g_Main *s4gm, s4g_bool bf)
вставка на вершину стека bool.
Definition: s4g.cpp:295
S4G_API s4g_Variable * s4g_StackGet_Var(s4g_Main *s4gm, int iIndex)
возвращает приведенное к int типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:615
S4G_API s4g_pdata s4g_StackGet_Pdata(s4g_Main *s4gm, int iIndex)
возвращает приведенное к юзердата типу значение перменной по номеру iIndex в стеке ...
Definition: s4g.cpp:720
S4G_API s4g_c_function s4g_CfuncGet_ArgCfunc(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу int.
Definition: s4g.cpp:849
S4G_API int s4g_CfuncIs_ArgInt(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом int.
Definition: s4g.cpp:881
основа взаимодествия
Definition: s4g_main.h:45
массив переменной длины
Definition: s4g_types.h:221
S4G_API int s4g_StackIs_Uint(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом uint.
Definition: s4g.cpp:520
S4G_API const char * s4g_GetStrType(S4G_TYPE type, char *szStrType=0)
возвращает строковое представление типа type в szStrType.
Definition: s4g_main.cpp:69
знаковое целое десятичное число
Definition: s4g.h:168
переменная
Definition: s4g_types.h:101
S4G_API void s4g_StackPush_ClassMethod(s4g_Main *s4gm, const char *szName, s4g_c_function fnMethod)
добавление метода к классу (на вершине стека) с именем szName и C/C++ функции fnMethod.
Definition: s4g.cpp:369
S4G_API bool s4g_PP_Defined(s4g_Main *s4gm, const char *szDefine)
объявлен ли дефайн
Definition: s4g.cpp:1122
S4G_API int s4g_LoadCode(s4g_Main *s4gm, const char *szCode, bool isFile=true)
загрузить код, если isFile == true значит szCode содержит путь, иначе szCode содержит код...
Definition: s4g.cpp:77
объект класса
Definition: s4g.h:175
S4G_API s4g_c_function s4g_StackGet_Cfunc(s4g_Main *s4gm, int iIndex)
возвращает приведенное к C++ function типу значение перменной по номеру iIndex в стеке ...
Definition: s4g.cpp:704
unsigned long s4g_uint
uint
Definition: s4g.h:273
S4G_API int s4g_StackIs_Int(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом int.
Definition: s4g.cpp:513
S4G_API const char * s4g_Dbg_GetCurrFunc(s4g_Main *s4gm, char *szStr=0)
возвращает функцию которая выполняется в данный момент (если str то записывает в него) ...
Definition: s4g.cpp:1114
S4G_API void s4g_StackPush_Var(s4g_Main *s4gm, s4g_Variable *pVar)
вставка на вершину стека s4g_Variable.
Definition: s4g.cpp:319
S4G_API s4g_uint s4g_StackGet_Uint(s4g_Main *s4gm, int iIndex)
возвращает приведенное к uint типу значение перменной по номеру iIndex в стеке
Definition: s4g.cpp:645
S4G_API int s4g_CfuncIs_ArgNull(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом null.
Definition: s4g.cpp:871
S4G_API const char * s4g_StackTrace(s4g_Main *s4gm)
возвращает строку с текстом результата трассировки стека вызовов
Definition: s4g.cpp:1081
одномерный массив переменной длины
Definition: s4g.h:165
void(* s4g_report_func)(s4g_Main *s4gm, int level, const char *format,...)
тип функции вывода информации и обработки ошибок
Definition: s4g.h:292
S4G_API void s4g_StackPush_Uint(s4g_Main *s4gm, s4g_uint num)
вставка на вершину стека uint.
Definition: s4g.cpp:271
S4G_API int s4g_CfuncIs_ArgStr(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом string.
Definition: s4g.cpp:921
S4G_API void s4g_Precall(s4g_Main *s4gm)
сообщение скриптовой системе о том что будет вызывана функция
Definition: s4g.cpp:191
float s4g_float
float
Definition: s4g.h:276
S4G_API int s4g_CfuncIs_ArgClassObject(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом объект класса
Definition: s4g.cpp:981
S4G_API int s4g_StackIs_Cfunc(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом C++ функцией
Definition: s4g.cpp:548
S4G_API String * s4g_CfuncGet_ArgStr2(s4g_Main *s4gm, int nArg)
преобразование аргумента функции к типу string.
Definition: s4g.cpp:839
S4G_API int s4g_CfuncIs_ArgCfunc(s4g_Main *s4gm, int nArg)
является ли значение аргумента функции типом C++ function.
Definition: s4g.cpp:951
void s4g_Report(s4g_Main *s4gm, int level, const char *format,...)
стандартная функция выдачи сообщений (заменяема посредством api)
Definition: s4g.h:300
S4G_API int s4g_StackIs_Null(s4g_Main *s4gm, int iIndex)
является ли значение переменной в стеке по номеру iIndex типом null.
Definition: s4g.cpp:576
S4G_API s4g_Variable * s4g_GCgetBool(s4g_Main *s4gm, bool bf)
возвращает константную переменную bool типа (она уже создана и менять ее не надо) ...
Definition: s4g.cpp:165
S4G_API const char * s4g_Dbg_GetFile(s4g_Main *s4gm, ID id, char *szStr=0)
возвращает путь до файла загруженного скрипта по его id (если str то записывает в него) ...
Definition: s4g.cpp:1087
S4G_API void s4g_StackStore(s4g_Main *s4gm, int iIndex, const char *szName)
функция сохранения в пространство имен, аналогично table(stack[index])[name] = stack[-1];.
Definition: s4g.cpp:388