#ifndef ROOT_TDataMember
#define ROOT_TDataMember
#ifndef ROOT_TDictionary
#include "TDictionary.h"
#endif
class TList;
class TClass;
class TDataType;
class TMethodCall;
class TDataMember : public TDictionary {
private:
enum { kObjIsPersistent = BIT(2) };
DataMemberInfo_t *fInfo;
TClass *fClass;
TDataType *fDataType;
Long_t fOffset;
Int_t fSTLCont;
Long_t fProperty;
Int_t fArrayDim;
Int_t *fArrayMaxIndex;
TString fArrayIndex;
TString fTypeName;
TString fFullTypeName;
TString fTrueTypeName;
TMethodCall *fValueGetter;
TMethodCall *fValueSetter;
TList *fOptions;
void Init(bool afterReading);
protected:
TDataMember(const TDataMember&);
TDataMember& operator=(const TDataMember&);
public:
TDataMember(DataMemberInfo_t *info = 0, TClass *cl = 0);
virtual ~TDataMember();
Int_t GetArrayDim() const;
DeclId_t GetDeclId() const;
Int_t GetMaxIndex(Int_t dim) const;
TClass *GetClass() const { return fClass; }
TDataType *GetDataType() const { return fDataType; }
Long_t GetOffset() const;
Long_t GetOffsetCint() const;
const char *GetTypeName() const;
const char *GetFullTypeName() const;
const char *GetTrueTypeName() const;
const char *GetArrayIndex() const;
Int_t GetUnitSize() const;
TList *GetOptions() const;
TMethodCall *SetterMethod(TClass *cl);
TMethodCall *GetterMethod(TClass *cl = 0);
Bool_t IsBasic() const;
Bool_t IsEnum() const;
Bool_t IsaPointer() const;
Bool_t IsPersistent() const { return TestBit(kObjIsPersistent); }
Int_t IsSTLContainer();
Bool_t IsValid();
Long_t Property() const;
void SetClass(TClass* cl) { fClass = cl; }
virtual bool Update(DataMemberInfo_t *info);
ClassDef(TDataMember,2)
};
class TOptionListItem : public TObject {
public:
TDataMember *fDataMember;
Long_t fValue;
Long_t fValueMaskBit;
Long_t fToggleMaskBit;
TString fOptName;
TString fOptLabel;
TOptionListItem():
fDataMember(0), fValue(0), fValueMaskBit(0), fToggleMaskBit(0)
{}
TOptionListItem(TDataMember *m,Long_t val, Long_t valmask, Long_t tglmask,
const char *name, const char *label);
ClassDef(TOptionListItem,2);
};
#endif