12 #ifndef ROOT_TClassRef
13 #define ROOT_TClassRef
32 std::string fClassName;
36 TClass *
const*fClassPtr;
41 void Assign(
const TClassRef &);
42 void Assign(TClass *);
43 TClass *InternalGetClass()
const;
45 TClassRef() : fClassName(), fClassPtr(0) {}
46 TClassRef(TClass *cl);
47 TClassRef(
const char *classname);
48 TClassRef(
const TClassRef&);
49 inline TClassRef &operator=(
const TClassRef &rhs) {
51 if (
this != &rhs && (fClassPtr == 0 || fClassPtr != rhs.fClassPtr)) {
56 inline TClassRef &operator=(TClass *rhs) {
58 if ( this->fClassPtr==0 || *(this->fClassPtr) != rhs) {
66 void SetName(
const char* new_name) {
67 if ( fClassPtr && fClassName != new_name ) Reset();
68 fClassName = new_name;
70 const char *GetClassName() {
return fClassName.c_str(); }
71 TClass *GetClass()
const {
return (fClassPtr && *fClassPtr) ? *fClassPtr : InternalGetClass(); }
72 void Reset() { fClassPtr = 0; }
74 TClass* operator->()
const {
return (fClassPtr && *fClassPtr) ? *fClassPtr : InternalGetClass(); }
75 operator TClass*()
const {
return (fClassPtr && *fClassPtr )? *fClassPtr : InternalGetClass(); }