Updated buffer handling with mutex and faster response
[u/mrichter/AliRoot.git] / EVE / EveHLT / AliEveHOMERSourceMap.h
index 4d2573e..5acfba7 100644 (file)
 
 #include <map>
 
+//______________________________________________________________________________
+//
+// AliEveHOMERSourceMap is an abstract container for HLT HOMER sources.
+// The concrete implementations AliEveHOMERSourceMapByDet and
+// AliEveHOMERSourceMapByType allow retrieval of HOMER sources in proper
+// order as required for their display in EVE object browser.
+
+
 class AliEveHOMERSourceMap : public TNamed
 {
 protected:
@@ -79,7 +87,7 @@ public:
 
   static AliEveHOMERSourceMap* Create(ESourceGrouping_e grouping);
 
-  virtual void FillMap(TList* handles, Bool_t def_state) = 0;
+  virtual void FillMap(const TList* handles, Bool_t def_state) = 0;
 
   void PrintXXX();
 
@@ -94,105 +102,11 @@ protected:
   ClassDef(AliEveHOMERSourceMap, 0); // A map of HOMER sources.
 };
 
-/******************************************************************************/
-
-class AliEveHOMERSourceMapByDet : public AliEveHOMERSourceMap
-{
-public:
-  AliEveHOMERSourceMapByDet(ESourceGrouping_e grouping);
-  virtual ~AliEveHOMERSourceMapByDet() {}
-
-  virtual void FillMap(TList* handles, Bool_t def_state);
-
-protected:
-  typedef std::map<AliEveHOMERSource::SourceId,
-                  AliEveHOMERSource::SourceState,
-                  AliEveHOMERSource::SourceId::CmpByDet>  Map_t;
-  typedef Map_t::iterator                                  Map_i;
-
-  Map_t fMap;
-
-  struct iterator_imp : public iterator_imp_base,
-                       public Map_i
-  {
-    iterator_imp()         : Map_i()   {}
-    iterator_imp(Map_i mi) : Map_i(mi) {}
-    virtual ~iterator_imp() {}
-
-    virtual const AliEveHOMERSource::SourceId&    id()    const { return Map_i::operator*().first; }
-    virtual const AliEveHOMERSource::SourceState& state() const { return Map_i::operator*().second; }
-    virtual       AliEveHOMERSource::SourceState& state() { return Map_i::operator*().second; }
-
-    virtual iterator_imp* clone() const
-    { return new iterator_imp(*this); }
-
-    virtual iterator_imp& operator++()
-    { Map_i::operator++(); return *this; }
-
-    virtual bool operator!=(const iterator_imp_base& rhs) const
-    { const Map_i &lhs = *this; return lhs != dynamic_cast<const Map_i&>(rhs); }
 
-    virtual TString description() const;
-  };
-
-  void insert(AliEveHOMERSource::SourceId& sid, AliEveHOMERSource::SourceState& sst, Bool_t def_state);
-
-  virtual iterator_imp_base* iterator_imp_new()   { return new iterator_imp; }
-  virtual iterator_imp_base* iterator_imp_begin() { return new iterator_imp(fMap.begin()); }
-  virtual iterator_imp_base* iterator_imp_end()   { return new iterator_imp(fMap.end());   }
+// Include concrete implementations (used to be in the same file).
 
+#include "AliEveHOMERSourceMapByDet.h"
+#include "AliEveHOMERSourceMapByType.h"
 
-  // ClassDef(AliEveHOMERSourceMapByDet, 0);
-};
-
-/******************************************************************************/
-
-class AliEveHOMERSourceMapByType : public AliEveHOMERSourceMap
-{
-public:
-  AliEveHOMERSourceMapByType(ESourceGrouping_e grouping);
-  virtual ~AliEveHOMERSourceMapByType() {}
-
-  virtual void FillMap(TList* handles, Bool_t def_state);
-
-protected:
-  typedef std::map<AliEveHOMERSource::SourceId,
-                  AliEveHOMERSource::SourceState,
-                  AliEveHOMERSource::SourceId::CmpByType> Map_t;
-  typedef Map_t::iterator                                  Map_i;
-
-  Map_t fMap;
-
-  struct iterator_imp : public iterator_imp_base,
-                       public Map_i
-  {
-    iterator_imp()         : Map_i()   {}
-    iterator_imp(Map_i mi) : Map_i(mi) {}
-    virtual ~iterator_imp() {}
-
-    virtual const AliEveHOMERSource::SourceId&    id()    const { return Map_i::operator*().first; }
-    virtual const AliEveHOMERSource::SourceState& state() const { return Map_i::operator*().second; }
-    virtual       AliEveHOMERSource::SourceState& state() { return Map_i::operator*().second; }
-
-    virtual iterator_imp* clone() const
-    { return new iterator_imp(*this); }
-
-    virtual iterator_imp& operator++()
-    { Map_i::operator++(); return *this; }
-
-    virtual bool operator!=(const iterator_imp_base& rhs) const
-    { const Map_i &lhs = *this; return lhs != dynamic_cast<const Map_i&>(rhs); }
-
-    virtual TString description() const;
-  };
-
-  void insert(AliEveHOMERSource::SourceId& sid, AliEveHOMERSource::SourceState& sst, Bool_t def_state);
-
-  virtual iterator_imp_base* iterator_imp_new()   { return new iterator_imp; }
-  virtual iterator_imp_base* iterator_imp_begin() { return new iterator_imp(fMap.begin()); }
-  virtual iterator_imp_base* iterator_imp_end()   { return new iterator_imp(fMap.end());   }
-
-  // ClassDef(AliEveHOMERSourceMapByType, 0);
-};
 
 #endif