#ifndef ROOT_THtml
#define ROOT_THtml
#ifndef __CINT__
#include "TCint.h"
#include "Api.h"
#endif
#ifndef ROOT_TROOT
#include "TROOT.h"
#endif
#ifndef ROOT_TClass
#include "TClass.h"
#endif
#ifndef ROOT_TMap
#include "TMap.h"
#endif
#ifndef ROOT_THashList
#include "THashList.h"
#endif
#include <list>
#include <map>
#include <set>
#include <vector>
class TClass;
class TVirtualPad;
class TPaveText;
class THtml : public TObject {
protected:
enum ETraverse {
kUp, kDown, kBoth
};
enum EParseContext {
kCode,
kCComment,
kBeginEndHtml,
kBeginEndHtmlInCComment,
kString,
kNumParseContexts
};
enum EDocContext {
kIgnore,
kDocFunc,
kDocClass,
kNumDocContexts
};
enum ESourceInfo {
kInfoLastUpdate,
kInfoAuthor,
kInfoCopyright,
kNumSourceInfos
};
TString fXwho;
TString fSourcePrefix;
TString fSourceDir;
TString fOutputDir;
TString fDotDir;
Int_t fFoundDot;
TString fLine;
UInt_t fLineNo;
TString fLineExpanded;
TString fLineStripped;
TClass *fCurrentClass;
TString fCurrentFile;
std::map<std::string , Int_t > fMethodNames;
EDocContext fDocContext;
std::list<EParseContext> fParseContext;
std::set<UInt_t> fExtraLinesWithAnchor;
TString fSourceInfo[kNumSourceInfos];
TString fCounter;
Bool_t fEscFlag;
char fEsc;
Int_t fHierarchyLines;
TString fClassFilter;
THashList fClasses;
THashList fModules;
std::map<TClass*,std::string> fGuessedDeclFileNames;
std::map<TClass*,std::string> fGuessedImplFileNames;
static std::set<std::string> fgKeywords;
void AddClassMethodsRecursive(TBaseClass* bc, TList methodNames[3]);
void AddClassDataMembersRecursive(TBaseClass* bc, TList datamembers[6]);
void AnchorFromLine(TString& anchor);
virtual void BeautifyLine(std::ostream &srcOut, const char* relpath = "../");
void Class2Html(Bool_t force=kFALSE);
void ClassDescription(ofstream &out);
Bool_t ClassDotCharts(ofstream & out);
void ClassHtmlTree(ofstream &out, TClass *classPtr, ETraverse dir=kBoth, int depth=1);
void ClassTree(TVirtualPad *canvas, TClass *classPtr, Bool_t force=kFALSE);
Bool_t CopyHtmlFile(const char *sourceName, const char *destName="");
Bool_t CreateDotClassChartInh(const char* filename);
Bool_t CreateDotClassChartInhMem(const char* filename);
Bool_t CreateDotClassChartIncl(const char* filename);
Bool_t CreateDotClassChartLib(const char* filename);
void CreateIndex();
void CreateIndexByTopic();
void CreateHierarchy();
Bool_t CreateHierarchyDot();
void CreateListOfTypes();
void CreateListOfClasses(const char* filter);
void CreateSourceOutputStream(std::ofstream& out, const char* extension, TString& filename);
void DescendHierarchy(ofstream &out, TClass* basePtr, Int_t maxLines=0, Int_t depth=1);
void ExpandKeywords(ostream& out, const char* line);
void ExpandKeywords(TString& text);
void ExpandPpLine(ostream &out);
Bool_t ExtractComments(const TString &lineExpandedStripped,
Bool_t &foundClassDescription,
const char* classDescrTag, TString& comment);
TClass *GetClass(const char *name);
const char *GetFileName(const char *filename);
void GetSourceFileName(TString& filename);
void GetHtmlFileName(TClass *classPtr, TString& filename);
virtual void GetModuleName(TString& module, const char* filename) const;
Bool_t HaveDot();
Bool_t IsModified(TClass *classPtr, const Int_t type);
static Bool_t IsName(UChar_t c);
static Bool_t IsWord(UChar_t c);
TMethod* LocateMethodInCurrentLine(Ssiz_t& posMethodName, TString& ret,
TString& name, TString& params, std::ostream &srcOut, TString &anchor,
std::ifstream& sourcefile, Bool_t allowPureVirtual);
void LocateMethods(std::ofstream & out, const char* filename,
Bool_t lookForSourceInfo = kTRUE,
Bool_t useDocxxStyle = kFALSE,
Bool_t lookForClassDescr = kTRUE,
Bool_t allowPureVirtual = kFALSE,
const char* methodPattern = 0,
const char* sourceExt = 0);
void LocateMethodsInSource(ofstream & out);
void LocateMethodsInHeaderInline(ofstream & out);
void LocateMethodsInHeaderClassDecl(ofstream & out);
void MakeClass(void* cdi, Bool_t force=kFALSE);
void NameSpace2FileName(TString &name);
void ReplaceSpecialChars(ostream &out, const char c);
void ReplaceSpecialChars(ostream &out, const char *string);
void ReplaceSpecialChars(TString& text, Ssiz_t &pos);
Bool_t RunDot(const char* filename, std::ostream* outMap = 0);
void SortNames(const char **strings, Int_t num, Bool_t type=0);
char *StrDup(const char *s1, Int_t n = 1);
static Bool_t Strip(TString& s);
virtual void WriteMethod(std::ostream & out, TString& ret,
TString& name, TString& params,
const char* file, TString& anchor,
TString& comment, TString& codeOneLiner);
friend Int_t CaseSensitiveSort(const void *name1, const void *name2);
friend Int_t CaseInsensitiveSort(const void *name1, const void *name2);
public:
THtml();
virtual ~THtml();
void Convert(const char *filename, const char *title,
const char *dirname = "", const char *relpath="../");
void CreateJavascript();
void CreateStyleSheet();
const char *GetDeclFileName(TClass* cl) const;
const char *GetImplFileName(TClass* cl) const;
const char *GetSourceDir() { return fSourceDir; }
const char *GetOutputDir() { return fOutputDir; }
const char *GetXwho() const { return fXwho.Data(); }
void MakeAll(Bool_t force=kFALSE, const char *filter="*");
void MakeClass(const char *className, Bool_t force=kFALSE);
void MakeIndex(const char *filter="*");
void MakeTree(const char *className, Bool_t force=kFALSE);
void SetDeclFileName(TClass* cl, const char* filename);
void SetEscape(char esc='\\') { fEsc = esc; }
void SetImplFileName(TClass* cl, const char* filename);
void SetSourcePrefix(const char *prefix) { fSourcePrefix = prefix; }
void SetSourceDir(const char *dir) { fSourceDir = dir; }
void SetOutputDir(const char *dir) { fOutputDir = dir; }
void SetDotDir(const char* dir) { fDotDir = dir; fFoundDot = -1; }
void SetXwho(const char *xwho) { fXwho = xwho; }
virtual void WriteHtmlHeader(ofstream &out, const char *title, const char* dir="", TClass *cls=0);
virtual void WriteHtmlFooter(ofstream &out, const char *dir="", const char *lastUpdate="",
const char *author="", const char *copyright="");
ClassDef(THtml,0)
};
R__EXTERN THtml *gHtml;
#endif
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.