Logo ROOT   6.10/09
Reference Guide
htmlex.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup Tutorials
3 /// This file demonstrates how THtml can document sources.
4 ///
5 /// See the [Users Guide](https://root.cern.ch/root/htmldoc/guides/users-guide/ROOTUsersGuide.html)
6 /// chapter [Automatic HTML Documentation](https://root.cern.ch/root/htmldoc/guides/users-guide/ROOTUsersGuideChapters/HTMLDoc.pdf),
7 /// and [THtml's class documentation](https://root.cern.ch/doc/master/classTHtml.html).
8 ///
9 /// To see this demo script in action start up ROOT and run
10 /// ~~~{.cpp}
11 /// root [0] .x $(ROOTSYS)/tutorials/htmlex.C+
12 /// ~~~
13 /// and check the output in `./htmldoc`.
14 ///
15 /// and of course we can put HTML code into comments, too.
16 ///
17 /// \macro_code
18 ///
19 /// \author Axel Naumann
20 
21 #include "THtml.h"
22 
23 class THtmlDemo: public TObject {
24 public:
25  THtmlDemo(): fHtml(0)
26  {
27  printf("This class is for demonstration purposes only!\n");
28  }
29  ~THtmlDemo() { if (fHtml) delete fHtml; }
30 
31  // inline methods can have their documentation in front
32  // of the declaration. DontDoMuch is so short - where
33  // else would one put it?
34  void DontDoMuch() {}
35 
36  void Convert()
37  {
38  // Create a "beautified" version of this source file.
39  // It will be called htmldoc/htmlex.C.html.
40 
41  GetHtml()->SetSourceDir("$(ROOTSYS)/tutorials");
42  GetHtml()->Convert("htmlex.C", "Example of THtml", "./htmldoc/", "./");
43  }
44 
45  void ReferenceDoc()
46  {
47  // This function documents THtmlDemo.
48  // It will create THtmlDemo.html and src/THtmlDemo.cxx.html
49  // - the beautified version of the source file
50 
51  GetHtml()->SetSourceDir("$(ROOTSYS)/tutorials");
52  GetHtml()->SetOutputDir("./htmldoc");
53  GetHtml()->MakeIndex("THtmlDemo"); // create ClassIndex.html and the javascript and CSS files
54  GetHtml()->MakeClass("THtmlDemo"); // update the class doc
55  }
56 
57  void MakeDocForAllClasses(Bool_t evenForROOT = kFALSE)
58  {
59  // Creates the documentation pages for all classes that have
60  // been loaded, and that are accessible from "./".
61  // If evenForROOT is set, we'll try to document ROOT's classes,
62  // too - you will end up with a copy of ROOT's class reference.
63  // The documentation will end up in the subdirectory htmldoc/.
64 
65  if (evenForROOT)
66  GetHtml()->SetSourceDir(".:$(ROOTSYS)");
67  else
68  GetHtml()->SetSourceDir(".");
69  GetHtml()->SetOutputDir("./htmldoc");
70  GetHtml()->MakeAll();
71  }
72 
73  void RunAll() {
74  // Show off a bit - do everything we can.
75  MakeDocForAllClasses();
76  ReferenceDoc();
77  Convert();
78  }
79 
80 protected:
81  THtml* GetHtml()
82  {
83  // Return out THtml object, and create it if it doesn't exist.
84  if (!fHtml) fHtml = new THtml();
85  return fHtml;
86  }
87 
88 private:
89  Int_t fVeryUselessMember; // This is a very useless member.
90  THtml* fHtml; // our local THtml instance.
91  ClassDef(THtmlDemo, 0); // A demo of THtml.
92 };
93 
94 void htmlex() {
95  THtmlDemo htmldemo;
96  htmldemo.RunAll();
97 }
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
#define ClassDef(name, id)
Definition: Rtypes.h:297
const Bool_t kFALSE
Definition: RtypesCore.h:92
Mother of all ROOT objects.
Definition: TObject.h:37
Definition: THtml.h:38