InvokeInterfaceGetter: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
 
Строка 14: Строка 14:
{{function paramlist begin}}
{{function paramlist begin}}
{{function paramlist add|fn|Функциональный объект типа <tt>_Callable</tt>, который вызывается над аргументами <tt>args...</tt>.}}
{{function paramlist add|fn|Функциональный объект типа <tt>_Callable</tt>, который вызывается над аргументами <tt>args...</tt>.}}
{{function paramlist add|...args|Набор входных аргументов, над которыми вызывается {{cpp_concept|Callable}}-объект <tt>fn</tt>. Если объект <tt>fn</tt> является нестатическим методом класса, то первым аргуметом должен являтся экземпляр этого класса, над которым метод. В этом случае индекс <tt>iReturnIndex</tt> не учитывает первый параметр.}}
{{function paramlist add|...args|Набор входных аргументов, над которыми вызывается {{cpp_concept|Callable}}-объект <tt>fn</tt>. Если объект <tt>fn</tt> является нестатическим методом класса, то первым аргуметом должен являтся экземпляр этого класса, над которым вызывается метод. В этом случае индекс <tt>iReturnIndex</tt> не учитывает первый параметр.}}
{{function paramlist end}}
{{function paramlist end}}
{{function_return_value|Значение выходного параметра с индексом <tt>iReturnIndex</tt> в результате вызова функтора <tt>fn</tt>.}}
{{function_return_value|Значение выходного параметра с индексом <tt>iReturnIndex</tt> в результате вызова функтора <tt>fn</tt>.}}

Текущая версия на 21:01, 24 декабря 2017

template <std::size_t iReturnIndex, class _Callable, class ... _Args>
auto InvokeInterfaceGetter(_Callable&& fn, _Args&&...args)
    -> typename invoke_interface_return_type<iReturnIndex, _Callable>::type; //1
template <class _Callable, class ... _Args>
auto InvokeInterfaceGetter(_Callable&& fn, _Args&&...args)
    -> typename invoke_interface_return_type<Chusov::function_traits<_Callable>::number_of_parameters - 1, _Callable>::type; //2

Вызывает указанный Callable объект, возвращающий return_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return - иначе генерирует исключение типа Chusov::Exceptions::ChsvCodeException.

  1. Возвращает значение выходного параметра с индексом iReturnIndex в списке параметров объекта _Callable в результате вызова fn.
  2. Возвращает значение последнего параметра в списке параметров объекта _Callable в результате вызова fn.
Параметры шаблона
iReturnIndexЗадает индекс выходного параметра списке параметров объекта fn. Если fn - метод класса, то индекс не должен учитывать первый скрытый параметр this.
_CallableТип Callable-объекта, который вызывается функцией. Прототип объекта должен позволять однозначно выполнить вызов объекта с аргументами std::forward<_Args>(args)..., между которыми, в позицию с индексом iReturnIndex (iReturnIndex + 1, если _Callable является методом класса) вставлен указатель или lvalue-ссылка на объект действительного типа typename invoke_interface_return_type<iReturnIndex, _Callable>::type.
_Args...Тип входных аргументов, над которыми вызывается Callable-объект fn. При вызове fn между этими аргументами, в зависимости от типа _Callable вставляется указатель или ссылка на объект, который затем возвращается функцией InvokeInterfaceGetter.
Параметры
fnФункциональный объект типа _Callable, который вызывается над аргументами args....
...argsНабор входных аргументов, над которыми вызывается Callable-объект fn. Если объект fn является нестатическим методом класса, то первым аргуметом должен являтся экземпляр этого класса, над которым вызывается метод. В этом случае индекс iReturnIndex не учитывает первый параметр.
Возвращаемое значение:
Значение выходного параметра с индексом iReturnIndex в результате вызова функтора fn.
Возможные исключения
Chusov::Exceptions::ChsvCodeExceptionИсключение, соответствующее коду ошибочного завершения, если последний возвращается объектом fn.
См. также
InvokeInterfaceВызывает интерфейсный метод, возвращающий код return_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение Chusov::Exceptions::ChsvCodeException.
InvokeInterfaceSetterВызывает интерфейсный метод, возвращающий код return_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение Chusov::Exceptions::ChsvCodeException.
InvokeDomainInterfaceGetterВызывает указанный Callable объект, возвращающий domain_response_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return - иначе генерирует исключение типа drc_exception.
Chusov::function_traitsМетафункция, возвращающая сведения о прототипе Callable-объекта.
Пример