00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TDocOutput
00013 #define ROOT_TDocOutput
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ROOT_TObject
00025 #include "TObject.h"
00026 #endif
00027 #ifndef ROOT_Riosfwd
00028 #include "Riosfwd.h"
00029 #endif
00030 #ifndef ROOT_TDocParser
00031 #include "TDocParser.h"
00032 #endif
00033
00034 class TClass;
00035 class TDataMember;
00036 class TDataType;
00037 class TGClient;
00038 class THtml;
00039 class TModuleDocInfo;
00040 class TString;
00041 class TSubString;
00042 class TVirtualPad;
00043
00044 class TDocOutput: public TObject {
00045 protected:
00046 enum EGraphvizTool {
00047 kDot,
00048 kNeato,
00049 kFdp,
00050 kCirco
00051 };
00052
00053 THtml* fHtml;
00054
00055 int CaseInsensitiveSort(const void *name1, const void *name2);
00056 void AddLink(TSubString& str, TString& link, const char* comment);
00057 void ProcessDocInDir(std::ostream& out, const char* indir, const char* outdir, const char* linkdir);
00058 Bool_t RunDot(const char* filename, std::ostream* outMap = 0, EGraphvizTool gvwhat = kDot);
00059 void WriteHtmlHeader(std::ostream& out, const char *titleNoSpecial,
00060 const char* dir , TClass *cls ,
00061 const char* header);
00062 void WriteHtmlFooter(std::ostream& out, const char *dir,
00063 const char *lastUpdate, const char *author,
00064 const char *copyright, const char* footer);
00065 virtual void WriteSearch(std::ostream& out);
00066 void WriteLocation(std::ostream& out, TModuleDocInfo* module, const char* classname = 0);
00067 void WriteModuleLinks(std::ostream& out);
00068 void WriteModuleLinks(std::ostream& out, TModuleDocInfo* super);
00069 void WriteTopLinks(std::ostream& out, TModuleDocInfo* module, const char* classname = 0, Bool_t withLocation = kTRUE);
00070
00071 public:
00072 enum EFileType { kSource, kInclude, kTree, kDoc };
00073
00074 TDocOutput(THtml& html);
00075 virtual ~TDocOutput();
00076
00077 virtual void AdjustSourcePath(TString& line, const char* relpath = "../");
00078 void Convert(std::istream& in, const char* infilename,
00079 const char* outfilename, const char *title,
00080 const char *relpath = "../",
00081 Int_t includeOutput = 0,
00082 const char* context = "",
00083 TGClient* gclient = 0);
00084 Bool_t CopyHtmlFile(const char *sourceName, const char *destName="");
00085
00086 virtual void CreateClassIndex();
00087 virtual void CreateModuleIndex();
00088 virtual void CreateProductIndex();
00089 virtual void CreateTypeIndex();
00090 virtual void CreateClassTypeDefs();
00091 virtual void CreateHierarchy();
00092
00093 virtual void DecorateEntityBegin(TString& str, Ssiz_t& pos, TDocParser::EParseContext type);
00094 virtual void DecorateEntityEnd(TString& str, Ssiz_t& pos, TDocParser::EParseContext type);
00095 virtual void FixupAuthorSourceInfo(TString& authors);
00096 const char* GetExtension() const { return ".html"; }
00097 THtml* GetHtml() { return fHtml; }
00098 virtual Bool_t IsModified(TClass *classPtr, EFileType type);
00099 virtual void NameSpace2FileName(TString &name);
00100
00101 virtual void ReferenceEntity(TSubString& str, TClass* entity, const char* comment = 0);
00102 virtual void ReferenceEntity(TSubString& str, TDataMember* entity, const char* comment = 0);
00103 virtual void ReferenceEntity(TSubString& str, TDataType* entity, const char* comment = 0);
00104 virtual void ReferenceEntity(TSubString& str, TMethod* entity, const char* comment = 0);
00105 virtual Bool_t ReferenceIsRelative(const char* reference) const;
00106
00107 virtual const char* ReplaceSpecialChars(char c);
00108 void ReplaceSpecialChars(std::ostream &out, const char *string);
00109 void ReplaceSpecialChars(TString& text);
00110 void ReplaceSpecialChars(TString& text, Ssiz_t &pos);
00111
00112 virtual void WriteHtmlHeader(std::ostream &out, const char *title, const char* dir="", TClass *cls=0);
00113 virtual void WriteHtmlFooter(std::ostream &out, const char *dir="", const char *lastUpdate="",
00114 const char *author="", const char *copyright="");
00115 void WriteLineNumbers(std::ostream& out, Long_t nLines, const TString& infileBase) const;
00116
00117 ClassDef(TDocOutput, 0);
00118 };
00119
00120 #endif // ROOT_TDocOutput