Разделы
- 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.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
При вызове C(++) функции из кода скрипта, C(++) функция может получить доступ к аргументам посредством данного API. Вызываемая C(++) функция обязана вернуть значение 0 (или больше 0) в случае успеха выполнения, и значение меньше 0 в случае провала исполнения. Провал исполнения приведет к остановке работы скриптовой системы.
Используя систему сообщений, (см. 3.3) C(++) функция может оповещать об ошибках, либо выдавать иные типы сообщения, предусмотренные системой сообщений. Хотя функция обработки сообщений, переназначаемая хост программой, должна останавливать выполнение хост программы в случае обнаружения ошибок (даже на стороне исполнения C(++) функции), рекомендуется в случае ошибок работы C(++) функции вернуть отрицательное значение для корректного завершения и прекращения дальнейшей работы ибо она уже непредсказуема.
int s4g_cfcount_arg(s4g_main* s4gm); //количество аргументов, которые были переданы функции s4g_value* s4g_cfget_arg(s4g_main* s4gm, int narg); //возвращает s4g_value значения аргумента
Преобразование аргумента функции к типам и их возвращение, если narg == 1
то значит, функция вернет первый аргумент и так далее:
s4g_int s4g_cfget_int(s4g_main* s4gm, int narg); s4g_uint s4g_cfget_uint(s4g_main* s4gm, int narg); s4g_float s4g_cfget_float(s4g_main* s4gm, int narg); s4g_bool s4g_cfget_bool(s4g_main* s4gm, int narg); const char* s4g_cfget_str(s4g_main* s4gm, int narg); s4g_c_function s4g_cfget_cfunc(s4g_main* s4gm, int narg); s4g_pdata s4g_cfget_pdata(s4g_main* s4gm, int narg);
Является ли значение аргумента функции по номеру narg
(нумерация с 1
) типом? 0
- нет, 1
- да:
int s4g_cfis_null(s4g_main* s4gm, int narg); int s4g_cfis_int(s4g_main* s4gm, int narg); int s4g_cfis_uint(s4g_main* s4gm, int narg); int s4g_cfis_float(s4g_main* s4gm, int narg); int s4g_cfis_bool(s4g_main* s4gm, int narg); int s4g_cfis_str(s4g_main* s4gm, int narg); int s4g_cfis_table(s4g_main* s4gm, int narg); int s4g_cfis_cfunc(s4g_main* s4gm, int narg); int s4g_cfis_pdata(s4g_main* s4gm, int narg);
s4g_type s4g_cfget_type(s4g_main* s4gm, int narg);
возвращает тип аргумента
const char* s4g_cfget_str_type(s4g_main* s4gm, int narg, char* str = 0);
возвращает строковое представление типа аргумента