00001
00002
00003
00004
00005
00006
00007 #ifndef ATLAS_OBJECTS_DECODER_H
00008 #define ATLAS_OBJECTS_DECODER_H
00009
00010
00011 #include <Atlas/Message/DecoderBase.h>
00012
00013 namespace Atlas { namespace Objects {
00014
00015 template <class T> class SmartPtr;
00016 class RootData;
00017 typedef SmartPtr<RootData> Root;
00018
00019 class Factories;
00020
00031 class ObjectsDecoder : public Atlas::Message::DecoderBase
00032 {
00033 public:
00035 explicit ObjectsDecoder(Factories * f = 0);
00037 virtual ~ObjectsDecoder();
00038
00040 Factories * factories() const {
00041 return m_factories;
00042 }
00043 protected:
00045 virtual void messageArrived(const Atlas::Message::MapType&);
00046
00048 virtual void objectArrived(const Root& obj) = 0;
00049
00050 Factories * m_factories;
00051 };
00052
00053 } }
00054
00055 #endif // ATLAS_OBJECTS_DECODER_H