ROOT logo
//#pragma interface
#ifndef HCATEGORY_H
#define HCATEGORY_H

#include "TObject.h"
#include "hlocation.h"
#include "TCollection.h"
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObjArray.h"

class TClass;
class HFilter;
class TObject;

R__EXTERN TObject *gNullObjectP;
//#define gNullObjectP  0

class HCategory : public TObject {
protected:
  Bool_t fPersistency; //! Indicates whether this category is stored in output.
  Cat_t fCat; // Identifier for this category
  Int_t fBranchingLevel; // Number of levels for the data in the category
  TObject *fHeader;// Category header.
public:
  HCategory(void);
  ~HCategory(void);
  void setBranchingLevel(Int_t nLevel);
  void setCategory(Cat_t aCat);
  Bool_t IsPersistent(void);
  void setPersistency(Bool_t per);
  Cat_t getCategory(void);
  Int_t getBranchingLevel(void);
  void setCatHeader(TObject* fObj) {fHeader=fObj;}
  TObject *getCatHeader(void) {return fHeader;}
  virtual const Text_t *getClassName(void);
//  virtual TClass *getClass(void) {};
  virtual TClass *getClass(void){return NULL;} 
  virtual void makeBranch(TBranch *parent);
  virtual void activateBranch(TTree *tree,Int_t splitLevel);
  virtual TObject *&getNewSlot(HLocation &aLoc,Int_t* pIndex=0);
  virtual TObject *&getSlot(HLocation &aLoc,Int_t* pIndex=0);
  virtual TObject *getObject(HLocation &aLoc);
  //virtual TObject *getObject(Int_t index) {return NULL;}
  virtual TObject *getObject(Int_t index) =0;
  virtual Bool_t query(TCollection *aCol,HFilter &aFilter);
  virtual Bool_t query(TCollection *aCol,HLocation &aLoc);
  virtual Bool_t query(TCollection *aCol,HLocation &aLoc,HFilter &aFilter);
  virtual Bool_t filter(HFilter &aFilter);
  virtual Bool_t filter(HLocation &aLoc,HFilter &aFilter);
  virtual void Clear(Option_t *opt="");
  virtual void Delete() = 0;
  virtual Bool_t isSelfSplitable(void);
  virtual TIterator *MakeIterator(Option_t *opt="catIter",
                                  Bool_t dir=kIterForward);
  TIterator *MakeReverseIterator(void);
  Bool_t IsFolder(void) const;
  virtual Int_t getIndex(HLocation& loc)=0;
  virtual Int_t getIndex(TObject* pObj) =0;
  virtual Int_t getEntries() {return 0;}
  virtual void sort(void) {};
  ClassDef(HCategory,2) //Generic data category
};


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