00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TMemberInspector
00013 #define ROOT_TMemberInspector
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Rtypes.h"
00027
00028 class TObject;
00029 class TClass;
00030
00031 class TMemberInspector {
00032 private:
00033 class TParentBuf;
00034 TParentBuf* fParent;
00035
00036 public:
00037 TMemberInspector();
00038 virtual ~TMemberInspector();
00039
00040 virtual void Inspect(TClass *cl, const char *parent, const char *name, const void *addr) = 0;
00041
00042 const char* GetParent() const;
00043 Ssiz_t GetParentLen() const;
00044 void AddToParent(const char* name);
00045 void RemoveFromParent(Ssiz_t startingAt);
00046
00047 template <class T>
00048 void InspectMember(T& obj, const char* name) {
00049 Ssiz_t len = GetParentLen();
00050 AddToParent(name);
00051 obj.ShowMembers(*this);
00052 RemoveFromParent(len);
00053 }
00054
00055 void InspectMember(TObject& obj, const char* name);
00056 void InspectMember(const char* topclassname, void* pobj, const char* name,
00057 Bool_t transient);
00058 void InspectMember(TClass* cl, void* pobj, const char* name);
00059
00060 void GenericShowMembers(const char *topClassName, void *obj,
00061 Bool_t transientMember);
00062
00063 ClassDef(TMemberInspector,0)
00064 };
00065
00066 #endif