Разделы
- 1. Введение
- 2. Описание языка
- 3. Интерфейс программирования приложений (API)
- 3.1. Стек
- 3.2. Резервация памяти
- 3.3. Сообщения
- 3.4. Типы данных
- 3.5. Функции
- 3.5.1. Базовые функции скриптоввой системы
- 3.5.2. Функции для вставки на вершину стека значения
- 3.5.3. Перевод значений со стека в скриптовую ситему (экспорт (stack => script))
- 3.5.4. Функции для получения со стека (stack => C(++))
- 3.5.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
- 3.5.6. Функции отладки (DEBUG)
- 3.5.7. Функции для работы с препроцессом
- 4. Стандартная библиотека
3.5.4. Функции для получения со стека (stack => C(++))
Является ли значение переменной в стеке по номеру index
типом? 0
- нет, 1
- да:
int s4g_sis_int(s4g_main* s4gm, int index); int s4g_sis_uint(s4g_main* s4gm, int index); int s4g_sis_float(s4g_main* s4gm, int index); int s4g_sis_str(s4g_main* s4gm, int index); int s4g_sis_bool(s4g_main* s4gm, int index); int s4g_sis_c_func(s4g_main* s4gm, int index); int s4g_sis_s_func(s4g_main* s4gm, int index); int s4g_sis_table(s4g_main* s4gm, int index); int s4g_sis_pdata(s4g_main* s4gm, int index); int s4g_sis_null(s4g_main* s4gm, int index);
s4g_type s4g_sget_type(s4g_main* s4gm, int index);
возвращает тип значения переменной по номеру в стеке index
Возвращает приведенное к определенному типу значение переменной по номеру index
в стеке:
s4g_sget_int(s4g_main* s4gm, int index); s4g_uint s4g_sget_uint(s4g_main* s4gm, int index); s4g_float s4g_sget_float(s4g_main* s4gm, int index); s4g_bool s4g_sget_bool(s4g_main* s4gm, int index); const char* s4g_sget_str(s4g_main* s4gm, int index); s4g_c_function s4g_sget_cfunc(s4g_main* s4gm, int index); s4g_pdata s4g_sget_pdata(s4g_main* s4gm, int index);
void s4g_spop(s4g_main* s4gm, int count);
выталкивает из стека count значений
int s4g_sgettop(s4g_main* s4gm);
возвращает количество элементов в стеке (если отнять единицу то получится номер вершины стека)
void s4g_spush_precall(s4g_main* s4gm);
сообщает виртуальной машине что будет вызвана функция, для вызова функции необходимо:
1. вызвать s4g_spush_precall
2. положить в стек вызываемую функцию
3. положить в стек аргументы для функции (если есть)
4. вызвать s4g_call
с аргументом call_func
равным true
void s4g_call(s4g_main* s4gm, bool call_func = false);
вызов функции/исполнения скрипта. Если вызов функции то сначала s4g_spush_precall
, затем в стек кладется сама вызываемая функция, затем аргументы, если есть и только потом s4g_call
с аргументом call_func
равным true