TProcessID.h

Go to the documentation of this file.
00001 // @(#)root/cont:$Id: TProcessID.h 26606 2008-12-02 20:36:09Z pcanal $
00002 // Author: Rene Brun   28/09/2001
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TProcessID
00013 #define ROOT_TProcessID
00014 
00015 
00016 //////////////////////////////////////////////////////////////////////////
00017 //                                                                      //
00018 // TProcessID                                                           //
00019 //                                                                      //
00020 // Process Identifier object                                            //
00021 //                                                                      //
00022 //////////////////////////////////////////////////////////////////////////
00023 
00024 
00025 #ifndef ROOT_TNamed
00026 #include "TNamed.h"
00027 #endif
00028 #ifndef ROOT_TObjArray
00029 #include "TObjArray.h"
00030 #endif
00031 
00032 class TExMap;
00033 
00034 class TProcessID : public TNamed {
00035 
00036 private:
00037    TProcessID(const TProcessID &ref);            // TProcessID are not copiable.
00038    TProcessID& operator=(const TProcessID &ref); // TProcessID are not copiable.
00039 
00040 protected:
00041    Int_t              fCount;     //!Reference count to this object (from TFile)
00042    TObjArray         *fObjects;   //!Array pointing to the referenced objects
00043    
00044    static TProcessID *fgPID;      //Pointer to current session ProcessID
00045    static TObjArray  *fgPIDs;     //Table of ProcessIDs
00046    static TExMap     *fgObjPIDs;  //Table pointer to pids
00047    static UInt_t      fgNumber;   //Referenced objects count
00048   
00049 public:
00050    TProcessID();
00051    virtual ~TProcessID();
00052    void             CheckInit();
00053    virtual void     Clear(Option_t *option="");
00054    Int_t            DecrementCount();
00055    Int_t            IncrementCount();
00056    Int_t            GetCount() const {return fCount;}
00057    TObjArray       *GetObjects() const {return fObjects;}
00058    TObject         *GetObjectWithID(UInt_t uid);
00059    void             PutObjectWithID(TObject *obj, UInt_t uid=0);
00060    virtual void     RecursiveRemove(TObject *obj);
00061    
00062    static TProcessID  *AddProcessID();
00063    static UInt_t       AssignID(TObject *obj);
00064    static void         Cleanup();
00065    static UInt_t       GetNProcessIDs();
00066    static TProcessID  *GetPID();
00067    static TObjArray   *GetPIDs();
00068    static TProcessID  *GetProcessID(UShort_t pid);
00069    static TProcessID  *GetProcessWithUID(const TObject *obj);
00070    static TProcessID  *GetProcessWithUID(UInt_t uid,const void *obj);
00071    static TProcessID  *GetSessionProcessID();
00072    static  UInt_t      GetObjectCount();
00073    static  Bool_t      IsValid(TProcessID *pid);
00074    static  void        SetObjectCount(UInt_t number);
00075          
00076    ClassDef(TProcessID,1)  //Process Unique Identifier in time and space
00077 };
00078 
00079 #endif

Generated on Tue Jul 5 14:10:29 2011 for ROOT_528-00b_version by  doxygen 1.5.1