ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup core
/// \class AliMpStringObjMap
/// \brief Substitutes map <string, TObject> which ALICE does not allow to use 
///
/// The map is not optimised for large data size
///
/// \author Ivana Hrivnacova, IPN Orsay

#ifndef ALI_MP_STRING_OBJ_MAP_H
#define ALI_MP_STRING_OBJ_MAP_H

#include <TObject.h>
#include <TObjArray.h>
#include <TArrayI.h>

using std::ofstream;

class AliMpStringObjMap : public TObject
{
  public:
    AliMpStringObjMap(Bool_t isOwner = false);
    virtual ~AliMpStringObjMap();
    
    // methods
    Bool_t    Add(const TString& first, TObject* second);
    TObject*  Get(const TString& first) const;
    Int_t     GetNofItems() const;
    virtual void Clear(Option_t* /*option*/ ="");
    virtual void Print(const char* /*option*/ = "") const;
    void Print(const TString& key, ofstream& out) const;
    
    // iterating over elements
    void  First();
    void  Next();
    TObject*  CurrentItem();
    TString   CurrentKey();
    Bool_t  IsDone() const;
    
  private:
    /// Not implemented
    AliMpStringObjMap(const AliMpStringObjMap& rhs);
    /// Not implemented
    AliMpStringObjMap& operator = (const AliMpStringObjMap& rhs);
    
    // static methods
    static const TString& GetUndefinedKey(); 

    // data members
    Int_t      fNofItems;     ///<  number of items
    TObjArray  fFirstArray;   ///<  first item array
    TObjArray  fSecondArray;  ///<  second item array
    Int_t      fCurrentIndex; ///<  current item index (for iteration)
 
  ClassDef(AliMpStringObjMap,1)  // motif map
};    

#endif //ALI_MP_STRING_OBJ_MAP_H
 AliMpStringObjMap.h:1
 AliMpStringObjMap.h:2
 AliMpStringObjMap.h:3
 AliMpStringObjMap.h:4
 AliMpStringObjMap.h:5
 AliMpStringObjMap.h:6
 AliMpStringObjMap.h:7
 AliMpStringObjMap.h:8
 AliMpStringObjMap.h:9
 AliMpStringObjMap.h:10
 AliMpStringObjMap.h:11
 AliMpStringObjMap.h:12
 AliMpStringObjMap.h:13
 AliMpStringObjMap.h:14
 AliMpStringObjMap.h:15
 AliMpStringObjMap.h:16
 AliMpStringObjMap.h:17
 AliMpStringObjMap.h:18
 AliMpStringObjMap.h:19
 AliMpStringObjMap.h:20
 AliMpStringObjMap.h:21
 AliMpStringObjMap.h:22
 AliMpStringObjMap.h:23
 AliMpStringObjMap.h:24
 AliMpStringObjMap.h:25
 AliMpStringObjMap.h:26
 AliMpStringObjMap.h:27
 AliMpStringObjMap.h:28
 AliMpStringObjMap.h:29
 AliMpStringObjMap.h:30
 AliMpStringObjMap.h:31
 AliMpStringObjMap.h:32
 AliMpStringObjMap.h:33
 AliMpStringObjMap.h:34
 AliMpStringObjMap.h:35
 AliMpStringObjMap.h:36
 AliMpStringObjMap.h:37
 AliMpStringObjMap.h:38
 AliMpStringObjMap.h:39
 AliMpStringObjMap.h:40
 AliMpStringObjMap.h:41
 AliMpStringObjMap.h:42
 AliMpStringObjMap.h:43
 AliMpStringObjMap.h:44
 AliMpStringObjMap.h:45
 AliMpStringObjMap.h:46
 AliMpStringObjMap.h:47
 AliMpStringObjMap.h:48
 AliMpStringObjMap.h:49
 AliMpStringObjMap.h:50
 AliMpStringObjMap.h:51
 AliMpStringObjMap.h:52
 AliMpStringObjMap.h:53
 AliMpStringObjMap.h:54
 AliMpStringObjMap.h:55
 AliMpStringObjMap.h:56
 AliMpStringObjMap.h:57
 AliMpStringObjMap.h:58
 AliMpStringObjMap.h:59
 AliMpStringObjMap.h:60
 AliMpStringObjMap.h:61
 AliMpStringObjMap.h:62