/* dtkComposerTransmitterReceiver.h --- * * Author: Thibaud Kloczko, Inria. * Created: Tue Feb 14 11:39:15 2012 (+0100) */ /* Commentary: * */ /* Change log: * */ #ifndef DTKCOMPOSERTRANSMITTERRECEIVER_H #define DTKCOMPOSERTRANSMITTERRECEIVER_H #include #include "dtkComposerTransmitterAbstractReceiver.h" #include template class dtkComposerTransmitterEmitter; class dtkComposerTransmitterVariant; namespace dtkDeprecated { template class dtkMatrix; } // ///////////////////////////////////////////////////////////////// // dtkComposerTransmitterReceiver interface // ///////////////////////////////////////////////////////////////// template class dtkComposerTransmitterReceiver : public dtkComposerTransmitterAbstractReceiver { public: dtkComposerTransmitterReceiver(dtkComposerNode *parent = 0); ~dtkComposerTransmitterReceiver(void); public: void clearData(void); public: T *dataFromEmitter(void); public: T *data(void); T *constData(void); public: dtkAbstractObject *object(void); dtkDeprecated::dtkMatrix *matrix(void); QVariant& variant(void); QVector allData(void); public: void activateEmitter(dtkComposerTransmitter *emitter); void activateEmitter(dtkComposerTransmitterVariant *emitter); public: void setReady(bool ready); public: bool enableCopy(void); public: bool isEmpty(void) const; public: Kind kind(void) const; QString kindName(void) const; public: bool connect(dtkComposerTransmitter *transmitter); bool disconnect(dtkComposerTransmitter *transmitter); private: QList *> emitters; QList variants; private: dtkComposerTransmitterEmitter *active_emitter; dtkComposerTransmitterVariant *active_variant; private: T *m_data; using dtkComposerTransmitterAbstractReceiver::d; }; // ///////////////////////////////////////////////////////////////// #include template class dtkComposerTransmitterEmitterVector; // ///////////////////////////////////////////////////////////////// // dtkComposerTransmitterReceiverVector interface // ///////////////////////////////////////////////////////////////// template class dtkComposerTransmitterReceiverVector : public dtkComposerTransmitterAbstractReceiver { public: dtkComposerTransmitterReceiverVector(dtkComposerNode *parent = 0); ~dtkComposerTransmitterReceiverVector(void); public: void clearData(void); public: dtkContainerVector *dataFromEmitter(void); public: dtkContainerVector *data(void); dtkContainerVector *constData(void); public: dtkAbstractObject *object(void); dtkAbstractContainerWrapper *container(void); QVariant& variant(void); public: void activateEmitter(dtkComposerTransmitter *emitter); void activateEmitter(dtkComposerTransmitterVariant *emitter); public: void setReady(bool ready); public: bool enableCopy(void); public: bool isEmpty(void) const; public: Kind kind(void) const; QString kindName(void) const; public: bool connect(dtkComposerTransmitter *transmitter); bool disconnect(dtkComposerTransmitter *transmitter); private: QList *> emitters; QList variants; private: dtkComposerTransmitterEmitterVector *active_emitter; dtkComposerTransmitterVariant *active_variant; private: dtkContainerVector *m_vector; using dtkComposerTransmitterAbstractReceiver::d; }; // ///////////////////////////////////////////////////////////////// // dtkComposerTransmitterReceiver implementation // ///////////////////////////////////////////////////////////////// #include "dtkComposerTransmitterReceiver.tpp" #endif