1    	/*!
2    	 * \class StFileI
3    	 */
4    	#ifndef ROOT_StFileI
5    	#define ROOT_StFileI
6    	
7    	#include "TNamed.h"
8    	#include "assert.h"
9    	#include "string.h"
10   	 
11   	const UInt_t kUMAX = (UInt_t)(-1);
12   	
13   	class StUKey
14   	{
15   	public:
16   	  StUKey(const char *name=0,UInt_t *uk=0,int nk=1);
17   	  StUKey(const char *name,UInt_t uk);
18   	  StUKey(UInt_t uRun,UInt_t uEvent=0);
19   	  virtual ~StUKey(){}
20   	  virtual  StUKey &operator=( const StUKey &from);
21   	  virtual  StUKey &operator=( UInt_t from);
22   	  virtual  StUKey &operator=( Int_t from){return *this=(UInt_t)from;}
23   	  virtual  StUKey &operator=( const char *from);
24   	  virtual  void    Update(const StUKey &from,const char *name=0);
25   	  virtual  void    SetName(const char *name){fName=name;} 
26   	  virtual  const char *GetName() const {return fName;} 
27   	  virtual  TString GetKey() const; 
28   	  virtual  Int_t   GetNInt() const{ return fNUrr;} 
29   	  virtual  const UInt_t *GetUrr() const{ return fUrr;} 
30   	  virtual  void    SetKey(const char *key);
31   	  virtual  void    SetUrr(const UInt_t *key,int nk);
32   	  virtual  UInt_t  GetSum() const;
33   	  virtual  Int_t   EOK()    const { return fUrr[0]==kUMAX;}
34   	  virtual  Int_t   IsNull() const { return !fUrr[0];}
35   	  virtual  Int_t   Compare(StUKey &uk2) const 
36   	                  { return strcmp(GetKey().Data(),uk2.GetKey().Data());}
37   	  virtual  Int_t GetRunId()   const { return fUrr[0]; }
38   	  virtual  Int_t GetEventId() const { return fUrr[1]; }
39   	private:
40   	  TString fName;
41   	  Int_t fNUrr;
42   	  UInt_t fUrr[9];
43   	};
44   	
45   	
46   	class StFileI : public TNamed
47   	{
48   	public:
49   	  StFileI(const char *name="",const char *titl=""):TNamed(name,titl){SetDebug(0);}
50   	  virtual ~StFileI(){}
51   	  virtual Int_t SetDebug(Int_t dbl=1){fDebug=dbl; return fDebug;}
52   	  virtual Int_t GetDebug() const {return fDebug;}
53   	  virtual Int_t Init(int /* Argc=0 */, const char** /* Argv=0 */){return 0;}
54   	  virtual Int_t Init(const char *argv)
55   	                {const char *Argv[1]; Argv[0]=argv; return Init(1,Argv);};
56   	 
57   	  virtual void  ls(Option_t *opt="") const {if(opt){};};
58   	  virtual Int_t AddFile(const char */* file */,const char * opt=0){if (opt) {}; return 0;};
59   	  virtual Int_t AddFile(const char **/* fileList */){return 0;};
60   	  virtual Int_t AddWild(const char */* file */,const char */* opt=0 */){return 0;};
61   	  virtual Int_t GetNFiles()=0;
62   	  virtual Int_t GetNBundles()=0;
63   	  virtual Int_t GetBundleSize()=0;
64   	  virtual const char *GetFileName(Int_t idx=-1)=0;
65   	  virtual const char *GetCompName(Int_t idx=0)=0;
66   	  virtual const char *GetFormat(Int_t idx=0)=0;
67   	  virtual Int_t GetNextBundle()=0;
68   	  virtual Int_t GetNextEvent(UInt_t *NextEventNumber)
69   	                {*NextEventNumber=0;return 0;}
70   	  virtual StUKey GetNextEvent();
71   	  virtual  void Rewind(){assert(0);};
72   	protected:
73   	 Int_t fDebug;
74   	 
75   	ClassDef(StFileI,0)
76   	};
77   	#endif
78