TDocOutput.h

Go to the documentation of this file.
00001 // @(#)root/html:$Id: TDocOutput.h 27562 2009-02-21 10:55:11Z axel $
00002 // Author: Axel Naumann 2007-01-09
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TDocOutput
00013 #define ROOT_TDocOutput
00014 
00015 
00016 ////////////////////////////////////////////////////////////////////////////
00017 //                                                                        //
00018 // ROOT_TDocOutput                                                        //
00019 //                                                                        //
00020 // Generates documentation output using XHTML 1.0 transitional            //
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; // THtml object we belong to
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 /*=0*/,
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); // generates documentation web pages
00118 };
00119 
00120 #endif // ROOT_TDocOutput

Generated on Tue Jul 5 14:24:42 2011 for ROOT_528-00b_version by  doxygen 1.5.1