#ifndef ROOT_TDocInfo
#define ROOT_TDocInfo
#ifndef ROOT_TClass
#include "TClass.h"
#endif
#ifndef ROOT_THashList
#include "THashList.h"
#endif
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#include <string>
#include <set>
class TDictionary;
class TModuleDocInfo;
class TClassDocInfo: public TObject {
public:
TClassDocInfo(TClass* cl,
const char* htmlfilename = "",
const char* fsdecl = "", const char* fsimpl = "",
const char* decl = 0, const char* impl = 0):
fClass(cl), fModule(0), fHtmlFileName(htmlfilename),
fDeclFileName(decl ? decl : cl->GetDeclFileName()),
fImplFileName(impl ? impl : cl->GetImplFileName()),
fDeclFileSysName(fsdecl), fImplFileSysName(fsimpl),
fSelected(kTRUE) { }
TClassDocInfo(TDictionary* cl,
const char* htmlfilename = "",
const char* fsdecl = "", const char* fsimpl = "",
const char* decl = 0, const char* impl = 0):
fClass(cl), fModule(0), fHtmlFileName(htmlfilename),
fDeclFileName(decl),
fImplFileName(impl),
fDeclFileSysName(fsdecl), fImplFileSysName(fsimpl),
fSelected(kTRUE) { }
virtual ~TClassDocInfo() {}
TDictionary* GetClass() const { return fClass; }
virtual const char* GetName() const;
const char* GetHtmlFileName() const { return fHtmlFileName; }
const char* GetDeclFileName() const { return fDeclFileName; }
const char* GetImplFileName() const { return fImplFileName; }
const char* GetDeclFileSysName() const { return fDeclFileSysName; }
const char* GetImplFileSysName() const { return fImplFileSysName; }
void SetModule(TModuleDocInfo* module) { fModule = module; }
TModuleDocInfo* GetModule() const { return fModule; }
void SetSelected(Bool_t sel = kTRUE) { fSelected = sel; }
Bool_t IsSelected() const { return fSelected; }
Bool_t HaveSource() const { return fDeclFileSysName.Length()
|| (fClass && !dynamic_cast<TClass*>(fClass)); }
void SetHtmlFileName(const char* name) { fHtmlFileName = name; }
void SetDeclFileName(const char* name) { fDeclFileName = name; }
void SetImplFileName(const char* name) { fImplFileName = name; }
void SetDeclFileSysName(const char* fsname) { fDeclFileSysName = fsname; }
void SetImplFileSysName(const char* fsname) { fImplFileSysName = fsname; }
ULong_t Hash() const;
TList& GetListOfTypedefs() { return fTypedefs; }
virtual Bool_t IsSortable() const { return kTRUE; }
virtual Int_t Compare(const TObject* obj) const;
private:
TClassDocInfo();
TDictionary* fClass;
TModuleDocInfo* fModule;
TString fHtmlFileName;
TString fDeclFileName;
TString fImplFileName;
TString fDeclFileSysName;
TString fImplFileSysName;
TList fTypedefs;
Bool_t fSelected;
ClassDef(TClassDocInfo,0);
};
class TModuleDocInfo: public TNamed {
public:
TModuleDocInfo(const char* name, TModuleDocInfo* super, const char* doc = ""):
TNamed(name, doc), fSuper(super), fSub(0), fSelected(kTRUE) {
if (super) super->GetSub().Add(this);
}
virtual ~TModuleDocInfo() {}
void SetDoc(const char* doc) { SetTitle(doc); }
const char* GetDoc() const { return GetTitle(); }
void SetSelected(Bool_t sel = kTRUE) { fSelected = sel; }
Bool_t IsSelected() const { return fSelected; }
void AddClass(TClassDocInfo* cl) { fClasses.Add(cl); }
TList* GetClasses() { return &fClasses; }
TModuleDocInfo* GetSuper() const { return fSuper; }
THashList& GetSub() { return fSub; }
private:
TModuleDocInfo* fSuper;
THashList fSub;
TList fClasses;
Bool_t fSelected;
ClassDef(TModuleDocInfo,0);
};
class TLibraryDocInfo: public TNamed {
public:
TLibraryDocInfo() {}
TLibraryDocInfo(const char* lib): TNamed(lib, "") {}
std::set<std::string>& GetDependencies() {return fDependencies;}
std::set<std::string>& GetModules() {return fModules;}
void AddDependency(const std::string& lib) {fDependencies.insert(lib);}
void AddModule(const std::string& module) {fModules.insert(module);}
private:
std::set<std::string> fDependencies;
std::set<std::string> fModules;
ClassDef(TLibraryDocInfo,0);
};
#endif // ROOT_TDocInfo