46#define PERLOUTPUT_MAX_INDENTATION 40
51 std::ostream *
m_t =
nullptr;
58 void add(
unsigned int n);
196 *s++ =
' '; *s++ =
' '; *s = 0;
211 const char *s = str.
data();
213 while ((c = *s++) != 0)
215 if ((c ==
'\'') || (c ==
'\\'))
234 if ((content ==
'\'') || (content ==
'\\'))
242 if (content ==
nullptr)
350 for (
const auto &child : t.children())
352 std::visit(*
this, child);
399 (link +=
"_1") += anchor;
400 m_output.addFieldQuotedString(
"link", link);
406 m_output.openHash().addFieldQuotedString(
"type", name);
420 m_output.addField(
"content").add(
'\'');
498 const char *accent=
nullptr;
552 .addFieldQuotedString(
"accent", accent)
553 .addFieldQuotedChar(
"letter", res->
symb[0]);
598 const char *style =
nullptr;
621 m_output.addFieldQuotedString(
"style", style)
622 .addFieldBoolean(
"enable", s.
enable());
628 const char *type =
nullptr;
666 m_output.addFieldQuotedString(
"id", anchor);
672 const char *type =
nullptr;
707 parseCode(m_ci,op.context(),op.text(),
FALSE,0);
725 m_output.addFieldQuotedString(
"id",
id).addFieldQuotedString(
"content", f.
text());
736 "<secondaryie></secondaryie>"
756 if (!opt.noPar()) txt +=
"[";
758 if (!opt.noPar()) txt +=
"]";
760 m_output.addFieldQuotedString(
"text", txt);
785 m_output.addFieldQuotedString(
"style",
"Unchecked");
789 m_output.addFieldQuotedString(
"style",
"Checked");
822 const char *type =
nullptr;
844 err(
"unknown simple section found\n");
853 std::visit(*
this,*s.
title());
873 m_output.addFieldQuotedString(
"style",
"itemized");
897 std::visit(*
this,*s.
title());
909 for (
const auto &opt : l.
attribs())
911 if (opt.name==
"type")
915 if (opt.name==
"start")
928 for (
const auto &opt : l.
attribs())
930 if (opt.name==
"value")
954 m_output.add(
"<varlistentry><term>");
958 m_output.add(
"</term></varlistentry>\n");
981 std::visit(*
this,*t.
caption());
1056 auto summary =
details.summary();
1059 std::visit(*
this,*summary);
1092 if ((i=baseName.
findRev(
'/'))!=-1 || (i=baseName.
findRev(
'\\'))!=-1)
1205 const char *type =
nullptr;
1213 err(
"unknown parameter section found\n");
1232 m_output.openHash().openList(
"parameters");
1236 const DocWord *word = std::get_if<DocWord>(¶m);
1237 const DocLinkedWord *linkedWord = std::get_if<DocLinkedWord>(¶m);
1240 name = word->
word();
1242 else if (linkedWord)
1244 name = linkedWord->
word();
1269 .addFieldQuotedString(
"name", name).addFieldQuotedString(
"dir", dir)
1276 std::visit(*
this,par);
1302 m_output.add(
"</xrefdescription>");
1344 output.
openList(
"template_parameters");
1348 if (!a.type.isEmpty())
1350 if (!a.name.isEmpty())
1353 if (!a.defval.isEmpty())
1390 auto astImpl =
dynamic_cast<const DocNodeAST*
>(ast.get());
1394 std::visit(visitor,astImpl->root);
1507 bool isFortran = md->
getLanguage()==SrcLangExt::Fortran;
1512 .addFieldQuotedString(
"kind", memType)
1513 .addFieldQuotedString(
"name", name)
1516 .addFieldBoolean(
"static", md->
isStatic());
1532 if (!declAl.
empty())
1534 auto defIt = al.
begin();
1538 if (defIt!=al.
end())
1545 if (!a.name.isEmpty())
1546 m_output.addFieldQuotedString(
"declaration_name", a.name);
1549 m_output.addFieldQuotedString(
"definition_name", defArg->
name);
1551 if (isFortran && defArg && !defArg->
type.
isEmpty())
1553 else if (!a.type.isEmpty())
1554 m_output.addFieldQuotedString(
"type", a.type);
1556 if (!a.array.isEmpty())
1557 m_output.addFieldQuotedString(
"array", a.array);
1559 if (!a.defval.isEmpty())
1560 m_output.addFieldQuotedString(
"default_value", a.defval);
1562 if (!a.attrib.isEmpty())
1563 m_output.addFieldQuotedString(
"attributes", a.attrib);
1577 .addFieldQuotedString(
"name", a.type)
1597 if (!enumFields.
empty())
1600 for (
const auto &emd : enumFields)
1603 .addFieldQuotedString(
"name", emd->name());
1605 if (!emd->initializer().isEmpty())
1606 m_output.addFieldQuotedString(
"initializer", emd->initializer());
1608 addPerlModDocBlock(
m_output,
"brief",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->briefDescription());
1610 addPerlModDocBlock(
m_output,
"detailed",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->documentation());
1621 if (bitfield.
at(0) ==
':') bitfield = bitfield.
mid(1);
1622 m_output.addFieldQuotedString(
"bitfield", bitfield);
1628 .addFieldQuotedString(
"name", rmd->
name())
1634 m_output.openList(
"reimplemented_by");
1635 for (
const auto &rbmd : rbml)
1637 .addFieldQuotedString(
"name", rbmd->name())
1648 if (ml==
nullptr)
return;
1653 m_output.addFieldQuotedString(
"header", header);
1656 for (
const auto &md : *ml)
1669 for (
auto &mi : *mni)
1675 .addFieldQuotedString(
"name", md->
name())
1679 if (!mi->ambiguityResolutionScope().isEmpty())
1680 m_output.addFieldQuotedString(
"ambiguity_scope", mi->ambiguityResolutionScope());
1694 for (
const auto &mg : mgl)
1697 if (!mg->header().isEmpty())
1699 m_output.addFieldQuotedString(
"header", mg->header());
1702 if (!mg->members().empty())
1705 for (
const auto &md : mg->members())
1727 .addFieldQuotedString(
"name", nm)
1756 .addFieldQuotedString(
"name", cd->
name());
1766 .addFieldQuotedString(
"name", bcd.classDef->displayName())
1780 .addFieldQuotedString(
"name", bcd.classDef->displayName())
1792 .addFieldQuotedString(
"name", icd->name())
1831 DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
1834 t <<
" <inheritancegraph>" << endl;
1835 inheritanceGraph.writePerlMod(t);
1836 t <<
" </inheritancegraph>" << endl;
1838 DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation);
1841 t <<
" <collaborationgraph>" << endl;
1842 collaborationGraph.writePerlMod(t);
1843 t <<
" </collaborationgraph>" << endl;
1845 t <<
" <location file=\""
1864 .addFieldQuotedString(
"name", cd->
name());
1890 .addFieldQuotedString(
"name", mod->
name());
1899 .addFieldQuotedString(
"name", cd->name())
1909 .addFieldQuotedString(
"name", cd->name())
1927 .addFieldQuotedString(
"name", fd->name())
1949 .addFieldQuotedString(
"name", nd->
name());
1956 .addFieldQuotedString(
"name", cd->name())
1966 .addFieldQuotedString(
"name", ind->name())
2005 .addFieldQuotedString(
"name", fd->
name());
2011 .addFieldQuotedString(
"name", inc.includeName);
2012 if (inc.fileDef && !inc.fileDef->isReference())
2014 m_output.addFieldQuotedString(
"ref", inc.fileDef->getOutputFileBase());
2024 .addFieldQuotedString(
"name", inc.includeName);
2025 if (inc.fileDef && !inc.fileDef->isReference())
2027 m_output.addFieldQuotedString(
"ref", inc.fileDef->getOutputFileBase());
2065 .addFieldQuotedString(
"name", gd->
name())
2066 .addFieldQuotedString(
"title", gd->
groupTitle());
2071 for (
const auto &fd : gd->
getFiles())
2073 .addFieldQuotedString(
"name", fd->name())
2083 .addFieldQuotedString(
"name", cd->name())
2093 .addFieldQuotedString(
"name", cd->name())
2103 .addFieldQuotedString(
"name", mod->name())
2113 .addFieldQuotedString(
"name", nd->name())
2121 for (
const auto &pd : gd->
getPages())
2123 .addFieldQuotedString(
"title", pd->title())
2133 .addFieldQuotedString(
"title", sgd->groupTitle())
2162 .addFieldQuotedString(
"name", pd->
name());
2174 std::ofstream outputFileStream;
2179 m_output.setPerlModOutputStream(&outputStream);
2180 m_output.add(
"$doxydocs=").openHash();
2205 for (
const auto &fd : *fn)
2230 m_output.closeHash().add(
";\n1;\n");
2240 err(
"Cannot open file {} for writing!\n", s);
2249 perlModDir.
setPath(outputDirectory+
"/perlmod");
2250 if (!perlModDir.
exists() && !perlModDir.
mkdir(outputDirectory+
"/perlmod"))
2252 err(
"Could not create perlmod directory in {}\n",outputDirectory);
2260 std::ofstream doxyModelPMStream;
2264 doxyModelPMStream <<
2265 "sub memberlist($) {\n"
2266 " my $prefix = $_[0];\n"
2268 "\t[ \"hash\", $prefix . \"s\",\n"
2271 "\t [ \"list\", $prefix . \"List\",\n"
2272 "\t\t[ \"hash\", $prefix,\n"
2274 "\t\t kind => [ \"string\", $prefix . \"Kind\" ],\n"
2275 "\t\t name => [ \"string\", $prefix . \"Name\" ],\n"
2276 "\t\t static => [ \"string\", $prefix . \"Static\" ],\n"
2277 "\t\t virtualness => [ \"string\", $prefix . \"Virtualness\" ],\n"
2278 "\t\t protection => [ \"string\", $prefix . \"Protection\" ],\n"
2279 "\t\t type => [ \"string\", $prefix . \"Type\" ],\n"
2280 "\t\t parameters =>\n"
2281 "\t\t [ \"list\", $prefix . \"Params\",\n"
2282 "\t\t\t[ \"hash\", $prefix . \"Param\",\n"
2284 "\t\t\t declaration_name => [ \"string\", $prefix . \"ParamName\" ],\n"
2285 "\t\t\t type => [ \"string\", $prefix . \"ParamType\" ],\n"
2289 "\t\t detailed =>\n"
2290 "\t\t [ \"hash\", $prefix . \"Detailed\",\n"
2292 "\t\t\t doc => [ \"doc\", $prefix . \"DetailedDoc\" ],\n"
2293 "\t\t\t return => [ \"doc\", $prefix . \"Return\" ],\n"
2294 "\t\t\t see => [ \"doc\", $prefix . \"See\" ],\n"
2295 "\t\t\t params =>\n"
2296 "\t\t\t [ \"list\", $prefix . \"PDBlocks\",\n"
2297 "\t\t\t [ \"hash\", $prefix . \"PDBlock\",\n"
2299 "\t\t\t\t parameters =>\n"
2300 "\t\t\t\t [ \"list\", $prefix . \"PDParams\",\n"
2301 "\t\t\t\t [ \"hash\", $prefix . \"PDParam\",\n"
2303 "\t\t\t\t\t name => [ \"string\", $prefix . \"PDParamName\" ],\n"
2307 "\t\t\t\t doc => [ \"doc\", $prefix . \"PDDoc\" ],\n"
2320 "$doxystructure =\n"
2321 " [ \"hash\", \"Root\",\n"
2324 "\t [ \"list\", \"Files\",\n"
2325 "\t [ \"hash\", \"File\",\n"
2327 "\t\tname => [ \"string\", \"FileName\" ],\n"
2328 "\t\ttypedefs => memberlist(\"FileTypedef\"),\n"
2329 "\t\tvariables => memberlist(\"FileVariable\"),\n"
2330 "\t\tfunctions => memberlist(\"FileFunction\"),\n"
2332 "\t\t [ \"hash\", \"FileDetailed\",\n"
2334 "\t\t doc => [ \"doc\", \"FileDetailedDoc\" ],\n"
2341 "\t [ \"list\", \"Pages\",\n"
2342 "\t [ \"hash\", \"Page\",\n"
2344 "\t\tname => [ \"string\", \"PageName\" ],\n"
2346 "\t\t [ \"hash\", \"PageDetailed\",\n"
2348 "\t\t doc => [ \"doc\", \"PageDetailedDoc\" ],\n"
2355 "\t [ \"list\", \"Classes\",\n"
2356 "\t [ \"hash\", \"Class\",\n"
2358 "\t\tname => [ \"string\", \"ClassName\" ],\n"
2359 "\t\tpublic_typedefs => memberlist(\"ClassPublicTypedef\"),\n"
2360 "\t\tpublic_methods => memberlist(\"ClassPublicMethod\"),\n"
2361 "\t\tpublic_members => memberlist(\"ClassPublicMember\"),\n"
2362 "\t\tprotected_typedefs => memberlist(\"ClassProtectedTypedef\"),\n"
2363 "\t\tprotected_methods => memberlist(\"ClassProtectedMethod\"),\n"
2364 "\t\tprotected_members => memberlist(\"ClassProtectedMember\"),\n"
2365 "\t\tprivate_typedefs => memberlist(\"ClassPrivateTypedef\"),\n"
2366 "\t\tprivate_methods => memberlist(\"ClassPrivateMethod\"),\n"
2367 "\t\tprivate_members => memberlist(\"ClassPrivateMember\"),\n"
2369 "\t\t [ \"hash\", \"ClassDetailed\",\n"
2371 "\t\t doc => [ \"doc\", \"ClassDetailedDoc\" ],\n"
2378 "\t [ \"list\", \"Groups\",\n"
2379 "\t [ \"hash\", \"Group\",\n"
2381 "\t\tname => [ \"string\", \"GroupName\" ],\n"
2382 "\t\ttitle => [ \"string\", \"GroupTitle\" ],\n"
2384 "\t\t [ \"list\", \"Files\",\n"
2385 "\t\t [ \"hash\", \"File\",\n"
2387 "\t\t name => [ \"string\", \"Filename\" ]\n"
2392 "\t\t [ \"list\", \"Classes\",\n"
2393 "\t\t [ \"hash\", \"Class\",\n"
2395 "\t\t name => [ \"string\", \"Classname\" ]\n"
2399 "\t\tnamespaces =>\n"
2400 "\t\t [ \"list\", \"Namespaces\",\n"
2401 "\t\t [ \"hash\", \"Namespace\",\n"
2403 "\t\t name => [ \"string\", \"NamespaceName\" ]\n"
2408 "\t\t [ \"list\", \"Pages\",\n"
2409 "\t\t [ \"hash\", \"Page\","
2411 "\t\t title => [ \"string\", \"PageName\" ]\n"
2416 "\t\t [ \"list\", \"Groups\",\n"
2417 "\t\t [ \"hash\", \"Group\",\n"
2419 "\t\t title => [ \"string\", \"GroupName\" ]\n"
2423 "\t\tfunctions => memberlist(\"GroupFunction\"),\n"
2425 "\t\t [ \"hash\", \"GroupDetailed\",\n"
2427 "\t\t doc => [ \"doc\", \"GroupDetailedDoc\" ],\n"
2443 std::ofstream doxyRulesStream;
2469 ".PHONY: clean-perlmod\n"
2471 "\trm -f $(" <<
prefix <<
"DOXYSTRUCTURE_PM) \\\n"
2472 "\t$(" <<
prefix <<
"DOXYDOCS_PM)";
2476 "\t$(" <<
prefix <<
"DOXYLATEX_PL) \\\n"
2477 "\t$(" <<
prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2478 "\t$(" <<
prefix <<
"DOXYDOCS_TEX) \\\n"
2479 "\t$(" <<
prefix <<
"DOXYSTRUCTURE_TEX) \\\n"
2480 "\t$(" <<
prefix <<
"DOXYFORMAT_TEX) \\\n"
2481 "\t$(" <<
prefix <<
"DOXYLATEX_TEX) \\\n"
2482 "\t$(" <<
prefix <<
"DOXYLATEX_PDF) \\\n"
2483 "\t$(" <<
prefix <<
"DOXYLATEX_DVI) \\\n"
2484 "\t$(addprefix $(" <<
prefix <<
"DOXYLATEX_TEX:tex=),out aux log)";
2485 doxyRulesStream <<
"\n\n";
2488 "$(" <<
prefix <<
"DOXYRULES) \\\n"
2489 "$(" <<
prefix <<
"DOXYMAKEFILE) \\\n"
2490 "$(" <<
prefix <<
"DOXYSTRUCTURE_PM) \\\n"
2491 "$(" <<
prefix <<
"DOXYDOCS_PM)";
2495 "$(" <<
prefix <<
"DOXYLATEX_PL) \\\n"
2496 "$(" <<
prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2497 "$(" <<
prefix <<
"DOXYFORMAT_TEX) \\\n"
2498 "$(" <<
prefix <<
"DOXYLATEX_TEX)";
2502 "\t$(" <<
prefix <<
"DOXYFILE)\n"
2503 "\tcd $(" <<
prefix <<
"DOXY_EXEC_PATH) ; doxygen \"$<\"\n";
2508 "$(" <<
prefix <<
"DOXYDOCS_TEX): \\\n"
2509 "$(" <<
prefix <<
"DOXYLATEX_PL) \\\n"
2510 "$(" <<
prefix <<
"DOXYDOCS_PM)\n"
2511 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2513 "$(" <<
prefix <<
"DOXYSTRUCTURE_TEX): \\\n"
2514 "$(" <<
prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2515 "$(" <<
prefix <<
"DOXYSTRUCTURE_PM)\n"
2516 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2518 "$(" <<
prefix <<
"DOXYLATEX_PDF) \\\n"
2519 "$(" <<
prefix <<
"DOXYLATEX_DVI): \\\n"
2520 "$(" <<
prefix <<
"DOXYLATEX_TEX) \\\n"
2521 "$(" <<
prefix <<
"DOXYFORMAT_TEX) \\\n"
2522 "$(" <<
prefix <<
"DOXYSTRUCTURE_TEX) \\\n"
2523 "$(" <<
prefix <<
"DOXYDOCS_TEX)\n"
2525 "$(" <<
prefix <<
"DOXYLATEX_PDF): \\\n"
2526 "$(" <<
prefix <<
"DOXYLATEX_TEX)\n"
2527 "\tpdflatex -interaction=nonstopmode \"$<\"\n"
2529 "$(" <<
prefix <<
"DOXYLATEX_DVI): \\\n"
2530 "$(" <<
prefix <<
"DOXYLATEX_TEX)\n"
2531 "\tlatex -interaction=nonstopmode \"$<\"\n";
2539 std::ofstream makefileStream;
2547 ".PHONY: default clean" << (perlmodLatex ?
" pdf" :
"") <<
"\n"
2548 "default: " << (perlmodLatex ?
"pdf" :
"clean") <<
"\n"
2552 "clean: clean-perlmod\n";
2556 "pdf: $(" <<
prefix <<
"DOXYLATEX_PDF)\n"
2557 "dvi: $(" <<
prefix <<
"DOXYLATEX_DVI)\n";
2565 std::ofstream doxyLatexStructurePLStream;
2569 doxyLatexStructurePLStream <<
2570 "use DoxyStructure;\n"
2572 "sub process($) {\n"
2573 "\tmy $node = $_[0];\n"
2574 "\tmy ($type, $name) = @$node[0, 1];\n"
2576 "\tif ($type eq \"string\") { $command = \"String\" }\n"
2577 "\telsif ($type eq \"doc\") { $command = \"Doc\" }\n"
2578 "\telsif ($type eq \"hash\") {\n"
2579 "\t\t$command = \"Hash\";\n"
2580 "\t\tfor my $subnode (values %{$$node[2]}) {\n"
2581 "\t\t\tprocess($subnode);\n"
2584 "\telsif ($type eq \"list\") {\n"
2585 "\t\t$command = \"List\";\n"
2586 "\t\tprocess($$node[2]);\n"
2588 "\tprint \"\\\\\" . $command . \"Node{\" . $name . \"}%\\n\";\n"
2591 "process($doxystructure);\n";
2598 std::ofstream doxyLatexPLStream;
2602 doxyLatexPLStream <<
2603 "use DoxyStructure;\n"
2606 "sub latex_quote($) {\n"
2607 "\tmy $text = $_[0];\n"
2608 "\t$text =~ s/\\\\/\\\\textbackslash /g;\n"
2609 "\t$text =~ s/\\|/\\\\textbar /g;\n"
2610 "\t$text =~ s/</\\\\textless /g;\n"
2611 "\t$text =~ s/>/\\\\textgreater /g;\n"
2612 "\t$text =~ s/~/\\\\textasciitilde /g;\n"
2613 "\t$text =~ s/\\^/\\\\textasciicircum /g;\n"
2614 "\t$text =~ s/[\\$&%#_{}]/\\\\$&/g;\n"
2618 "sub generate_doc($) {\n"
2619 "\tmy $doc = $_[0];\n"
2620 "\tfor my $item (@$doc) {\n"
2621 "\t\tmy $type = $$item{type};\n"
2622 "\t\tif ($type eq \"text\") {\n"
2623 "\t\t\tlatex_quote($$item{content});\n"
2624 "\t\t} elsif ($type eq \"parbreak\") {\n"
2625 "\t\t\tprint \"\\n\\n\";\n"
2626 "\t\t} elsif ($type eq \"style\") {\n"
2627 "\t\t\tmy $style = $$item{style};\n"
2628 "\t\t\tif ($$item{enable} eq \"yes\") {\n"
2629 "\t\t\t\tif ($style eq \"bold\") { print '\\bfseries'; }\n"
2630 "\t\t\t\tif ($style eq \"italic\") { print '\\itshape'; }\n"
2631 "\t\t\t\tif ($style eq \"code\") { print '\\ttfamily'; }\n"
2633 "\t\t\t\tif ($style eq \"bold\") { print '\\mdseries'; }\n"
2634 "\t\t\t\tif ($style eq \"italic\") { print '\\upshape'; }\n"
2635 "\t\t\t\tif ($style eq \"code\") { print '\\rmfamily'; }\n"
2637 "\t\t\tprint '{}';\n"
2638 "\t\t} elsif ($type eq \"symbol\") {\n"
2639 "\t\t\tmy $symbol = $$item{symbol};\n"
2640 "\t\t\tif ($symbol eq \"copyright\") { print '\\copyright'; }\n"
2641 "\t\t\telsif ($symbol eq \"szlig\") { print '\\ss'; }\n"
2642 "\t\t\tprint '{}';\n"
2643 "\t\t} elsif ($type eq \"accent\") {\n"
2644 "\t\t\tmy ($accent) = $$item{accent};\n"
2645 "\t\t\tif ($accent eq \"umlaut\") { print '\\\"'; }\n"
2646 "\t\t\telsif ($accent eq \"acute\") { print '\\\\\\''; }\n"
2647 "\t\t\telsif ($accent eq \"grave\") { print '\\`'; }\n"
2648 "\t\t\telsif ($accent eq \"circ\") { print '\\^'; }\n"
2649 "\t\t\telsif ($accent eq \"tilde\") { print '\\~'; }\n"
2650 "\t\t\telsif ($accent eq \"cedilla\") { print '\\c'; }\n"
2651 "\t\t\telsif ($accent eq \"ring\") { print '\\r'; }\n"
2652 "\t\t\tprint \"{\" . $$item{letter} . \"}\"; \n"
2653 "\t\t} elsif ($type eq \"list\") {\n"
2654 "\t\t\tmy $env = ($$item{style} eq \"ordered\") ? \"enumerate\" : \"itemize\";\n"
2655 "\t\t\tprint \"\\n\\\\begin{\" . $env .\"}\";\n"
2656 "\t\t \tfor my $subitem (@{$$item{content}}) {\n"
2657 "\t\t\t\tprint \"\\n\\\\item \";\n"
2658 "\t\t\t\tgenerate_doc($subitem);\n"
2660 "\t\t\tprint \"\\n\\\\end{\" . $env .\"}\";\n"
2661 "\t\t} elsif ($type eq \"url\") {\n"
2662 "\t\t\tlatex_quote($$item{content});\n"
2667 "sub generate($$) {\n"
2668 "\tmy ($item, $node) = @_;\n"
2669 "\tmy ($type, $name) = @$node[0, 1];\n"
2670 "\tif ($type eq \"string\") {\n"
2671 "\t\tprint \"\\\\\" . $name . \"{\";\n"
2672 "\t\tlatex_quote($item);\n"
2673 "\t\tprint \"}\";\n"
2674 "\t} elsif ($type eq \"doc\") {\n"
2675 "\t\tif (@$item) {\n"
2676 "\t\t\tprint \"\\\\\" . $name . \"{\";\n"
2677 "\t\t\tgenerate_doc($item);\n"
2678 "\t\t\tprint \"}%\\n\";\n"
2680 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2682 "\t} elsif ($type eq \"hash\") {\n"
2683 "\t\tmy ($key, $value);\n"
2684 "\t\twhile (($key, $subnode) = each %{$$node[2]}) {\n"
2685 "\t\t\tmy $subname = $$subnode[1];\n"
2686 "\t\t\tprint \"\\\\Defcs{field\" . $subname . \"}{\";\n"
2687 "\t\t\tif ($$item{$key}) {\n"
2688 "\t\t\t\tgenerate($$item{$key}, $subnode);\n"
2690 "#\t\t\t\t\tprint \"\\\\\" . $subname . \"Empty%\\n\";\n"
2692 "\t\t\tprint \"}%\\n\";\n"
2694 "\t\tprint \"\\\\\" . $name . \"%\\n\";\n"
2695 "\t} elsif ($type eq \"list\") {\n"
2696 "\t\tmy $index = 0;\n"
2697 "\t\tif (@$item) {\n"
2698 "\t\t\tprint \"\\\\\" . $name . \"{%\\n\";\n"
2699 "\t\t\tfor my $subitem (@$item) {\n"
2700 "\t\t\t\tif ($index) {\n"
2701 "\t\t\t\t\tprint \"\\\\\" . $name . \"Sep%\\n\";\n"
2703 "\t\t\t\tgenerate($subitem, $$node[2]);\n"
2704 "\t\t\t\t$index++;\n"
2706 "\t\t\tprint \"}%\\n\";\n"
2708 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2713 "generate($doxydocs, $doxystructure);\n";
2720 std::ofstream doxyFormatTexStream;
2724 doxyFormatTexStream <<
2725 "\\def\\Defcs#1{\\long\\expandafter\\def\\csname#1\\endcsname}\n"
2726 "\\Defcs{Empty}{}\n"
2727 "\\def\\IfEmpty#1{\\expandafter\\ifx\\csname#1\\endcsname\\Empty}\n"
2729 "\\def\\StringNode#1{\\Defcs{#1}##1{##1}}\n"
2730 "\\def\\DocNode#1{\\Defcs{#1}##1{##1}}\n"
2731 "\\def\\ListNode#1{\\Defcs{#1}##1{##1}\\Defcs{#1Sep}{}}\n"
2732 "\\def\\HashNode#1{\\Defcs{#1}{}}\n"
2737 "\\dimendef\\DimenA=151\\relax\n"
2738 "\\dimendef\\DimenB=152\\relax\n"
2739 "\\countdef\\ZoneDepth=151\\relax\n"
2741 "\\def\\Cs#1{\\csname#1\\endcsname}\n"
2742 "\\def\\Letcs#1{\\expandafter\\let\\csname#1\\endcsname}\n"
2743 "\\def\\Heading#1{\\vskip 4mm\\relax\\textbf{#1}}\n"
2744 "\\def\\See#1{\\begin{flushleft}\\Heading{See also: }#1\\end{flushleft}}\n"
2746 "\\def\\Frame#1{\\vskip 3mm\\relax\\fbox{ \\vbox{\\hsize0.95\\hsize\\vskip 1mm\\relax\n"
2747 "\\raggedright#1\\vskip 0.5mm\\relax} }}\n"
2749 "\\def\\Zone#1#2#3{%\n"
2750 "\\Defcs{Test#1}{#2}%\n"
2751 "\\Defcs{Emit#1}{#3}%\n"
2753 "\\advance\\ZoneDepth1\\relax\n"
2754 "\\Letcs{Mode\\number\\ZoneDepth}0\\relax\n"
2755 "\\Letcs{Present\\number\\ZoneDepth}0\\relax\n"
2757 "\\expandafter\\if\\Cs{Present\\number\\ZoneDepth}1%\n"
2758 "\\advance\\ZoneDepth-1\\relax\n"
2759 "\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2760 "\\expandafter\\if\\Cs{Mode\\number\\ZoneDepth}1%\n"
2761 "\\advance\\ZoneDepth1\\relax\n"
2762 "\\Letcs{Mode\\number\\ZoneDepth}1\\relax\n"
2764 "\\advance\\ZoneDepth-1\\relax\\fi\n"
2765 "\\advance\\ZoneDepth1\\relax\\fi\n"
2766 "\\advance\\ZoneDepth-1\\relax}}\n"
2768 "\\def\\Member#1#2{%\n"
2769 "\\Defcs{Test#1}{\\Cs{field#1Detailed}\n"
2770 "\\IfEmpty{field#1DetailedDoc}\\else\\Letcs{Present#1}1\\fi}\n"
2771 "\\Defcs{#1}{\\Letcs{Present#1}0\\relax\n"
2772 "\\Cs{Test#1}\\if1\\Cs{Present#1}\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2773 "\\if1\\Cs{Mode\\number\\ZoneDepth}#2\\fi\\fi}}\n"
2775 "\\def\\TypedefMemberList#1#2{%\n"
2776 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2777 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2778 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2780 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2781 "\\Member{#1}{\\Frame{typedef \\Cs{field#1Type} \\Cs{field#1Name}}%\n"
2782 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2784 "\\def\\VariableMemberList#1#2{%\n"
2785 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2786 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2787 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2789 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2790 "\\Member{#1}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}}%\n"
2791 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2793 "\\def\\FunctionMemberList#1#2{%\n"
2794 "\\Defcs{#1PDParamName}##1{\\textit{##1}}%\n"
2795 "\\Defcs{#1PDParam}{\\Cs{field#1PDParamName}}%\n"
2796 "\\Defcs{#1PDParamsSep}{, }%\n"
2797 "\\Defcs{#1PDBlocksSep}{\\vskip 2mm\\relax}%\n"
2799 "\\Defcs{#1PDBlocks}##1{%\n"
2800 "\\Heading{Parameters:}\\vskip 1.5mm\\relax\n"
2801 "\\DimenA0pt\\relax\n"
2802 "\\Defcs{#1PDBlock}{\\setbox\\BoxA\\hbox{\\Cs{field#1PDParams}}%\n"
2803 "\\ifdim\\DimenA<\\wd\\BoxA\\DimenA\\wd\\BoxA\\fi}%\n"
2805 "\\advance\\DimenA3mm\\relax\n"
2806 "\\DimenB\\hsize\\advance\\DimenB-\\DimenA\\relax\n"
2807 "\\Defcs{#1PDBlock}{\\hbox to\\hsize{\\vtop{\\hsize\\DimenA\\relax\n"
2808 "\\Cs{field#1PDParams}}\\hfill\n"
2809 "\\vtop{\\hsize\\DimenB\\relax\\Cs{field#1PDDoc}}}}%\n"
2812 "\\Defcs{#1ParamName}##1{\\textit{##1}}\n"
2813 "\\Defcs{#1Param}{\\Cs{field#1ParamType}{} \\Cs{field#1ParamName}}\n"
2814 "\\Defcs{#1ParamsSep}{, }\n"
2816 "\\Defcs{#1Name}##1{\\textbf{##1}}\n"
2817 "\\Defcs{#1See}##1{\\See{##1}}\n"
2818 "\\Defcs{#1Return}##1{\\Heading{Returns: }##1}\n"
2819 "\\Defcs{field#1Title}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}(\\Cs{field#1Params})}}%\n"
2821 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2823 "\\Cs{field#1Title}\\vskip 6mm\\relax\\Cs{field#1DetailedDoc}\n"
2824 "\\Cs{field#1Return}\\Cs{field#1PDBlocks}\\Cs{field#1See}\\vskip 5mm\\relax}}\n"
2826 "\\def\\FileDetailed{\\fieldFileDetailedDoc\\par}\n"
2827 "\\def\\ClassDetailed{\\fieldClassDetailedDoc\\par}\n"
2829 "\\def\\FileSubzones{\\fieldFileTypedefs\\fieldFileVariables\\fieldFileFunctions}\n"
2831 "\\def\\ClassSubzones{%\n"
2832 "\\fieldClassPublicTypedefs\\fieldClassPublicMembers\\fieldClassPublicMethods\n"
2833 "\\fieldClassProtectedTypedefs\\fieldClassProtectedMembers\\fieldClassProtectedMethods\n"
2834 "\\fieldClassPrivateTypedefs\\fieldClassPrivateMembers\\fieldClassPrivateMethods}\n"
2836 "\\Member{Page}{\\subsection{\\fieldPageName}\\fieldPageDetailedDoc}\n"
2838 "\\TypedefMemberList{FileTypedef}{Typedefs}\n"
2839 "\\VariableMemberList{FileVariable}{Variables}\n"
2840 "\\FunctionMemberList{FileFunction}{Functions}\n"
2841 "\\Zone{File}{\\FileSubzones}{\\subsection{\\fieldFileName}\\fieldFileDetailed\\FileSubzones}\n"
2843 "\\TypedefMemberList{ClassPublicTypedef}{Public Typedefs}\n"
2844 "\\TypedefMemberList{ClassProtectedTypedef}{Protected Typedefs}\n"
2845 "\\TypedefMemberList{ClassPrivateTypedef}{Private Typedefs}\n"
2846 "\\VariableMemberList{ClassPublicMember}{Public Members}\n"
2847 "\\VariableMemberList{ClassProtectedMember}{Protected Members}\n"
2848 "\\VariableMemberList{ClassPrivateMember}{Private Members}\n"
2849 "\\FunctionMemberList{ClassPublicMethod}{Public Methods}\n"
2850 "\\FunctionMemberList{ClassProtectedMethod}{Protected Methods}\n"
2851 "\\FunctionMemberList{ClassPrivateMethod}{Private Methods}\n"
2852 "\\Zone{Class}{\\ClassSubzones}{\\subsection{\\fieldClassName}\\fieldClassDetailed\\ClassSubzones}\n"
2854 "\\Zone{AllPages}{\\fieldPages}{\\section{Pages}\\fieldPages}\n"
2855 "\\Zone{AllFiles}{\\fieldFiles}{\\section{Files}\\fieldFiles}\n"
2856 "\\Zone{AllClasses}{\\fieldClasses}{\\section{Classes}\\fieldClasses}\n"
2858 "\\newlength{\\oldparskip}\n"
2859 "\\newlength{\\oldparindent}\n"
2860 "\\newlength{\\oldfboxrule}\n"
2862 "\\ZoneDepth0\\relax\n"
2863 "\\Letcs{Mode0}1\\relax\n"
2865 "\\def\\EmitDoxyDocs{%\n"
2866 "\\setlength{\\oldparskip}{\\parskip}\n"
2867 "\\setlength{\\oldparindent}{\\parindent}\n"
2868 "\\setlength{\\oldfboxrule}{\\fboxrule}\n"
2869 "\\setlength{\\parskip}{0cm}\n"
2870 "\\setlength{\\parindent}{0cm}\n"
2871 "\\setlength{\\fboxrule}{1pt}\n"
2872 "\\AllPages\\AllFiles\\AllClasses\n"
2873 "\\setlength{\\parskip}{\\oldparskip}\n"
2874 "\\setlength{\\parindent}{\\oldparindent}\n"
2875 "\\setlength{\\fboxrule}{\\oldfboxrule}}\n";
2882 std::ofstream doxyLatexTexStream;
2886 doxyLatexTexStream <<
2887 "\\documentclass[a4paper,12pt]{article}\n"
2888 "\\usepackage[latin1]{inputenc}\n"
2889 "\\usepackage[none]{hyphenat}\n"
2890 "\\usepackage[T1]{fontenc}\n"
2891 "\\usepackage{hyperref}\n"
2892 "\\usepackage{times}\n"
2894 "\\input{doxyformat}\n"
2896 "\\begin{document}\n"
2900 "\\end{document}\n";
This class represents an function or template argument list.
bool hasParameters() const
bool constSpecifier() const
bool volatileSpecifier() const
A abstract class representing of a compound symbol.
virtual const ArgumentList & templateArguments() const =0
Returns the template arguments of this class.
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt.
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual bool isImplicitTemplateInstance() const =0
virtual const MemberGroupList & getMemberGroups() const =0
Returns the member groups defined for this class.
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
virtual const IncludeInfo * includeInfo() const =0
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class.
virtual QCString initializer() const =0
virtual ArgumentList getTemplateParameterList() const =0
virtual const IncludeInfo * includeInfo() const =0
The common base class of all entity definitions found in the sources.
virtual QCString docFile() const =0
virtual int getEndBodyLine() const =0
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual int docLine() const =0
virtual QCString getDefFileName() const =0
virtual int getDefLine() const =0
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual bool isAnonymous() const =0
virtual QCString documentation() const =0
virtual Definition * getOuterScope() const =0
virtual int getStartBodyLine() const =0
virtual bool isReference() const =0
virtual const QCString & name() const =0
Class representing a directory in the file system.
static std::string currentDirPath()
std::string absPath() const
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
void setPath(const std::string &path)
Node representing an anchor.
Node representing an auto List.
bool isCheckedList() const
Node representing an item of a auto list.
Node representing a citation of some bibliographic reference.
CiteInfoOption option() const
Node representing a dia file.
Node representing a dot file.
Node representing an emoji.
Node representing a Hypertext reference.
Node representing a horizontal ruler.
Node representing an HTML blockquote.
Node representing a HTML table caption.
Node representing a HTML table cell.
Node representing a HTML description data.
Node representing a Html description list.
Node representing a Html description item.
Node representing a Html list.
const HtmlAttribList & attribs() const
Node representing a HTML list item.
const HtmlAttribList & attribs() const
Node representing a HTML table row.
Node representing a HTML table.
const DocNodeVariant * caption() const
Node representing an image.
Node representing a include/dontinclude operator block.
Node representing an included text block from file.
Node representing an entry in the index.
Node representing an internal section of documentation.
Node representing an internal reference to some item.
Node representing a line break.
Node representing a link to some item.
Node representing a word that can be linked to something.
Node representing a msc file.
Class representing the abstract syntax tree of a documentation block.
DocNodeVariant * parent()
Node representing an block of paragraphs.
Node representing a paragraph in the documentation tree.
Node representing a parameter list.
const DocNodeList & parameters() const
DocParamSect::Direction direction() const
const DocNodeList & paragraphs() const
Node representing a parameter section.
bool hasInOutSpecifier() const
Node representing a uml file.
Node representing a reference to some item.
QCString targetTitle() const
Root node of documentation tree.
Node representing a reference to a section.
Node representing a list of section references.
Node representing a normal section.
const DocNodeVariant * title() const
Node representing a separator.
Node representing a simple list.
Node representing a simple list item.
const DocNodeVariant * paragraph() const
Node representing a simple section.
const DocNodeVariant * title() const
Node representing a separator between two simple sections of the same type.
Node representing a style change.
Node representing a special symbol.
HtmlEntityMapper::SymType symbol() const
Root node of a text fragment.
Node representing a simple section title.
Node representing a URL (or email address)
Node representing a verbatim, unparsed text fragment.
Node representing a VHDL flow chart.
Node representing some amount of white space.
Node representing a word.
Node representing an item of a cross-referenced list.
Representation of a class inheritance or dependency graph.
static NamespaceLinkedMap * namespaceLinkedMap
static ConceptLinkedMap * conceptLinkedMap
static std::unique_ptr< PageDef > mainPage
static FileNameLinkedMap * inputNameLinkedMap
static ClassLinkedMap * classLinkedMap
static PageLinkedMap * pageLinkedMap
static GroupLinkedMap * groupLinkedMap
const char * name(int index) const
Access routine to the name of the Emoji entity.
static EmojiEntityMapper & instance()
Returns the one and only instance of the Emoji entity mapper.
A model of a file symbol.
virtual const MemberGroupList & getMemberGroups() const =0
virtual const IncludeInfoList & includeFileList() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual const QCString & docName() const =0
virtual const IncludeInfoList & includedByFileList() const =0
A model of a group of symbols.
virtual const GroupList & getSubGroups() const =0
virtual QCString groupTitle() const =0
virtual const FileList & getFiles() const =0
virtual const MemberGroupList & getMemberGroups() const =0
virtual const ConceptLinkedRefMap & getConcepts() const =0
virtual const PageLinkedRefMap & getPages() const =0
virtual const NamespaceLinkedRefMap & getNamespaces() const =0
virtual const ClassLinkedRefMap & getClasses() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual const ModuleLinkedRefMap & getModules() const =0
const PerlSymb * perl(SymType symb) const
Access routine to the perl struct with the perl code of the HTML entity.
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
const T * find(const std::string &key) const
A model of a class/file/namespace member symbol.
virtual QCString typeString() const =0
virtual QCString enumBaseType() const =0
virtual QCString excpString() const =0
virtual const ClassDef * getClassDef() const =0
virtual const MemberVector & enumFieldList() const =0
virtual const ArgumentList & argumentList() const =0
virtual const MemberVector & reimplementedBy() const =0
virtual bool isStatic() const =0
virtual const MemberDef * reimplements() const =0
virtual QCString bitfieldString() const =0
virtual Protection protection() const =0
virtual MemberType memberType() const =0
virtual QCString argsString() const =0
virtual Specifier virtualness(int count=0) const =0
virtual const ArgumentList & declArgumentList() const =0
virtual const QCString & initializer() const =0
A list of MemberDef objects as shown in documentation sections.
A vector of MemberDef object.
bool empty() const noexcept
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual const MemberGroupList & getMemberGroups() const =0
virtual FileList getUsedFiles() const =0
virtual const ConceptLinkedRefMap & getConcepts() const =0
virtual const ClassLinkedRefMap & getClasses() const =0
static ModuleManager & instance()
An abstract interface of a namespace symbol.
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual NamespaceLinkedRefMap getNamespaces() const =0
virtual ClassLinkedRefMap getClasses() const =0
virtual const MemberGroupList & getMemberGroups() const =0
A model of a page symbol.
Concrete visitor implementation for PerlMod output.
PerlModDocVisitor(PerlModOutput &)
void openItem(const QCString &)
void visitChildren(const T &t)
void addLink(const QCString &ref, const QCString &file, const QCString &anchor)
void singleItem(const QCString &)
void openSubBlock(const QCString &=QCString())
void operator()(const DocWord &)
void generatePerlModForPage(PageDef *pi)
void generatePerlModForMember(const MemberDef *md, const Definition *)
bool generateDoxyFormatTex()
QCString pathDoxyStructureTex
bool generateDoxyLatexTex()
bool createOutputDir(Dir &perlModDir)
void generatePerlModSection(const Definition *d, MemberList *ml, const QCString &name, const QCString &header=QCString())
QCString pathDoxyStructurePM
void generatePerlModForClass(const ClassDef *cd)
QCString pathDoxyLatexDVI
bool generatePerlModOutput()
void generatePerlModForModule(const ModuleDef *mod)
void generatePerlModForNamespace(const NamespaceDef *nd)
PerlModGenerator(bool pretty)
void addIncludeInfo(const IncludeInfo *ii)
void addListOfAllMembers(const ClassDef *cd)
QCString pathDoxyLatexStructurePL
bool generateDoxyStructurePM()
bool generateDoxyLatexPL()
void generatePerlModForGroup(const GroupDef *gd)
void generatePerlModForFile(const FileDef *fd)
QCString pathDoxyFormatTex
QCString pathDoxyLatexPDF
bool createOutputFile(std::ofstream &f, const QCString &s)
void generatePerlModForConcept(const ConceptDef *cd)
bool generateDoxyLatexStructurePL()
QCString pathDoxyLatexTex
void generatePerlUserDefinedSection(const Definition *d, const MemberGroupList &mgl)
PerlModOutput & closeList()
PerlModOutput & add(char c)
void iaddFieldQuotedString(const QCString &, const QCString &)
char m_spaces[PERLOUTPUT_MAX_INDENTATION *2+2]
PerlModOutput(bool pretty)
PerlModOutput & add(QCString &s)
PerlModOutput & open(char c, const QCString &s=QCString())
PerlModOutput & addFieldQuotedChar(const QCString &field, char content)
PerlModOutputStream * m_stream
PerlModOutput & continueBlock()
PerlModOutput & addField(const QCString &s)
void iopen(char, const QCString &)
PerlModOutput & openHash(const QCString &s=QCString())
PerlModOutput & addFieldQuotedString(const QCString &field, const QCString &content)
PerlModOutput & add(int n)
PerlModOutput & openList(const QCString &s=QCString())
void setPerlModOutputStream(PerlModOutputStream *os)
PerlModOutput & close(char c=0)
PerlModOutput & closeHash()
PerlModOutput & addQuoted(const QCString &s)
PerlModOutput & add(const QCString &s)
void iaddFieldQuotedChar(const QCString &, char)
PerlModOutput & addFieldBoolean(const QCString &field, bool content)
void iaddQuoted(const QCString &)
void iaddField(const QCString &)
PerlModOutput & add(unsigned int n)
PerlModOutputStream(std::ostream &t)
This is an alternative implementation of QCString.
size_t length() const
Returns the length of the string, not counting the 0-terminator.
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
char & at(size_t i)
Returns a reference to the character at index i.
bool isEmpty() const
Returns TRUE iff the string is empty.
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
QCString & setNum(short n)
QCString right(size_t len) const
QCString & sprintf(const char *format,...)
int findRev(char c, int index=-1, bool cs=TRUE) const
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
class that provide information about a section.
static SectionManager & instance()
returns a reference to the singleton
#define Config_getBool(name)
#define Config_getString(name)
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport, bool autolinkSupport)
IDocParserPtr createDocParser()
factory function to create a parser
std::ofstream openOutputStream(const QCString &name, bool append=false)
static void addTemplateArgumentList(const ArgumentList &al, PerlModOutput &output, const QCString &)
static const char * getVirtualnessName(Specifier virt)
static void addTemplateList(const ClassDef *cd, PerlModOutput &output)
static const char * getProtectionName(Protection prot)
static void addPerlModDocBlock(PerlModOutput &output, const QCString &name, const QCString &fileName, int lineNr, const Definition *scope, const MemberDef *md, const QCString &text)
static QCString pathDoxyExec
void setPerlModDoxyfile(const QCString &qs)
static QCString pathDoxyfile
#define PERLOUTPUT_MAX_INDENTATION
Portable versions of functions that are platform dependent.
const char * qPrint(const char *s)
This class contains the information about the argument of a function or template.
Class representing the data associated with a #include statement.
static const char * to_string_lower(Protection prot)
QCString filterTitle(const QCString &title)
A bunch of utility functions.