" << endl;
}
out << "" << endl; TDocParser parser(*this); parser.Convert(out, in, relpath, (includeOutput) /* determines whether it's code or not */, kFALSE /*interpretDirectives*/); out << " | " << endl;
out << "
|
A complete list of all classes defined in " << GetHtml()->GetProductName() << "
" << std::endl << "A hierarchy graph of all classes, showing each class's base and derived classes
" << std::endl << "A complete list of all types
" << std::endl << "A diagram showing all of " << GetHtml()->GetProductName() << "'s libraries and their dependencies
" << std::endl; WriteHtmlFooter(out); } //______________________________________________________________________________ void TDocOutput::CreateClassTypeDefs() { // Create a forwarding page for each typedef pointing to a class. TDocParser parser(*this); TIter iClass(GetHtml()->GetListOfClasses()); TClassDocInfo* cdi = 0; while ((cdi = (TClassDocInfo*) iClass())) { if (cdi->GetListOfTypedefs().IsEmpty()) continue; TIter iTypedefs(&cdi->GetListOfTypedefs()); TDataType* dt = 0; while ((dt = (TDataType*) iTypedefs())) { if (gDebug > 0) Info("CreateClassTypeDefs", "Creating typedef %s to class %s", dt->GetName(), cdi->GetName()); // create a filename TString filename(dt->GetName()); NameSpace2FileName(filename); gSystem->PrependPathName(fHtml->GetOutputDir(), filename); filename += ".html"; // open class file std::ofstream outfile(filename); if (!outfile.good()) { Error("CreateClassTypeDefs", "Can't open file '%s' !", filename.Data()); continue; } WriteHtmlHeader(outfile, dt->GetName()); outfile << "" << endl; TString dtName(dt->GetName()); ReplaceSpecialChars(dtName); TString sTitle("typedef "); sTitle += dtName; TClass* cls = dynamic_casttypedef "; parser.DecorateKeywords(outfile, dt->GetFullTypeName()); outfile << " | "; ReplaceSpecialChars(outfile, dt->GetName()); if (dt->GetTitle() && dt->GetTitle()[0]) { outfile << " | "; ReplaceSpecialChars(outfile, dt->GetTitle()); } else outfile << " | "; outfile << " |
"); break; default: Error("DecorateEntityBegin", "Unhandled / invalid entity type %d!", (Int_t)type); return; } Ssiz_t addedLen = str.Length() - originalLen; pos += addedLen; } //______________________________________________________________________________ void TDocOutput::DecorateEntityEnd(TString& str, Ssiz_t& pos, TDocParser::EParseContext type) { // Add some colors etc to a source entity, contained in str. // The type of what's contained in str is given by type. // It's called e.g. by TDocParser::BeautifyLine(). // This function should assume that only str."End()" // (i.e. str.Begin()+str.Length()) is valid. // When inserting into str.String(), str.Length() must be updated. Ssiz_t originalLen = str.Length(); switch (type) { case TDocParser::kCode: break; case TDocParser::kComment: str.Insert(pos, ""); break; case TDocParser::kDirective: break; case TDocParser::kString: str.Insert(pos, ""); break; case TDocParser::kKeyword: str.Insert(pos, ""); break; case TDocParser::kCPP: str.Insert(pos, ""); break; case TDocParser::kVerbatim: str.Insert(pos, ""); break; default: Error("DecorateEntityBegin", "Unhandled / invalid entity type %d!", (Int_t)type); return; } Ssiz_t addedLen = str.Length() - originalLen; pos += addedLen; } //______________________________________________________________________________ void TDocOutput::FixupAuthorSourceInfo(TString& authors) { // Special author treatment; called when TDocParser::fSourceInfo[kInfoAuthor] is set. // Modifies the author(s) description, which is a comma separated list of tokens // either in the format // (i) "FirstName LastName " or // (ii) "FirstName LastName more stuff" // The first one generates an XWho link (CERN compatible), // the second a http link (WORLD compatible), being e.g. //
"; // this is what e.g. the html directive expects TDocParser parser(*this); parser.Convert(out, in, "./", kFALSE /* no code */, kTRUE /*process Directives*/); out << ""; } } else if (filename.EndsWith(".html", TString::kIgnoreCase)) { std::ifstream in(filename); TString line; while (in) { if (!line.ReadLine(in)) break; out << line << endl; } } else files.push_back(filename.Data()); } else files.push_back(filename.Data()); } std::stringstream furtherReading; files.sort(); for (std::list
"; // this is what e.g. the html directive expects TDocParser parser(*this); parser.Convert(outFurther, inFurther, "../", kFALSE /*no code*/, kTRUE /*process Directives*/); outFurther << ""; } } else { if (gSystem->CopyFile(filename, outfile, kTRUE) == -1) continue; } TString showname(gSystem->BaseName(outfile)); furtherReading << ""; showname.Remove(showname.Length() - 5, 5); // .html showname.ReplaceAll("_", " "); ReplaceSpecialChars(furtherReading, showname); furtherReading << " " << endl; } gSystem->FreeDirectory(dirHandle); if (furtherReading.str().length()) out << "