Шаблон класса Cntm::SignatureArgsCollector< DeriveClassT, ResT, SignatureInfoT, ArgsCountI >

Граф наследования:Cntm::SignatureArgsCollector< DeriveClassT, ResT, SignatureInfoT, ArgsCountI >:

Cntm::DeferEvent< SignatureT > Cntm::DirectEvent< SignatureT >

Подробное описание

template<typename DeriveClassT, typename ResT, typename SignatureInfoT, int ArgsCountI>
class Cntm::SignatureArgsCollector< DeriveClassT, ResT, SignatureInfoT, ArgsCountI >

Данный модуль предоставляет средства для сборки аргументов вызова в единую структуру (структура Cntm::SignatureInfo::Args, которая будет содержать копии значений всех аргументов, переданных при вызове) для последующей обработки.

Эта операция проводится с помощью объекта - функтора, для которого определен оператор operator(). Этот оператор принимает аргументы, упаковывает их в общую структуру Cntm::SignatureInfo::Args (т.е. копирует значения аргументов в эту структуру) и вызывает процедуры обработки.

Для того, чтобы класс обладал такой функциональностью он должен унаследовать клвсс Cntm::SignatureArgsCollector. Данный класс является шаблоном. В качестве параметров шаблона указывается:

Далее, производный класс должен определить у себя следующие эл-ты:

Такой наследующий класс может выглядеть следующим образом: template < typename SignatureT > class Class1: public Cntm::SignatureArgsCollector < Class1 < SignatureT > , void, Cntm::SignatureInfo <SignatureT>, Cntm::SignatureInfo <SignatureT> :: argsCount > { private: friend class Cntm::SignatureArgsCollector< Class1 < SignatureT > , void, Cntm::SignatureInfo <SignatureT>, Cntm::SignatureInfo <SignatureT> :: argsCount >; typedef SignatureArgsCollectObjectBase<typename Cntm::SignatureInfo <SignatureT>Args> SignatureArgsCollectObject; SignatureCollectObject* CreateCollectObject() { return new SignatureCollectObject; } void ProcessCollectObject(SignatureCollectObject* Object) { cout << "ProcessCollectObject " << SignInfoType::argsCount << endl; } bool NoNeedCreateCollectObject() { return false; } void ProcessCollectObject(SignatureCollectObject* Object) {} };

См. определение в файле SignatureArgsCollector.h строка 59


Объявления и описания членов класса находятся в файле:
SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3