Осуществление общего вызова доступно для глобальных функций (или статических методов класса), которые принимают в качестве параметра указатель на интерфейс asIScriptGeneric и возвращают void.
void MyGenericFunction(asIScriptGeneric *gen) { // Извлекаем аргументы из общего интерфейса и запускаем реальную функцию ... }
Функции, использующие общий вызов, могут быть зарегистрированы в любом месте движка.
Написание функции общего вызова предполагает извлечение каждого аргумента из стека AngelScript, а затем предоставление возврата. По этой причине рекомендуется использовать автоматический враппер вместо написания функции самостоятельно.
Обратите внимание, что asIScriptGeneric является собственником возвращаемых ссылок, поэтому вы не должны освобождать эти ссылки вручную. Если вы хотите сохранить ссылку на объект, полученной от общего интерфейса, вам необходимо вызвать AddRef, чтобы избежать невалидных ссылок.
Внимательно ознакомьтесь с инструкциями по SetReturnAddress и SetReturnObject чтобы определить, что необходимо сделать для получения ожидаемого результата. Возможно также использование метода GetAddressOfReturnLocation для получения адреса памяти, по которому содержиться возвращаемое значение.