浏览该文件的文档.
47 #define PERLOUTPUT_MAX_INDENTATION 40
60 void add(
unsigned int n);
211 *s++ =
' '; *s++ =
' '; *s = 0;
226 const char *s = str.
data();
228 while ((c = *s++) != 0)
230 if ((c ==
'\'') || (c ==
'\\'))
249 if ((content ==
'\'') || (content ==
'\\'))
446 (link +=
"_1") += anchor;
545 const char *accent=0;
637 const char *style = 0;
665 const char *type = 0;
690 for (
const auto &n : s->
children()) n->accept(
this);
707 const char *type = 0;
727 err(
"Internal inconsistency: found switch SnippetDoc / IncludeDoc in file: %s"
728 "Please create a bug report\n",__FILE__);
776 "<secondaryie></secondaryie>"
850 const char *type = 0;
871 err(
"unknown simple section found\n");
933 for (
const auto &opt : l->
attribs())
935 if (opt.name==
"type")
939 if (opt.name==
"start")
955 for (
const auto &opt : l->
attribs())
957 if (opt.name==
"value")
1135 if ((i=baseName.
findRev(
'/'))!=-1 || (i=baseName.
findRev(
'\\'))!=-1)
1140 if (!img->width().isEmpty())
1146 else if (!img->height().isEmpty())
1272 const char *type = 0;
1280 err(
"unknown parameter section found\n");
1305 name = ((
DocWord*)param.get())->word();
1432 output.
openList(
"template_parameters");
1436 if (!a.type.isEmpty())
1438 if (!a.name.isEmpty())
1441 if (!a.defval.isEmpty())
1475 auto visitor = std::make_unique<PerlModDocVisitor>(output);
1476 root->accept(visitor.get());
1486 case Public:
return "public";
1488 case Private:
return "private";
1489 case Package:
return "package";
1498 case Normal:
return "non_virtual";
1499 case Virtual:
return "virtual";
1500 case Pure:
return "pure_virtual";
1624 if (!declAl.
empty())
1626 auto defIt = al.
begin();
1630 if (defIt!=al.
end())
1637 if (!a.name.isEmpty())
1643 if (!a.type.isEmpty())
1646 if (!a.array.isEmpty())
1649 if (!a.defval.isEmpty())
1652 if (!a.attrib.isEmpty())
1686 if (!enumFields.
empty())
1689 for (
const auto &emd : enumFields)
1694 if (!emd->initializer().isEmpty())
1697 addPerlModDocBlock(
m_output,
"brief",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->briefDescription());
1699 addPerlModDocBlock(
m_output,
"detailed",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->documentation());
1710 if (bitfield.
at(0) ==
':') bitfield = bitfield.
mid(1);
1724 for (
const auto &rbmd : rbml)
1745 for (
const auto &md : *ml)
1758 for (
auto &mi : *mni)
1770 if (!mi->ambiguityResolutionScope().isEmpty())
1785 for (
const auto &mg : mgl)
1788 if (!mg->header().isEmpty())
1793 if (!mg->members().empty())
1796 for (
const auto &md : mg->members())
1925 t <<
" <inheritancegraph>" << endl;
1926 inheritanceGraph.writePerlMod(t);
1927 t <<
" </inheritancegraph>" << endl;
1929 DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation);
1932 t <<
" <collaborationgraph>" << endl;
1933 collaborationGraph.writePerlMod(t);
1934 t <<
" </collaborationgraph>" << endl;
1936 t <<
" <location file=\""
2043 if (inc.fileDef && !inc.fileDef->isReference())
2056 if (inc.fileDef && !inc.fileDef->isReference())
2102 for (
const auto &fd : gd->
getFiles())
2132 for (
const auto &pd : gd->
getPages())
2185 std::ofstream outputFileStream;
2211 for (
const auto &fd : *fn)
2242 f.open(s.
str(),std::ofstream::out | std::ofstream::binary);
2245 err(
"Cannot open file %s for writing!\n",
qPrint(s));
2254 perlModDir.
setPath(outputDirectory+
"/perlmod");
2255 if (!perlModDir.
exists() && !perlModDir.
mkdir(outputDirectory+
"/perlmod"))
2257 err(
"Could not create perlmod directory in %s\n",outputDirectory.data());
2265 std::ofstream doxyModelPMStream;
2269 doxyModelPMStream <<
2270 "sub memberlist($) {\n"
2271 " my $prefix = $_[0];\n"
2273 "\t[ \"hash\", $prefix . \"s\",\n"
2276 "\t [ \"list\", $prefix . \"List\",\n"
2277 "\t\t[ \"hash\", $prefix,\n"
2279 "\t\t kind => [ \"string\", $prefix . \"Kind\" ],\n"
2280 "\t\t name => [ \"string\", $prefix . \"Name\" ],\n"
2281 "\t\t static => [ \"string\", $prefix . \"Static\" ],\n"
2282 "\t\t virtualness => [ \"string\", $prefix . \"Virtualness\" ],\n"
2283 "\t\t protection => [ \"string\", $prefix . \"Protection\" ],\n"
2284 "\t\t type => [ \"string\", $prefix . \"Type\" ],\n"
2285 "\t\t parameters =>\n"
2286 "\t\t [ \"list\", $prefix . \"Params\",\n"
2287 "\t\t\t[ \"hash\", $prefix . \"Param\",\n"
2289 "\t\t\t declaration_name => [ \"string\", $prefix . \"ParamName\" ],\n"
2290 "\t\t\t type => [ \"string\", $prefix . \"ParamType\" ],\n"
2294 "\t\t detailed =>\n"
2295 "\t\t [ \"hash\", $prefix . \"Detailed\",\n"
2297 "\t\t\t doc => [ \"doc\", $prefix . \"DetailedDoc\" ],\n"
2298 "\t\t\t return => [ \"doc\", $prefix . \"Return\" ],\n"
2299 "\t\t\t see => [ \"doc\", $prefix . \"See\" ],\n"
2300 "\t\t\t params =>\n"
2301 "\t\t\t [ \"list\", $prefix . \"PDBlocks\",\n"
2302 "\t\t\t [ \"hash\", $prefix . \"PDBlock\",\n"
2304 "\t\t\t\t parameters =>\n"
2305 "\t\t\t\t [ \"list\", $prefix . \"PDParams\",\n"
2306 "\t\t\t\t [ \"hash\", $prefix . \"PDParam\",\n"
2308 "\t\t\t\t\t name => [ \"string\", $prefix . \"PDParamName\" ],\n"
2312 "\t\t\t\t doc => [ \"doc\", $prefix . \"PDDoc\" ],\n"
2325 "$doxystructure =\n"
2326 " [ \"hash\", \"Root\",\n"
2329 "\t [ \"list\", \"Files\",\n"
2330 "\t [ \"hash\", \"File\",\n"
2332 "\t\tname => [ \"string\", \"FileName\" ],\n"
2333 "\t\ttypedefs => memberlist(\"FileTypedef\"),\n"
2334 "\t\tvariables => memberlist(\"FileVariable\"),\n"
2335 "\t\tfunctions => memberlist(\"FileFunction\"),\n"
2337 "\t\t [ \"hash\", \"FileDetailed\",\n"
2339 "\t\t doc => [ \"doc\", \"FileDetailedDoc\" ],\n"
2346 "\t [ \"list\", \"Pages\",\n"
2347 "\t [ \"hash\", \"Page\",\n"
2349 "\t\tname => [ \"string\", \"PageName\" ],\n"
2351 "\t\t [ \"hash\", \"PageDetailed\",\n"
2353 "\t\t doc => [ \"doc\", \"PageDetailedDoc\" ],\n"
2360 "\t [ \"list\", \"Classes\",\n"
2361 "\t [ \"hash\", \"Class\",\n"
2363 "\t\tname => [ \"string\", \"ClassName\" ],\n"
2364 "\t\tpublic_typedefs => memberlist(\"ClassPublicTypedef\"),\n"
2365 "\t\tpublic_methods => memberlist(\"ClassPublicMethod\"),\n"
2366 "\t\tpublic_members => memberlist(\"ClassPublicMember\"),\n"
2367 "\t\tprotected_typedefs => memberlist(\"ClassProtectedTypedef\"),\n"
2368 "\t\tprotected_methods => memberlist(\"ClassProtectedMethod\"),\n"
2369 "\t\tprotected_members => memberlist(\"ClassProtectedMember\"),\n"
2370 "\t\tprivate_typedefs => memberlist(\"ClassPrivateTypedef\"),\n"
2371 "\t\tprivate_methods => memberlist(\"ClassPrivateMethod\"),\n"
2372 "\t\tprivate_members => memberlist(\"ClassPrivateMember\"),\n"
2374 "\t\t [ \"hash\", \"ClassDetailed\",\n"
2376 "\t\t doc => [ \"doc\", \"ClassDetailedDoc\" ],\n"
2383 "\t [ \"list\", \"Groups\",\n"
2384 "\t [ \"hash\", \"Group\",\n"
2386 "\t\tname => [ \"string\", \"GroupName\" ],\n"
2387 "\t\ttitle => [ \"string\", \"GroupTitle\" ],\n"
2389 "\t\t [ \"list\", \"Files\",\n"
2390 "\t\t [ \"hash\", \"File\",\n"
2392 "\t\t name => [ \"string\", \"Filename\" ]\n"
2397 "\t\t [ \"list\", \"Classes\",\n"
2398 "\t\t [ \"hash\", \"Class\",\n"
2400 "\t\t name => [ \"string\", \"Classname\" ]\n"
2404 "\t\tnamespaces =>\n"
2405 "\t\t [ \"list\", \"Namespaces\",\n"
2406 "\t\t [ \"hash\", \"Namespace\",\n"
2408 "\t\t name => [ \"string\", \"NamespaceName\" ]\n"
2413 "\t\t [ \"list\", \"Pages\",\n"
2414 "\t\t [ \"hash\", \"Page\","
2416 "\t\t title => [ \"string\", \"PageName\" ]\n"
2421 "\t\t [ \"list\", \"Groups\",\n"
2422 "\t\t [ \"hash\", \"Group\",\n"
2424 "\t\t title => [ \"string\", \"GroupName\" ]\n"
2428 "\t\tfunctions => memberlist(\"GroupFunction\"),\n"
2430 "\t\t [ \"hash\", \"GroupDetailed\",\n"
2432 "\t\t doc => [ \"doc\", \"GroupDetailedDoc\" ],\n"
2448 std::ofstream doxyRulesStream;
2456 prefix <<
"DOXY_EXEC_PATH = " <<
pathDoxyExec <<
"\n" <<
2474 ".PHONY: clean-perlmod\n"
2476 "\trm -f $(" << prefix <<
"DOXYSTRUCTURE_PM) \\\n"
2477 "\t$(" << prefix <<
"DOXYDOCS_PM)";
2481 "\t$(" << prefix <<
"DOXYLATEX_PL) \\\n"
2482 "\t$(" << prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2483 "\t$(" << prefix <<
"DOXYDOCS_TEX) \\\n"
2484 "\t$(" << prefix <<
"DOXYSTRUCTURE_TEX) \\\n"
2485 "\t$(" << prefix <<
"DOXYFORMAT_TEX) \\\n"
2486 "\t$(" << prefix <<
"DOXYLATEX_TEX) \\\n"
2487 "\t$(" << prefix <<
"DOXYLATEX_PDF) \\\n"
2488 "\t$(" << prefix <<
"DOXYLATEX_DVI) \\\n"
2489 "\t$(addprefix $(" << prefix <<
"DOXYLATEX_TEX:tex=),out aux log)";
2490 doxyRulesStream <<
"\n\n";
2493 "$(" << prefix <<
"DOXYRULES) \\\n"
2494 "$(" << prefix <<
"DOXYMAKEFILE) \\\n"
2495 "$(" << prefix <<
"DOXYSTRUCTURE_PM) \\\n"
2496 "$(" << prefix <<
"DOXYDOCS_PM)";
2500 "$(" << prefix <<
"DOXYLATEX_PL) \\\n"
2501 "$(" << prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2502 "$(" << prefix <<
"DOXYFORMAT_TEX) \\\n"
2503 "$(" << prefix <<
"DOXYLATEX_TEX)";
2507 "\t$(" << prefix <<
"DOXYFILE)\n"
2508 "\tcd $(" << prefix <<
"DOXY_EXEC_PATH) ; doxygen \"$<\"\n";
2513 "$(" << prefix <<
"DOXYDOCS_TEX): \\\n"
2514 "$(" << prefix <<
"DOXYLATEX_PL) \\\n"
2515 "$(" << prefix <<
"DOXYDOCS_PM)\n"
2516 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2518 "$(" << prefix <<
"DOXYSTRUCTURE_TEX): \\\n"
2519 "$(" << prefix <<
"DOXYLATEXSTRUCTURE_PL) \\\n"
2520 "$(" << prefix <<
"DOXYSTRUCTURE_PM)\n"
2521 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2523 "$(" << prefix <<
"DOXYLATEX_PDF) \\\n"
2524 "$(" << prefix <<
"DOXYLATEX_DVI): \\\n"
2525 "$(" << prefix <<
"DOXYLATEX_TEX) \\\n"
2526 "$(" << prefix <<
"DOXYFORMAT_TEX) \\\n"
2527 "$(" << prefix <<
"DOXYSTRUCTURE_TEX) \\\n"
2528 "$(" << prefix <<
"DOXYDOCS_TEX)\n"
2530 "$(" << prefix <<
"DOXYLATEX_PDF): \\\n"
2531 "$(" << prefix <<
"DOXYLATEX_TEX)\n"
2532 "\tpdflatex -interaction=nonstopmode \"$<\"\n"
2534 "$(" << prefix <<
"DOXYLATEX_DVI): \\\n"
2535 "$(" << prefix <<
"DOXYLATEX_TEX)\n"
2536 "\tlatex -interaction=nonstopmode \"$<\"\n";
2544 std::ofstream makefileStream;
2552 ".PHONY: default clean" << (perlmodLatex ?
" pdf" :
"") <<
"\n"
2553 "default: " << (perlmodLatex ?
"pdf" :
"clean") <<
"\n"
2557 "clean: clean-perlmod\n";
2561 "pdf: $(" << prefix <<
"DOXYLATEX_PDF)\n"
2562 "dvi: $(" << prefix <<
"DOXYLATEX_DVI)\n";
2570 std::ofstream doxyLatexStructurePLStream;
2574 doxyLatexStructurePLStream <<
2575 "use DoxyStructure;\n"
2577 "sub process($) {\n"
2578 "\tmy $node = $_[0];\n"
2579 "\tmy ($type, $name) = @$node[0, 1];\n"
2581 "\tif ($type eq \"string\") { $command = \"String\" }\n"
2582 "\telsif ($type eq \"doc\") { $command = \"Doc\" }\n"
2583 "\telsif ($type eq \"hash\") {\n"
2584 "\t\t$command = \"Hash\";\n"
2585 "\t\tfor my $subnode (values %{$$node[2]}) {\n"
2586 "\t\t\tprocess($subnode);\n"
2589 "\telsif ($type eq \"list\") {\n"
2590 "\t\t$command = \"List\";\n"
2591 "\t\tprocess($$node[2]);\n"
2593 "\tprint \"\\\\\" . $command . \"Node{\" . $name . \"}%\\n\";\n"
2596 "process($doxystructure);\n";
2603 std::ofstream doxyLatexPLStream;
2607 doxyLatexPLStream <<
2608 "use DoxyStructure;\n"
2611 "sub latex_quote($) {\n"
2612 "\tmy $text = $_[0];\n"
2613 "\t$text =~ s/\\\\/\\\\textbackslash /g;\n"
2614 "\t$text =~ s/\\|/\\\\textbar /g;\n"
2615 "\t$text =~ s/</\\\\textless /g;\n"
2616 "\t$text =~ s/>/\\\\textgreater /g;\n"
2617 "\t$text =~ s/~/\\\\textasciitilde /g;\n"
2618 "\t$text =~ s/\\^/\\\\textasciicircum /g;\n"
2619 "\t$text =~ s/[\\$&%#_{}]/\\\\$&/g;\n"
2623 "sub generate_doc($) {\n"
2624 "\tmy $doc = $_[0];\n"
2625 "\tfor my $item (@$doc) {\n"
2626 "\t\tmy $type = $$item{type};\n"
2627 "\t\tif ($type eq \"text\") {\n"
2628 "\t\t\tlatex_quote($$item{content});\n"
2629 "\t\t} elsif ($type eq \"parbreak\") {\n"
2630 "\t\t\tprint \"\\n\\n\";\n"
2631 "\t\t} elsif ($type eq \"style\") {\n"
2632 "\t\t\tmy $style = $$item{style};\n"
2633 "\t\t\tif ($$item{enable} eq \"yes\") {\n"
2634 "\t\t\t\tif ($style eq \"bold\") { print '\\bfseries'; }\n"
2635 "\t\t\t\tif ($style eq \"italic\") { print '\\itshape'; }\n"
2636 "\t\t\t\tif ($style eq \"code\") { print '\\ttfamily'; }\n"
2638 "\t\t\t\tif ($style eq \"bold\") { print '\\mdseries'; }\n"
2639 "\t\t\t\tif ($style eq \"italic\") { print '\\upshape'; }\n"
2640 "\t\t\t\tif ($style eq \"code\") { print '\\rmfamily'; }\n"
2642 "\t\t\tprint '{}';\n"
2643 "\t\t} elsif ($type eq \"symbol\") {\n"
2644 "\t\t\tmy $symbol = $$item{symbol};\n"
2645 "\t\t\tif ($symbol eq \"copyright\") { print '\\copyright'; }\n"
2646 "\t\t\telsif ($symbol eq \"szlig\") { print '\\ss'; }\n"
2647 "\t\t\tprint '{}';\n"
2648 "\t\t} elsif ($type eq \"accent\") {\n"
2649 "\t\t\tmy ($accent) = $$item{accent};\n"
2650 "\t\t\tif ($accent eq \"umlaut\") { print '\\\"'; }\n"
2651 "\t\t\telsif ($accent eq \"acute\") { print '\\\\\\''; }\n"
2652 "\t\t\telsif ($accent eq \"grave\") { print '\\`'; }\n"
2653 "\t\t\telsif ($accent eq \"circ\") { print '\\^'; }\n"
2654 "\t\t\telsif ($accent eq \"tilde\") { print '\\~'; }\n"
2655 "\t\t\telsif ($accent eq \"cedilla\") { print '\\c'; }\n"
2656 "\t\t\telsif ($accent eq \"ring\") { print '\\r'; }\n"
2657 "\t\t\tprint \"{\" . $$item{letter} . \"}\"; \n"
2658 "\t\t} elsif ($type eq \"list\") {\n"
2659 "\t\t\tmy $env = ($$item{style} eq \"ordered\") ? \"enumerate\" : \"itemize\";\n"
2660 "\t\t\tprint \"\\n\\\\begin{\" . $env .\"}\";\n"
2661 "\t\t \tfor my $subitem (@{$$item{content}}) {\n"
2662 "\t\t\t\tprint \"\\n\\\\item \";\n"
2663 "\t\t\t\tgenerate_doc($subitem);\n"
2665 "\t\t\tprint \"\\n\\\\end{\" . $env .\"}\";\n"
2666 "\t\t} elsif ($type eq \"url\") {\n"
2667 "\t\t\tlatex_quote($$item{content});\n"
2672 "sub generate($$) {\n"
2673 "\tmy ($item, $node) = @_;\n"
2674 "\tmy ($type, $name) = @$node[0, 1];\n"
2675 "\tif ($type eq \"string\") {\n"
2676 "\t\tprint \"\\\\\" . $name . \"{\";\n"
2677 "\t\tlatex_quote($item);\n"
2678 "\t\tprint \"}\";\n"
2679 "\t} elsif ($type eq \"doc\") {\n"
2680 "\t\tif (@$item) {\n"
2681 "\t\t\tprint \"\\\\\" . $name . \"{\";\n"
2682 "\t\t\tgenerate_doc($item);\n"
2683 "\t\t\tprint \"}%\\n\";\n"
2685 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2687 "\t} elsif ($type eq \"hash\") {\n"
2688 "\t\tmy ($key, $value);\n"
2689 "\t\twhile (($key, $subnode) = each %{$$node[2]}) {\n"
2690 "\t\t\tmy $subname = $$subnode[1];\n"
2691 "\t\t\tprint \"\\\\Defcs{field\" . $subname . \"}{\";\n"
2692 "\t\t\tif ($$item{$key}) {\n"
2693 "\t\t\t\tgenerate($$item{$key}, $subnode);\n"
2695 "#\t\t\t\t\tprint \"\\\\\" . $subname . \"Empty%\\n\";\n"
2697 "\t\t\tprint \"}%\\n\";\n"
2699 "\t\tprint \"\\\\\" . $name . \"%\\n\";\n"
2700 "\t} elsif ($type eq \"list\") {\n"
2701 "\t\tmy $index = 0;\n"
2702 "\t\tif (@$item) {\n"
2703 "\t\t\tprint \"\\\\\" . $name . \"{%\\n\";\n"
2704 "\t\t\tfor my $subitem (@$item) {\n"
2705 "\t\t\t\tif ($index) {\n"
2706 "\t\t\t\t\tprint \"\\\\\" . $name . \"Sep%\\n\";\n"
2708 "\t\t\t\tgenerate($subitem, $$node[2]);\n"
2709 "\t\t\t\t$index++;\n"
2711 "\t\t\tprint \"}%\\n\";\n"
2713 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2718 "generate($doxydocs, $doxystructure);\n";
2725 std::ofstream doxyFormatTexStream;
2729 doxyFormatTexStream <<
2730 "\\def\\Defcs#1{\\long\\expandafter\\def\\csname#1\\endcsname}\n"
2731 "\\Defcs{Empty}{}\n"
2732 "\\def\\IfEmpty#1{\\expandafter\\ifx\\csname#1\\endcsname\\Empty}\n"
2734 "\\def\\StringNode#1{\\Defcs{#1}##1{##1}}\n"
2735 "\\def\\DocNode#1{\\Defcs{#1}##1{##1}}\n"
2736 "\\def\\ListNode#1{\\Defcs{#1}##1{##1}\\Defcs{#1Sep}{}}\n"
2737 "\\def\\HashNode#1{\\Defcs{#1}{}}\n"
2742 "\\dimendef\\DimenA=151\\relax\n"
2743 "\\dimendef\\DimenB=152\\relax\n"
2744 "\\countdef\\ZoneDepth=151\\relax\n"
2746 "\\def\\Cs#1{\\csname#1\\endcsname}\n"
2747 "\\def\\Letcs#1{\\expandafter\\let\\csname#1\\endcsname}\n"
2748 "\\def\\Heading#1{\\vskip 4mm\\relax\\textbf{#1}}\n"
2749 "\\def\\See#1{\\begin{flushleft}\\Heading{See also: }#1\\end{flushleft}}\n"
2751 "\\def\\Frame#1{\\vskip 3mm\\relax\\fbox{ \\vbox{\\hsize0.95\\hsize\\vskip 1mm\\relax\n"
2752 "\\raggedright#1\\vskip 0.5mm\\relax} }}\n"
2754 "\\def\\Zone#1#2#3{%\n"
2755 "\\Defcs{Test#1}{#2}%\n"
2756 "\\Defcs{Emit#1}{#3}%\n"
2758 "\\advance\\ZoneDepth1\\relax\n"
2759 "\\Letcs{Mode\\number\\ZoneDepth}0\\relax\n"
2760 "\\Letcs{Present\\number\\ZoneDepth}0\\relax\n"
2762 "\\expandafter\\if\\Cs{Present\\number\\ZoneDepth}1%\n"
2763 "\\advance\\ZoneDepth-1\\relax\n"
2764 "\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2765 "\\expandafter\\if\\Cs{Mode\\number\\ZoneDepth}1%\n"
2766 "\\advance\\ZoneDepth1\\relax\n"
2767 "\\Letcs{Mode\\number\\ZoneDepth}1\\relax\n"
2769 "\\advance\\ZoneDepth-1\\relax\\fi\n"
2770 "\\advance\\ZoneDepth1\\relax\\fi\n"
2771 "\\advance\\ZoneDepth-1\\relax}}\n"
2773 "\\def\\Member#1#2{%\n"
2774 "\\Defcs{Test#1}{\\Cs{field#1Detailed}\n"
2775 "\\IfEmpty{field#1DetailedDoc}\\else\\Letcs{Present#1}1\\fi}\n"
2776 "\\Defcs{#1}{\\Letcs{Present#1}0\\relax\n"
2777 "\\Cs{Test#1}\\if1\\Cs{Present#1}\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2778 "\\if1\\Cs{Mode\\number\\ZoneDepth}#2\\fi\\fi}}\n"
2780 "\\def\\TypedefMemberList#1#2{%\n"
2781 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2782 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2783 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2785 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2786 "\\Member{#1}{\\Frame{typedef \\Cs{field#1Type} \\Cs{field#1Name}}%\n"
2787 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2789 "\\def\\VariableMemberList#1#2{%\n"
2790 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2791 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2792 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2794 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2795 "\\Member{#1}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}}%\n"
2796 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2798 "\\def\\FunctionMemberList#1#2{%\n"
2799 "\\Defcs{#1PDParamName}##1{\\textit{##1}}%\n"
2800 "\\Defcs{#1PDParam}{\\Cs{field#1PDParamName}}%\n"
2801 "\\Defcs{#1PDParamsSep}{, }%\n"
2802 "\\Defcs{#1PDBlocksSep}{\\vskip 2mm\\relax}%\n"
2804 "\\Defcs{#1PDBlocks}##1{%\n"
2805 "\\Heading{Parameters:}\\vskip 1.5mm\\relax\n"
2806 "\\DimenA0pt\\relax\n"
2807 "\\Defcs{#1PDBlock}{\\setbox\\BoxA\\hbox{\\Cs{field#1PDParams}}%\n"
2808 "\\ifdim\\DimenA<\\wd\\BoxA\\DimenA\\wd\\BoxA\\fi}%\n"
2810 "\\advance\\DimenA3mm\\relax\n"
2811 "\\DimenB\\hsize\\advance\\DimenB-\\DimenA\\relax\n"
2812 "\\Defcs{#1PDBlock}{\\hbox to\\hsize{\\vtop{\\hsize\\DimenA\\relax\n"
2813 "\\Cs{field#1PDParams}}\\hfill\n"
2814 "\\vtop{\\hsize\\DimenB\\relax\\Cs{field#1PDDoc}}}}%\n"
2817 "\\Defcs{#1ParamName}##1{\\textit{##1}}\n"
2818 "\\Defcs{#1Param}{\\Cs{field#1ParamType}{} \\Cs{field#1ParamName}}\n"
2819 "\\Defcs{#1ParamsSep}{, }\n"
2821 "\\Defcs{#1Name}##1{\\textbf{##1}}\n"
2822 "\\Defcs{#1See}##1{\\See{##1}}\n"
2823 "\\Defcs{#1Return}##1{\\Heading{Returns: }##1}\n"
2824 "\\Defcs{field#1Title}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}(\\Cs{field#1Params})}}%\n"
2826 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2828 "\\Cs{field#1Title}\\vskip 6mm\\relax\\Cs{field#1DetailedDoc}\n"
2829 "\\Cs{field#1Return}\\Cs{field#1PDBlocks}\\Cs{field#1See}\\vskip 5mm\\relax}}\n"
2831 "\\def\\FileDetailed{\\fieldFileDetailedDoc\\par}\n"
2832 "\\def\\ClassDetailed{\\fieldClassDetailedDoc\\par}\n"
2834 "\\def\\FileSubzones{\\fieldFileTypedefs\\fieldFileVariables\\fieldFileFunctions}\n"
2836 "\\def\\ClassSubzones{%\n"
2837 "\\fieldClassPublicTypedefs\\fieldClassPublicMembers\\fieldClassPublicMethods\n"
2838 "\\fieldClassProtectedTypedefs\\fieldClassProtectedMembers\\fieldClassProtectedMethods\n"
2839 "\\fieldClassPrivateTypedefs\\fieldClassPrivateMembers\\fieldClassPrivateMethods}\n"
2841 "\\Member{Page}{\\subsection{\\fieldPageName}\\fieldPageDetailedDoc}\n"
2843 "\\TypedefMemberList{FileTypedef}{Typedefs}\n"
2844 "\\VariableMemberList{FileVariable}{Variables}\n"
2845 "\\FunctionMemberList{FileFunction}{Functions}\n"
2846 "\\Zone{File}{\\FileSubzones}{\\subsection{\\fieldFileName}\\fieldFileDetailed\\FileSubzones}\n"
2848 "\\TypedefMemberList{ClassPublicTypedef}{Public Typedefs}\n"
2849 "\\TypedefMemberList{ClassProtectedTypedef}{Protected Typedefs}\n"
2850 "\\TypedefMemberList{ClassPrivateTypedef}{Private Typedefs}\n"
2851 "\\VariableMemberList{ClassPublicMember}{Public Members}\n"
2852 "\\VariableMemberList{ClassProtectedMember}{Protected Members}\n"
2853 "\\VariableMemberList{ClassPrivateMember}{Private Members}\n"
2854 "\\FunctionMemberList{ClassPublicMethod}{Public Methods}\n"
2855 "\\FunctionMemberList{ClassProtectedMethod}{Protected Methods}\n"
2856 "\\FunctionMemberList{ClassPrivateMethod}{Private Methods}\n"
2857 "\\Zone{Class}{\\ClassSubzones}{\\subsection{\\fieldClassName}\\fieldClassDetailed\\ClassSubzones}\n"
2859 "\\Zone{AllPages}{\\fieldPages}{\\section{Pages}\\fieldPages}\n"
2860 "\\Zone{AllFiles}{\\fieldFiles}{\\section{Files}\\fieldFiles}\n"
2861 "\\Zone{AllClasses}{\\fieldClasses}{\\section{Classes}\\fieldClasses}\n"
2863 "\\newlength{\\oldparskip}\n"
2864 "\\newlength{\\oldparindent}\n"
2865 "\\newlength{\\oldfboxrule}\n"
2867 "\\ZoneDepth0\\relax\n"
2868 "\\Letcs{Mode0}1\\relax\n"
2870 "\\def\\EmitDoxyDocs{%\n"
2871 "\\setlength{\\oldparskip}{\\parskip}\n"
2872 "\\setlength{\\oldparindent}{\\parindent}\n"
2873 "\\setlength{\\oldfboxrule}{\\fboxrule}\n"
2874 "\\setlength{\\parskip}{0cm}\n"
2875 "\\setlength{\\parindent}{0cm}\n"
2876 "\\setlength{\\fboxrule}{1pt}\n"
2877 "\\AllPages\\AllFiles\\AllClasses\n"
2878 "\\setlength{\\parskip}{\\oldparskip}\n"
2879 "\\setlength{\\parindent}{\\oldparindent}\n"
2880 "\\setlength{\\fboxrule}{\\oldfboxrule}}\n";
2887 std::ofstream doxyLatexTexStream;
2891 doxyLatexTexStream <<
2892 "\\documentclass[a4paper,12pt]{article}\n"
2893 "\\usepackage[latin1]{inputenc}\n"
2894 "\\usepackage[none]{hyphenat}\n"
2895 "\\usepackage[T1]{fontenc}\n"
2896 "\\usepackage{hyperref}\n"
2897 "\\usepackage{times}\n"
2899 "\\input{doxyformat}\n"
2901 "\\begin{document}\n"
2905 "\\end{document}\n";
Node representing an HTML blockquote
Node representing an item of a auto list
bool generateDoxyLatexTex()
Node representing a Hypertext reference
Node representing a style change
PerlModOutput & add(char c)
void addListOfAllMembers(const ClassDef *cd)
void generatePerlModForNamespace(const NamespaceDef *nd)
Node representing a verbatim, unparsed text fragment
static std::string currentDirPath()
Node representing a simple section title
Node representing a paragraph in the documentation tree
void addIncludeInfo(const IncludeInfo *ii)
virtual int docLine() const =0
@ MemberListType_priStaticMethods
@ MemberListType_priStaticAttribs
Node representing a dot file
static std::unique_ptr< PageDef > mainPage
Protection
Protection level of members
void openSubBlock(const QCString &=QCString())
Node representing a HTML table
virtual QCString argsString() const =0
PerlModOutputStream * m_stream
void iaddFieldQuotedChar(const QCString &, char)
QCString pathDoxyLatexTex
virtual QCString briefDescription(bool abbr=FALSE) const =0
void generatePerlModForMember(const MemberDef *md, const Definition *)
The common base class of all entity definitions found in the sources.
PerlModDocVisitor(PerlModOutput &)
virtual QCString documentation() const =0
virtual bool isStatic() const =0
An abstract interface of a namespace symbol.
Class representing a directory in the file system
virtual const ClassLinkedRefMap & getClasses() const =0
Root node of documentation tree
PerlModOutput & addFieldQuotedString(const QCString &field, const QCString &content)
void visitPost(DocAutoList *)
PerlModOutput & closeList()
bool generateDoxyFormatTex()
uint length() const
Returns the length of the string, not counting the 0-terminator.
bool createOutputDir(Dir &perlModDir)
This class represents an function or template argument list.
PerlModOutput & add(const QCString &s)
static ConceptLinkedMap * conceptLinkedMap
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string
PerlModOutput & close(char c=0)
virtual int getDefLine() const =0
int findRev(char c, int index=-1, bool cs=TRUE) const
QCString filterTitle(const QCString &title)
@ MemberListType_priAttribs
Node representing a HTML list item
QCString pathDoxyFormatTex
bool isEmpty() const
Returns TRUE iff the string is empty
Node representing a VHDL flow chart
static PageLinkedMap * pageLinkedMap
void iaddQuoted(const QCString &)
virtual QCString groupTitle() const =0
Node representing a HTML description data
const DocSymbol::PerlSymb * perl(DocSymbol::SymType symb) const
Access routine to the perl struct with the perl code of the HTML entity
Node representing a Html description item
Node representing a n emoji
virtual const IncludeInfo * includeInfo() const =0
@ MemberListType_pubTypes
virtual QCString bitfieldString() const =0
virtual const FileList & getFiles() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
Node representing a msc file
@ MemberListType_priSlots
void setPerlModDoxyfile(const QCString &qs)
QCString targetTitle() const
@ MemberListType_dcopMethods
void generatePerlModForFile(const FileDef *fd)
void generatePerlModForPage(PageDef *pi)
Specifier
Virtualness of a member.
Node representing a reference to a section
PerlModOutput & openHash(const QCString &s=QCString())
void addLink(const QCString &ref, const QCString &file, const QCString &anchor)
Node representing an anchor
char m_spaces[PERLOUTPUT_MAX_INDENTATION *2+2]
virtual const IncludeInfoList & includedByFileList() const =0
void err(const char *fmt,...)
virtual const GroupList & getSubGroups() const =0
char & at(size_t i)
Returns a reference to the character at index i.
Root node of a text fragment
@ MemberListType_proAttribs
const HtmlAttribList & attribs() const
Abstract visitor that participates in the visitor pattern.
virtual const IncludeInfo * includeInfo() const =0
@ MemberListType_pubMethods
virtual const MemberGroupList & getMemberGroups() const =0
QCString pathDoxyLatexStructurePL
bool volatileSpecifier() const
virtual const QCString & docName() const =0
static HtmlEntityMapper * instance()
Returns the one and only instance of the HTML entity mapper
static TemplateVariant parseCode(const Definition *d, const QCString &scopeName, const QCString &relPath, const QCString &code, int startLine=-1, int endLine=-1, bool showLineNumbers=FALSE)
virtual QCString docFile() const =0
PerlModOutput & addFieldBoolean(const QCString &field, bool content)
bool hasParameters() const
Node representing a Html description list
bool createOutputFile(std::ofstream &f, const QCString &s)
QCString pathDoxyStructurePM
Node representing a include/dontinclude operator block
Node representing an entry in the index.
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
A model of a page symbol.
A model of a group of symbols.
static void addTemplateArgumentList(const ArgumentList &al, PerlModOutput &output, const QCString &)
PerlModOutput & closeHash()
Node representing a list of section references
static FileNameLinkedMap * inputNameLinkedMap
#define PERLOUTPUT_MAX_INDENTATION
Node representing a line break
Node representing a special symbol
PerlModOutput & addQuoted(const QCString &s)
const char * name(int index) const
Access routine to the name of the Emoji entity
PerlModOutput & add(QCString &s)
PerlModOutput & open(char c, const QCString &s=QCString())
A model of a class/file/namespace member symbol.
Node representing an item of a cross-referenced list
PerlModOutput & continueBlock()
@ MemberListType_decProtoMembers
@ MemberListType_pubSlots
Node representing an image
A abstract class representing of a compound symbol.
@ MemberListType_decVarMembers
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
virtual Kind kind() const =0
@ MemberListType_proStaticMethods
Node representing a URL (or email address)
virtual QCString initializer() const =0
virtual QCString excpString() const =0
virtual QCString name() const =0
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual Specifier virtualness(int count=0) const =0
virtual const MemberVector & enumFieldList() const =0
virtual bool isAnonymous() const =0
Node representing a HTML table caption
virtual ArgumentList getTemplateParameterList() const =0
PerlModOutput & addField(const QCString &s)
Class representing the data associated with a #include statement.
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
virtual const MemberGroupList & getMemberGroups() const =0
bool generateDoxyLatexStructurePL()
Node representing a parameter list.
virtual ClassLinkedRefMap getClasses() const =0
void generatePerlModForClass(const ClassDef *cd)
QCString pathDoxyLatexDVI
std::string absPath() const
virtual bool isReference() const =0
virtual QCString name() const =0
static GroupLinkedMap * groupLinkedMap
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
This class contains the information about the argument of a function or template
Node representing an block of paragraphs
virtual const ClassDef * getClassDef() const =0
virtual ~PerlModDocVisitor()
Node representing a separator between two simple sections of the same type.
DocRoot * 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)
static QCString pathDoxyfile
void generatePerlModForConcept(const ConceptDef *cd)
Node representing a citation of some bibliographic reference
virtual MemberList * getMemberList(MemberListType lt) const =0
void generatePerlModSection(const Definition *d, MemberList *ml, const QCString &name, const QCString &header=QCString())
Node representing a reference to some item
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
void iaddFieldQuotedString(const QCString &, const QCString &)
virtual const NamespaceLinkedRefMap & getNamespaces() const =0
virtual int getStartBodyLine() const =0
A vector of MemberDef object
virtual int getEndBodyLine() const =0
void setPerlModOutputStream(PerlModOutputStream *os)
Node representing a parameter section
const int DocVisitor_Other
const DocNodeList & children() const
void iaddField(const QCString &)
Node representing a Html list
bool constSpecifier() const
virtual const MemberDef * reimplements() const =0
virtual Protection protection() const =0
const T * find(const std::string &key) const
Find an object given the key.
QCString pathDoxyStructureTex
PerlModOutput & add(int n)
virtual NamespaceLinkedRefMap getNamespaces() const =0
DocParamSect::Direction direction() const
Node representing a simple section
@ MemberListType_decEnumMembers
Node representing a normal section
PerlModOutput & openList(const QCString &s=QCString())
Node representing a horizontal ruler
@ MemberListType_priTypes
Representation of a class inheritance or dependency graph
bool generatePerlModOutput()
@ MemberListType_pubStaticAttribs
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class
Node representing an included text block from file
@ MemberListType_decDefineMembers
PerlModOutput & addFieldQuotedChar(const QCString &field, char content)
Node representing an auto List
QCString & setNum(short n)
@ MemberListType_proMethods
virtual const PageLinkedRefMap & getPages() const =0
Node representing an internal section of documentation
@ MemberListType_decFuncMembers
@ MemberListType_proTypes
virtual const MemberVector & reimplementedBy() const =0
void generatePerlUserDefinedSection(const Definition *d, const MemberGroupList &mgl)
static void addTemplateList(const ClassDef *cd, PerlModOutput &output)
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
@ MemberListType_proStaticAttribs
Node representing a word that can be linked to something
#define Config_getBool(name)
void generatePerlModForGroup(const GroupDef *gd)
void iopen(char, const QCString &)
static const char * getProtectionName(Protection prot)
static SectionManager & instance()
returns a reference to the singleton
@ MemberListType_priMethods
virtual QCString documentation() const =0
virtual const ArgumentList & declArgumentList() const =0
static void addPerlModDocBlock(PerlModOutput &output, const QCString &name, const QCString &fileName, int lineNr, const Definition *scope, const MemberDef *md, const QCString &text)
virtual bool isReference() const =0
Returns TRUE if this class is imported via a tag file
Node representing a link to some item
virtual Definition * getOuterScope() const =0
Node representing a dia file
@ MemberListType_proSlots
@ MemberListType_decTypedefMembers
const char * qPrint(const char *s)
bool generateDoxyLatexPL()
#define Config_getString(name)
void setPath(const std::string &path)
virtual QCString getDefFileName() const =0
class that provide information about a section.
void singleItem(const QCString &)
void visitPre(DocAutoList *)
PerlModOutputStream(std::ostream &t)
virtual const ArgumentList & argumentList() const =0
@ MemberListType_pubAttribs
static NamespaceLinkedMap * namespaceLinkedMap
Node representing a simple list
PerlModOutput & add(unsigned int n)
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt
Node representing a simple list item
A model of a file symbol.
Node representing some amount of white space
virtual const MemberGroupList & getMemberGroups() const =0
static EmojiEntityMapper * instance()
Returns the one and only instance of the Emoji entity mapper
Node representing a HTML table cell
void openItem(const QCString &)
virtual const MemberGroupList & getMemberGroups() const =0
Returns the member groups defined for this class
@ MemberListType_properties
QCString pathDoxyLatexPDF
bool hasInOutSpecifier() const
Node representing an internal reference to some item
DocNodeList & parameters()
static ClassLinkedMap * classLinkedMap
virtual const QCString & initializer() const =0
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
A bunch of utility functions.
virtual QCString typeString() const =0
@ MemberListType_pubStaticMethods
Node representing a HTML table row
A list of MemberDef objects as shown in documentation sections.
PerlModGenerator(bool pretty)
QCString right(size_t len) const
static const char * getVirtualnessName(Specifier virt)
virtual MemberType memberType() const =0
QCString & sprintf(const char *format,...)
Concrete visitor implementation for PerlMod output.
virtual const ArgumentList & templateArguments() const =0
Returns the template arguments of this class
virtual const GroupDef * getGroupDef() const =0
static QCString pathDoxyExec
std::unique_ptr< IDocParser > createDocParser()
bool generateDoxyStructurePM()
PerlModOutput(bool pretty)
virtual const IncludeInfoList & includeFileList() const =0
const HtmlAttribList & attribs() const
This is an alternative implementation of QCString.