TMessageHandler.h

Go to the documentation of this file.
00001 // @(#)root/base:$Id: TMessageHandler.h 22415 2008-03-01 11:00:27Z rdm $
00002 // Author: Rene Brun   11/11/99
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_TMessageHandler
00013 #define ROOT_TMessageHandler
00014 
00015 
00016 //////////////////////////////////////////////////////////////////////////
00017 //                                                                      //
00018 // TMessageHandler                                                      //
00019 //                                                                      //
00020 // Handle messages that might be generated by the system.               //
00021 // By default a handler only keeps track of the different messages      //
00022 // generated for a specific class. By deriving from this class and      //
00023 // overriding Notify() one can implement custom message handling.       //
00024 // In Notify() one has access to the message id and the object          //
00025 // generating the message. One can install more than one message        //
00026 // handler per class. A message handler can be removed or again         //
00027 // added when needed.                                                   //
00028 //                                                                      //
00029 //////////////////////////////////////////////////////////////////////////
00030 
00031 #ifndef ROOT_TNamed
00032 #include "TNamed.h"
00033 #endif
00034 #ifndef ROOT_TQObject
00035 #include "TQObject.h"
00036 #endif
00037 
00038 class TMessageHandler : public TNamed, public TQObject {
00039 
00040 protected:
00041    const TClass   *fClass;      // class for which message has to be handled
00042    const TObject  *fMessObj;    // object generating message
00043    Int_t           fMessId;     // message id (often matching specific enum in fClass)
00044    Int_t           fSize;       // number of different messages handled
00045    Int_t          *fCnts;       // count per message
00046    Int_t          *fMessIds;    // message ids
00047    Bool_t          fDerived;    // if true handle messages also for derived classes
00048 
00049    void  *GetSender() { return this; }  //used to set gTQSender
00050 
00051 public:
00052    TMessageHandler(const TClass *cl, Bool_t derived = kTRUE);
00053    TMessageHandler(const char *cl, Bool_t derived = kTRUE);
00054    virtual ~TMessageHandler();
00055 
00056    Int_t           GetSize() const { return fSize; }
00057    virtual Int_t   GetMessageCount(Int_t messId) const;
00058    virtual Int_t   GetTotalMessageCount() const;
00059    Bool_t          HandleDerived() const { return fDerived; }
00060    virtual void    HandleMessage(Int_t id, const TObject *obj);
00061 
00062    virtual void    Print(Option_t *option= "") const;
00063 
00064    virtual void    Add();
00065    virtual void    Remove();
00066    virtual Bool_t  Notify();
00067 
00068    virtual void    Added()    { Emit("Added()"); }       //*SIGNAL*
00069    virtual void    Removed()  { Emit("Removed()"); }     //*SIGNAL*
00070    virtual void    Notified() { Emit("Notified()"); }    //*SIGNAL*
00071 
00072    ClassDef(TMessageHandler,0)  // Generic message handler
00073 };
00074 
00075 #endif

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