Call
... = Plugin.Call (PluginId, ...)
Параметры:
PluginId: string (GUID плагина в текстовом представлении)
... : ноль или более дополнительных параметров
Возвращает:
... : ноль или более возвращаемых значений
Описание:
1. Функция осуществляет "асинхронный" вызов плагина.
Если вызов в действительности оказался асинхронным (например, если плагин вывел
диалог на экран), функция возвращает true, не дожидаясь возврата от плагина,
и макрос продолжает исполнение.
2. Если вызов в действительности оказался синхронным, макросу возвращаются величины
в соответствии с тем, что вернул плагин:
- Если плагин не найден или вернул 0, макросу возвращается false.
- Если плагин вернул 1 или INVALID_HANDLE_VALUE, макросу возвращается true.
- Если плагин вернул указатель на структуру FarMacroCall, см пункт 4.
3. Параметры передаются плагину в соответствии с их Lua-типами:
nil -> FMVT_NIL
boolean -> FMVT_BOOLEAN
number -> FMVT_DOUBLE
int64 -> FMVT_INTEGER (int64 - тип userdata, создаваемый библиотекой bit64)
string -> FMVT_STRING (автоматически преобразуется из UTF-8 в UTF-16LE)
{string} -> FMVT_BINARY (для того, чтобы передать произвольный стринг без
преобразования UTF-8 -> UTF16LE, его нужно передавать,
помещённым в таблицу как элемент с ключом 1)
4. Величины, возвращаемые плагином через структуру FarMacroCall, передаются макросу
следующим образом:
FMVT_NIL -> nil
FMVT_BOOLEAN -> boolean
FMVT_DOUBLE -> number
FMVT_INTEGER -> number, если "укладывается" в 53 бита, иначе int64
FMVT_STRING -> string (автоматически преобразуется из UTF-16LE в UTF-8)
FMVT_BINARY -> table (в таблице передаётся строка как элемент с ключом 1;
передаётся как есть, без преобразования)
FMVT_POINTER -> light userdata
FMVT_ARRAY -> table (массив элементов; в таблице установлено два поля:
["type"] = "array", и
["n"] = количество элементов массива)
См. также:
Ограничения в использовании некоторых функций