Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TDocOutput.h
Go to the documentation of this file.
1 // @(#)root/html:$Id$
2 // Author: Axel Naumann 2007-01-09
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TDocOutput
13 #define ROOT_TDocOutput
14 
15 
16 ////////////////////////////////////////////////////////////////////////////
17 // //
18 // ROOT_TDocOutput //
19 // //
20 // Generates documentation output using XHTML 1.0 transitional //
21 // //
22 ////////////////////////////////////////////////////////////////////////////
23 
24 #include "TObject.h"
25 #include "TDocParser.h"
26 
27 class TClass;
28 class TDataMember;
29 class TDataType;
30 class TGClient;
31 class THtml;
32 class TModuleDocInfo;
33 class TString;
34 class TSubString;
35 class TVirtualPad;
36 
37 class TDocOutput: public TObject {
38 protected:
39  enum EGraphvizTool {
40  kDot,
41  kNeato,
42  kFdp,
43  kCirco
44  };
45 
46  THtml* fHtml; // THtml object we belong to
47 
48  int CaseInsensitiveSort(const void *name1, const void *name2);
49  void AddLink(TSubString& str, TString& link, const char* comment);
50  void ProcessDocInDir(std::ostream& out, const char* indir, const char* outdir, const char* linkdir);
51  Bool_t RunDot(const char* filename, std::ostream* outMap = 0, EGraphvizTool gvwhat = kDot);
52  void WriteHtmlHeader(std::ostream& out, const char *titleNoSpecial,
53  const char* dir /*=""*/, TClass *cls /*=0*/,
54  const char* header);
55  void WriteHtmlFooter(std::ostream& out, const char *dir,
56  const char *lastUpdate, const char *author,
57  const char *copyright, const char* footer);
58  virtual void WriteSearch(std::ostream& out);
59  void WriteLocation(std::ostream& out, TModuleDocInfo* module, const char* classname = 0);
60  void WriteModuleLinks(std::ostream& out);
61  void WriteModuleLinks(std::ostream& out, TModuleDocInfo* super);
62  void WriteTopLinks(std::ostream& out, TModuleDocInfo* module, const char* classname = 0, Bool_t withLocation = kTRUE);
63 
64 public:
65  enum EFileType { kSource, kInclude, kTree, kDoc };
66 
67  TDocOutput(THtml& html);
68  virtual ~TDocOutput();
69 
70  virtual void AdjustSourcePath(TString& line, const char* relpath = "../");
71  void Convert(std::istream& in, const char* infilename,
72  const char* outfilename, const char *title,
73  const char *relpath = "../",
74  Int_t includeOutput = 0,
75  const char* context = "",
76  TGClient* gclient = 0);
77  Bool_t CopyHtmlFile(const char *sourceName, const char *destName="");
78 
79  virtual void CreateClassIndex();
80  virtual void CreateModuleIndex();
81  virtual void CreateProductIndex();
82  virtual void CreateTypeIndex();
83  virtual void CreateClassTypeDefs();
84  virtual void CreateHierarchy();
85 
86  virtual void DecorateEntityBegin(TString& str, Ssiz_t& pos, TDocParser::EParseContext type);
87  virtual void DecorateEntityEnd(TString& str, Ssiz_t& pos, TDocParser::EParseContext type);
88  virtual void FixupAuthorSourceInfo(TString& authors);
89  const char* GetExtension() const { return ".html"; }
90  THtml* GetHtml() { return fHtml; }
91  virtual Bool_t IsModified(TClass *classPtr, EFileType type);
92  virtual void NameSpace2FileName(TString &name);
93 
94  virtual void ReferenceEntity(TSubString& str, TClass* entity, const char* comment = 0);
95  virtual void ReferenceEntity(TSubString& str, TDataMember* entity, const char* comment = 0);
96  virtual void ReferenceEntity(TSubString& str, TDataType* entity, const char* comment = 0);
97  virtual void ReferenceEntity(TSubString& str, TMethod* entity, const char* comment = 0);
98  virtual Bool_t ReferenceIsRelative(const char* reference) const;
99 
100  virtual const char* ReplaceSpecialChars(char c);
101  void ReplaceSpecialChars(std::ostream &out, const char *string);
102  void ReplaceSpecialChars(TString& text);
103  void ReplaceSpecialChars(TString& text, Ssiz_t &pos);
104 
105  virtual void WriteHtmlHeader(std::ostream &out, const char *title, const char* dir="", TClass *cls=0);
106  virtual void WriteHtmlFooter(std::ostream &out, const char *dir="", const char *lastUpdate="",
107  const char *author="", const char *copyright="");
108  void WriteLineNumbers(std::ostream& out, Long_t nLines, const TString& infileBase) const;
109 
110  ClassDef(TDocOutput, 0); // generates documentation web pages
111 };
112 
113 #endif // ROOT_TDocOutput