Разделы

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);

возвращает строковое представление типа аргумента