40 class THtml:
public TObject {
44 class THelperBase:
public TObject {
46 THelperBase(): fHtml(0) {}
47 virtual ~THelperBase();
48 void SetOwner(THtml* html);
49 THtml* GetOwner()
const {
return fHtml; }
52 ClassDef(THelperBase, 0);
61 class TModuleDefinition:
public THelperBase {
63 virtual bool GetModule(TClass* cl, TFileSysEntry* fse, TString& out_modulename)
const;
64 ClassDef(TModuleDefinition, 0);
71 class TFileDefinition:
public THelperBase {
73 virtual bool GetDeclFileName(
const TClass* cl, TString& out_filename, TString& out_fsys,
74 TFileSysEntry** fse = 0)
const;
75 virtual bool GetImplFileName(
const TClass* cl, TString& out_filename, TString& out_fsys,
76 TFileSysEntry** fse = 0)
const;
78 virtual bool GetFileName(
const TClass* cl,
bool decl, TString& out_filename, TString& out_fsys,
79 TFileSysEntry** fse = 0)
const;
80 TString MatchFileSysName(TString& filename, TFileSysEntry** fse = 0)
const;
82 void SplitClassIntoDirFile(
const TString& clname, TString& dir, TString& filename)
const;
83 void NormalizePath(TString& path)
const;
84 void ExpandSearchPath(TString& path)
const;
85 ClassDef(TFileDefinition, 0);
92 class TPathDefinition:
public THelperBase {
94 virtual bool GetMacroPath(
const TString& module, TString& out_dir)
const;
95 virtual bool GetIncludeAs(TClass* cl, TString& out_include_as)
const;
96 virtual bool GetFileNameFromInclude(
const char* included, TString& out_fsname)
const;
97 virtual bool GetDocDir(
const TString& module, TString& doc_dir)
const;
99 ClassDef(TPathDefinition, 0);
106 class TFileSysEntry:
public TObject {
108 TFileSysEntry(
const char* name, TFileSysDir* parent):
109 fName(name), fParent(parent), fLevel(parent ? parent->GetLevel() + 1 : 0) {}
113 ROOT::CallRecursiveRemoveIfNeeded(*
this);
115 const char* GetName()
const {
return fName; }
116 virtual ULong_t Hash()
const {
return fName.Hash(); }
117 virtual void GetFullName(TString& fullname, Bool_t asIncluded)
const {
119 fParent->GetFullName(fullname, asIncluded);
127 TFileSysDir* GetParent()
const {
return fParent; }
128 Int_t GetLevel()
const {
return fLevel; }
131 TFileSysDir* fParent;
133 ClassDef(TFileSysEntry, 0);
138 class TFileSysDir:
public TFileSysEntry {
140 TFileSysDir(
const char* name, TFileSysDir* parent):
141 TFileSysEntry(name, parent)
142 { fFiles.SetOwner(); fDirs.SetOwner(); }
143 const TList* GetFiles()
const {
return &fFiles; }
144 const TList* GetSubDirs()
const {
return &fDirs; }
146 void Recurse(TFileSysDB* db,
const char* path);
151 ClassDef(TFileSysDir, 0);
157 class TFileSysRoot:
public TFileSysDir {
159 TFileSysRoot(
const char* name, TFileSysDB* parent):
160 TFileSysDir(name, parent) {}
161 void GetFullName(TString& fullname, Bool_t asIncluded)
const {
169 ClassDef(TFileSysRoot, 0);
174 class TFileSysDB:
public TFileSysDir {
176 TFileSysDB(
const char* path,
const char* ignorePath, Int_t maxdirlevel):
177 TFileSysDir(path, 0), fEntries(1009, 5), fIgnorePath(ignorePath), fMaxLevel(maxdirlevel)
180 TExMap& GetMapIno() {
return fMapIno; }
181 THashTable& GetEntries() {
return fEntries; }
182 const TString& GetIgnore()
const {
return fIgnorePath; }
183 Int_t GetMaxLevel()
const {
return fMaxLevel; }
193 ClassDef(TFileSysDB, 0);
207 fFoundDot(kDotUnknown),
209 fInputPath(
"./;src/;include/"),
211 fInputPath(
"./:src/:include/"),
213 fIncludePath(
"include"),
215 fIgnorePath(
"\\b(include|CVS|test|tutorials|doc|lib|python|demo|freetype-|gdk|libAfterImage|etc|config|build|bin)\\b"),
217 fMacroPath(
"macros:."),
218 fOutputDir(
"htmldoc") {}
220 EDotAccess fFoundDot;
222 TString fIncludePath;
233 enum EConvertOutput {
238 kSeparateProcessOutput = 0x20
244 static void LoadAllLibs();
247 void Convert(
const char *filename,
const char *title,
248 const char *dirname =
"",
const char *relpath=
"../",
249 Int_t includeOutput = kNoOutput,
250 const char* context =
"");
251 void CreateHierarchy();
252 void MakeAll(Bool_t force=kFALSE,
const char *filter=
"*",
254 void MakeClass(
const char *className, Bool_t force=kFALSE);
255 void MakeIndex(
const char *filter=
"*");
256 void MakeTree(
const char *className, Bool_t force=kFALSE);
259 void SetModuleDefinition(
const TModuleDefinition& md);
260 void SetFileDefinition(
const TFileDefinition& fd);
261 void SetPathDefinition(
const TPathDefinition& pd);
262 void SetProductName(
const char* product) { fProductName = product; }
263 void SetOutputDir(
const char *dir);
264 void SetInputDir(
const char *dir);
265 void SetSourceDir(
const char *dir) { SetInputDir(dir); }
266 void SetIncludePath(
const char* dir) { fPathInfo.fIncludePath = dir; }
267 void SetEtcDir(
const char* dir) { fPathInfo.fEtcDir = dir; }
268 void SetDocPath(
const char* path) { fPathInfo.fDocPath = path; }
269 void SetDotDir(
const char* dir) { fPathInfo.fDotDir = dir; fPathInfo.fFoundDot = PathInfo_t::kDotUnknown; }
270 void SetRootURL(
const char* url) { fLinkInfo.fROOTURL = url; }
271 void SetLibURL(
const char* lib,
const char* url) { fLinkInfo.fLibURLs[lib] = url; }
272 void SetXwho(
const char *xwho) { fLinkInfo.fXwho = xwho; }
273 void SetMacroPath(
const char* path) {fPathInfo.fMacroPath = path;}
274 void AddMacroPath(
const char* path);
275 void SetCounterFormat(
const char* format) { fCounterFormat = format; }
276 void SetClassDocTag(
const char* tag) { fDocSyntax.fClassDocTag = tag; }
277 void SetAuthorTag(
const char* tag) { fDocSyntax.fAuthorTag = tag; }
278 void SetLastUpdateTag(
const char* tag) { fDocSyntax.fLastUpdateTag = tag; }
279 void SetCopyrightTag(
const char* tag) { fDocSyntax.fCopyrightTag = tag; }
280 void SetHeader(
const char* file) { fOutputStyle.fHeader = file; }
281 void SetFooter(
const char* file) { fOutputStyle.fFooter = file; }
282 void SetHomepage(
const char* url) { fLinkInfo.fHomepage = url; }
283 void SetSearchStemURL(
const char* url) { fLinkInfo.fSearchStemURL = url; }
284 void SetSearchEngine(
const char* url) { fLinkInfo.fSearchEngine = url; }
285 void SetViewCVS(
const char* url) { fLinkInfo.fViewCVS = url; }
286 void SetWikiURL(
const char* url) { fLinkInfo.fWikiURL = url; }
287 void SetCharset(
const char* charset) { fOutputStyle.fCharset = charset; }
288 void SetDocStyle(
const char* style) { fDocSyntax.fDocStyle = style; }
291 const TModuleDefinition& GetModuleDefinition()
const;
292 const TFileDefinition& GetFileDefinition()
const;
293 const TPathDefinition& GetPathDefinition()
const;
294 const TString& GetProductName()
const {
return fProductName; }
295 const TString& GetInputPath()
const {
return fPathInfo.fInputPath; }
296 const TString& GetOutputDir(Bool_t createDir = kTRUE)
const;
297 virtual const char* GetEtcDir()
const;
298 const TString& GetModuleDocPath()
const {
return fPathInfo.fDocPath; }
299 const TString& GetDotDir()
const {
return fPathInfo.fDotDir; }
300 const char* GetURL(
const char* lib = 0)
const;
301 const TString& GetXwho()
const {
return fLinkInfo.fXwho; }
302 const TString& GetMacroPath()
const {
return fPathInfo.fMacroPath; }
303 const char* GetCounterFormat()
const {
return fCounterFormat; }
304 const TString& GetClassDocTag()
const {
return fDocSyntax.fClassDocTag; }
305 const TString& GetAuthorTag()
const {
return fDocSyntax.fAuthorTag; }
306 const TString& GetLastUpdateTag()
const {
return fDocSyntax.fLastUpdateTag; }
307 const TString& GetCopyrightTag()
const {
return fDocSyntax.fCopyrightTag; }
308 const TString& GetHeader()
const {
return fOutputStyle.fHeader; }
309 const TString& GetFooter()
const {
return fOutputStyle.fFooter; }
310 const TString& GetHomepage()
const {
return fLinkInfo.fHomepage; }
311 const TString& GetSearchStemURL()
const {
return fLinkInfo.fSearchStemURL; }
312 const TString& GetSearchEngine()
const {
return fLinkInfo.fSearchEngine; }
313 const TString& GetViewCVS()
const {
return fLinkInfo.fViewCVS; }
314 const TString& GetWikiURL()
const {
return fLinkInfo.fWikiURL; }
315 const TString& GetCharset()
const {
return fOutputStyle.fCharset; }
316 const TString& GetDocStyle()
const {
return fDocSyntax.fDocStyle; }
319 Bool_t CopyFileFromEtcDir(
const char* filename)
const;
320 virtual void CreateAuxiliaryFiles()
const;
321 virtual TClass* GetClass(
const char *name)
const;
322 const char* ShortType(
const char *name)
const;
323 const char* GetCounter()
const {
return fCounter; }
324 void GetModuleMacroPath(
const TString& module, TString& out_path)
const { GetPathDefinition().GetMacroPath(module, out_path); }
325 virtual bool GetDeclFileName(TClass* cl, Bool_t filesys, TString& out_name)
const;
326 void GetDerivedClasses(TClass* cl, std::map<TClass*, Int_t>& derived)
const;
327 static const char* GetDirDelimiter() {
335 virtual bool GetImplFileName(TClass* cl, Bool_t filesys, TString& out_name)
const;
336 virtual void GetHtmlFileName(TClass *classPtr, TString& filename)
const;
337 virtual const char* GetHtmlFileName(
const char* classname)
const;
338 TList* GetLibraryDependencies() {
return &fDocEntityInfo.fLibDeps; }
339 void SortListOfModules() { fDocEntityInfo.fModules.Sort(); }
340 const TList* GetListOfModules()
const {
return &fDocEntityInfo.fModules; }
341 const TList* GetListOfClasses()
const {
return &fDocEntityInfo.fClasses; }
342 TFileSysDB* GetLocalFiles()
const {
if (!fLocalFiles) SetLocalFiles();
return fLocalFiles; }
343 TVirtualMutex* GetMakeClassMutex()
const {
return fMakeClassMutex; }
344 virtual void GetModuleNameForClass(TString& module, TClass* cl)
const;
345 const PathInfo_t& GetPathInfo()
const {
return fPathInfo; }
347 void HelperDeleted(THelperBase* who);
348 static Bool_t IsNamespace(
const TClass*cl);
349 void SetDeclFileName(TClass* cl,
const char* filename);
350 void SetFoundDot(Bool_t found = kTRUE);
351 void SetImplFileName(TClass* cl,
const char* filename);
352 void SetBatch(Bool_t batch = kTRUE) { fBatch = batch; }
353 Bool_t IsBatch()
const {
return fBatch; }
355 void ReplaceSpecialChars(std::ostream&,
const char*) {
356 Error(
"ReplaceSpecialChars",
357 "Removed, call TDocOutput::ReplaceSpecialChars() instead!"); }
358 void SetEscape(
char =
'\\') {}
362 TString fClassDocTag;
364 TString fLastUpdateTag;
365 TString fCopyrightTag;
372 std::map<std::string, TString> fLibURLs;
374 TString fSearchStemURL;
375 TString fSearchEngine;
380 struct OutputStyle_t {
386 struct DocEntityInfo_t {
387 DocEntityInfo_t(): fClasses(503, 3) {}
388 TString fClassFilter;
390 mutable THashList fShortClassNames;
396 virtual void CreateJavascript()
const;
397 virtual void CreateStyleSheet()
const;
398 void CreateListOfTypes();
399 void CreateListOfClasses(
const char* filter);
400 virtual bool GetDeclImplFileName(TClass* cl,
bool filesys,
bool decl, TString& out_name)
const;
401 void MakeClass(
void* cdi, Bool_t force=kFALSE);
402 TClassDocInfo *GetNextClass();
403 void SetLocalFiles()
const;
405 static void *MakeClassThreaded(
void* info);
409 TString fCounterFormat;
410 TString fProductName;
411 TIter *fThreadedClassIter;
412 Int_t fThreadedClassCount;
413 TVirtualMutex *fMakeClassMutex;
415 DocSyntax_t fDocSyntax;
416 LinkInfo_t fLinkInfo;
417 OutputStyle_t fOutputStyle;
418 mutable PathInfo_t fPathInfo;
419 DocEntityInfo_t fDocEntityInfo;
420 mutable TPathDefinition *fPathDef;
421 mutable TModuleDefinition *fModuleDef;
422 mutable TFileDefinition* fFileDef;
423 mutable TFileSysDB *fLocalFiles;
429 R__EXTERN THtml *gHtml;