// @(#)root/html:$Id$
// Author: Axel Naumann 2007-01-09

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TClassDocOutput.h"

#include "TBaseClass.h"
#include "TClassEdit.h"
#include "TDataMember.h"
#include "TMethodArg.h"
#include "TDataType.h"
#include "TDocInfo.h"
#include "TDocParser.h"
#include "TEnv.h"
#include "TError.h"
#include "THtml.h"
#include "TMethod.h"
#include "TROOT.h"
#include "TSystem.h"
#include "TVirtualPad.h"
#include "TVirtualMutex.h"
#include "Riostream.h"
#include <sstream>

//______________________________________________________________________________
//
// Write the documentation for a class or namespace. The documentation is
// parsed by TDocParser and then passed to TClassDocOutput to generate
// the class doc header, the class description, members overview, and method
// documentation. All generic output functionality is in TDocOutput; it is
// re-used in this derived class.
//
// You usually do not use this class yourself; it is invoked indirectly by
// THtml. Customization of the output should happen via the interfaces defined
// by THtml.
//______________________________________________________________________________


ClassImp(TClassDocOutput);

//______________________________________________________________________________
TClassDocOutput::TClassDocOutput(THtml& html, TClass* cl, TList* typedefs):
   TDocOutput(html), fHierarchyLines(0), fCurrentClass(cl),
   fCurrentClassesTypedefs(typedefs), fParser(0)
{
   // Create an object given the invoking THtml object, and the TClass
   // object that we will generate output for.

   fParser = new TDocParser(*this, fCurrentClass);
}

//______________________________________________________________________________
TClassDocOutput::~TClassDocOutput()
{
   // Destructor, deletes fParser
   delete fParser;
}

//______________________________________________________________________________
void TClassDocOutput::Class2Html(Bool_t force)
{
// Create HTML files for a single class.
//

   gROOT->GetListOfGlobals(kTRUE);

   // create a filename
   TString filename(fCurrentClass->GetName());
   NameSpace2FileName(filename);

   gSystem->PrependPathName(fHtml->GetOutputDir(), filename);

   filename += ".html";

   if (!force && !IsModified(fCurrentClass, kSource)
       && !IsModified(fCurrentClass, kDoc)) {
      Printf(fHtml->GetCounterFormat(), "-no change-", fHtml->GetCounter(), filename.Data());
      return;
   }

   // open class file
   std::ofstream classFile(filename);

   if (!classFile.good()) {
      Error("Make", "Can't open file '%s' !", filename.Data());
      return;
   }

   Printf(fHtml->GetCounterFormat(), "", fHtml->GetCounter(), filename.Data());

   // write a HTML header for the classFile file
   WriteHtmlHeader(classFile, fCurrentClass->GetName(), "", fCurrentClass);
   WriteClassDocHeader(classFile);

   // copy .h file to the Html output directory
   TString declf;
   if (fHtml->GetDeclFileName(fCurrentClass, kTRUE, declf))
      CopyHtmlFile(declf);

   // process a '.cxx' file
   fParser->Parse(classFile);

   // write classFile footer
   WriteHtmlFooter(classFile, "",
      fParser->GetSourceInfo(TDocParser::kInfoLastUpdate),
      fParser->GetSourceInfo(TDocParser::kInfoAuthor),
      fParser->GetSourceInfo(TDocParser::kInfoCopyright));
}

//______________________________________________________________________________
void TClassDocOutput::ListFunctions(std::ostream& classFile)
{
   // Write the list of functions

   // loop to get a pointers to method names

   classFile << std::endl << "<div id=\"functions\">" << std::endl;
   TString mangled(fCurrentClass->GetName());
   NameSpace2FileName(mangled);
   classFile << "<h2><a id=\"" << mangled
      << ":Function_Members\"></a>Function Members (Methods)</h2>" << std::endl;

   const char* tab4nbsp="&nbsp;&nbsp;&nbsp;&nbsp;";
   TString declFile;
   fHtml->GetDeclFileName(fCurrentClass, kFALSE, declFile);
   if (fCurrentClass->Property() & kIsAbstract)
      classFile << "&nbsp;<br /><b>"
                << tab4nbsp << "This is an abstract class, constructors will not be documented.<br />" << std::endl
                << tab4nbsp << "Look at the <a href=\""
                << gSystem->BaseName(declFile)
                << "\">header</a> to check for available constructors.</b><br />" << std::endl;

   Int_t minAccess = 0;
   if (fHtml->IsNamespace(fCurrentClass))
      minAccess = TDocParser::kPublic;
   for (Int_t access = TDocParser::kPublic; access >= minAccess; --access) {

      const TList* methods = fParser->GetMethods((TDocParser::EAccess)access);
      if (methods->GetEntries() == 0)
         continue;

      classFile << "<div class=\"access\" ";
      const char* accessID [] = {"priv", "prot", "publ"};
      const char* accesstxt[] = {"private", "protected", "public"};

      classFile << "id=\"func" << accessID[access] << "\"><b>"
         << accesstxt[access] << ":</b>" << std::endl
         << "<table class=\"func\" id=\"tabfunc" << accessID[access] << "\" cellspacing=\"0\">" << std::endl;

      TIter iMethWrap(methods);
      TDocMethodWrapper *methWrap = 0;
      while ((methWrap = (TDocMethodWrapper*) iMethWrap())) {
         const TMethod* method = methWrap->GetMethod();

         // it's a c'tor - Cint stores the class name as return type
         Bool_t isctor = (!strcmp(method->GetName(), method->GetReturnTypeName()));
         // it's a d'tor - Cint stores "void" as return type
         Bool_t isdtor = (!isctor && method->GetName()[0] == '~');

         classFile << "<tr class=\"func";
         if (method->GetClass() != fCurrentClass)
            classFile << "inh";
         classFile << "\"><td class=\"funcret\">";
         if (kIsVirtual & method->Property()) {
            if (!isdtor)
               classFile << "virtual ";
            else
               classFile << " virtual";
         }

         if (kIsStatic & method->Property())
            classFile << "static ";

         if (!isctor && !isdtor)
            fParser->DecorateKeywords(classFile, method->GetReturnTypeName());

         TString mangledM(method->GetClass()->GetName());
         NameSpace2FileName(mangledM);
         classFile << "</td><td class=\"funcname\"><a class=\"funcname\" href=\"";
         if (method->GetClass() != fCurrentClass) {
            TString htmlFile;
            fHtml->GetHtmlFileName(method->GetClass(), htmlFile);
            classFile << htmlFile;
         }
         classFile << "#" << mangledM;
         classFile << ":";
         mangledM = method->GetName();
         NameSpace2FileName(mangledM);
         Int_t overloadIdx = methWrap->GetOverloadIdx();
         if (overloadIdx) {
            mangledM += "@";
            mangledM += overloadIdx;
         }
         classFile << mangledM << "\">";
         if (method->GetClass() != fCurrentClass) {
            classFile << "<span class=\"baseclass\">";
            ReplaceSpecialChars(classFile, method->GetClass()->GetName());
            classFile << "::</span>";
         }
         ReplaceSpecialChars(classFile, method->GetName());
         classFile << "</a>";

         fParser->DecorateKeywords(classFile, const_cast<TMethod*>(method)->GetSignature());
         bool propSignal = false;
         bool propMenu   = false;
         bool propToggle = false;
         bool propGetter = false;
         if (method->GetTitle()) {
            propSignal = (strstr(method->GetTitle(), "*SIGNAL*"));
            propMenu   = (strstr(method->GetTitle(), "*MENU*"));
            propToggle = (strstr(method->GetTitle(), "*TOGGLE*"));
            propGetter = (strstr(method->GetTitle(), "*GETTER"));
            if (propSignal || propMenu || propToggle || propGetter) {
               classFile << "<span class=\"funcprop\">";
               if (propSignal) classFile << "<abbr title=\"emits a signal\">SIGNAL</abbr> ";
               if (propMenu) classFile << "<abbr title=\"has a popup menu entry\">MENU</abbr> ";
               if (propToggle) classFile << "<abbr title=\"toggles a state\">TOGGLE</abbr> ";
               if (propGetter) {
                  TString getter(method->GetTitle());
                  Ssiz_t posGetter = getter.Index("*GETTER=");
                  getter.Remove(0, posGetter + 8);
                  classFile << "<abbr title=\"use " + getter + "() as getter\">GETTER</abbr> ";
               }
               classFile << "</span>";
            }
         }
         classFile << "</td></tr>" << std::endl;
      }
      classFile << std::endl << "</table></div>" << std::endl;
   }

   classFile << "</div>" << std::endl; // class="functions"
}

//______________________________________________________________________________
void  TClassDocOutput::ListDataMembers(std::ostream& classFile)
{
   // Write the list of data members and enums

   // make a loop on data members
   Bool_t haveDataMembers = (fParser->GetDataMembers(TDocParser::kPrivate)->GetEntries() ||
                             fParser->GetDataMembers(TDocParser::kProtected)->GetEntries() ||
                             fParser->GetDataMembers(TDocParser::kPublic)->GetEntries() ||
                             fParser->GetEnums(TDocParser::kPublic)->GetEntries() ||
                             fParser->GetEnums(TDocParser::kProtected)->GetEntries() ||
                             fParser->GetEnums(TDocParser::kPrivate)->GetEntries());

   if (!haveDataMembers) return;

   classFile << std::endl << "<div id=\"datamembers\">" << std::endl;
   TString mangled(fCurrentClass->GetName());
   NameSpace2FileName(mangled);
   classFile << "<h2><a name=\"" << mangled
      << ":Data_Members\"></a>Data Members</h2>" << std::endl;

   for (Int_t access = 5; access >= 0 && !fHtml->IsNamespace(fCurrentClass); --access) {
      const TList* datamembers = 0;
      if (access > 2) datamembers = fParser->GetEnums((TDocParser::EAccess) (access - 3));
      else datamembers = fParser->GetDataMembers((TDocParser::EAccess) access);
      if (datamembers->GetEntries() == 0)
         continue;

      classFile << "<div class=\"access\" ";
      const char* what = "data";
      if (access > 2) what = "enum";
      const char* accessID [] = {"priv", "prot", "publ"};
      const char* accesstxt[] = {"private", "protected", "public"};

      classFile << "id=\"" << what << accessID[access%3] << "\"><b>"
         << accesstxt[access%3] << ":</b>" << std::endl
         << "<table class=\"data\" id=\"tab" << what << accessID[access%3] << "\" cellspacing=\"0\">" << std::endl;

      TIter iDM(datamembers);
      TDataMember *member = 0;
      TString prevEnumName;
      Bool_t prevIsInh = kTRUE;

      while ((member = (TDataMember*) iDM())) {
         Bool_t haveNewEnum = access > 2 && prevEnumName != member->GetTypeName();
         if (haveNewEnum) {
            if (prevEnumName.Length()) {
               classFile << "<tr class=\"data";
               if (prevIsInh)
                  classFile << "inh";
               classFile << "\"><td class=\"datatype\">};</td><td></td><td></td></tr>" << std::endl;
            }
            prevEnumName = member->GetTypeName();
         }

         classFile << "<tr class=\"data";
         prevIsInh = (member->GetClass() != fCurrentClass);
         if (prevIsInh)
            classFile << "inh";
         classFile << "\"><td class=\"datatype\">";
         if (haveNewEnum) {
            TString enumName(member->GetTypeName());
            TString myScope(fCurrentClass->GetName());
            myScope += "::";
            enumName.ReplaceAll(myScope, "");
            if (enumName.EndsWith("::"))
               enumName += "<i>[unnamed]</i>";
            Ssiz_t startClassName = 0;
            if (!enumName.BeginsWith("enum "))
               classFile << "enum ";
            else
               startClassName = 5;

            Ssiz_t endClassName = enumName.Last(':'); // need template handling here!
            if (endClassName != kNPOS && endClassName > 0 && enumName[endClassName - 1] == ':') {
               // TClass* cl = fHtml->GetClass(TString(enumName(startClassName, endClassName - startClassName - 1)));
               TSubString substr(enumName(startClassName, endClassName - startClassName + 1));
               // if (cl)
                  // ReferenceEntity(substr, cl);
               enumName.Insert(substr.Start() + substr.Length(), "</span>");
               enumName.Insert(substr.Start(), "<span class=\"baseclass\">");
            }
            classFile << enumName << " { ";
         } else
            if (access < 3) {
               if (member->Property() & kIsStatic)
                  classFile << "static ";
               std::string shortTypeName(fHtml->ShortType(member->GetFullTypeName()));
               fParser->DecorateKeywords(classFile, shortTypeName.c_str());
            }

         TString mangledM(member->GetClass()->GetName());
         NameSpace2FileName(mangledM);
         classFile << "</td><td class=\"dataname\"><a ";
         if (member->GetClass() != fCurrentClass) {
            classFile << "href=\"";
            TString htmlFile;
            fHtml->GetHtmlFileName(member->GetClass(), htmlFile);
            classFile << htmlFile << "#";
         } else
            classFile << "name=\"";
         classFile << mangledM;
         classFile << ":";
         mangledM = member->GetName();
         NameSpace2FileName(mangledM);
         classFile << mangledM << "\">";
         if (member->GetClass() == fCurrentClass)
            classFile << "</a>";
         if (access < 3 && member->GetClass() != fCurrentClass) {
            classFile << "<span class=\"baseclass\">";
            ReplaceSpecialChars(classFile, member->GetClass()->GetName());
            classFile << "::</span>";
         }
         ReplaceSpecialChars(classFile, member->GetName());

         // Add the dimensions to "array" members
         for (Int_t indx = 0; indx < member->GetArrayDim(); ++indx)
            if (member->GetMaxIndex(indx) <= 0)
               break;
            else
               classFile << "[" << member->GetMaxIndex(indx) << "]";

         if (member->GetClass() != fCurrentClass)
            classFile << "</a>";
         classFile << "</td>";
         if (member->GetTitle() && member->GetTitle()[0]) {
            classFile << "<td class=\"datadesc\">";
            ReplaceSpecialChars(classFile, member->GetTitle());
         } else classFile << "<td>";
         classFile << "</td></tr>" << std::endl;
      } // for members

      if (prevEnumName.Length()) {
         classFile << "<tr class=\"data";
         if (prevIsInh)
            classFile << "inh";
         classFile << "\"><td class=\"datatype\">};</td><td></td><td></td></tr>" << std::endl;
      }
      classFile << std::endl << "</table></div>" << std::endl;
   } // for access

   classFile << "</div>" << std::endl; // datamembers
}

//______________________________________________________________________________
Bool_t TClassDocOutput::ClassDotCharts(std::ostream& out)
{
// This function builds the class charts for one class in GraphViz/Dot format,
// i.e. the inheritance diagram, the include dependencies, and the library
// dependency.
//
// Input: out      - output file stream

   if (!fHtml->HaveDot())
      return kFALSE;

   TString title(fCurrentClass->GetName());
   NameSpace2FileName(title);

   TString dir("inh");
   gSystem->PrependPathName(fHtml->GetOutputDir(), dir);
   gSystem->MakeDirectory(dir);

   dir = "inhmem";
   gSystem->PrependPathName(fHtml->GetOutputDir(), dir);
   gSystem->MakeDirectory(dir);

   dir = "incl";
   gSystem->PrependPathName(fHtml->GetOutputDir(), dir);
   gSystem->MakeDirectory(dir);

   dir = "lib";
   gSystem->PrependPathName(fHtml->GetOutputDir(), dir);
   gSystem->MakeDirectory(dir);

   TString filenameInh(title);
   gSystem->PrependPathName("inh", filenameInh);
   gSystem->PrependPathName(fHtml->GetOutputDir(), filenameInh);
   filenameInh += "_Inh";
   if (!CreateDotClassChartInh(filenameInh + ".dot") ||
      !RunDot(filenameInh, &out))
   return kFALSE;

   TString filenameInhMem(title);
   gSystem->PrependPathName("inhmem", filenameInhMem);
   gSystem->PrependPathName(fHtml->GetOutputDir(), filenameInhMem);
   filenameInhMem += "_InhMem";
   if (CreateDotClassChartInhMem(filenameInhMem + ".dot"))
      RunDot(filenameInhMem, &out);

   TString filenameIncl(title);
   gSystem->PrependPathName("incl", filenameIncl);
   gSystem->PrependPathName(fHtml->GetOutputDir(), filenameIncl);
   filenameIncl += "_Incl";
   if (CreateDotClassChartIncl(filenameIncl + ".dot"))
      RunDot(filenameIncl, &out);

   TString filenameLib(title);
   gSystem->PrependPathName("lib", filenameLib);
   gSystem->PrependPathName(fHtml->GetOutputDir(), filenameLib);
   filenameLib += "_Lib";
   if (CreateDotClassChartLib(filenameLib + ".dot"))
      RunDot(filenameLib, &out);

   out << "<div class=\"tabs\">" << std::endl
       << "<a id=\"img" << title << "_Inh\" class=\"tabsel\" href=\"inh/" << title << "_Inh.png\" onclick=\"javascript:return SetImg('Charts','inh/" << title << "_Inh.png');\">Inheritance</a>" << std::endl
       << "<a id=\"img" << title << "_InhMem\" class=\"tab\" href=\"inhmem/" << title << "_InhMem.png\" onclick=\"javascript:return SetImg('Charts','inhmem/" << title << "_InhMem.png');\">Inherited Members</a>" << std::endl
       << "<a id=\"img" << title << "_Incl\" class=\"tab\" href=\"incl/" << title << "_Incl.png\" onclick=\"javascript:return SetImg('Charts','incl/" << title << "_Incl.png');\">Includes</a>" << std::endl
       << "<a id=\"img" << title << "_Lib\" class=\"tab\" href=\"lib/" << title << "_Lib.png\" onclick=\"javascript:return SetImg('Charts','lib/" << title << "_Lib.png');\">Libraries</a><br/>" << std::endl
       << "</div><div class=\"classcharts\"><div class=\"classchartswidth\"></div>" << std::endl
       << "<img id=\"Charts\" alt=\"Class Charts\" class=\"classcharts\" usemap=\"#Map" << title << "_Inh\" src=\"inh/" << title << "_Inh.png\"/></div>" << std::endl;

   return kTRUE;
}

//______________________________________________________________________________
void TClassDocOutput::ClassHtmlTree(std::ostream& out, TClass * classPtr,
                          ETraverse dir, int depth)
{
// This function builds the class tree for one class in HTML
// (inherited and succeeding classes, called recursively)
//
//
// Input: out      - output file stream
//        classPtr - pointer to the class
//        dir      - direction to traverse tree: up, down or both
//

   if (dir == kBoth) {
      out << "<!--INHERITANCE TREE-->" << std::endl;

      // draw class tree into nested tables recursively
      out << "<table><tr><td width=\"10%\"></td><td width=\"70%\">"
          << "<a href=\"ClassHierarchy.html\">Inheritance Chart</a>:</td></tr>";
      out << "<tr class=\"inhtree\"><td width=\"10%\"></td><td width=\"70%\">";

      out << "<table class=\"inhtree\"><tr><td>" << std::endl;
      out << "<table width=\"100%\" border=\"0\" ";
      out << "cellpadding =\"0\" cellspacing=\"2\"><tr>" << std::endl;
   } else {
      out << "<table><tr>";
   }

   ////////////////////////////////////////////////////////
   // Loop up to mother classes
   if (dir == kUp || dir == kBoth) {

      // make a loop on base classes
      TBaseClass *inheritFrom;
      TIter nextBase(classPtr->GetListOfBases());

      UInt_t bgcolor=255-depth*8;
      Bool_t first = kTRUE;
      while ((inheritFrom = (TBaseClass *) nextBase())) {

         if (first) {
            out << "<td><table><tr>" << std::endl;
            first = kFALSE;
         } else
            out << "</tr><tr>" << std::endl;
         out << "<td bgcolor=\""
            << Form("#%02x%02x%02x", bgcolor, bgcolor, bgcolor)
            << "\" align=\"right\">" << std::endl;
         // get a class
         TClass *classInh = fHtml->GetClass((const char *) inheritFrom->GetName());
         if (classInh)
            ClassHtmlTree(out, classInh, kUp, depth+1);
         else
            out << "<tt>"
                << (const char *) inheritFrom->GetName()
                << "</tt>";
         out << "</td>"<< std::endl;
      }
      if (!first) {
         out << "</tr></table></td>" << std::endl; // put it in additional row in table
         out << "<td>&larr;</td>";
      }
   }

   out << "<td>" << std::endl; // put it in additional row in table
   ////////////////////////////////////////////////////////
   // Output Class Name

   const char *className = classPtr->GetName();
   TString htmlFile;
   fHtml->GetHtmlFileName(classPtr, htmlFile);
   TString anchor(className);
   NameSpace2FileName(anchor);

   if (dir == kUp) {
      if (htmlFile) {
         out << "<center><tt><a name=\"" << anchor;
         out << "\" href=\"" << htmlFile << "\">";
         ReplaceSpecialChars(out, className);
         out << "</a></tt></center>" << std::endl;
      } else
         ReplaceSpecialChars(out, className);
   }

   if (dir == kBoth) {
      if (htmlFile.Length()) {
         out << "<center><big><b><tt><a name=\"" << anchor;
         out << "\" href=\"" << htmlFile << "\">";
         ReplaceSpecialChars(out, className);
         out << "</a></tt></b></big></center>" << std::endl;
      } else
         ReplaceSpecialChars(out, className);
   }

   out << "</td>" << std::endl; // put it in additional row in table

   ////////////////////////////////////////////////////////
   // Loop down to child classes

   if (dir == kDown || dir == kBoth) {

      // 1. make a list of class names
      // 2. use DescendHierarchy

      out << "<td><table><tr>" << std::endl;
      fHierarchyLines = 0;
      DescendHierarchy(out,classPtr,10);

      out << "</tr></table>";
      if (dir==kBoth && fHierarchyLines>=10)
         out << "</td><td align=\"left\">&nbsp;<a href=\"ClassHierarchy.html\">[more...]</a>";
      out<<"</td>" << std::endl;

      // free allocated memory
   }

   out << "</tr></table>" << std::endl;
   if (dir == kBoth)
      out << "</td></tr></table></td></tr></table>"<<std::endl;
}


//______________________________________________________________________________
void TClassDocOutput::ClassTree(TVirtualPad * psCanvas, Bool_t force)
{
// It makes a graphical class tree
//
//
// Input: psCanvas - pointer to the current canvas
//        classPtr - pointer to the class
//

   if (!psCanvas || !fCurrentClass)
      return;

   TString filename(fCurrentClass->GetName());
   NameSpace2FileName(filename);

   gSystem->PrependPathName(fHtml->GetOutputDir(), filename);


   filename += "_Tree.pdf";

   if (IsModified(fCurrentClass, kTree) || force) {
      // TCanvas already prints pdf being saved
      // Printf(fHtml->GetCounterFormat(), "", "", filename);
      fCurrentClass->Draw("same");
      Int_t saveErrorIgnoreLevel = gErrorIgnoreLevel;
      gErrorIgnoreLevel = kWarning;
      psCanvas->SaveAs(filename);
      gErrorIgnoreLevel = saveErrorIgnoreLevel;
   } else
      Printf(fHtml->GetCounterFormat(), "-no change-", "", filename.Data());
}

//______________________________________________________________________________
Bool_t TClassDocOutput::CreateDotClassChartInh(const char* filename)
{
// Build the class tree for one class in GraphViz/Dot format
//
//
// Input: filename - output dot file incl. path

   std::ofstream outdot(filename);
   outdot << "strict digraph G {" << std::endl
      << "rankdir=RL;" << std::endl
      << "ranksep=2;" << std::endl
      << "nodesep=0;" << std::endl
      << "size=\"8,10\";" << std::endl
      << "ratio=auto;" << std::endl
      << "margin=0;" << std::endl
      << "node [shape=plaintext,fontsize=40,width=4,height=0.75];" << std::endl
      << "\"" << fCurrentClass->GetName() << "\" [shape=ellipse];" << std::endl;

   std::stringstream ssDep;
   std::list<TClass*> writeBasesFor;
   writeBasesFor.push_back(fCurrentClass);
   Bool_t haveBases = fCurrentClass->GetListOfBases() &&
      fCurrentClass->GetListOfBases()->GetSize();
   if (haveBases) {
      outdot << "{" << std::endl;
      while (!writeBasesFor.empty()) {
         TClass* cl = writeBasesFor.front();
         writeBasesFor.pop_front();
         if (cl != fCurrentClass) {
            outdot << "  \"" << cl->GetName() << "\"";
            const char* htmlFileName = fHtml->GetHtmlFileName(cl->GetName());
            if (htmlFileName)
               outdot << " [URL=\"" << htmlFileName << "\"]";
            outdot << ";" << std::endl;
         }
         if (cl->GetListOfBases() && cl->GetListOfBases()->GetSize()) {
            ssDep << "  \"" << cl->GetName() << "\" -> {";
            TIter iBase(cl->GetListOfBases());
            TBaseClass* base = 0;
            while ((base = (TBaseClass*)iBase())) {
               ssDep << " \"" << base->GetName() << "\";";
               writeBasesFor.push_back(base->GetClassPointer());
            }
            ssDep << "}" << std::endl;
         }
      }
      outdot << "}" << std::endl; // cluster
   }

   std::map<TClass*, Int_t> derivesFromMe;
   std::map<TClass*, unsigned int> entriesPerDerived;
   std::set<TClass*> wroteNode;
   wroteNode.insert(fCurrentClass);
   static const unsigned int maxClassesPerDerived = 20;
   fHtml->GetDerivedClasses(fCurrentClass, derivesFromMe);
   outdot << "{" << std::endl;
   for (Int_t level = 1; kTRUE; ++level) {
      Bool_t levelExists = kFALSE;
      for (std::map<TClass*, Int_t>::iterator iDerived = derivesFromMe.begin();
         iDerived != derivesFromMe.end(); ++iDerived) {
         if (iDerived->second != level) continue;
         levelExists = kTRUE;
         TIter iBaseOfDerived(iDerived->first->GetListOfBases());
         TBaseClass* baseDerived = 0;
         Bool_t writeNode = kFALSE;
         TClass* writeAndMoreFor = 0;
         while ((baseDerived = (TBaseClass*) iBaseOfDerived())) {
            TClass* clBaseDerived = baseDerived->GetClassPointer();
            if (clBaseDerived->InheritsFrom(fCurrentClass)
               && wroteNode.find(clBaseDerived) != wroteNode.end()) {
               unsigned int& count = entriesPerDerived[clBaseDerived];
               if (count < maxClassesPerDerived) {
                  writeNode = kTRUE;
                  ssDep << "\"" << iDerived->first->GetName() << "\" -> \""
                     << clBaseDerived->GetName() << "\";" << std::endl;
                  ++count;
               } else if (count == maxClassesPerDerived) {
                  writeAndMoreFor = clBaseDerived;
                  ssDep << "\"...andmore" << clBaseDerived->GetName() << "\"-> \""
                     << clBaseDerived->GetName() << "\";" << std::endl;
                  ++count;
               }
            }
         }

         if (writeNode) {
            wroteNode.insert(iDerived->first);
            outdot << "  \"" << iDerived->first->GetName() << "\"";
            const char* htmlFileName = fHtml->GetHtmlFileName(iDerived->first->GetName());
            if (htmlFileName)
               outdot << " [URL=\"" << htmlFileName << "\"]";
            outdot << ";" << std::endl;
         } else if (writeAndMoreFor) {
               outdot << "  \"...andmore" << writeAndMoreFor->GetName()
                      << "\" [label=\"...and more\",fontname=\"Times-Italic\",fillcolor=lightgrey,style=filled];" << std::endl;
         }
      }
      if (!levelExists) break;
   }
   outdot << "}" << std::endl; // cluster

   outdot << ssDep.str();

   outdot << "}" << std::endl; // digraph

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TClassDocOutput::CreateDotClassChartInhMem(const char* filename) {
// Build the class tree of inherited members for one class in GraphViz/Dot format
//
// Input: filename - output dot file incl. path

   std::ofstream outdot(filename);
   outdot << "strict digraph G {" << std::endl
      << "ratio=auto;" << std::endl
      << "rankdir=RL;" << std::endl
      << "compound=true;" << std::endl
      << "constraint=false;" << std::endl
      << "ranksep=0.1;" << std::endl
      << "nodesep=0;" << std::endl
      << "margin=0;" << std::endl;
   outdot << "  node [style=filled,width=0.7,height=0.15,fixedsize=true,shape=plaintext,fontsize=10];" << std::endl;

   std::stringstream ssDep;
   const int numColumns = 3;

   std::list<TClass*> writeBasesFor;
   writeBasesFor.push_back(fCurrentClass);
   while (!writeBasesFor.empty()) {
      TClass* cl = writeBasesFor.front();
      writeBasesFor.pop_front();

      const char* htmlFileName = fHtml->GetHtmlFileName(cl->GetName());

      outdot << "subgraph \"cluster" << cl->GetName() << "\" {" << std::endl
             << "  color=lightgray;" << std::endl
             << "  label=\"" << cl->GetName() << "\";" << std::endl;
      if (cl != fCurrentClass && htmlFileName)
         outdot << "  URL=\"" << htmlFileName << "\"" << std::endl;

      //Bool_t haveMembers = (cl->GetListOfDataMembers() && cl->GetListOfDataMembers()->GetSize());
      Bool_t haveFuncs = cl->GetListOfMethods() && cl->GetListOfMethods()->GetSize();

      // DATA MEMBERS
      {
         // make sure each member name is listed only once
         // that's useless for data members, but symmetric to what we have for methods
         std::map<std::string, TDataMember*> dmMap;

         {
            TIter iDM(cl->GetListOfDataMembers());
            TDataMember* dm = 0;
            while ((dm = (TDataMember*) iDM()))
               dmMap[dm->GetName()] = dm;
         }

         outdot << "subgraph \"clusterData0" << cl->GetName() << "\" {" << std::endl
                << "  color=white;" << std::endl
                << "  label=\"\";" << std::endl
                << "  \"clusterNode0" << cl->GetName() << "\" [height=0,width=0,style=invis];" << std::endl;
         TString prevColumnNode;
         Int_t pos = dmMap.size();
         Int_t column = 0;
         Int_t newColumnEvery = (pos + numColumns - 1) / numColumns;
         for (std::map<std::string, TDataMember*>::iterator iDM = dmMap.begin();
              iDM != dmMap.end(); ++iDM, --pos) {
            TDataMember* dm = iDM->second;
            TString nodeName(cl->GetName());
            nodeName += "::";
            nodeName += dm->GetName();
            if (iDM == dmMap.begin())
               prevColumnNode = nodeName;

            outdot << "\"" << nodeName << "\" [label=\""
                   << dm->GetName() << "\"";
            if (dm->Property() & kIsPrivate)
               outdot << ",color=\"#FFCCCC\"";
            else if (dm->Property() & kIsProtected)
               outdot << ",color=\"#FFFF77\"";
            else
               outdot << ",color=\"#CCFFCC\"";
            outdot << "];" << std::endl;
            if (pos % newColumnEvery == 1) {
               ++column;
               outdot << "};" << std::endl // end dataR
                      << "subgraph \"clusterData" << column << cl->GetName() << "\" {" << std::endl
                      << "  color=white;" << std::endl
                      << "  label=\"\";" << std::endl
                      << "  \"clusterNode" << column << cl->GetName() << "\" [height=0,width=0,style=invis];" << std::endl;
            } else if (iDM != dmMap.begin() && pos % newColumnEvery == 0) {
               ssDep << "\"" << prevColumnNode
                     << "\" -> \"" << nodeName << "\""<< " [style=invis,weight=100];" << std::endl;
               prevColumnNode = nodeName;
            }
         }

         while (column < numColumns - 1) {
            ++column;
            outdot << "  \"clusterNode" << column << cl->GetName() << "\" [height=0,width=0,style=invis];" << std::endl;
         }

         outdot << "};" << std::endl; // subgraph dataL/R
      } // DATA MEMBERS

      // FUNCTION MEMBERS
      if (haveFuncs) {
         // make sure each member name is listed only once
         std::map<std::string, TMethod*> methMap;

         {
            TIter iMeth(cl->GetListOfMethods());
            TMethod* meth = 0;
            while ((meth = (TMethod*) iMeth()))
               methMap[meth->GetName()] = meth;
         }

         outdot << "subgraph \"clusterFunc0" << cl->GetName() << "\" {" << std::endl
                << "  color=white;" << std::endl
                << "  label=\"\";" << std::endl
                << "  \"clusterNode0" << cl->GetName() << "\" [height=0,width=0,style=invis];" << std::endl;

         TString prevColumnNodeFunc;
         Int_t pos = methMap.size();
         Int_t column = 0;
         Int_t newColumnEvery = (pos + numColumns - 1) / numColumns;
         for (std::map<std::string, TMethod*>::iterator iMeth = methMap.begin();
            iMeth != methMap.end(); ++iMeth, --pos) {
            TMethod* meth = iMeth->second;
            TString nodeName(cl->GetName());
            nodeName += "::";
            nodeName += meth->GetName();
            if (iMeth == methMap.begin())
               prevColumnNodeFunc = nodeName;

            outdot << "\"" << nodeName << "\" [label=\"" << meth->GetName() << "\"";
            if (cl != fCurrentClass &&
               fCurrentClass->GetMethodAny(meth->GetName()))
               outdot << ",color=\"#777777\"";
            else if (meth->Property() & kIsPrivate)
               outdot << ",color=\"#FFCCCC\"";
            else if (meth->Property() & kIsProtected)
               outdot << ",color=\"#FFFF77\"";
            else
               outdot << ",color=\"#CCFFCC\"";
            outdot << "];" << std::endl;
            if (pos % newColumnEvery == 1) {
               ++column;
               outdot << "};" << std::endl // end funcR
                      << "subgraph \"clusterFunc" << column << cl->GetName() << "\" {" << std::endl
                      << "  color=white;" << std::endl
                      << "  label=\"\";" << std::endl;
            } else if (iMeth != methMap.begin() && pos % newColumnEvery == 0) {
               ssDep << "\"" << prevColumnNodeFunc
                     << "\" -> \"" << nodeName << "\""<< " [style=invis,weight=100];" << std::endl;
               prevColumnNodeFunc = nodeName;
            }
         }
         outdot << "};" << std::endl; // subgraph funcL/R
      }

      outdot << "}" << std::endl; // cluster class

      for (Int_t pos = 0; pos < numColumns - 1; ++pos)
         ssDep << "\"clusterNode" << pos << cl->GetName() << "\" -> \"clusterNode" << pos + 1 << cl->GetName() << "\" [style=invis];" << std::endl;

      if (cl->GetListOfBases() && cl->GetListOfBases()->GetSize()) {
         TIter iBase(cl->GetListOfBases());
         TBaseClass* base = 0;
         while ((base = (TBaseClass*)iBase())) {
            ssDep << "  \"clusterNode" << numColumns - 1 << cl->GetName() << "\" -> "
                  << " \"clusterNode0" << base->GetName() << "\" [ltail=\"cluster" << cl->GetName()
                  << "\",lhead=\"cluster" << base->GetName() << "\"";
            if (base != cl->GetListOfBases()->First())
               ssDep << ",weight=0";
            ssDep << "];" << std::endl;
            writeBasesFor.push_back(base->GetClassPointer());
         }
      }
   }

   outdot << ssDep.str();

   outdot << "}" << std::endl; // digraph

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TClassDocOutput::CreateDotClassChartIncl(const char* filename) {
// Build the include dependency graph for one class in
// GraphViz/Dot format
//
// Input: filename - output dot file incl. path

   R__LOCKGUARD(GetHtml()->GetMakeClassMutex());

   std::map<std::string, std::string> filesToParse;
   std::list<std::string> listFilesToParse;
   TString declFileName;
   TString implFileName;
   fHtml->GetImplFileName(fCurrentClass, kFALSE, implFileName);
   if (fHtml->GetDeclFileName(fCurrentClass, kFALSE, declFileName)) {
      TString real;
      if (fHtml->GetDeclFileName(fCurrentClass, kTRUE, real)) {
         filesToParse[declFileName.Data()] = real.Data();
         listFilesToParse.push_back(declFileName.Data());
      }
   }
   /* do it only for the header
   if (implFileName && strlen(implFileName)) {
      char* real = gSystem->Which(fHtml->GetInputPath(), implFileName, kReadPermission);
      if (real) {
         filesToParse[implFileName] = real;
         listFilesToParse.push_back(implFileName);
         delete real;
      }
   }
   */

   std::ofstream outdot(filename);
   outdot << "strict digraph G {" << std::endl
      << "ratio=compress;" << std::endl
      << "rankdir=TB;" << std::endl
      << "concentrate=true;" << std::endl
      << "ranksep=0;" << std::endl
      << "nodesep=0;" << std::endl
      << "size=\"8,10\";" << std::endl
      << "node [fontsize=20,shape=plaintext];" << std::endl;

   for (std::list<std::string>::iterator iFile = listFilesToParse.begin();
      iFile != listFilesToParse.end(); ++iFile) {
      std::ifstream in(filesToParse[*iFile].c_str());
      std::string line;
      while (in && !in.eof()) {
         std::getline(in, line);
         size_t pos = 0;
         while (line[pos] == ' ' || line[pos] == '\t') ++pos;
         if (line[pos] != '#') continue;
         ++pos;
         while (line[pos] == ' ' || line[pos] == '\t') ++pos;
         if (line.compare(pos, 8, "include ") != 0) continue;
         pos += 8;
         while (line[pos] == ' ' || line[pos] == '\t') ++pos;
         if (line[pos] != '"' && line[pos] != '<')
            continue;
         char delim = line[pos];
         if (delim == '<') delim = '>';
         ++pos;
         line.erase(0, pos);
         pos = 0;
         pos = line.find(delim);
         if (pos == std::string::npos) continue;
         line.erase(pos);
         if (filesToParse.find(line) == filesToParse.end()) {
            TString sysfilename;
            if (!GetHtml()->GetPathDefinition().GetFileNameFromInclude(line.c_str(), sysfilename))
               continue;
            listFilesToParse.push_back(line);
            filesToParse[line] = sysfilename;
            if (*iFile == implFileName.Data() || *iFile == declFileName.Data())
               outdot << "\"" << *iFile << "\" [style=filled,fillcolor=lightgray];" << std::endl;
         }
         outdot << "\"" << *iFile << "\" -> \"" << line << "\";" << std::endl;
      }
   }

   outdot << "}" << std::endl; // digraph

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TClassDocOutput::CreateDotClassChartLib(const char* filename) {
// Build the library dependency graph for one class in
// GraphViz/Dot format
//
// Input: filename - output dot file incl. path

   std::ofstream outdot(filename);
   outdot << "strict digraph G {" << std::endl
      << "ratio=auto;" << std::endl
      << "rankdir=RL;" << std::endl
      << "compound=true;" << std::endl
      << "constraint=false;" << std::endl
      << "ranksep=0.7;" << std::endl
      << "nodesep=0.3;" << std::endl
      << "size=\"8,8\";" << std::endl
      << "ratio=compress;" << std::endl;

   TString libs(fCurrentClass->GetSharedLibs());
   outdot << "\"All Libraries\" [URL=\"LibraryDependencies.html\",shape=box,rank=max,fillcolor=lightgray,style=filled];" << std::endl;

   if (libs.Length()) {
      TString firstLib(libs);
      Ssiz_t end = firstLib.Index(' ');
      if (end != kNPOS) {
         firstLib.Remove(end, firstLib.Length());
         libs.Remove(0, end + 1);
      } else libs = "";

      {
         Ssiz_t posExt = firstLib.First(".");
         if (posExt != kNPOS)
            firstLib.Remove(posExt, firstLib.Length());
      }

      outdot << "\"All Libraries\" -> \"" << firstLib << "\" [style=invis];" << std::endl;
      outdot << "\"" << firstLib << "\" -> {" << std::endl;

      if (firstLib != "libCore")
         libs += " libCore";
      if (firstLib != "libCint")
         libs += " libCint";
      TString thisLib;
      for (Ssiz_t pos = 0; pos < libs.Length(); ++pos)
         if (libs[pos] != ' ')
            thisLib += libs[pos];
         else if (thisLib.Length()) {
            Ssiz_t posExt = thisLib.First(".");
            if (posExt != kNPOS)
               thisLib.Remove(posExt, thisLib.Length());
            outdot << " \"" << thisLib << "\";";
            thisLib = "";
         }
      // remaining lib
      if (thisLib.Length()) {
         Ssiz_t posExt = thisLib.First(".");
         if (posExt != kNPOS)
            thisLib.Remove(posExt, thisLib.Length());
         outdot << " \"" << thisLib << "\";";
         thisLib = "";
      }
      outdot << "}" << std::endl; // dependencies
   } else
      outdot << "\"No rlibmap information available.\"" << std::endl;

   outdot << "}" << std::endl; // digraph

   return kTRUE;
}

//______________________________________________________________________________
void TClassDocOutput::CreateClassHierarchy(std::ostream& out, const char* docFileName)
{
// Create the hierarchical class list part for the current class's
// base classes. docFileName contains doc for fCurrentClass.
//

   // Find basic base classes
   TList *bases = fCurrentClass->GetListOfBases();
   if (!bases || bases->IsEmpty())
      return;

   out << "<hr />" << std::endl;

   out << "<table><tr><td><ul><li><tt>";
   if (docFileName) {
      out << "<a name=\"" << fCurrentClass->GetName() << "\" href=\""
          << docFileName << "\">";
      ReplaceSpecialChars(out, fCurrentClass->GetName());
      out << "</a>";
   } else {
      ReplaceSpecialChars(out, fCurrentClass->GetName());
   }

   // find derived classes
   out << "</tt></li></ul></td>";
   fHierarchyLines = 0;
   DescendHierarchy(out, fCurrentClass);

   out << "</tr></table>" << std::endl;
}

//______________________________________________________________________________
Bool_t TClassDocOutput::CreateHierarchyDot()
{
// Create a hierarchical class list
// The algorithm descends from the base classes and branches into
// all derived classes. Mixing classes are displayed several times.
//
//

   const char* title = "ClassHierarchy";
   TString filename(title);
   gSystem->PrependPathName(fHtml->GetOutputDir(), filename);

   // open out file
   std::ofstream dotout(filename + ".dot");

   if (!dotout.good()) {
      Error("CreateHierarchy", "Can't open file '%s.dot' !",
            filename.Data());
      return kFALSE;
   }

   dotout << "digraph G {" << std::endl
          << "ratio=auto;" << std::endl
          << "rankdir=RL;" << std::endl;

   // loop on all classes
   TClassDocInfo* cdi = 0;
   TIter iClass(fHtml->GetListOfClasses());
   while ((cdi = (TClassDocInfo*)iClass())) {

      TDictionary *dict = cdi->GetClass();
      TClass *cl = dynamic_cast<TClass*>(dict);
      if (cl == 0) {
         if (!dict)
            Warning("THtml::CreateHierarchy", "skipping class %s\n", cdi->GetName());
         continue;
      }

      // Find immediate base classes
      TList *bases = cl->GetListOfBases();
      if (bases && !bases->IsEmpty()) {
         dotout << "\"" << cdi->GetName() << "\" -> { ";
         TIter iBase(bases);
         TBaseClass* base = 0;
         while ((base = (TBaseClass*) iBase())) {
            // write out current class
            if (base != bases->First())
               dotout << "; ";
            dotout << "\"" << base->GetName() << "\"";
         }
         dotout << "};" << std::endl;
      } else
         // write out current class - no bases
         dotout << "\"" << cdi->GetName() << "\";" << std::endl;

   }

   dotout << "}";
   dotout.close();

   std::ofstream out(filename + ".html");
   if (!out.good()) {
      Error("CreateHierarchy", "Can't open file '%s.html' !",
            filename.Data());
      return kFALSE;
   }

   Printf(fHtml->GetCounterFormat(), "", fHtml->GetCounter(), (filename + ".html").Data());
   // write out header
   WriteHtmlHeader(out, "Class Hierarchy");
   out << "<h1>Class Hierarchy</h1>" << std::endl;

   WriteSearch(out);

   RunDot(filename, &out);

   out << "<img usemap=\"#Map" << title << "\" src=\"" << title << ".png\"/>" << std::endl;
   // write out footer
   WriteHtmlFooter(out);
   return kTRUE;
}

//______________________________________________________________________________
void TClassDocOutput::CreateSourceOutputStream(std::ostream& out, const char* extension,
                                     TString& sourceHtmlFileName)
{
   // Open a Class.cxx.html file, where Class is defined by classPtr, and .cxx.html by extension
   // It's created in fHtml->GetOutputDir()/src. If successful, the HTML header is written to out.

   TString sourceHtmlDir("src");
   gSystem->PrependPathName(fHtml->GetOutputDir(), sourceHtmlDir);
   // create directory if necessary
   {
      R__LOCKGUARD(GetHtml()->GetMakeClassMutex());

      if (gSystem->AccessPathName(sourceHtmlDir))
         gSystem->MakeDirectory(sourceHtmlDir);
   }
   sourceHtmlFileName = fCurrentClass->GetName();
   NameSpace2FileName(sourceHtmlFileName);
   gSystem->PrependPathName(sourceHtmlDir, sourceHtmlFileName);
   sourceHtmlFileName += extension;
   dynamic_cast<std::ofstream&>(out).open(sourceHtmlFileName);
   if (!out) {
      Warning("LocateMethodsInSource", "Can't open beautified source file '%s' for writing!",
         sourceHtmlFileName.Data());
      sourceHtmlFileName.Remove(0);
      return;
   }

   // write a HTML header
   TString title(fCurrentClass->GetName());
   title += " - source file";
   WriteHtmlHeader(out, title, "../", fCurrentClass);
   out << "<div id=\"codeAndLineNumbers\"><pre class=\"listing\">" << std::endl;
}

//______________________________________________________________________________
void TClassDocOutput::DescendHierarchy(std::ostream& out, TClass* basePtr, Int_t maxLines, Int_t depth)
{
// Descend hierarchy recursively
// loop over all classes and look for classes with base class basePtr

   if (maxLines)
      if (fHierarchyLines >= maxLines) {
         out << "<td></td>" << std::endl;
         return;
      }

   UInt_t numClasses = 0;

   TClassDocInfo* cdi = 0;
   TIter iClass(fHtml->GetListOfClasses());
   while ((cdi = (TClassDocInfo*)iClass()) && (!maxLines || fHierarchyLines<maxLines)) {

      TClass *classPtr = dynamic_cast<TClass*>(cdi->GetClass());
      if (!classPtr) continue;

      // find base classes with same name as basePtr
      TList* bases=classPtr->GetListOfBases();
      if (!bases) continue;

      TBaseClass *inheritFrom=(TBaseClass*)bases->FindObject(basePtr->GetName());
      if (!inheritFrom) continue;

      if (!numClasses)
         out << "<td>&larr;</td><td><table><tr>" << std::endl;
      else
         out << "</tr><tr>"<<std::endl;
      fHierarchyLines++;
      numClasses++;
      UInt_t bgcolor=255-depth*8;
      out << "<td bgcolor=\""
          << Form("#%02x%02x%02x", bgcolor, bgcolor, bgcolor)
          << "\">";
      out << "<table><tr><td>" << std::endl;

      TString htmlFile(cdi->GetHtmlFileName());
      if (htmlFile.Length()) {
         out << "<center><tt><a name=\"" << cdi->GetName() << "\" href=\""
             << htmlFile << "\">";
         ReplaceSpecialChars(out, cdi->GetName());
         out << "</a></tt></center>";
      } else {
         ReplaceSpecialChars(out, cdi->GetName());
      }
      // write title
      // commented out for now because it reduces overview
      /*
        len = strlen(classNames[i]);
        for (Int_t w = 0; w < (maxLen - len + 2); w++)
        out << ".";
        out << " ";

        out << "<a name=\"Title:";
        out << classPtr->GetName();
        out << "\">";
        ReplaceSpecialChars(out, classPtr->GetTitle());
        out << "</a></tt>" << std::endl;
      */

      out << "</td>" << std::endl;
      DescendHierarchy(out,classPtr,maxLines, depth+1);
      out << "</tr></table></td>" << std::endl;

   }  // loop over all classes
   if (numClasses)
      out << "</tr></table></td>" << std::endl;
   else
      out << "<td></td>" << std::endl;
}

//______________________________________________________________________________
void TClassDocOutput::MakeTree(Bool_t force /*= kFALSE*/)
{
   // Create an output file with a graphical representation of the class
   // inheritance. If force, replace existing output file.
   // This routine does nothing if fHtml->HaveDot() is true - use
   // ClassDotCharts() instead!

   // class tree only if no dot, otherwise it's part of charts
   if (!fCurrentClass || fHtml->HaveDot())
      return;

   TString htmlFile;
   fHtml->GetHtmlFileName(fCurrentClass, htmlFile);
   if (htmlFile.Length()
       && (htmlFile.BeginsWith("http://")
           || htmlFile.BeginsWith("https://")
           || gSystem->IsAbsoluteFileName(htmlFile))
       ) {
      htmlFile.Remove(0);
   }

   if (!htmlFile.Length()) {
      TString what(fCurrentClass->GetName());
      what += " (source not found)";
      Printf(fHtml->GetCounterFormat(), "-skipped-", "", what.Data());
      return;
   }

   R__LOCKGUARD(GetHtml()->GetMakeClassMutex());

   // Create a canvas without linking against GUI libs
   Bool_t wasBatch = gROOT->IsBatch();
   if (!wasBatch)
      gROOT->SetBatch();
   TVirtualPad *psCanvas = (TVirtualPad*)gROOT->ProcessLineFast("new TCanvas(\"R__THtml\",\"psCanvas\",0,0,1000,1200);");
   if (!wasBatch)
      gROOT->SetBatch(kFALSE);

   if (!psCanvas) {
      Error("MakeTree", "Cannot create a TCanvas!");
      return;
   }

   // make a class tree
   ClassTree(psCanvas, force);

   psCanvas->Close();
   delete psCanvas;
}

//______________________________________________________________________________
void TClassDocOutput::WriteClassDescription(std::ostream& out, const TString& description)
{
   // Called by TDocParser::LocateMethods(), this hook writes out the class description
   // found by TDocParser. It's even called if none is found, i.e. if the first method
   // has occurred before a class description is found, so missing class descriptions
   // can be handled.
   // For HTML, its creates the description block, the list of functions and data
   // members, and the inheritance tree or, if Graphviz's dot is found, the class charts.

   // Class Description Title
   out << "<div class=\"dropshadow\"><div class=\"withshadow\">";
   TString anchor(fCurrentClass->GetName());
   NameSpace2FileName(anchor);
   out << "<h1><a name=\"" << anchor;
   out << ":description\"></a>";

   if (fHtml->IsNamespace(fCurrentClass))
      out << "namespace ";
   else
      out << "class ";
   ReplaceSpecialChars(out, fCurrentClass->GetName());


   // make a loop on base classes
   Bool_t first = kTRUE;
   TBaseClass *inheritFrom;
   TIter nextBase(fCurrentClass->GetListOfBases());

   while ((inheritFrom = (TBaseClass *) nextBase())) {
      if (first) {
         out << ": ";
         first = kFALSE;
      } else
         out << ", ";
      Long_t property = inheritFrom->Property();
      if (property & kIsPrivate)
         out << "private ";
      else if (property & kIsProtected)
         out << "protected ";
      else
         out << "public ";

      // get a class
      TClass *classInh = fHtml->GetClass(inheritFrom->GetName());

      TString htmlFile;
      fHtml->GetHtmlFileName(classInh, htmlFile);

      if (htmlFile.Length()) {
         // make a link to the base class
         out << "<a href=\"" << htmlFile << "\">";
         ReplaceSpecialChars(out, inheritFrom->GetName());
         out << "</a>";
      } else
         ReplaceSpecialChars(out, inheritFrom->GetName());
   }
   out << "</h1>" << std::endl;

   out << "<div class=\"classdescr\">" << std::endl;

   if (description.Length())
      out << "<pre>" << description << "</pre>";

   // typedefs pointing to this class:
   if (fCurrentClassesTypedefs && !fCurrentClassesTypedefs->IsEmpty()) {
      out << "<h4>This class is also known as (typedefs to this class)</h4>";
      TIter iTD(fCurrentClassesTypedefs);
      bool firsttd = true;
      TDataType* dt = 0;
      while ((dt = (TDataType*) iTD())) {
         if (!firsttd)
            out << ", ";
         else firsttd = false;
         fParser->DecorateKeywords(out, dt->GetName());
      }
   }

   out << "</div>" << std::endl
       << "</div></div>" << std::endl;

   ListFunctions(out);
   ListDataMembers(out);

   // create dot class charts or an html inheritance tree
   out << "<h2><a id=\"" << anchor
      << ":Class_Charts\"></a>Class Charts</h2>" << std::endl;
   if (!fHtml->IsNamespace(fCurrentClass))
      if (!ClassDotCharts(out))
         ClassHtmlTree(out, fCurrentClass);

   // header for the following function docs:
   out << "<h2>Function documentation</h2>" << std::endl;
}


//______________________________________________________________________________
void TClassDocOutput::WriteClassDocHeader(std::ostream& classFile)
{
   // Write out the introduction of a class description (shortcuts and links)

   classFile << "<a name=\"TopOfPage\"></a>" << std::endl;


   // show box with lib, include
   // needs to go first to allow title on the left
   TString sTitle(fCurrentClass->GetName());
   ReplaceSpecialChars(sTitle);
   if (fHtml->IsNamespace(fCurrentClass))
      sTitle.Prepend("namespace ");
   else
      sTitle.Prepend("class ");

   TString sInclude;
   TString sLib;
   const char* lib=fCurrentClass->GetSharedLibs();
   GetHtml()->GetPathDefinition().GetIncludeAs(fCurrentClass, sInclude);
   if (lib) {
      char* libDup=StrDup(lib);
      char* libDupSpace=strchr(libDup,' ');
      if (libDupSpace) *libDupSpace=0;
      char* libDupEnd=libDup+strlen(libDup);
      while (libDupEnd!=libDup)
         if (*(--libDupEnd)=='.') {
            *libDupEnd=0;
            break;
         }
      sLib = libDup;
      delete[] libDup;
   }
   classFile << "<script type=\"text/javascript\">WriteFollowPageBox('"
             << sTitle << "','" << sLib << "','" << sInclude << "');</script>" << std::endl;

   TString modulename;
   fHtml->GetModuleNameForClass(modulename, fCurrentClass);
   TModuleDocInfo* module = (TModuleDocInfo*) fHtml->GetListOfModules()->FindObject(modulename);
   WriteTopLinks(classFile, module, fCurrentClass->GetName(), kFALSE);

   classFile << "<div class=\"descrhead\"><div class=\"descrheadcontent\">" << std::endl // descrhead line 3
      << "<span class=\"descrtitle\">Source:</span>" << std::endl;

   // make a link to the '.cxx' file
   TString classFileName(fCurrentClass->GetName());
   NameSpace2FileName(classFileName);

   TString headerFileName;
   fHtml->GetDeclFileName(fCurrentClass, kFALSE, headerFileName);
   TString sourceFileName;
   fHtml->GetImplFileName(fCurrentClass, kFALSE, sourceFileName);
   if (headerFileName.Length())
      classFile << "<a class=\"descrheadentry\" href=\"src/" << classFileName
                << ".h.html\">header file</a>" << std::endl;
   else
      classFile << "<a class=\"descrheadentry\"> </a>" << std::endl;

   if (sourceFileName.Length())
      classFile << "<a class=\"descrheadentry\" href=\"src/" << classFileName
                << ".cxx.html\">source file</a>" << std::endl;
   else
      classFile << "<a class=\"descrheadentry\"> </a>" << std::endl;

   if (!fHtml->IsNamespace(fCurrentClass) && !fHtml->HaveDot()) {
      // make a link to the inheritance tree (postscript)
      classFile << "<a class=\"descrheadentry\" href=\"" << classFileName << "_Tree.pdf\"";
      classFile << ">inheritance tree (.pdf)</a> ";
   }

   const TString& viewCVSLink = GetHtml()->GetViewCVS();
   Bool_t mustReplace = viewCVSLink.Contains("%f");
   if (viewCVSLink.Length()) {
      if (headerFileName.Length()) {
         TString link(viewCVSLink);
         TString sHeader(headerFileName);
         if (GetHtml()->GetProductName() && !strcmp(GetHtml()->GetProductName(), "ROOT")) {
            Ssiz_t posInclude = sHeader.Index("/include/");
            if (posInclude != kNPOS) {
               // Cut off ".../include", i.e. keep leading '/'
               sHeader.Remove(0, posInclude + 8);
            } else {
               // no /include/; maybe /inc?
               posInclude = sHeader.Index("/inc/");
               if (posInclude != kNPOS) {
                  sHeader = "/";
                  sHeader += sInclude;
               }
            }
            if (sourceFileName && strstr(sourceFileName, "src")) {
               TString src(sourceFileName);
               src.Remove(src.Index("src"), src.Length());
               src += "inc";
               sHeader.Prepend(src);
            } else {
               TString src(fCurrentClass->GetSharedLibs());
               Ssiz_t posEndLib = src.Index(' ');
               if (posEndLib != kNPOS)
                  src.Remove(posEndLib, src.Length());
               if (src.BeginsWith("lib"))
                  src.Remove(0, 3);
               posEndLib = src.Index('.');
               if (posEndLib != kNPOS)
                  src.Remove(posEndLib, src.Length());
               src.ToLower();
               src += "/inc";
               sHeader.Prepend(src);
            }
            if (sHeader.BeginsWith("tmva/inc/TMVA"))
               sHeader.Remove(8, 5);
         }
         if (mustReplace) link.ReplaceAll("%f", sHeader);
         else link += sHeader;
         classFile << "<a class=\"descrheadentry\" href=\"" << link << "\">viewVC header</a> ";
      } else
         classFile << "<a class=\"descrheadentry\"> </a> ";
      if (sourceFileName.Length()) {
         TString link(viewCVSLink);
         if (mustReplace) link.ReplaceAll("%f", sourceFileName);
         else link += sourceFileName;
         classFile << "<a class=\"descrheadentry\" href=\"" << link << "\">viewVC source</a> ";
      } else
         classFile << "<a class=\"descrheadentry\"> </a> ";
   }

   TString currClassNameMangled(fCurrentClass->GetName());
   NameSpace2FileName(currClassNameMangled);

   TString wikiLink = GetHtml()->GetWikiURL();
   if (wikiLink.Length()) {
      if (wikiLink.Contains("%c")) wikiLink.ReplaceAll("%c", currClassNameMangled);
      else wikiLink += currClassNameMangled;
      classFile << "<a class=\"descrheadentry\" href=\"" << wikiLink << "\">wiki</a> ";
   }

   classFile << std::endl << "</div></div>" << std::endl; // descrhead line 3

   classFile << "<div class=\"descrhead\"><div class=\"descrheadcontent\">" << std::endl // descrhead line 4
      << "<span class=\"descrtitle\">Sections:</span>" << std::endl
      << "<a class=\"descrheadentry\" href=\"#" << currClassNameMangled;
   if (fHtml->IsNamespace(fCurrentClass))
      classFile << ":description\">namespace description</a> ";
   else
      classFile << ":description\">class description</a> ";
   classFile << std::endl
      << "<a class=\"descrheadentry\" href=\"#" << currClassNameMangled << ":Function_Members\">function members</a>" << std::endl
      << "<a class=\"descrheadentry\" href=\"#" << currClassNameMangled << ":Data_Members\">data members</a>" << std::endl
      << "<a class=\"descrheadentry\" href=\"#" << currClassNameMangled << ":Class_Charts\">class charts</a>" << std::endl
      << "</div></div>" << std::endl // descrhead line 4
      << "</div>" << std::endl; // toplinks, from TDocOutput::WriteTopLinks

   WriteLocation(classFile, module, fCurrentClass->GetName());
}


//______________________________________________________________________________
void TClassDocOutput::WriteMethod(std::ostream& out, TString& ret,
                                  TString& name, TString& params,
                                  const char* filename, TString& anchor,
                                  TString& comment, TString& codeOneLiner,
                                  TDocMethodWrapper* guessedMethod)
{
   // Write method name with return type ret and parameters param to out.
   // Build a link using file and anchor. Cooment it with comment, and
   // show the code codeOneLiner (set if the func consists of only one line
   // of code, immediately surrounded by "{","}"). Also updates fMethodNames's
   // count of method names.

   fParser->DecorateKeywords(ret);
   out << "<div class=\"funcdoc\"><span class=\"funcname\">"
      << ret << " <a class=\"funcname\" name=\"";
   TString mangled(fCurrentClass->GetName());
   NameSpace2FileName(mangled);
   out << mangled << ":";
   mangled = name;
   NameSpace2FileName(mangled);
   if (guessedMethod && guessedMethod->GetOverloadIdx()) {
      mangled += "@";
      mangled += guessedMethod->GetOverloadIdx();
   }
   out << mangled << "\" href=\"src/" << filename;
   if (anchor.Length())
      out << "#" << anchor;
   out << "\">";
   ReplaceSpecialChars(out, name);
   out << "</a>";
   if (guessedMethod) {
      out << "(";
      TMethodArg* arg;
      TIter iParam(guessedMethod->GetMethod()->GetListOfMethodArgs());
      Bool_t first = kTRUE;
      while ((arg = (TMethodArg*) iParam())) {
         if (!first) out << ", ";
         else first = kFALSE;
         TString paramGuessed(arg->GetFullTypeName());
         paramGuessed += " ";
         paramGuessed += arg->GetName();
         if (arg->GetDefault() && strlen(arg->GetDefault())) {
            paramGuessed += " = ";
            paramGuessed += arg->GetDefault();
         }
         fParser->DecorateKeywords(paramGuessed);
         out << paramGuessed;
      }
      out << ")";
      if (guessedMethod->GetMethod()->Property() & kIsConstMethod)
         out << " const";
   } else {
      fParser->DecorateKeywords(params);
      out << params;
   }
   out << "</span><br />" << std::endl;

   if (comment.Length())
      out << "<div class=\"funccomm\"><pre>" << comment << "</pre></div>" << std::endl;

   if (codeOneLiner.Length()) {
      out << std::endl << "<div class=\"code\"><code class=\"inlinecode\">"
          << codeOneLiner << "</code></div>" << std::endl
          << "<div style=\"clear:both;\"></div>" << std::endl;
      codeOneLiner.Remove(0);
   }
   out << "</div>" << std::endl;
}



 TClassDocOutput.cxx:1
 TClassDocOutput.cxx:2
 TClassDocOutput.cxx:3
 TClassDocOutput.cxx:4
 TClassDocOutput.cxx:5
 TClassDocOutput.cxx:6
 TClassDocOutput.cxx:7
 TClassDocOutput.cxx:8
 TClassDocOutput.cxx:9
 TClassDocOutput.cxx:10
 TClassDocOutput.cxx:11
 TClassDocOutput.cxx:12
 TClassDocOutput.cxx:13
 TClassDocOutput.cxx:14
 TClassDocOutput.cxx:15
 TClassDocOutput.cxx:16
 TClassDocOutput.cxx:17
 TClassDocOutput.cxx:18
 TClassDocOutput.cxx:19
 TClassDocOutput.cxx:20
 TClassDocOutput.cxx:21
 TClassDocOutput.cxx:22
 TClassDocOutput.cxx:23
 TClassDocOutput.cxx:24
 TClassDocOutput.cxx:25
 TClassDocOutput.cxx:26
 TClassDocOutput.cxx:27
 TClassDocOutput.cxx:28
 TClassDocOutput.cxx:29
 TClassDocOutput.cxx:30
 TClassDocOutput.cxx:31
 TClassDocOutput.cxx:32
 TClassDocOutput.cxx:33
 TClassDocOutput.cxx:34
 TClassDocOutput.cxx:35
 TClassDocOutput.cxx:36
 TClassDocOutput.cxx:37
 TClassDocOutput.cxx:38
 TClassDocOutput.cxx:39
 TClassDocOutput.cxx:40
 TClassDocOutput.cxx:41
 TClassDocOutput.cxx:42
 TClassDocOutput.cxx:43
 TClassDocOutput.cxx:44
 TClassDocOutput.cxx:45
 TClassDocOutput.cxx:46
 TClassDocOutput.cxx:47
 TClassDocOutput.cxx:48
 TClassDocOutput.cxx:49
 TClassDocOutput.cxx:50
 TClassDocOutput.cxx:51
 TClassDocOutput.cxx:52
 TClassDocOutput.cxx:53
 TClassDocOutput.cxx:54
 TClassDocOutput.cxx:55
 TClassDocOutput.cxx:56
 TClassDocOutput.cxx:57
 TClassDocOutput.cxx:58
 TClassDocOutput.cxx:59
 TClassDocOutput.cxx:60
 TClassDocOutput.cxx:61
 TClassDocOutput.cxx:62
 TClassDocOutput.cxx:63
 TClassDocOutput.cxx:64
 TClassDocOutput.cxx:65
 TClassDocOutput.cxx:66
 TClassDocOutput.cxx:67
 TClassDocOutput.cxx:68
 TClassDocOutput.cxx:69
 TClassDocOutput.cxx:70
 TClassDocOutput.cxx:71
 TClassDocOutput.cxx:72
 TClassDocOutput.cxx:73
 TClassDocOutput.cxx:74
 TClassDocOutput.cxx:75
 TClassDocOutput.cxx:76
 TClassDocOutput.cxx:77
 TClassDocOutput.cxx:78
 TClassDocOutput.cxx:79
 TClassDocOutput.cxx:80
 TClassDocOutput.cxx:81
 TClassDocOutput.cxx:82
 TClassDocOutput.cxx:83
 TClassDocOutput.cxx:84
 TClassDocOutput.cxx:85
 TClassDocOutput.cxx:86
 TClassDocOutput.cxx:87
 TClassDocOutput.cxx:88
 TClassDocOutput.cxx:89
 TClassDocOutput.cxx:90
 TClassDocOutput.cxx:91
 TClassDocOutput.cxx:92
 TClassDocOutput.cxx:93
 TClassDocOutput.cxx:94
 TClassDocOutput.cxx:95
 TClassDocOutput.cxx:96
 TClassDocOutput.cxx:97
 TClassDocOutput.cxx:98
 TClassDocOutput.cxx:99
 TClassDocOutput.cxx:100
 TClassDocOutput.cxx:101
 TClassDocOutput.cxx:102
 TClassDocOutput.cxx:103
 TClassDocOutput.cxx:104
 TClassDocOutput.cxx:105
 TClassDocOutput.cxx:106
 TClassDocOutput.cxx:107
 TClassDocOutput.cxx:108
 TClassDocOutput.cxx:109
 TClassDocOutput.cxx:110
 TClassDocOutput.cxx:111
 TClassDocOutput.cxx:112
 TClassDocOutput.cxx:113
 TClassDocOutput.cxx:114
 TClassDocOutput.cxx:115
 TClassDocOutput.cxx:116
 TClassDocOutput.cxx:117
 TClassDocOutput.cxx:118
 TClassDocOutput.cxx:119
 TClassDocOutput.cxx:120
 TClassDocOutput.cxx:121
 TClassDocOutput.cxx:122
 TClassDocOutput.cxx:123
 TClassDocOutput.cxx:124
 TClassDocOutput.cxx:125
 TClassDocOutput.cxx:126
 TClassDocOutput.cxx:127
 TClassDocOutput.cxx:128
 TClassDocOutput.cxx:129
 TClassDocOutput.cxx:130
 TClassDocOutput.cxx:131
 TClassDocOutput.cxx:132
 TClassDocOutput.cxx:133
 TClassDocOutput.cxx:134
 TClassDocOutput.cxx:135
 TClassDocOutput.cxx:136
 TClassDocOutput.cxx:137
 TClassDocOutput.cxx:138
 TClassDocOutput.cxx:139
 TClassDocOutput.cxx:140
 TClassDocOutput.cxx:141
 TClassDocOutput.cxx:142
 TClassDocOutput.cxx:143
 TClassDocOutput.cxx:144
 TClassDocOutput.cxx:145
 TClassDocOutput.cxx:146
 TClassDocOutput.cxx:147
 TClassDocOutput.cxx:148
 TClassDocOutput.cxx:149
 TClassDocOutput.cxx:150
 TClassDocOutput.cxx:151
 TClassDocOutput.cxx:152
 TClassDocOutput.cxx:153
 TClassDocOutput.cxx:154
 TClassDocOutput.cxx:155
 TClassDocOutput.cxx:156
 TClassDocOutput.cxx:157
 TClassDocOutput.cxx:158
 TClassDocOutput.cxx:159
 TClassDocOutput.cxx:160
 TClassDocOutput.cxx:161
 TClassDocOutput.cxx:162
 TClassDocOutput.cxx:163
 TClassDocOutput.cxx:164
 TClassDocOutput.cxx:165
 TClassDocOutput.cxx:166
 TClassDocOutput.cxx:167
 TClassDocOutput.cxx:168
 TClassDocOutput.cxx:169
 TClassDocOutput.cxx:170
 TClassDocOutput.cxx:171
 TClassDocOutput.cxx:172
 TClassDocOutput.cxx:173
 TClassDocOutput.cxx:174
 TClassDocOutput.cxx:175
 TClassDocOutput.cxx:176
 TClassDocOutput.cxx:177
 TClassDocOutput.cxx:178
 TClassDocOutput.cxx:179
 TClassDocOutput.cxx:180
 TClassDocOutput.cxx:181
 TClassDocOutput.cxx:182
 TClassDocOutput.cxx:183
 TClassDocOutput.cxx:184
 TClassDocOutput.cxx:185
 TClassDocOutput.cxx:186
 TClassDocOutput.cxx:187
 TClassDocOutput.cxx:188
 TClassDocOutput.cxx:189
 TClassDocOutput.cxx:190
 TClassDocOutput.cxx:191
 TClassDocOutput.cxx:192
 TClassDocOutput.cxx:193
 TClassDocOutput.cxx:194
 TClassDocOutput.cxx:195
 TClassDocOutput.cxx:196
 TClassDocOutput.cxx:197
 TClassDocOutput.cxx:198
 TClassDocOutput.cxx:199
 TClassDocOutput.cxx:200
 TClassDocOutput.cxx:201
 TClassDocOutput.cxx:202
 TClassDocOutput.cxx:203
 TClassDocOutput.cxx:204
 TClassDocOutput.cxx:205
 TClassDocOutput.cxx:206
 TClassDocOutput.cxx:207
 TClassDocOutput.cxx:208
 TClassDocOutput.cxx:209
 TClassDocOutput.cxx:210
 TClassDocOutput.cxx:211
 TClassDocOutput.cxx:212
 TClassDocOutput.cxx:213
 TClassDocOutput.cxx:214
 TClassDocOutput.cxx:215
 TClassDocOutput.cxx:216
 TClassDocOutput.cxx:217
 TClassDocOutput.cxx:218
 TClassDocOutput.cxx:219
 TClassDocOutput.cxx:220
 TClassDocOutput.cxx:221
 TClassDocOutput.cxx:222
 TClassDocOutput.cxx:223
 TClassDocOutput.cxx:224
 TClassDocOutput.cxx:225
 TClassDocOutput.cxx:226
 TClassDocOutput.cxx:227
 TClassDocOutput.cxx:228
 TClassDocOutput.cxx:229
 TClassDocOutput.cxx:230
 TClassDocOutput.cxx:231
 TClassDocOutput.cxx:232
 TClassDocOutput.cxx:233
 TClassDocOutput.cxx:234
 TClassDocOutput.cxx:235
 TClassDocOutput.cxx:236
 TClassDocOutput.cxx:237
 TClassDocOutput.cxx:238
 TClassDocOutput.cxx:239
 TClassDocOutput.cxx:240
 TClassDocOutput.cxx:241
 TClassDocOutput.cxx:242
 TClassDocOutput.cxx:243
 TClassDocOutput.cxx:244
 TClassDocOutput.cxx:245
 TClassDocOutput.cxx:246
 TClassDocOutput.cxx:247
 TClassDocOutput.cxx:248
 TClassDocOutput.cxx:249
 TClassDocOutput.cxx:250
 TClassDocOutput.cxx:251
 TClassDocOutput.cxx:252
 TClassDocOutput.cxx:253
 TClassDocOutput.cxx:254
 TClassDocOutput.cxx:255
 TClassDocOutput.cxx:256
 TClassDocOutput.cxx:257
 TClassDocOutput.cxx:258
 TClassDocOutput.cxx:259
 TClassDocOutput.cxx:260
 TClassDocOutput.cxx:261
 TClassDocOutput.cxx:262
 TClassDocOutput.cxx:263
 TClassDocOutput.cxx:264
 TClassDocOutput.cxx:265
 TClassDocOutput.cxx:266
 TClassDocOutput.cxx:267
 TClassDocOutput.cxx:268
 TClassDocOutput.cxx:269
 TClassDocOutput.cxx:270
 TClassDocOutput.cxx:271
 TClassDocOutput.cxx:272
 TClassDocOutput.cxx:273
 TClassDocOutput.cxx:274
 TClassDocOutput.cxx:275
 TClassDocOutput.cxx:276
 TClassDocOutput.cxx:277
 TClassDocOutput.cxx:278
 TClassDocOutput.cxx:279
 TClassDocOutput.cxx:280
 TClassDocOutput.cxx:281
 TClassDocOutput.cxx:282
 TClassDocOutput.cxx:283
 TClassDocOutput.cxx:284
 TClassDocOutput.cxx:285
 TClassDocOutput.cxx:286
 TClassDocOutput.cxx:287
 TClassDocOutput.cxx:288
 TClassDocOutput.cxx:289
 TClassDocOutput.cxx:290
 TClassDocOutput.cxx:291
 TClassDocOutput.cxx:292
 TClassDocOutput.cxx:293
 TClassDocOutput.cxx:294
 TClassDocOutput.cxx:295
 TClassDocOutput.cxx:296
 TClassDocOutput.cxx:297
 TClassDocOutput.cxx:298
 TClassDocOutput.cxx:299
 TClassDocOutput.cxx:300
 TClassDocOutput.cxx:301
 TClassDocOutput.cxx:302
 TClassDocOutput.cxx:303
 TClassDocOutput.cxx:304
 TClassDocOutput.cxx:305
 TClassDocOutput.cxx:306
 TClassDocOutput.cxx:307
 TClassDocOutput.cxx:308
 TClassDocOutput.cxx:309
 TClassDocOutput.cxx:310
 TClassDocOutput.cxx:311
 TClassDocOutput.cxx:312
 TClassDocOutput.cxx:313
 TClassDocOutput.cxx:314
 TClassDocOutput.cxx:315
 TClassDocOutput.cxx:316
 TClassDocOutput.cxx:317
 TClassDocOutput.cxx:318
 TClassDocOutput.cxx:319
 TClassDocOutput.cxx:320
 TClassDocOutput.cxx:321
 TClassDocOutput.cxx:322
 TClassDocOutput.cxx:323
 TClassDocOutput.cxx:324
 TClassDocOutput.cxx:325
 TClassDocOutput.cxx:326
 TClassDocOutput.cxx:327
 TClassDocOutput.cxx:328
 TClassDocOutput.cxx:329
 TClassDocOutput.cxx:330
 TClassDocOutput.cxx:331
 TClassDocOutput.cxx:332
 TClassDocOutput.cxx:333
 TClassDocOutput.cxx:334
 TClassDocOutput.cxx:335
 TClassDocOutput.cxx:336
 TClassDocOutput.cxx:337
 TClassDocOutput.cxx:338
 TClassDocOutput.cxx:339
 TClassDocOutput.cxx:340
 TClassDocOutput.cxx:341
 TClassDocOutput.cxx:342
 TClassDocOutput.cxx:343
 TClassDocOutput.cxx:344
 TClassDocOutput.cxx:345
 TClassDocOutput.cxx:346
 TClassDocOutput.cxx:347
 TClassDocOutput.cxx:348
 TClassDocOutput.cxx:349
 TClassDocOutput.cxx:350
 TClassDocOutput.cxx:351
 TClassDocOutput.cxx:352
 TClassDocOutput.cxx:353
 TClassDocOutput.cxx:354
 TClassDocOutput.cxx:355
 TClassDocOutput.cxx:356
 TClassDocOutput.cxx:357
 TClassDocOutput.cxx:358
 TClassDocOutput.cxx:359
 TClassDocOutput.cxx:360
 TClassDocOutput.cxx:361
 TClassDocOutput.cxx:362
 TClassDocOutput.cxx:363
 TClassDocOutput.cxx:364
 TClassDocOutput.cxx:365
 TClassDocOutput.cxx:366
 TClassDocOutput.cxx:367
 TClassDocOutput.cxx:368
 TClassDocOutput.cxx:369
 TClassDocOutput.cxx:370
 TClassDocOutput.cxx:371
 TClassDocOutput.cxx:372
 TClassDocOutput.cxx:373
 TClassDocOutput.cxx:374
 TClassDocOutput.cxx:375
 TClassDocOutput.cxx:376
 TClassDocOutput.cxx:377
 TClassDocOutput.cxx:378
 TClassDocOutput.cxx:379
 TClassDocOutput.cxx:380
 TClassDocOutput.cxx:381
 TClassDocOutput.cxx:382
 TClassDocOutput.cxx:383
 TClassDocOutput.cxx:384
 TClassDocOutput.cxx:385
 TClassDocOutput.cxx:386
 TClassDocOutput.cxx:387
 TClassDocOutput.cxx:388
 TClassDocOutput.cxx:389
 TClassDocOutput.cxx:390
 TClassDocOutput.cxx:391
 TClassDocOutput.cxx:392
 TClassDocOutput.cxx:393
 TClassDocOutput.cxx:394
 TClassDocOutput.cxx:395
 TClassDocOutput.cxx:396
 TClassDocOutput.cxx:397
 TClassDocOutput.cxx:398
 TClassDocOutput.cxx:399
 TClassDocOutput.cxx:400
 TClassDocOutput.cxx:401
 TClassDocOutput.cxx:402
 TClassDocOutput.cxx:403
 TClassDocOutput.cxx:404
 TClassDocOutput.cxx:405
 TClassDocOutput.cxx:406
 TClassDocOutput.cxx:407
 TClassDocOutput.cxx:408
 TClassDocOutput.cxx:409
 TClassDocOutput.cxx:410
 TClassDocOutput.cxx:411
 TClassDocOutput.cxx:412
 TClassDocOutput.cxx:413
 TClassDocOutput.cxx:414
 TClassDocOutput.cxx:415
 TClassDocOutput.cxx:416
 TClassDocOutput.cxx:417
 TClassDocOutput.cxx:418
 TClassDocOutput.cxx:419
 TClassDocOutput.cxx:420
 TClassDocOutput.cxx:421
 TClassDocOutput.cxx:422
 TClassDocOutput.cxx:423
 TClassDocOutput.cxx:424
 TClassDocOutput.cxx:425
 TClassDocOutput.cxx:426
 TClassDocOutput.cxx:427
 TClassDocOutput.cxx:428
 TClassDocOutput.cxx:429
 TClassDocOutput.cxx:430
 TClassDocOutput.cxx:431
 TClassDocOutput.cxx:432
 TClassDocOutput.cxx:433
 TClassDocOutput.cxx:434
 TClassDocOutput.cxx:435
 TClassDocOutput.cxx:436
 TClassDocOutput.cxx:437
 TClassDocOutput.cxx:438
 TClassDocOutput.cxx:439
 TClassDocOutput.cxx:440
 TClassDocOutput.cxx:441
 TClassDocOutput.cxx:442
 TClassDocOutput.cxx:443
 TClassDocOutput.cxx:444
 TClassDocOutput.cxx:445
 TClassDocOutput.cxx:446
 TClassDocOutput.cxx:447
 TClassDocOutput.cxx:448
 TClassDocOutput.cxx:449
 TClassDocOutput.cxx:450
 TClassDocOutput.cxx:451
 TClassDocOutput.cxx:452
 TClassDocOutput.cxx:453
 TClassDocOutput.cxx:454
 TClassDocOutput.cxx:455
 TClassDocOutput.cxx:456
 TClassDocOutput.cxx:457
 TClassDocOutput.cxx:458
 TClassDocOutput.cxx:459
 TClassDocOutput.cxx:460
 TClassDocOutput.cxx:461
 TClassDocOutput.cxx:462
 TClassDocOutput.cxx:463
 TClassDocOutput.cxx:464
 TClassDocOutput.cxx:465
 TClassDocOutput.cxx:466
 TClassDocOutput.cxx:467
 TClassDocOutput.cxx:468
 TClassDocOutput.cxx:469
 TClassDocOutput.cxx:470
 TClassDocOutput.cxx:471
 TClassDocOutput.cxx:472
 TClassDocOutput.cxx:473
 TClassDocOutput.cxx:474
 TClassDocOutput.cxx:475
 TClassDocOutput.cxx:476
 TClassDocOutput.cxx:477
 TClassDocOutput.cxx:478
 TClassDocOutput.cxx:479
 TClassDocOutput.cxx:480
 TClassDocOutput.cxx:481
 TClassDocOutput.cxx:482
 TClassDocOutput.cxx:483
 TClassDocOutput.cxx:484
 TClassDocOutput.cxx:485
 TClassDocOutput.cxx:486
 TClassDocOutput.cxx:487
 TClassDocOutput.cxx:488
 TClassDocOutput.cxx:489
 TClassDocOutput.cxx:490
 TClassDocOutput.cxx:491
 TClassDocOutput.cxx:492
 TClassDocOutput.cxx:493
 TClassDocOutput.cxx:494
 TClassDocOutput.cxx:495
 TClassDocOutput.cxx:496
 TClassDocOutput.cxx:497
 TClassDocOutput.cxx:498
 TClassDocOutput.cxx:499
 TClassDocOutput.cxx:500
 TClassDocOutput.cxx:501
 TClassDocOutput.cxx:502
 TClassDocOutput.cxx:503
 TClassDocOutput.cxx:504
 TClassDocOutput.cxx:505
 TClassDocOutput.cxx:506
 TClassDocOutput.cxx:507
 TClassDocOutput.cxx:508
 TClassDocOutput.cxx:509
 TClassDocOutput.cxx:510
 TClassDocOutput.cxx:511
 TClassDocOutput.cxx:512
 TClassDocOutput.cxx:513
 TClassDocOutput.cxx:514
 TClassDocOutput.cxx:515
 TClassDocOutput.cxx:516
 TClassDocOutput.cxx:517
 TClassDocOutput.cxx:518
 TClassDocOutput.cxx:519
 TClassDocOutput.cxx:520
 TClassDocOutput.cxx:521
 TClassDocOutput.cxx:522
 TClassDocOutput.cxx:523
 TClassDocOutput.cxx:524
 TClassDocOutput.cxx:525
 TClassDocOutput.cxx:526
 TClassDocOutput.cxx:527
 TClassDocOutput.cxx:528
 TClassDocOutput.cxx:529
 TClassDocOutput.cxx:530
 TClassDocOutput.cxx:531
 TClassDocOutput.cxx:532
 TClassDocOutput.cxx:533
 TClassDocOutput.cxx:534
 TClassDocOutput.cxx:535
 TClassDocOutput.cxx:536
 TClassDocOutput.cxx:537
 TClassDocOutput.cxx:538
 TClassDocOutput.cxx:539
 TClassDocOutput.cxx:540
 TClassDocOutput.cxx:541
 TClassDocOutput.cxx:542
 TClassDocOutput.cxx:543
 TClassDocOutput.cxx:544
 TClassDocOutput.cxx:545
 TClassDocOutput.cxx:546
 TClassDocOutput.cxx:547
 TClassDocOutput.cxx:548
 TClassDocOutput.cxx:549
 TClassDocOutput.cxx:550
 TClassDocOutput.cxx:551
 TClassDocOutput.cxx:552
 TClassDocOutput.cxx:553
 TClassDocOutput.cxx:554
 TClassDocOutput.cxx:555
 TClassDocOutput.cxx:556
 TClassDocOutput.cxx:557
 TClassDocOutput.cxx:558
 TClassDocOutput.cxx:559
 TClassDocOutput.cxx:560
 TClassDocOutput.cxx:561
 TClassDocOutput.cxx:562
 TClassDocOutput.cxx:563
 TClassDocOutput.cxx:564
 TClassDocOutput.cxx:565
 TClassDocOutput.cxx:566
 TClassDocOutput.cxx:567
 TClassDocOutput.cxx:568
 TClassDocOutput.cxx:569
 TClassDocOutput.cxx:570
 TClassDocOutput.cxx:571
 TClassDocOutput.cxx:572
 TClassDocOutput.cxx:573
 TClassDocOutput.cxx:574
 TClassDocOutput.cxx:575
 TClassDocOutput.cxx:576
 TClassDocOutput.cxx:577
 TClassDocOutput.cxx:578
 TClassDocOutput.cxx:579
 TClassDocOutput.cxx:580
 TClassDocOutput.cxx:581
 TClassDocOutput.cxx:582
 TClassDocOutput.cxx:583
 TClassDocOutput.cxx:584
 TClassDocOutput.cxx:585
 TClassDocOutput.cxx:586
 TClassDocOutput.cxx:587
 TClassDocOutput.cxx:588
 TClassDocOutput.cxx:589
 TClassDocOutput.cxx:590
 TClassDocOutput.cxx:591
 TClassDocOutput.cxx:592
 TClassDocOutput.cxx:593
 TClassDocOutput.cxx:594
 TClassDocOutput.cxx:595
 TClassDocOutput.cxx:596
 TClassDocOutput.cxx:597
 TClassDocOutput.cxx:598
 TClassDocOutput.cxx:599
 TClassDocOutput.cxx:600
 TClassDocOutput.cxx:601
 TClassDocOutput.cxx:602
 TClassDocOutput.cxx:603
 TClassDocOutput.cxx:604
 TClassDocOutput.cxx:605
 TClassDocOutput.cxx:606
 TClassDocOutput.cxx:607
 TClassDocOutput.cxx:608
 TClassDocOutput.cxx:609
 TClassDocOutput.cxx:610
 TClassDocOutput.cxx:611
 TClassDocOutput.cxx:612
 TClassDocOutput.cxx:613
 TClassDocOutput.cxx:614
 TClassDocOutput.cxx:615
 TClassDocOutput.cxx:616
 TClassDocOutput.cxx:617
 TClassDocOutput.cxx:618
 TClassDocOutput.cxx:619
 TClassDocOutput.cxx:620
 TClassDocOutput.cxx:621
 TClassDocOutput.cxx:622
 TClassDocOutput.cxx:623
 TClassDocOutput.cxx:624
 TClassDocOutput.cxx:625
 TClassDocOutput.cxx:626
 TClassDocOutput.cxx:627
 TClassDocOutput.cxx:628
 TClassDocOutput.cxx:629
 TClassDocOutput.cxx:630
 TClassDocOutput.cxx:631
 TClassDocOutput.cxx:632
 TClassDocOutput.cxx:633
 TClassDocOutput.cxx:634
 TClassDocOutput.cxx:635
 TClassDocOutput.cxx:636
 TClassDocOutput.cxx:637
 TClassDocOutput.cxx:638
 TClassDocOutput.cxx:639
 TClassDocOutput.cxx:640
 TClassDocOutput.cxx:641
 TClassDocOutput.cxx:642
 TClassDocOutput.cxx:643
 TClassDocOutput.cxx:644
 TClassDocOutput.cxx:645
 TClassDocOutput.cxx:646
 TClassDocOutput.cxx:647
 TClassDocOutput.cxx:648
 TClassDocOutput.cxx:649
 TClassDocOutput.cxx:650
 TClassDocOutput.cxx:651
 TClassDocOutput.cxx:652
 TClassDocOutput.cxx:653
 TClassDocOutput.cxx:654
 TClassDocOutput.cxx:655
 TClassDocOutput.cxx:656
 TClassDocOutput.cxx:657
 TClassDocOutput.cxx:658
 TClassDocOutput.cxx:659
 TClassDocOutput.cxx:660
 TClassDocOutput.cxx:661
 TClassDocOutput.cxx:662
 TClassDocOutput.cxx:663
 TClassDocOutput.cxx:664
 TClassDocOutput.cxx:665
 TClassDocOutput.cxx:666
 TClassDocOutput.cxx:667
 TClassDocOutput.cxx:668
 TClassDocOutput.cxx:669
 TClassDocOutput.cxx:670
 TClassDocOutput.cxx:671
 TClassDocOutput.cxx:672
 TClassDocOutput.cxx:673
 TClassDocOutput.cxx:674
 TClassDocOutput.cxx:675
 TClassDocOutput.cxx:676
 TClassDocOutput.cxx:677
 TClassDocOutput.cxx:678
 TClassDocOutput.cxx:679
 TClassDocOutput.cxx:680
 TClassDocOutput.cxx:681
 TClassDocOutput.cxx:682
 TClassDocOutput.cxx:683
 TClassDocOutput.cxx:684
 TClassDocOutput.cxx:685
 TClassDocOutput.cxx:686
 TClassDocOutput.cxx:687
 TClassDocOutput.cxx:688
 TClassDocOutput.cxx:689
 TClassDocOutput.cxx:690
 TClassDocOutput.cxx:691
 TClassDocOutput.cxx:692
 TClassDocOutput.cxx:693
 TClassDocOutput.cxx:694
 TClassDocOutput.cxx:695
 TClassDocOutput.cxx:696
 TClassDocOutput.cxx:697
 TClassDocOutput.cxx:698
 TClassDocOutput.cxx:699
 TClassDocOutput.cxx:700
 TClassDocOutput.cxx:701
 TClassDocOutput.cxx:702
 TClassDocOutput.cxx:703
 TClassDocOutput.cxx:704
 TClassDocOutput.cxx:705
 TClassDocOutput.cxx:706
 TClassDocOutput.cxx:707
 TClassDocOutput.cxx:708
 TClassDocOutput.cxx:709
 TClassDocOutput.cxx:710
 TClassDocOutput.cxx:711
 TClassDocOutput.cxx:712
 TClassDocOutput.cxx:713
 TClassDocOutput.cxx:714
 TClassDocOutput.cxx:715
 TClassDocOutput.cxx:716
 TClassDocOutput.cxx:717
 TClassDocOutput.cxx:718
 TClassDocOutput.cxx:719
 TClassDocOutput.cxx:720
 TClassDocOutput.cxx:721
 TClassDocOutput.cxx:722
 TClassDocOutput.cxx:723
 TClassDocOutput.cxx:724
 TClassDocOutput.cxx:725
 TClassDocOutput.cxx:726
 TClassDocOutput.cxx:727
 TClassDocOutput.cxx:728
 TClassDocOutput.cxx:729
 TClassDocOutput.cxx:730
 TClassDocOutput.cxx:731
 TClassDocOutput.cxx:732
 TClassDocOutput.cxx:733
 TClassDocOutput.cxx:734
 TClassDocOutput.cxx:735
 TClassDocOutput.cxx:736
 TClassDocOutput.cxx:737
 TClassDocOutput.cxx:738
 TClassDocOutput.cxx:739
 TClassDocOutput.cxx:740
 TClassDocOutput.cxx:741
 TClassDocOutput.cxx:742
 TClassDocOutput.cxx:743
 TClassDocOutput.cxx:744
 TClassDocOutput.cxx:745
 TClassDocOutput.cxx:746
 TClassDocOutput.cxx:747
 TClassDocOutput.cxx:748
 TClassDocOutput.cxx:749
 TClassDocOutput.cxx:750
 TClassDocOutput.cxx:751
 TClassDocOutput.cxx:752
 TClassDocOutput.cxx:753
 TClassDocOutput.cxx:754
 TClassDocOutput.cxx:755
 TClassDocOutput.cxx:756
 TClassDocOutput.cxx:757
 TClassDocOutput.cxx:758
 TClassDocOutput.cxx:759
 TClassDocOutput.cxx:760
 TClassDocOutput.cxx:761
 TClassDocOutput.cxx:762
 TClassDocOutput.cxx:763
 TClassDocOutput.cxx:764
 TClassDocOutput.cxx:765
 TClassDocOutput.cxx:766
 TClassDocOutput.cxx:767
 TClassDocOutput.cxx:768
 TClassDocOutput.cxx:769
 TClassDocOutput.cxx:770
 TClassDocOutput.cxx:771
 TClassDocOutput.cxx:772
 TClassDocOutput.cxx:773
 TClassDocOutput.cxx:774
 TClassDocOutput.cxx:775
 TClassDocOutput.cxx:776
 TClassDocOutput.cxx:777
 TClassDocOutput.cxx:778
 TClassDocOutput.cxx:779
 TClassDocOutput.cxx:780
 TClassDocOutput.cxx:781
 TClassDocOutput.cxx:782
 TClassDocOutput.cxx:783
 TClassDocOutput.cxx:784
 TClassDocOutput.cxx:785
 TClassDocOutput.cxx:786
 TClassDocOutput.cxx:787
 TClassDocOutput.cxx:788
 TClassDocOutput.cxx:789
 TClassDocOutput.cxx:790
 TClassDocOutput.cxx:791
 TClassDocOutput.cxx:792
 TClassDocOutput.cxx:793
 TClassDocOutput.cxx:794
 TClassDocOutput.cxx:795
 TClassDocOutput.cxx:796
 TClassDocOutput.cxx:797
 TClassDocOutput.cxx:798
 TClassDocOutput.cxx:799
 TClassDocOutput.cxx:800
 TClassDocOutput.cxx:801
 TClassDocOutput.cxx:802
 TClassDocOutput.cxx:803
 TClassDocOutput.cxx:804
 TClassDocOutput.cxx:805
 TClassDocOutput.cxx:806
 TClassDocOutput.cxx:807
 TClassDocOutput.cxx:808
 TClassDocOutput.cxx:809
 TClassDocOutput.cxx:810
 TClassDocOutput.cxx:811
 TClassDocOutput.cxx:812
 TClassDocOutput.cxx:813
 TClassDocOutput.cxx:814
 TClassDocOutput.cxx:815
 TClassDocOutput.cxx:816
 TClassDocOutput.cxx:817
 TClassDocOutput.cxx:818
 TClassDocOutput.cxx:819
 TClassDocOutput.cxx:820
 TClassDocOutput.cxx:821
 TClassDocOutput.cxx:822
 TClassDocOutput.cxx:823
 TClassDocOutput.cxx:824
 TClassDocOutput.cxx:825
 TClassDocOutput.cxx:826
 TClassDocOutput.cxx:827
 TClassDocOutput.cxx:828
 TClassDocOutput.cxx:829
 TClassDocOutput.cxx:830
 TClassDocOutput.cxx:831
 TClassDocOutput.cxx:832
 TClassDocOutput.cxx:833
 TClassDocOutput.cxx:834
 TClassDocOutput.cxx:835
 TClassDocOutput.cxx:836
 TClassDocOutput.cxx:837
 TClassDocOutput.cxx:838
 TClassDocOutput.cxx:839
 TClassDocOutput.cxx:840
 TClassDocOutput.cxx:841
 TClassDocOutput.cxx:842
 TClassDocOutput.cxx:843
 TClassDocOutput.cxx:844
 TClassDocOutput.cxx:845
 TClassDocOutput.cxx:846
 TClassDocOutput.cxx:847
 TClassDocOutput.cxx:848
 TClassDocOutput.cxx:849
 TClassDocOutput.cxx:850
 TClassDocOutput.cxx:851
 TClassDocOutput.cxx:852
 TClassDocOutput.cxx:853
 TClassDocOutput.cxx:854
 TClassDocOutput.cxx:855
 TClassDocOutput.cxx:856
 TClassDocOutput.cxx:857
 TClassDocOutput.cxx:858
 TClassDocOutput.cxx:859
 TClassDocOutput.cxx:860
 TClassDocOutput.cxx:861
 TClassDocOutput.cxx:862
 TClassDocOutput.cxx:863
 TClassDocOutput.cxx:864
 TClassDocOutput.cxx:865
 TClassDocOutput.cxx:866
 TClassDocOutput.cxx:867
 TClassDocOutput.cxx:868
 TClassDocOutput.cxx:869
 TClassDocOutput.cxx:870
 TClassDocOutput.cxx:871
 TClassDocOutput.cxx:872
 TClassDocOutput.cxx:873
 TClassDocOutput.cxx:874
 TClassDocOutput.cxx:875
 TClassDocOutput.cxx:876
 TClassDocOutput.cxx:877
 TClassDocOutput.cxx:878
 TClassDocOutput.cxx:879
 TClassDocOutput.cxx:880
 TClassDocOutput.cxx:881
 TClassDocOutput.cxx:882
 TClassDocOutput.cxx:883
 TClassDocOutput.cxx:884
 TClassDocOutput.cxx:885
 TClassDocOutput.cxx:886
 TClassDocOutput.cxx:887
 TClassDocOutput.cxx:888
 TClassDocOutput.cxx:889
 TClassDocOutput.cxx:890
 TClassDocOutput.cxx:891
 TClassDocOutput.cxx:892
 TClassDocOutput.cxx:893
 TClassDocOutput.cxx:894
 TClassDocOutput.cxx:895
 TClassDocOutput.cxx:896
 TClassDocOutput.cxx:897
 TClassDocOutput.cxx:898
 TClassDocOutput.cxx:899
 TClassDocOutput.cxx:900
 TClassDocOutput.cxx:901
 TClassDocOutput.cxx:902
 TClassDocOutput.cxx:903
 TClassDocOutput.cxx:904
 TClassDocOutput.cxx:905
 TClassDocOutput.cxx:906
 TClassDocOutput.cxx:907
 TClassDocOutput.cxx:908
 TClassDocOutput.cxx:909
 TClassDocOutput.cxx:910
 TClassDocOutput.cxx:911
 TClassDocOutput.cxx:912
 TClassDocOutput.cxx:913
 TClassDocOutput.cxx:914
 TClassDocOutput.cxx:915
 TClassDocOutput.cxx:916
 TClassDocOutput.cxx:917
 TClassDocOutput.cxx:918
 TClassDocOutput.cxx:919
 TClassDocOutput.cxx:920
 TClassDocOutput.cxx:921
 TClassDocOutput.cxx:922
 TClassDocOutput.cxx:923
 TClassDocOutput.cxx:924
 TClassDocOutput.cxx:925
 TClassDocOutput.cxx:926
 TClassDocOutput.cxx:927
 TClassDocOutput.cxx:928
 TClassDocOutput.cxx:929
 TClassDocOutput.cxx:930
 TClassDocOutput.cxx:931
 TClassDocOutput.cxx:932
 TClassDocOutput.cxx:933
 TClassDocOutput.cxx:934
 TClassDocOutput.cxx:935
 TClassDocOutput.cxx:936
 TClassDocOutput.cxx:937
 TClassDocOutput.cxx:938
 TClassDocOutput.cxx:939
 TClassDocOutput.cxx:940
 TClassDocOutput.cxx:941
 TClassDocOutput.cxx:942
 TClassDocOutput.cxx:943
 TClassDocOutput.cxx:944
 TClassDocOutput.cxx:945
 TClassDocOutput.cxx:946
 TClassDocOutput.cxx:947
 TClassDocOutput.cxx:948
 TClassDocOutput.cxx:949
 TClassDocOutput.cxx:950
 TClassDocOutput.cxx:951
 TClassDocOutput.cxx:952
 TClassDocOutput.cxx:953
 TClassDocOutput.cxx:954
 TClassDocOutput.cxx:955
 TClassDocOutput.cxx:956
 TClassDocOutput.cxx:957
 TClassDocOutput.cxx:958
 TClassDocOutput.cxx:959
 TClassDocOutput.cxx:960
 TClassDocOutput.cxx:961
 TClassDocOutput.cxx:962
 TClassDocOutput.cxx:963
 TClassDocOutput.cxx:964
 TClassDocOutput.cxx:965
 TClassDocOutput.cxx:966
 TClassDocOutput.cxx:967
 TClassDocOutput.cxx:968
 TClassDocOutput.cxx:969
 TClassDocOutput.cxx:970
 TClassDocOutput.cxx:971
 TClassDocOutput.cxx:972
 TClassDocOutput.cxx:973
 TClassDocOutput.cxx:974
 TClassDocOutput.cxx:975
 TClassDocOutput.cxx:976
 TClassDocOutput.cxx:977
 TClassDocOutput.cxx:978
 TClassDocOutput.cxx:979
 TClassDocOutput.cxx:980
 TClassDocOutput.cxx:981
 TClassDocOutput.cxx:982
 TClassDocOutput.cxx:983
 TClassDocOutput.cxx:984
 TClassDocOutput.cxx:985
 TClassDocOutput.cxx:986
 TClassDocOutput.cxx:987
 TClassDocOutput.cxx:988
 TClassDocOutput.cxx:989
 TClassDocOutput.cxx:990
 TClassDocOutput.cxx:991
 TClassDocOutput.cxx:992
 TClassDocOutput.cxx:993
 TClassDocOutput.cxx:994
 TClassDocOutput.cxx:995
 TClassDocOutput.cxx:996
 TClassDocOutput.cxx:997
 TClassDocOutput.cxx:998
 TClassDocOutput.cxx:999
 TClassDocOutput.cxx:1000
 TClassDocOutput.cxx:1001
 TClassDocOutput.cxx:1002
 TClassDocOutput.cxx:1003
 TClassDocOutput.cxx:1004
 TClassDocOutput.cxx:1005
 TClassDocOutput.cxx:1006
 TClassDocOutput.cxx:1007
 TClassDocOutput.cxx:1008
 TClassDocOutput.cxx:1009
 TClassDocOutput.cxx:1010
 TClassDocOutput.cxx:1011
 TClassDocOutput.cxx:1012
 TClassDocOutput.cxx:1013
 TClassDocOutput.cxx:1014
 TClassDocOutput.cxx:1015
 TClassDocOutput.cxx:1016
 TClassDocOutput.cxx:1017
 TClassDocOutput.cxx:1018
 TClassDocOutput.cxx:1019
 TClassDocOutput.cxx:1020
 TClassDocOutput.cxx:1021
 TClassDocOutput.cxx:1022
 TClassDocOutput.cxx:1023
 TClassDocOutput.cxx:1024
 TClassDocOutput.cxx:1025
 TClassDocOutput.cxx:1026
 TClassDocOutput.cxx:1027
 TClassDocOutput.cxx:1028
 TClassDocOutput.cxx:1029
 TClassDocOutput.cxx:1030
 TClassDocOutput.cxx:1031
 TClassDocOutput.cxx:1032
 TClassDocOutput.cxx:1033
 TClassDocOutput.cxx:1034
 TClassDocOutput.cxx:1035
 TClassDocOutput.cxx:1036
 TClassDocOutput.cxx:1037
 TClassDocOutput.cxx:1038
 TClassDocOutput.cxx:1039
 TClassDocOutput.cxx:1040
 TClassDocOutput.cxx:1041
 TClassDocOutput.cxx:1042
 TClassDocOutput.cxx:1043
 TClassDocOutput.cxx:1044
 TClassDocOutput.cxx:1045
 TClassDocOutput.cxx:1046
 TClassDocOutput.cxx:1047
 TClassDocOutput.cxx:1048
 TClassDocOutput.cxx:1049
 TClassDocOutput.cxx:1050
 TClassDocOutput.cxx:1051
 TClassDocOutput.cxx:1052
 TClassDocOutput.cxx:1053
 TClassDocOutput.cxx:1054
 TClassDocOutput.cxx:1055
 TClassDocOutput.cxx:1056
 TClassDocOutput.cxx:1057
 TClassDocOutput.cxx:1058
 TClassDocOutput.cxx:1059
 TClassDocOutput.cxx:1060
 TClassDocOutput.cxx:1061
 TClassDocOutput.cxx:1062
 TClassDocOutput.cxx:1063
 TClassDocOutput.cxx:1064
 TClassDocOutput.cxx:1065
 TClassDocOutput.cxx:1066
 TClassDocOutput.cxx:1067
 TClassDocOutput.cxx:1068
 TClassDocOutput.cxx:1069
 TClassDocOutput.cxx:1070
 TClassDocOutput.cxx:1071
 TClassDocOutput.cxx:1072
 TClassDocOutput.cxx:1073
 TClassDocOutput.cxx:1074
 TClassDocOutput.cxx:1075
 TClassDocOutput.cxx:1076
 TClassDocOutput.cxx:1077
 TClassDocOutput.cxx:1078
 TClassDocOutput.cxx:1079
 TClassDocOutput.cxx:1080
 TClassDocOutput.cxx:1081
 TClassDocOutput.cxx:1082
 TClassDocOutput.cxx:1083
 TClassDocOutput.cxx:1084
 TClassDocOutput.cxx:1085
 TClassDocOutput.cxx:1086
 TClassDocOutput.cxx:1087
 TClassDocOutput.cxx:1088
 TClassDocOutput.cxx:1089
 TClassDocOutput.cxx:1090
 TClassDocOutput.cxx:1091
 TClassDocOutput.cxx:1092
 TClassDocOutput.cxx:1093
 TClassDocOutput.cxx:1094
 TClassDocOutput.cxx:1095
 TClassDocOutput.cxx:1096
 TClassDocOutput.cxx:1097
 TClassDocOutput.cxx:1098
 TClassDocOutput.cxx:1099
 TClassDocOutput.cxx:1100
 TClassDocOutput.cxx:1101
 TClassDocOutput.cxx:1102
 TClassDocOutput.cxx:1103
 TClassDocOutput.cxx:1104
 TClassDocOutput.cxx:1105
 TClassDocOutput.cxx:1106
 TClassDocOutput.cxx:1107
 TClassDocOutput.cxx:1108
 TClassDocOutput.cxx:1109
 TClassDocOutput.cxx:1110
 TClassDocOutput.cxx:1111
 TClassDocOutput.cxx:1112
 TClassDocOutput.cxx:1113
 TClassDocOutput.cxx:1114
 TClassDocOutput.cxx:1115
 TClassDocOutput.cxx:1116
 TClassDocOutput.cxx:1117
 TClassDocOutput.cxx:1118
 TClassDocOutput.cxx:1119
 TClassDocOutput.cxx:1120
 TClassDocOutput.cxx:1121
 TClassDocOutput.cxx:1122
 TClassDocOutput.cxx:1123
 TClassDocOutput.cxx:1124
 TClassDocOutput.cxx:1125
 TClassDocOutput.cxx:1126
 TClassDocOutput.cxx:1127
 TClassDocOutput.cxx:1128
 TClassDocOutput.cxx:1129
 TClassDocOutput.cxx:1130
 TClassDocOutput.cxx:1131
 TClassDocOutput.cxx:1132
 TClassDocOutput.cxx:1133
 TClassDocOutput.cxx:1134
 TClassDocOutput.cxx:1135
 TClassDocOutput.cxx:1136
 TClassDocOutput.cxx:1137
 TClassDocOutput.cxx:1138
 TClassDocOutput.cxx:1139
 TClassDocOutput.cxx:1140
 TClassDocOutput.cxx:1141
 TClassDocOutput.cxx:1142
 TClassDocOutput.cxx:1143
 TClassDocOutput.cxx:1144
 TClassDocOutput.cxx:1145
 TClassDocOutput.cxx:1146
 TClassDocOutput.cxx:1147
 TClassDocOutput.cxx:1148
 TClassDocOutput.cxx:1149
 TClassDocOutput.cxx:1150
 TClassDocOutput.cxx:1151
 TClassDocOutput.cxx:1152
 TClassDocOutput.cxx:1153
 TClassDocOutput.cxx:1154
 TClassDocOutput.cxx:1155
 TClassDocOutput.cxx:1156
 TClassDocOutput.cxx:1157
 TClassDocOutput.cxx:1158
 TClassDocOutput.cxx:1159
 TClassDocOutput.cxx:1160
 TClassDocOutput.cxx:1161
 TClassDocOutput.cxx:1162
 TClassDocOutput.cxx:1163
 TClassDocOutput.cxx:1164
 TClassDocOutput.cxx:1165
 TClassDocOutput.cxx:1166
 TClassDocOutput.cxx:1167
 TClassDocOutput.cxx:1168
 TClassDocOutput.cxx:1169
 TClassDocOutput.cxx:1170
 TClassDocOutput.cxx:1171
 TClassDocOutput.cxx:1172
 TClassDocOutput.cxx:1173
 TClassDocOutput.cxx:1174
 TClassDocOutput.cxx:1175
 TClassDocOutput.cxx:1176
 TClassDocOutput.cxx:1177
 TClassDocOutput.cxx:1178
 TClassDocOutput.cxx:1179
 TClassDocOutput.cxx:1180
 TClassDocOutput.cxx:1181
 TClassDocOutput.cxx:1182
 TClassDocOutput.cxx:1183
 TClassDocOutput.cxx:1184
 TClassDocOutput.cxx:1185
 TClassDocOutput.cxx:1186
 TClassDocOutput.cxx:1187
 TClassDocOutput.cxx:1188
 TClassDocOutput.cxx:1189
 TClassDocOutput.cxx:1190
 TClassDocOutput.cxx:1191
 TClassDocOutput.cxx:1192
 TClassDocOutput.cxx:1193
 TClassDocOutput.cxx:1194
 TClassDocOutput.cxx:1195
 TClassDocOutput.cxx:1196
 TClassDocOutput.cxx:1197
 TClassDocOutput.cxx:1198
 TClassDocOutput.cxx:1199
 TClassDocOutput.cxx:1200
 TClassDocOutput.cxx:1201
 TClassDocOutput.cxx:1202
 TClassDocOutput.cxx:1203
 TClassDocOutput.cxx:1204
 TClassDocOutput.cxx:1205
 TClassDocOutput.cxx:1206
 TClassDocOutput.cxx:1207
 TClassDocOutput.cxx:1208
 TClassDocOutput.cxx:1209
 TClassDocOutput.cxx:1210
 TClassDocOutput.cxx:1211
 TClassDocOutput.cxx:1212
 TClassDocOutput.cxx:1213
 TClassDocOutput.cxx:1214
 TClassDocOutput.cxx:1215
 TClassDocOutput.cxx:1216
 TClassDocOutput.cxx:1217
 TClassDocOutput.cxx:1218
 TClassDocOutput.cxx:1219
 TClassDocOutput.cxx:1220
 TClassDocOutput.cxx:1221
 TClassDocOutput.cxx:1222
 TClassDocOutput.cxx:1223
 TClassDocOutput.cxx:1224
 TClassDocOutput.cxx:1225
 TClassDocOutput.cxx:1226
 TClassDocOutput.cxx:1227
 TClassDocOutput.cxx:1228
 TClassDocOutput.cxx:1229
 TClassDocOutput.cxx:1230
 TClassDocOutput.cxx:1231
 TClassDocOutput.cxx:1232
 TClassDocOutput.cxx:1233
 TClassDocOutput.cxx:1234
 TClassDocOutput.cxx:1235
 TClassDocOutput.cxx:1236
 TClassDocOutput.cxx:1237
 TClassDocOutput.cxx:1238
 TClassDocOutput.cxx:1239
 TClassDocOutput.cxx:1240
 TClassDocOutput.cxx:1241
 TClassDocOutput.cxx:1242
 TClassDocOutput.cxx:1243
 TClassDocOutput.cxx:1244
 TClassDocOutput.cxx:1245
 TClassDocOutput.cxx:1246
 TClassDocOutput.cxx:1247
 TClassDocOutput.cxx:1248
 TClassDocOutput.cxx:1249
 TClassDocOutput.cxx:1250
 TClassDocOutput.cxx:1251
 TClassDocOutput.cxx:1252
 TClassDocOutput.cxx:1253
 TClassDocOutput.cxx:1254
 TClassDocOutput.cxx:1255
 TClassDocOutput.cxx:1256
 TClassDocOutput.cxx:1257
 TClassDocOutput.cxx:1258
 TClassDocOutput.cxx:1259
 TClassDocOutput.cxx:1260
 TClassDocOutput.cxx:1261
 TClassDocOutput.cxx:1262
 TClassDocOutput.cxx:1263
 TClassDocOutput.cxx:1264
 TClassDocOutput.cxx:1265
 TClassDocOutput.cxx:1266
 TClassDocOutput.cxx:1267
 TClassDocOutput.cxx:1268
 TClassDocOutput.cxx:1269
 TClassDocOutput.cxx:1270
 TClassDocOutput.cxx:1271
 TClassDocOutput.cxx:1272
 TClassDocOutput.cxx:1273
 TClassDocOutput.cxx:1274
 TClassDocOutput.cxx:1275
 TClassDocOutput.cxx:1276
 TClassDocOutput.cxx:1277
 TClassDocOutput.cxx:1278
 TClassDocOutput.cxx:1279
 TClassDocOutput.cxx:1280
 TClassDocOutput.cxx:1281
 TClassDocOutput.cxx:1282
 TClassDocOutput.cxx:1283
 TClassDocOutput.cxx:1284
 TClassDocOutput.cxx:1285
 TClassDocOutput.cxx:1286
 TClassDocOutput.cxx:1287
 TClassDocOutput.cxx:1288
 TClassDocOutput.cxx:1289
 TClassDocOutput.cxx:1290
 TClassDocOutput.cxx:1291
 TClassDocOutput.cxx:1292
 TClassDocOutput.cxx:1293
 TClassDocOutput.cxx:1294
 TClassDocOutput.cxx:1295
 TClassDocOutput.cxx:1296
 TClassDocOutput.cxx:1297
 TClassDocOutput.cxx:1298
 TClassDocOutput.cxx:1299
 TClassDocOutput.cxx:1300
 TClassDocOutput.cxx:1301
 TClassDocOutput.cxx:1302
 TClassDocOutput.cxx:1303
 TClassDocOutput.cxx:1304
 TClassDocOutput.cxx:1305
 TClassDocOutput.cxx:1306
 TClassDocOutput.cxx:1307
 TClassDocOutput.cxx:1308
 TClassDocOutput.cxx:1309
 TClassDocOutput.cxx:1310
 TClassDocOutput.cxx:1311
 TClassDocOutput.cxx:1312
 TClassDocOutput.cxx:1313
 TClassDocOutput.cxx:1314
 TClassDocOutput.cxx:1315
 TClassDocOutput.cxx:1316
 TClassDocOutput.cxx:1317
 TClassDocOutput.cxx:1318
 TClassDocOutput.cxx:1319
 TClassDocOutput.cxx:1320
 TClassDocOutput.cxx:1321
 TClassDocOutput.cxx:1322
 TClassDocOutput.cxx:1323
 TClassDocOutput.cxx:1324
 TClassDocOutput.cxx:1325
 TClassDocOutput.cxx:1326
 TClassDocOutput.cxx:1327
 TClassDocOutput.cxx:1328
 TClassDocOutput.cxx:1329
 TClassDocOutput.cxx:1330
 TClassDocOutput.cxx:1331
 TClassDocOutput.cxx:1332
 TClassDocOutput.cxx:1333
 TClassDocOutput.cxx:1334
 TClassDocOutput.cxx:1335
 TClassDocOutput.cxx:1336
 TClassDocOutput.cxx:1337
 TClassDocOutput.cxx:1338
 TClassDocOutput.cxx:1339
 TClassDocOutput.cxx:1340
 TClassDocOutput.cxx:1341
 TClassDocOutput.cxx:1342
 TClassDocOutput.cxx:1343
 TClassDocOutput.cxx:1344
 TClassDocOutput.cxx:1345
 TClassDocOutput.cxx:1346
 TClassDocOutput.cxx:1347
 TClassDocOutput.cxx:1348
 TClassDocOutput.cxx:1349
 TClassDocOutput.cxx:1350
 TClassDocOutput.cxx:1351
 TClassDocOutput.cxx:1352
 TClassDocOutput.cxx:1353
 TClassDocOutput.cxx:1354
 TClassDocOutput.cxx:1355
 TClassDocOutput.cxx:1356
 TClassDocOutput.cxx:1357
 TClassDocOutput.cxx:1358
 TClassDocOutput.cxx:1359
 TClassDocOutput.cxx:1360
 TClassDocOutput.cxx:1361
 TClassDocOutput.cxx:1362
 TClassDocOutput.cxx:1363
 TClassDocOutput.cxx:1364
 TClassDocOutput.cxx:1365
 TClassDocOutput.cxx:1366
 TClassDocOutput.cxx:1367
 TClassDocOutput.cxx:1368
 TClassDocOutput.cxx:1369
 TClassDocOutput.cxx:1370
 TClassDocOutput.cxx:1371
 TClassDocOutput.cxx:1372
 TClassDocOutput.cxx:1373
 TClassDocOutput.cxx:1374
 TClassDocOutput.cxx:1375
 TClassDocOutput.cxx:1376
 TClassDocOutput.cxx:1377
 TClassDocOutput.cxx:1378
 TClassDocOutput.cxx:1379
 TClassDocOutput.cxx:1380
 TClassDocOutput.cxx:1381
 TClassDocOutput.cxx:1382
 TClassDocOutput.cxx:1383
 TClassDocOutput.cxx:1384
 TClassDocOutput.cxx:1385
 TClassDocOutput.cxx:1386
 TClassDocOutput.cxx:1387
 TClassDocOutput.cxx:1388
 TClassDocOutput.cxx:1389
 TClassDocOutput.cxx:1390
 TClassDocOutput.cxx:1391
 TClassDocOutput.cxx:1392
 TClassDocOutput.cxx:1393
 TClassDocOutput.cxx:1394
 TClassDocOutput.cxx:1395
 TClassDocOutput.cxx:1396
 TClassDocOutput.cxx:1397
 TClassDocOutput.cxx:1398
 TClassDocOutput.cxx:1399
 TClassDocOutput.cxx:1400
 TClassDocOutput.cxx:1401
 TClassDocOutput.cxx:1402
 TClassDocOutput.cxx:1403
 TClassDocOutput.cxx:1404
 TClassDocOutput.cxx:1405
 TClassDocOutput.cxx:1406
 TClassDocOutput.cxx:1407
 TClassDocOutput.cxx:1408
 TClassDocOutput.cxx:1409
 TClassDocOutput.cxx:1410
 TClassDocOutput.cxx:1411
 TClassDocOutput.cxx:1412
 TClassDocOutput.cxx:1413
 TClassDocOutput.cxx:1414
 TClassDocOutput.cxx:1415
 TClassDocOutput.cxx:1416
 TClassDocOutput.cxx:1417
 TClassDocOutput.cxx:1418
 TClassDocOutput.cxx:1419
 TClassDocOutput.cxx:1420
 TClassDocOutput.cxx:1421
 TClassDocOutput.cxx:1422
 TClassDocOutput.cxx:1423
 TClassDocOutput.cxx:1424
 TClassDocOutput.cxx:1425
 TClassDocOutput.cxx:1426
 TClassDocOutput.cxx:1427
 TClassDocOutput.cxx:1428
 TClassDocOutput.cxx:1429
 TClassDocOutput.cxx:1430
 TClassDocOutput.cxx:1431
 TClassDocOutput.cxx:1432
 TClassDocOutput.cxx:1433
 TClassDocOutput.cxx:1434
 TClassDocOutput.cxx:1435
 TClassDocOutput.cxx:1436
 TClassDocOutput.cxx:1437
 TClassDocOutput.cxx:1438
 TClassDocOutput.cxx:1439
 TClassDocOutput.cxx:1440
 TClassDocOutput.cxx:1441
 TClassDocOutput.cxx:1442
 TClassDocOutput.cxx:1443
 TClassDocOutput.cxx:1444
 TClassDocOutput.cxx:1445
 TClassDocOutput.cxx:1446
 TClassDocOutput.cxx:1447
 TClassDocOutput.cxx:1448
 TClassDocOutput.cxx:1449
 TClassDocOutput.cxx:1450
 TClassDocOutput.cxx:1451
 TClassDocOutput.cxx:1452
 TClassDocOutput.cxx:1453
 TClassDocOutput.cxx:1454
 TClassDocOutput.cxx:1455
 TClassDocOutput.cxx:1456
 TClassDocOutput.cxx:1457
 TClassDocOutput.cxx:1458
 TClassDocOutput.cxx:1459
 TClassDocOutput.cxx:1460
 TClassDocOutput.cxx:1461
 TClassDocOutput.cxx:1462
 TClassDocOutput.cxx:1463
 TClassDocOutput.cxx:1464
 TClassDocOutput.cxx:1465
 TClassDocOutput.cxx:1466
 TClassDocOutput.cxx:1467
 TClassDocOutput.cxx:1468
 TClassDocOutput.cxx:1469
 TClassDocOutput.cxx:1470
 TClassDocOutput.cxx:1471
 TClassDocOutput.cxx:1472
 TClassDocOutput.cxx:1473
 TClassDocOutput.cxx:1474
 TClassDocOutput.cxx:1475
 TClassDocOutput.cxx:1476
 TClassDocOutput.cxx:1477
 TClassDocOutput.cxx:1478
 TClassDocOutput.cxx:1479
 TClassDocOutput.cxx:1480
 TClassDocOutput.cxx:1481
 TClassDocOutput.cxx:1482
 TClassDocOutput.cxx:1483
 TClassDocOutput.cxx:1484
 TClassDocOutput.cxx:1485
 TClassDocOutput.cxx:1486
 TClassDocOutput.cxx:1487
 TClassDocOutput.cxx:1488
 TClassDocOutput.cxx:1489
 TClassDocOutput.cxx:1490
 TClassDocOutput.cxx:1491
 TClassDocOutput.cxx:1492
 TClassDocOutput.cxx:1493
 TClassDocOutput.cxx:1494
 TClassDocOutput.cxx:1495
 TClassDocOutput.cxx:1496
 TClassDocOutput.cxx:1497
 TClassDocOutput.cxx:1498
 TClassDocOutput.cxx:1499
 TClassDocOutput.cxx:1500
 TClassDocOutput.cxx:1501
 TClassDocOutput.cxx:1502
 TClassDocOutput.cxx:1503
 TClassDocOutput.cxx:1504
 TClassDocOutput.cxx:1505
 TClassDocOutput.cxx:1506
 TClassDocOutput.cxx:1507
 TClassDocOutput.cxx:1508
 TClassDocOutput.cxx:1509
 TClassDocOutput.cxx:1510
 TClassDocOutput.cxx:1511
 TClassDocOutput.cxx:1512
 TClassDocOutput.cxx:1513
 TClassDocOutput.cxx:1514
 TClassDocOutput.cxx:1515
 TClassDocOutput.cxx:1516
 TClassDocOutput.cxx:1517
 TClassDocOutput.cxx:1518
 TClassDocOutput.cxx:1519
 TClassDocOutput.cxx:1520
 TClassDocOutput.cxx:1521
 TClassDocOutput.cxx:1522
 TClassDocOutput.cxx:1523
 TClassDocOutput.cxx:1524
 TClassDocOutput.cxx:1525
 TClassDocOutput.cxx:1526
 TClassDocOutput.cxx:1527
 TClassDocOutput.cxx:1528
 TClassDocOutput.cxx:1529
 TClassDocOutput.cxx:1530
 TClassDocOutput.cxx:1531
 TClassDocOutput.cxx:1532
 TClassDocOutput.cxx:1533
 TClassDocOutput.cxx:1534
 TClassDocOutput.cxx:1535
 TClassDocOutput.cxx:1536
 TClassDocOutput.cxx:1537
 TClassDocOutput.cxx:1538
 TClassDocOutput.cxx:1539
 TClassDocOutput.cxx:1540
 TClassDocOutput.cxx:1541
 TClassDocOutput.cxx:1542
 TClassDocOutput.cxx:1543
 TClassDocOutput.cxx:1544
 TClassDocOutput.cxx:1545
 TClassDocOutput.cxx:1546
 TClassDocOutput.cxx:1547
 TClassDocOutput.cxx:1548
 TClassDocOutput.cxx:1549
 TClassDocOutput.cxx:1550
 TClassDocOutput.cxx:1551
 TClassDocOutput.cxx:1552
 TClassDocOutput.cxx:1553
 TClassDocOutput.cxx:1554
 TClassDocOutput.cxx:1555
 TClassDocOutput.cxx:1556
 TClassDocOutput.cxx:1557
 TClassDocOutput.cxx:1558
 TClassDocOutput.cxx:1559
 TClassDocOutput.cxx:1560
 TClassDocOutput.cxx:1561
 TClassDocOutput.cxx:1562
 TClassDocOutput.cxx:1563
 TClassDocOutput.cxx:1564
 TClassDocOutput.cxx:1565
 TClassDocOutput.cxx:1566
 TClassDocOutput.cxx:1567
 TClassDocOutput.cxx:1568
 TClassDocOutput.cxx:1569
 TClassDocOutput.cxx:1570
 TClassDocOutput.cxx:1571
 TClassDocOutput.cxx:1572
 TClassDocOutput.cxx:1573
 TClassDocOutput.cxx:1574
 TClassDocOutput.cxx:1575
 TClassDocOutput.cxx:1576
 TClassDocOutput.cxx:1577
 TClassDocOutput.cxx:1578
 TClassDocOutput.cxx:1579
 TClassDocOutput.cxx:1580
 TClassDocOutput.cxx:1581
 TClassDocOutput.cxx:1582
 TClassDocOutput.cxx:1583
 TClassDocOutput.cxx:1584
 TClassDocOutput.cxx:1585
 TClassDocOutput.cxx:1586
 TClassDocOutput.cxx:1587
 TClassDocOutput.cxx:1588
 TClassDocOutput.cxx:1589
 TClassDocOutput.cxx:1590
 TClassDocOutput.cxx:1591
 TClassDocOutput.cxx:1592
 TClassDocOutput.cxx:1593
 TClassDocOutput.cxx:1594
 TClassDocOutput.cxx:1595
 TClassDocOutput.cxx:1596
 TClassDocOutput.cxx:1597
 TClassDocOutput.cxx:1598
 TClassDocOutput.cxx:1599
 TClassDocOutput.cxx:1600
 TClassDocOutput.cxx:1601
 TClassDocOutput.cxx:1602
 TClassDocOutput.cxx:1603
 TClassDocOutput.cxx:1604
 TClassDocOutput.cxx:1605
 TClassDocOutput.cxx:1606
 TClassDocOutput.cxx:1607
 TClassDocOutput.cxx:1608
 TClassDocOutput.cxx:1609
 TClassDocOutput.cxx:1610
 TClassDocOutput.cxx:1611
 TClassDocOutput.cxx:1612
 TClassDocOutput.cxx:1613
 TClassDocOutput.cxx:1614
 TClassDocOutput.cxx:1615
 TClassDocOutput.cxx:1616
 TClassDocOutput.cxx:1617
 TClassDocOutput.cxx:1618
 TClassDocOutput.cxx:1619
 TClassDocOutput.cxx:1620
 TClassDocOutput.cxx:1621
 TClassDocOutput.cxx:1622
 TClassDocOutput.cxx:1623
 TClassDocOutput.cxx:1624
 TClassDocOutput.cxx:1625
 TClassDocOutput.cxx:1626
 TClassDocOutput.cxx:1627
 TClassDocOutput.cxx:1628
 TClassDocOutput.cxx:1629
 TClassDocOutput.cxx:1630
 TClassDocOutput.cxx:1631
 TClassDocOutput.cxx:1632
 TClassDocOutput.cxx:1633
 TClassDocOutput.cxx:1634
 TClassDocOutput.cxx:1635
 TClassDocOutput.cxx:1636
 TClassDocOutput.cxx:1637
 TClassDocOutput.cxx:1638
 TClassDocOutput.cxx:1639
 TClassDocOutput.cxx:1640
 TClassDocOutput.cxx:1641
 TClassDocOutput.cxx:1642
 TClassDocOutput.cxx:1643
 TClassDocOutput.cxx:1644
 TClassDocOutput.cxx:1645
 TClassDocOutput.cxx:1646
 TClassDocOutput.cxx:1647
 TClassDocOutput.cxx:1648
 TClassDocOutput.cxx:1649
 TClassDocOutput.cxx:1650
 TClassDocOutput.cxx:1651
 TClassDocOutput.cxx:1652
 TClassDocOutput.cxx:1653
 TClassDocOutput.cxx:1654
 TClassDocOutput.cxx:1655