InvokeDomainInterfaceGetter

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
template <std::size_t iReturnIndex, class Callable, class ... Args>
auto InvokeDomainInterfaceGetter(Callable&& fn, Args&&...args)
    -> typename invoke_interface_return_type<iReturnIndex, Callable>::type; //1
template <class Callable, class...Args>
auto InvokeDomainInterfaceGetter(Callable&& fn, Args&&...args)
    -> typename invoke_interface_return_type<Chusov::function_traits<Callable>::number_of_parameters - 1, Callable>::type; //2

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

  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 вставляется указатель или ссылка на объект, который затем возвращается функцией InvokeDomainInterfaceGetter.
Параметры
fnФункциональный объект типа Callable, который вызывается над аргументами args....
...argsНабор входных аргументов, над которыми вызывается Callable-объект fn. Если объект fn является нестатическим методом класса, то первым аргуметом должен являтся экземпляр этого класса, над которым вызывается метод. В этом случае индекс iReturnIndex не учитывает первый параметр.
Возвращаемое значение:
Значение выходного параметра с индексом iReturnIndex в результате вызова функтора fn.
Возможные исключения
drc_exceptionРеализует исключение C++, соответствующее коду ошибок domain_response_code_t.
См. также
InvokeDomainInterfaceВызывает интерфейсный метод, возвращающий код domain_response_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение drc_exception.
InvokeDomainInterfaceSetterВызывает интерфейсный метод, возвращающий код domain_response_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение drc_exception.
InvokeInterfaceGetterВызывает указанный Callable объект, возвращающий return_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return - иначе генерирует исключение типа Chusov::Exceptions::ChsvCodeException.
Chusov::function_traitsМетафункция, возвращающая сведения о прототипе Callable-объекта.
Пример
std::uint32_t GetPriority() const
{
    return InvokeDomainInterfaceGetter(&INode::GetPriority, m_pNode);
}