00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDocInfo
00013 #define ROOT_TDocInfo
00014
00015 #ifndef ROOT_TClass
00016 #include "TClass.h"
00017 #endif
00018 #ifndef ROOT_THashList
00019 #include "THashList.h"
00020 #endif
00021 #ifndef ROOT_TNamed
00022 #include "TNamed.h"
00023 #endif
00024 #include <string>
00025 #include <set>
00026
00027 class TDictionary;
00028
00029 class TModuleDocInfo;
00030
00031
00032
00033
00034 class TClassDocInfo: public TObject {
00035 public:
00036
00037 TClassDocInfo(TClass* cl,
00038 const char* htmlfilename = "",
00039 const char* fsdecl = "", const char* fsimpl = "",
00040 const char* decl = 0, const char* impl = 0):
00041 fClass(cl), fModule(0), fHtmlFileName(htmlfilename),
00042 fDeclFileName(decl ? decl : cl->GetDeclFileName()),
00043 fImplFileName(impl ? impl : cl->GetImplFileName()),
00044 fDeclFileSysName(fsdecl), fImplFileSysName(fsimpl),
00045 fSelected(kTRUE) { }
00046
00047 TClassDocInfo(TDictionary* cl,
00048 const char* htmlfilename = "",
00049 const char* fsdecl = "", const char* fsimpl = "",
00050 const char* decl = 0, const char* impl = 0):
00051 fClass(cl), fModule(0), fHtmlFileName(htmlfilename),
00052 fDeclFileName(decl),
00053 fImplFileName(impl),
00054 fDeclFileSysName(fsdecl), fImplFileSysName(fsimpl),
00055 fSelected(kTRUE) { }
00056
00057 virtual ~TClassDocInfo() {}
00058
00059 TDictionary* GetClass() const { return fClass; }
00060 virtual const char* GetName() const;
00061 const char* GetHtmlFileName() const { return fHtmlFileName; }
00062 const char* GetDeclFileName() const { return fDeclFileName; }
00063 const char* GetImplFileName() const { return fImplFileName; }
00064 const char* GetDeclFileSysName() const { return fDeclFileSysName; }
00065 const char* GetImplFileSysName() const { return fImplFileSysName; }
00066
00067 void SetModule(TModuleDocInfo* module) { fModule = module; }
00068 TModuleDocInfo* GetModule() const { return fModule; }
00069
00070 void SetSelected(Bool_t sel = kTRUE) { fSelected = sel; }
00071 Bool_t IsSelected() const { return fSelected; }
00072 Bool_t HaveSource() const { return fDeclFileSysName.Length()
00073 || (fClass && !dynamic_cast<TClass*>(fClass)); }
00074
00075 void SetHtmlFileName(const char* name) { fHtmlFileName = name; }
00076 void SetDeclFileName(const char* name) { fDeclFileName = name; }
00077 void SetImplFileName(const char* name) { fImplFileName = name; }
00078 void SetDeclFileSysName(const char* fsname) { fDeclFileSysName = fsname; }
00079 void SetImplFileSysName(const char* fsname) { fImplFileSysName = fsname; }
00080
00081 ULong_t Hash() const;
00082
00083 TList& GetListOfTypedefs() { return fTypedefs; }
00084
00085 virtual Bool_t IsSortable() const { return kTRUE; }
00086 virtual Int_t Compare(const TObject* obj) const;
00087
00088 private:
00089 TClassDocInfo();
00090
00091 TDictionary* fClass;
00092 TModuleDocInfo* fModule;
00093 TString fHtmlFileName;
00094 TString fDeclFileName;
00095 TString fImplFileName;
00096 TString fDeclFileSysName;
00097 TString fImplFileSysName;
00098 TList fTypedefs;
00099 Bool_t fSelected;
00100
00101 ClassDef(TClassDocInfo,0);
00102 };
00103
00104
00105
00106
00107
00108 class TModuleDocInfo: public TNamed {
00109 public:
00110 TModuleDocInfo(const char* name, TModuleDocInfo* super, const char* doc = ""):
00111 TNamed(name, doc), fSuper(super), fSub(0), fSelected(kTRUE) {
00112 if (super) super->GetSub().Add(this);
00113 }
00114 virtual ~TModuleDocInfo() {}
00115
00116 void SetDoc(const char* doc) { SetTitle(doc); }
00117 const char* GetDoc() const { return GetTitle(); }
00118
00119 void SetSelected(Bool_t sel = kTRUE) { fSelected = sel; }
00120 Bool_t IsSelected() const { return fSelected; }
00121
00122 void AddClass(TClassDocInfo* cl) { fClasses.Add(cl); }
00123 TList* GetClasses() { return &fClasses; }
00124
00125 TModuleDocInfo* GetSuper() const { return fSuper; }
00126 THashList& GetSub() { return fSub; }
00127
00128 private:
00129 TModuleDocInfo* fSuper;
00130 THashList fSub;
00131 TList fClasses;
00132 Bool_t fSelected;
00133
00134 ClassDef(TModuleDocInfo,0);
00135 };
00136
00137
00138
00139
00140
00141
00142 class TLibraryDocInfo: public TNamed {
00143 public:
00144 TLibraryDocInfo() {}
00145 TLibraryDocInfo(const char* lib): TNamed(lib, "") {}
00146
00147 std::set<std::string>& GetDependencies() {return fDependencies;}
00148 std::set<std::string>& GetModules() {return fModules;}
00149 void AddDependency(const std::string& lib) {fDependencies.insert(lib);}
00150 void AddModule(const std::string& module) {fModules.insert(module);}
00151
00152 private:
00153 std::set<std::string> fDependencies;
00154 std::set<std::string> fModules;
00155
00156 ClassDef(TLibraryDocInfo,0);
00157 };
00158
00159
00160 #endif // ROOT_TDocInfo