Doxygen
Loading...
Searching...
No Matches
PerlModGenerator Class Reference
Collaboration diagram for PerlModGenerator:

Public Member Functions

 PerlModGenerator (bool pretty)
 
void generatePerlModForMember (const MemberDef *md, const Definition *)
 
void generatePerlUserDefinedSection (const Definition *d, const MemberGroupList &mgl)
 
void generatePerlModSection (const Definition *d, MemberList *ml, const QCString &name, const QCString &header=QCString())
 
void addListOfAllMembers (const ClassDef *cd)
 
void addIncludeInfo (const IncludeInfo *ii)
 
void generatePerlModForClass (const ClassDef *cd)
 
void generatePerlModForConcept (const ConceptDef *cd)
 
void generatePerlModForModule (const ModuleDef *mod)
 
void generatePerlModForNamespace (const NamespaceDef *nd)
 
void generatePerlModForFile (const FileDef *fd)
 
void generatePerlModForGroup (const GroupDef *gd)
 
void generatePerlModForPage (PageDef *pi)
 
bool createOutputFile (std::ofstream &f, const QCString &s)
 
bool createOutputDir (Dir &perlModDir)
 
bool generateDoxyLatexTex ()
 
bool generateDoxyFormatTex ()
 
bool generateDoxyStructurePM ()
 
bool generateDoxyLatexPL ()
 
bool generateDoxyLatexStructurePL ()
 
bool generateDoxyRules ()
 
bool generateMakefile ()
 
bool generatePerlModOutput ()
 
void generate ()
 

Public Attributes

PerlModOutput m_output
 
QCString pathDoxyStructurePM
 
QCString pathDoxyDocsTex
 
QCString pathDoxyFormatTex
 
QCString pathDoxyLatexTex
 
QCString pathDoxyLatexDVI
 
QCString pathDoxyLatexPDF
 
QCString pathDoxyStructureTex
 
QCString pathDoxyDocsPM
 
QCString pathDoxyLatexPL
 
QCString pathDoxyLatexStructurePL
 
QCString pathDoxyRules
 
QCString pathMakefile
 

Detailed Description

Definition at line 1406 of file perlmodgen.cpp.

Constructor & Destructor Documentation

◆ PerlModGenerator()

PerlModGenerator::PerlModGenerator ( bool pretty)
inline

Definition at line 1425 of file perlmodgen.cpp.

1425: m_output(pretty) { }
PerlModOutput m_output

References m_output.

Member Function Documentation

◆ addIncludeInfo()

void PerlModGenerator::addIncludeInfo ( const IncludeInfo * ii)

Definition at line 1703 of file perlmodgen.cpp.

1704{
1705 if (ii)
1706 {
1707 QCString nm = ii->includeName;
1708 if (nm.isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
1709 if (!nm.isEmpty())
1710 {
1711 m_output.openHash("includes");
1712 m_output.addFieldBoolean("local", ii->kind==IncludeKind::IncludeLocal || ii->kind==IncludeKind::ImportLocal)
1713 .addFieldQuotedString("name", nm)
1714 .closeHash();
1715 }
1716 }
1717}
virtual const QCString & docName() const =0
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150
@ ImportLocal
Definition filedef.h:54
@ IncludeLocal
Definition filedef.h:50
QCString includeName
Definition filedef.h:80
IncludeKind kind
Definition filedef.h:81
const FileDef * fileDef
Definition filedef.h:79

References FileDef::docName(), IncludeInfo::fileDef, ImportLocal, IncludeLocal, IncludeInfo::includeName, QCString::isEmpty(), IncludeInfo::kind, and m_output.

Referenced by generatePerlModForClass(), and generatePerlModForConcept().

◆ addListOfAllMembers()

void PerlModGenerator::addListOfAllMembers ( const ClassDef * cd)

Definition at line 1650 of file perlmodgen.cpp.

1651{
1652 m_output.openList("all_members");
1653 for (auto &mni : cd->memberNameInfoLinkedMap())
1654 {
1655 for (auto &mi : *mni)
1656 {
1657 const MemberDef *md=mi->memberDef();
1658 const ClassDef *mcd=md->getClassDef();
1659
1660 m_output.openHash()
1661 .addFieldQuotedString("name", md->name())
1662 .addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
1663 .addFieldQuotedString("protection", getProtectionName(mi->prot()));
1664
1665 if (!mi->ambiguityResolutionScope().isEmpty())
1666 m_output.addFieldQuotedString("ambiguity_scope", mi->ambiguityResolutionScope());
1667
1668 m_output.addFieldQuotedString("scope", mcd->name())
1669 .closeHash();
1670 }
1671 }
1672 m_output.closeList();
1673}
virtual const MemberNameInfoLinkedMap & memberNameInfoLinkedMap() const =0
Returns a dictionary of all members.
virtual const QCString & name() const =0
virtual const ClassDef * getClassDef() const =0
virtual Specifier virtualness(int count=0) const =0
static const char * getVirtualnessName(Specifier virt)
static const char * getProtectionName(Protection prot)

References MemberDef::getClassDef(), getProtectionName(), getVirtualnessName(), m_output, ClassDef::memberNameInfoLinkedMap(), Definition::name(), and MemberDef::virtualness().

Referenced by generatePerlModForClass().

◆ createOutputDir()

bool PerlModGenerator::createOutputDir ( Dir & perlModDir)

Definition at line 2232 of file perlmodgen.cpp.

2233{
2234 std::string outputDirectory = Config_getString(OUTPUT_DIRECTORY).str();
2235 perlModDir.setPath(outputDirectory+"/perlmod");
2236 if (!perlModDir.exists() && !perlModDir.mkdir(outputDirectory+"/perlmod"))
2237 {
2238 err("Could not create perlmod directory in {}\n",outputDirectory);
2239 return false;
2240 }
2241 return true;
2242}
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Definition dir.cpp:295
void setPath(const std::string &path)
Definition dir.cpp:229
bool exists() const
Definition dir.cpp:257
#define Config_getString(name)
Definition config.h:32
#define err(fmt,...)
Definition message.h:127

References Config_getString, err, Dir::exists(), Dir::mkdir(), and Dir::setPath().

Referenced by generate().

◆ createOutputFile()

bool PerlModGenerator::createOutputFile ( std::ofstream & f,
const QCString & s )

Definition at line 2221 of file perlmodgen.cpp.

2222{
2224 if (!f.is_open())
2225 {
2226 err("Cannot open file {} for writing!\n", s);
2227 return false;
2228 }
2229 return true;
2230}
std::ofstream openOutputStream(const QCString &name, bool append=false)
Definition portable.cpp:665

References err, and Portable::openOutputStream().

Referenced by generateDoxyFormatTex(), generateDoxyLatexPL(), generateDoxyLatexStructurePL(), generateDoxyLatexTex(), generateDoxyRules(), generateDoxyStructurePM(), generateMakefile(), and generatePerlModOutput().

◆ generate()

void PerlModGenerator::generate ( )

Definition at line 2891 of file perlmodgen.cpp.

2892{
2893 // + classes
2894 // + namespaces
2895 // + files
2896 // - packages
2897 // + groups
2898 // + related pages
2899 // - examples
2900
2901 Dir perlModDir;
2902 if (!createOutputDir(perlModDir))
2903 return;
2904
2905 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2906
2907 QCString perlModAbsPath = perlModDir.absPath();
2908 pathDoxyDocsPM = perlModAbsPath + "/DoxyDocs.pm";
2909 pathDoxyStructurePM = perlModAbsPath + "/DoxyStructure.pm";
2910 pathMakefile = perlModAbsPath + "/Makefile";
2911 pathDoxyRules = perlModAbsPath + "/doxyrules.make";
2912
2913 if (perlmodLatex) {
2914 pathDoxyStructureTex = perlModAbsPath + "/doxystructure.tex";
2915 pathDoxyFormatTex = perlModAbsPath + "/doxyformat.tex";
2916 pathDoxyLatexTex = perlModAbsPath + "/doxylatex.tex";
2917 pathDoxyLatexDVI = perlModAbsPath + "/doxylatex.dvi";
2918 pathDoxyLatexPDF = perlModAbsPath + "/doxylatex.pdf";
2919 pathDoxyDocsTex = perlModAbsPath + "/doxydocs.tex";
2920 pathDoxyLatexPL = perlModAbsPath + "/doxylatex.pl";
2921 pathDoxyLatexStructurePL = perlModAbsPath + "/doxylatex-structure.pl";
2922 }
2923
2924 if (!(generatePerlModOutput()
2926 && generateMakefile()
2927 && generateDoxyRules()))
2928 return;
2929
2930 if (perlmodLatex) {
2935 return;
2936 }
2937}
std::string absPath() const
Definition dir.cpp:363
bool generateDoxyFormatTex()
QCString pathDoxyLatexPL
QCString pathDoxyStructureTex
bool generateDoxyLatexTex()
bool createOutputDir(Dir &perlModDir)
QCString pathDoxyDocsPM
QCString pathDoxyStructurePM
QCString pathDoxyLatexDVI
bool generatePerlModOutput()
QCString pathDoxyDocsTex
QCString pathDoxyLatexStructurePL
bool generateDoxyStructurePM()
QCString pathDoxyFormatTex
QCString pathDoxyLatexPDF
bool generateDoxyLatexStructurePL()
QCString pathDoxyLatexTex
#define Config_getBool(name)
Definition config.h:33

References Dir::absPath(), Config_getBool, createOutputDir(), generateDoxyFormatTex(), generateDoxyLatexPL(), generateDoxyLatexStructurePL(), generateDoxyLatexTex(), generateDoxyRules(), generateDoxyStructurePM(), generateMakefile(), generatePerlModOutput(), pathDoxyDocsPM, pathDoxyDocsTex, pathDoxyFormatTex, pathDoxyLatexDVI, pathDoxyLatexPDF, pathDoxyLatexPL, pathDoxyLatexStructurePL, pathDoxyLatexTex, pathDoxyRules, pathDoxyStructurePM, pathDoxyStructureTex, and pathMakefile.

Referenced by generatePerlMod().

◆ generateDoxyFormatTex()

bool PerlModGenerator::generateDoxyFormatTex ( )

Definition at line 2704 of file perlmodgen.cpp.

2705{
2706 std::ofstream doxyFormatTexStream;
2707 if (!createOutputFile(doxyFormatTexStream, pathDoxyFormatTex))
2708 return false;
2709
2710 doxyFormatTexStream <<
2711 "\\def\\Defcs#1{\\long\\expandafter\\def\\csname#1\\endcsname}\n"
2712 "\\Defcs{Empty}{}\n"
2713 "\\def\\IfEmpty#1{\\expandafter\\ifx\\csname#1\\endcsname\\Empty}\n"
2714 "\n"
2715 "\\def\\StringNode#1{\\Defcs{#1}##1{##1}}\n"
2716 "\\def\\DocNode#1{\\Defcs{#1}##1{##1}}\n"
2717 "\\def\\ListNode#1{\\Defcs{#1}##1{##1}\\Defcs{#1Sep}{}}\n"
2718 "\\def\\HashNode#1{\\Defcs{#1}{}}\n"
2719 "\n"
2720 "\\input{" << pathDoxyStructureTex << "}\n"
2721 "\n"
2722 "\\newbox\\BoxA\n"
2723 "\\dimendef\\DimenA=151\\relax\n"
2724 "\\dimendef\\DimenB=152\\relax\n"
2725 "\\countdef\\ZoneDepth=151\\relax\n"
2726 "\n"
2727 "\\def\\Cs#1{\\csname#1\\endcsname}\n"
2728 "\\def\\Letcs#1{\\expandafter\\let\\csname#1\\endcsname}\n"
2729 "\\def\\Heading#1{\\vskip 4mm\\relax\\textbf{#1}}\n"
2730 "\\def\\See#1{\\begin{flushleft}\\Heading{See also: }#1\\end{flushleft}}\n"
2731 "\n"
2732 "\\def\\Frame#1{\\vskip 3mm\\relax\\fbox{ \\vbox{\\hsize0.95\\hsize\\vskip 1mm\\relax\n"
2733 "\\raggedright#1\\vskip 0.5mm\\relax} }}\n"
2734 "\n"
2735 "\\def\\Zone#1#2#3{%\n"
2736 "\\Defcs{Test#1}{#2}%\n"
2737 "\\Defcs{Emit#1}{#3}%\n"
2738 "\\Defcs{#1}{%\n"
2739 "\\advance\\ZoneDepth1\\relax\n"
2740 "\\Letcs{Mode\\number\\ZoneDepth}0\\relax\n"
2741 "\\Letcs{Present\\number\\ZoneDepth}0\\relax\n"
2742 "\\Cs{Test#1}\n"
2743 "\\expandafter\\if\\Cs{Present\\number\\ZoneDepth}1%\n"
2744 "\\advance\\ZoneDepth-1\\relax\n"
2745 "\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2746 "\\expandafter\\if\\Cs{Mode\\number\\ZoneDepth}1%\n"
2747 "\\advance\\ZoneDepth1\\relax\n"
2748 "\\Letcs{Mode\\number\\ZoneDepth}1\\relax\n"
2749 "\\Cs{Emit#1}\n"
2750 "\\advance\\ZoneDepth-1\\relax\\fi\n"
2751 "\\advance\\ZoneDepth1\\relax\\fi\n"
2752 "\\advance\\ZoneDepth-1\\relax}}\n"
2753 "\n"
2754 "\\def\\Member#1#2{%\n"
2755 "\\Defcs{Test#1}{\\Cs{field#1Detailed}\n"
2756 "\\IfEmpty{field#1DetailedDoc}\\else\\Letcs{Present#1}1\\fi}\n"
2757 "\\Defcs{#1}{\\Letcs{Present#1}0\\relax\n"
2758 "\\Cs{Test#1}\\if1\\Cs{Present#1}\\Letcs{Present\\number\\ZoneDepth}1\\relax\n"
2759 "\\if1\\Cs{Mode\\number\\ZoneDepth}#2\\fi\\fi}}\n"
2760 "\n"
2761 "\\def\\TypedefMemberList#1#2{%\n"
2762 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2763 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2764 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2765 "%\n"
2766 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2767 "\\Member{#1}{\\Frame{typedef \\Cs{field#1Type} \\Cs{field#1Name}}%\n"
2768 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2769 "\n"
2770 "\\def\\VariableMemberList#1#2{%\n"
2771 "\\Defcs{#1DetailedDoc}##1{\\vskip 5.5mm\\relax##1}%\n"
2772 "\\Defcs{#1Name}##1{\\textbf{##1}}%\n"
2773 "\\Defcs{#1See}##1{\\See{##1}}%\n"
2774 "%\n"
2775 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2776 "\\Member{#1}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}}%\n"
2777 "\\Cs{field#1DetailedDoc}\\Cs{field#1See}\\vskip 5mm\\relax}}%\n"
2778 "\n"
2779 "\\def\\FunctionMemberList#1#2{%\n"
2780 "\\Defcs{#1PDParamName}##1{\\textit{##1}}%\n"
2781 "\\Defcs{#1PDParam}{\\Cs{field#1PDParamName}}%\n"
2782 "\\Defcs{#1PDParamsSep}{, }%\n"
2783 "\\Defcs{#1PDBlocksSep}{\\vskip 2mm\\relax}%\n"
2784 "%\n"
2785 "\\Defcs{#1PDBlocks}##1{%\n"
2786 "\\Heading{Parameters:}\\vskip 1.5mm\\relax\n"
2787 "\\DimenA0pt\\relax\n"
2788 "\\Defcs{#1PDBlock}{\\setbox\\BoxA\\hbox{\\Cs{field#1PDParams}}%\n"
2789 "\\ifdim\\DimenA<\\wd\\BoxA\\DimenA\\wd\\BoxA\\fi}%\n"
2790 "##1%\n"
2791 "\\advance\\DimenA3mm\\relax\n"
2792 "\\DimenB\\hsize\\advance\\DimenB-\\DimenA\\relax\n"
2793 "\\Defcs{#1PDBlock}{\\hbox to\\hsize{\\vtop{\\hsize\\DimenA\\relax\n"
2794 "\\Cs{field#1PDParams}}\\hfill\n"
2795 "\\vtop{\\hsize\\DimenB\\relax\\Cs{field#1PDDoc}}}}%\n"
2796 "##1}\n"
2797 "\n"
2798 "\\Defcs{#1ParamName}##1{\\textit{##1}}\n"
2799 "\\Defcs{#1Param}{\\Cs{field#1ParamType}{} \\Cs{field#1ParamName}}\n"
2800 "\\Defcs{#1ParamsSep}{, }\n"
2801 "\n"
2802 "\\Defcs{#1Name}##1{\\textbf{##1}}\n"
2803 "\\Defcs{#1See}##1{\\See{##1}}\n"
2804 "\\Defcs{#1Return}##1{\\Heading{Returns: }##1}\n"
2805 "\\Defcs{field#1Title}{\\Frame{\\Cs{field#1Type}{} \\Cs{field#1Name}(\\Cs{field#1Params})}}%\n"
2806 "%\n"
2807 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2808 "\\Member{#1}{%\n"
2809 "\\Cs{field#1Title}\\vskip 6mm\\relax\\Cs{field#1DetailedDoc}\n"
2810 "\\Cs{field#1Return}\\Cs{field#1PDBlocks}\\Cs{field#1See}\\vskip 5mm\\relax}}\n"
2811 "\n"
2812 "\\def\\FileDetailed{\\fieldFileDetailedDoc\\par}\n"
2813 "\\def\\ClassDetailed{\\fieldClassDetailedDoc\\par}\n"
2814 "\n"
2815 "\\def\\FileSubzones{\\fieldFileTypedefs\\fieldFileVariables\\fieldFileFunctions}\n"
2816 "\n"
2817 "\\def\\ClassSubzones{%\n"
2818 "\\fieldClassPublicTypedefs\\fieldClassPublicMembers\\fieldClassPublicMethods\n"
2819 "\\fieldClassProtectedTypedefs\\fieldClassProtectedMembers\\fieldClassProtectedMethods\n"
2820 "\\fieldClassPrivateTypedefs\\fieldClassPrivateMembers\\fieldClassPrivateMethods}\n"
2821 "\n"
2822 "\\Member{Page}{\\subsection{\\fieldPageName}\\fieldPageDetailedDoc}\n"
2823 "\n"
2824 "\\TypedefMemberList{FileTypedef}{Typedefs}\n"
2825 "\\VariableMemberList{FileVariable}{Variables}\n"
2826 "\\FunctionMemberList{FileFunction}{Functions}\n"
2827 "\\Zone{File}{\\FileSubzones}{\\subsection{\\fieldFileName}\\fieldFileDetailed\\FileSubzones}\n"
2828 "\n"
2829 "\\TypedefMemberList{ClassPublicTypedef}{Public Typedefs}\n"
2830 "\\TypedefMemberList{ClassProtectedTypedef}{Protected Typedefs}\n"
2831 "\\TypedefMemberList{ClassPrivateTypedef}{Private Typedefs}\n"
2832 "\\VariableMemberList{ClassPublicMember}{Public Members}\n"
2833 "\\VariableMemberList{ClassProtectedMember}{Protected Members}\n"
2834 "\\VariableMemberList{ClassPrivateMember}{Private Members}\n"
2835 "\\FunctionMemberList{ClassPublicMethod}{Public Methods}\n"
2836 "\\FunctionMemberList{ClassProtectedMethod}{Protected Methods}\n"
2837 "\\FunctionMemberList{ClassPrivateMethod}{Private Methods}\n"
2838 "\\Zone{Class}{\\ClassSubzones}{\\subsection{\\fieldClassName}\\fieldClassDetailed\\ClassSubzones}\n"
2839 "\n"
2840 "\\Zone{AllPages}{\\fieldPages}{\\section{Pages}\\fieldPages}\n"
2841 "\\Zone{AllFiles}{\\fieldFiles}{\\section{Files}\\fieldFiles}\n"
2842 "\\Zone{AllClasses}{\\fieldClasses}{\\section{Classes}\\fieldClasses}\n"
2843 "\n"
2844 "\\newlength{\\oldparskip}\n"
2845 "\\newlength{\\oldparindent}\n"
2846 "\\newlength{\\oldfboxrule}\n"
2847 "\n"
2848 "\\ZoneDepth0\\relax\n"
2849 "\\Letcs{Mode0}1\\relax\n"
2850 "\n"
2851 "\\def\\EmitDoxyDocs{%\n"
2852 "\\setlength{\\oldparskip}{\\parskip}\n"
2853 "\\setlength{\\oldparindent}{\\parindent}\n"
2854 "\\setlength{\\oldfboxrule}{\\fboxrule}\n"
2855 "\\setlength{\\parskip}{0cm}\n"
2856 "\\setlength{\\parindent}{0cm}\n"
2857 "\\setlength{\\fboxrule}{1pt}\n"
2858 "\\AllPages\\AllFiles\\AllClasses\n"
2859 "\\setlength{\\parskip}{\\oldparskip}\n"
2860 "\\setlength{\\parindent}{\\oldparindent}\n"
2861 "\\setlength{\\fboxrule}{\\oldfboxrule}}\n";
2862
2863 return true;
2864}
bool createOutputFile(std::ofstream &f, const QCString &s)

References createOutputFile(), pathDoxyFormatTex, and pathDoxyStructureTex.

Referenced by generate().

◆ generateDoxyLatexPL()

bool PerlModGenerator::generateDoxyLatexPL ( )

Definition at line 2582 of file perlmodgen.cpp.

2583{
2584 std::ofstream doxyLatexPLStream;
2585 if (!createOutputFile(doxyLatexPLStream, pathDoxyLatexPL))
2586 return false;
2587
2588 doxyLatexPLStream <<
2589 "use DoxyStructure;\n"
2590 "use DoxyDocs;\n"
2591 "\n"
2592 "sub latex_quote($) {\n"
2593 "\tmy $text = $_[0];\n"
2594 "\t$text =~ s/\\\\/\\\\textbackslash /g;\n"
2595 "\t$text =~ s/\\|/\\\\textbar /g;\n"
2596 "\t$text =~ s/</\\\\textless /g;\n"
2597 "\t$text =~ s/>/\\\\textgreater /g;\n"
2598 "\t$text =~ s/~/\\\\textasciitilde /g;\n"
2599 "\t$text =~ s/\\^/\\\\textasciicircum /g;\n"
2600 "\t$text =~ s/[\\$&%#_{}]/\\\\$&/g;\n"
2601 "\tprint $text;\n"
2602 "}\n"
2603 "\n"
2604 "sub generate_doc($) {\n"
2605 "\tmy $doc = $_[0];\n"
2606 "\tfor my $item (@$doc) {\n"
2607 "\t\tmy $type = $$item{type};\n"
2608 "\t\tif ($type eq \"text\") {\n"
2609 "\t\t\tlatex_quote($$item{content});\n"
2610 "\t\t} elsif ($type eq \"parbreak\") {\n"
2611 "\t\t\tprint \"\\n\\n\";\n"
2612 "\t\t} elsif ($type eq \"style\") {\n"
2613 "\t\t\tmy $style = $$item{style};\n"
2614 "\t\t\tif ($$item{enable} eq \"yes\") {\n"
2615 "\t\t\t\tif ($style eq \"bold\") { print '\\bfseries'; }\n"
2616 "\t\t\t\tif ($style eq \"italic\") { print '\\itshape'; }\n"
2617 "\t\t\t\tif ($style eq \"code\") { print '\\ttfamily'; }\n"
2618 "\t\t\t} else {\n"
2619 "\t\t\t\tif ($style eq \"bold\") { print '\\mdseries'; }\n"
2620 "\t\t\t\tif ($style eq \"italic\") { print '\\upshape'; }\n"
2621 "\t\t\t\tif ($style eq \"code\") { print '\\rmfamily'; }\n"
2622 "\t\t\t}\n"
2623 "\t\t\tprint '{}';\n"
2624 "\t\t} elsif ($type eq \"symbol\") {\n"
2625 "\t\t\tmy $symbol = $$item{symbol};\n"
2626 "\t\t\tif ($symbol eq \"copyright\") { print '\\copyright'; }\n"
2627 "\t\t\telsif ($symbol eq \"szlig\") { print '\\ss'; }\n"
2628 "\t\t\tprint '{}';\n"
2629 "\t\t} elsif ($type eq \"accent\") {\n"
2630 "\t\t\tmy ($accent) = $$item{accent};\n"
2631 "\t\t\tif ($accent eq \"umlaut\") { print '\\\"'; }\n"
2632 "\t\t\telsif ($accent eq \"acute\") { print '\\\\\\''; }\n"
2633 "\t\t\telsif ($accent eq \"grave\") { print '\\`'; }\n"
2634 "\t\t\telsif ($accent eq \"circ\") { print '\\^'; }\n"
2635 "\t\t\telsif ($accent eq \"tilde\") { print '\\~'; }\n"
2636 "\t\t\telsif ($accent eq \"cedilla\") { print '\\c'; }\n"
2637 "\t\t\telsif ($accent eq \"ring\") { print '\\r'; }\n"
2638 "\t\t\tprint \"{\" . $$item{letter} . \"}\"; \n"
2639 "\t\t} elsif ($type eq \"list\") {\n"
2640 "\t\t\tmy $env = ($$item{style} eq \"ordered\") ? \"enumerate\" : \"itemize\";\n"
2641 "\t\t\tprint \"\\n\\\\begin{\" . $env .\"}\";\n"
2642 "\t\t \tfor my $subitem (@{$$item{content}}) {\n"
2643 "\t\t\t\tprint \"\\n\\\\item \";\n"
2644 "\t\t\t\tgenerate_doc($subitem);\n"
2645 "\t\t \t}\n"
2646 "\t\t\tprint \"\\n\\\\end{\" . $env .\"}\";\n"
2647 "\t\t} elsif ($type eq \"url\") {\n"
2648 "\t\t\tlatex_quote($$item{content});\n"
2649 "\t\t}\n"
2650 "\t}\n"
2651 "}\n"
2652 "\n"
2653 "sub generate($$) {\n"
2654 "\tmy ($item, $node) = @_;\n"
2655 "\tmy ($type, $name) = @$node[0, 1];\n"
2656 "\tif ($type eq \"string\") {\n"
2657 "\t\tprint \"\\\\\" . $name . \"{\";\n"
2658 "\t\tlatex_quote($item);\n"
2659 "\t\tprint \"}\";\n"
2660 "\t} elsif ($type eq \"doc\") {\n"
2661 "\t\tif (@$item) {\n"
2662 "\t\t\tprint \"\\\\\" . $name . \"{\";\n"
2663 "\t\t\tgenerate_doc($item);\n"
2664 "\t\t\tprint \"}%\\n\";\n"
2665 "\t\t} else {\n"
2666 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2667 "\t\t}\n"
2668 "\t} elsif ($type eq \"hash\") {\n"
2669 "\t\tmy ($key, $value);\n"
2670 "\t\twhile (($key, $subnode) = each %{$$node[2]}) {\n"
2671 "\t\t\tmy $subname = $$subnode[1];\n"
2672 "\t\t\tprint \"\\\\Defcs{field\" . $subname . \"}{\";\n"
2673 "\t\t\tif ($$item{$key}) {\n"
2674 "\t\t\t\tgenerate($$item{$key}, $subnode);\n"
2675 "\t\t\t} else {\n"
2676 "#\t\t\t\t\tprint \"\\\\\" . $subname . \"Empty%\\n\";\n"
2677 "\t\t\t}\n"
2678 "\t\t\tprint \"}%\\n\";\n"
2679 "\t\t}\n"
2680 "\t\tprint \"\\\\\" . $name . \"%\\n\";\n"
2681 "\t} elsif ($type eq \"list\") {\n"
2682 "\t\tmy $index = 0;\n"
2683 "\t\tif (@$item) {\n"
2684 "\t\t\tprint \"\\\\\" . $name . \"{%\\n\";\n"
2685 "\t\t\tfor my $subitem (@$item) {\n"
2686 "\t\t\t\tif ($index) {\n"
2687 "\t\t\t\t\tprint \"\\\\\" . $name . \"Sep%\\n\";\n"
2688 "\t\t\t\t}\n"
2689 "\t\t\t\tgenerate($subitem, $$node[2]);\n"
2690 "\t\t\t\t$index++;\n"
2691 "\t\t\t}\n"
2692 "\t\t\tprint \"}%\\n\";\n"
2693 "\t\t} else {\n"
2694 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2695 "\t\t}\n"
2696 "\t}\n"
2697 "}\n"
2698 "\n"
2699 "generate($doxydocs, $doxystructure);\n";
2700
2701 return true;
2702}

References createOutputFile(), and pathDoxyLatexPL.

Referenced by generate().

◆ generateDoxyLatexStructurePL()

bool PerlModGenerator::generateDoxyLatexStructurePL ( )

Definition at line 2549 of file perlmodgen.cpp.

2550{
2551 std::ofstream doxyLatexStructurePLStream;
2552 if (!createOutputFile(doxyLatexStructurePLStream, pathDoxyLatexStructurePL))
2553 return false;
2554
2555 doxyLatexStructurePLStream <<
2556 "use DoxyStructure;\n"
2557 "\n"
2558 "sub process($) {\n"
2559 "\tmy $node = $_[0];\n"
2560 "\tmy ($type, $name) = @$node[0, 1];\n"
2561 "\tmy $command;\n"
2562 "\tif ($type eq \"string\") { $command = \"String\" }\n"
2563 "\telsif ($type eq \"doc\") { $command = \"Doc\" }\n"
2564 "\telsif ($type eq \"hash\") {\n"
2565 "\t\t$command = \"Hash\";\n"
2566 "\t\tfor my $subnode (values %{$$node[2]}) {\n"
2567 "\t\t\tprocess($subnode);\n"
2568 "\t\t}\n"
2569 "\t}\n"
2570 "\telsif ($type eq \"list\") {\n"
2571 "\t\t$command = \"List\";\n"
2572 "\t\tprocess($$node[2]);\n"
2573 "\t}\n"
2574 "\tprint \"\\\\\" . $command . \"Node{\" . $name . \"}%\\n\";\n"
2575 "}\n"
2576 "\n"
2577 "process($doxystructure);\n";
2578
2579 return true;
2580}

References createOutputFile(), and pathDoxyLatexStructurePL.

Referenced by generate().

◆ generateDoxyLatexTex()

bool PerlModGenerator::generateDoxyLatexTex ( )

Definition at line 2866 of file perlmodgen.cpp.

2867{
2868 std::ofstream doxyLatexTexStream;
2869 if (!createOutputFile(doxyLatexTexStream, pathDoxyLatexTex))
2870 return false;
2871
2872 doxyLatexTexStream <<
2873 "\\documentclass[a4paper,12pt]{article}\n"
2874 "\\usepackage[latin1]{inputenc}\n"
2875 "\\usepackage[none]{hyphenat}\n"
2876 "\\usepackage[T1]{fontenc}\n"
2877 "\\usepackage{hyperref}\n"
2878 "\\usepackage{times}\n"
2879 "\n"
2880 "\\input{doxyformat}\n"
2881 "\n"
2882 "\\begin{document}\n"
2883 "\\input{" << pathDoxyDocsTex << "}\n"
2884 "\\sloppy\n"
2885 "\\EmitDoxyDocs\n"
2886 "\\end{document}\n";
2887
2888 return true;
2889}

References createOutputFile(), pathDoxyDocsTex, and pathDoxyLatexTex.

Referenced by generate().

◆ generateDoxyRules()

bool PerlModGenerator::generateDoxyRules ( )

Definition at line 2427 of file perlmodgen.cpp.

2428{
2429 std::ofstream doxyRulesStream;
2430 if (!createOutputFile(doxyRulesStream, pathDoxyRules))
2431 return false;
2432
2433 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2434 QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
2435
2436 doxyRulesStream <<
2437 prefix << "DOXY_EXEC_PATH = " << pathDoxyExec << "\n" <<
2438 prefix << "DOXYFILE = " << pathDoxyfile << "\n" <<
2439 prefix << "DOXYDOCS_PM = " << pathDoxyDocsPM << "\n" <<
2440 prefix << "DOXYSTRUCTURE_PM = " << pathDoxyStructurePM << "\n" <<
2441 prefix << "DOXYRULES = " << pathDoxyRules << "\n";
2442 if (perlmodLatex)
2443 doxyRulesStream <<
2444 prefix << "DOXYLATEX_PL = " << pathDoxyLatexPL << "\n" <<
2445 prefix << "DOXYLATEXSTRUCTURE_PL = " << pathDoxyLatexStructurePL << "\n" <<
2446 prefix << "DOXYSTRUCTURE_TEX = " << pathDoxyStructureTex << "\n" <<
2447 prefix << "DOXYDOCS_TEX = " << pathDoxyDocsTex << "\n" <<
2448 prefix << "DOXYFORMAT_TEX = " << pathDoxyFormatTex << "\n" <<
2449 prefix << "DOXYLATEX_TEX = " << pathDoxyLatexTex << "\n" <<
2450 prefix << "DOXYLATEX_DVI = " << pathDoxyLatexDVI << "\n" <<
2451 prefix << "DOXYLATEX_PDF = " << pathDoxyLatexPDF << "\n";
2452
2453 doxyRulesStream <<
2454 "\n"
2455 ".PHONY: clean-perlmod\n"
2456 "clean-perlmod::\n"
2457 "\trm -f $(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
2458 "\t$(" << prefix << "DOXYDOCS_PM)";
2459 if (perlmodLatex)
2460 doxyRulesStream <<
2461 " \\\n"
2462 "\t$(" << prefix << "DOXYLATEX_PL) \\\n"
2463 "\t$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
2464 "\t$(" << prefix << "DOXYDOCS_TEX) \\\n"
2465 "\t$(" << prefix << "DOXYSTRUCTURE_TEX) \\\n"
2466 "\t$(" << prefix << "DOXYFORMAT_TEX) \\\n"
2467 "\t$(" << prefix << "DOXYLATEX_TEX) \\\n"
2468 "\t$(" << prefix << "DOXYLATEX_PDF) \\\n"
2469 "\t$(" << prefix << "DOXYLATEX_DVI) \\\n"
2470 "\t$(addprefix $(" << prefix << "DOXYLATEX_TEX:tex=),out aux log)";
2471 doxyRulesStream << "\n\n";
2472
2473 doxyRulesStream <<
2474 "$(" << prefix << "DOXYRULES) \\\n"
2475 "$(" << prefix << "DOXYMAKEFILE) \\\n"
2476 "$(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
2477 "$(" << prefix << "DOXYDOCS_PM)";
2478 if (perlmodLatex) {
2479 doxyRulesStream <<
2480 " \\\n"
2481 "$(" << prefix << "DOXYLATEX_PL) \\\n"
2482 "$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
2483 "$(" << prefix << "DOXYFORMAT_TEX) \\\n"
2484 "$(" << prefix << "DOXYLATEX_TEX)";
2485 }
2486 doxyRulesStream <<
2487 ": \\\n"
2488 "\t$(" << prefix << "DOXYFILE)\n"
2489 "\tcd $(" << prefix << "DOXY_EXEC_PATH) ; doxygen \"$<\"\n";
2490
2491 if (perlmodLatex) {
2492 doxyRulesStream <<
2493 "\n"
2494 "$(" << prefix << "DOXYDOCS_TEX): \\\n"
2495 "$(" << prefix << "DOXYLATEX_PL) \\\n"
2496 "$(" << prefix << "DOXYDOCS_PM)\n"
2497 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2498 "\n"
2499 "$(" << prefix << "DOXYSTRUCTURE_TEX): \\\n"
2500 "$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
2501 "$(" << prefix << "DOXYSTRUCTURE_PM)\n"
2502 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2503 "\n"
2504 "$(" << prefix << "DOXYLATEX_PDF) \\\n"
2505 "$(" << prefix << "DOXYLATEX_DVI): \\\n"
2506 "$(" << prefix << "DOXYLATEX_TEX) \\\n"
2507 "$(" << prefix << "DOXYFORMAT_TEX) \\\n"
2508 "$(" << prefix << "DOXYSTRUCTURE_TEX) \\\n"
2509 "$(" << prefix << "DOXYDOCS_TEX)\n"
2510 "\n"
2511 "$(" << prefix << "DOXYLATEX_PDF): \\\n"
2512 "$(" << prefix << "DOXYLATEX_TEX)\n"
2513 "\tpdflatex -interaction=nonstopmode \"$<\"\n"
2514 "\n"
2515 "$(" << prefix << "DOXYLATEX_DVI): \\\n"
2516 "$(" << prefix << "DOXYLATEX_TEX)\n"
2517 "\tlatex -interaction=nonstopmode \"$<\"\n";
2518 }
2519
2520 return true;
2521}
constexpr auto prefix
Definition anchor.cpp:44
static QCString pathDoxyExec
static QCString pathDoxyfile

References Config_getBool, Config_getString, createOutputFile(), pathDoxyDocsPM, pathDoxyDocsTex, pathDoxyExec, pathDoxyfile, pathDoxyFormatTex, pathDoxyLatexDVI, pathDoxyLatexPDF, pathDoxyLatexPL, pathDoxyLatexStructurePL, pathDoxyLatexTex, pathDoxyRules, pathDoxyStructurePM, pathDoxyStructureTex, and prefix.

Referenced by generate().

◆ generateDoxyStructurePM()

bool PerlModGenerator::generateDoxyStructurePM ( )

Definition at line 2244 of file perlmodgen.cpp.

2245{
2246 std::ofstream doxyModelPMStream;
2247 if (!createOutputFile(doxyModelPMStream, pathDoxyStructurePM))
2248 return false;
2249
2250 doxyModelPMStream <<
2251 "sub memberlist($) {\n"
2252 " my $prefix = $_[0];\n"
2253 " return\n"
2254 "\t[ \"hash\", $prefix . \"s\",\n"
2255 "\t {\n"
2256 "\t members =>\n"
2257 "\t [ \"list\", $prefix . \"List\",\n"
2258 "\t\t[ \"hash\", $prefix,\n"
2259 "\t\t {\n"
2260 "\t\t kind => [ \"string\", $prefix . \"Kind\" ],\n"
2261 "\t\t name => [ \"string\", $prefix . \"Name\" ],\n"
2262 "\t\t static => [ \"string\", $prefix . \"Static\" ],\n"
2263 "\t\t virtualness => [ \"string\", $prefix . \"Virtualness\" ],\n"
2264 "\t\t protection => [ \"string\", $prefix . \"Protection\" ],\n"
2265 "\t\t type => [ \"string\", $prefix . \"Type\" ],\n"
2266 "\t\t parameters =>\n"
2267 "\t\t [ \"list\", $prefix . \"Params\",\n"
2268 "\t\t\t[ \"hash\", $prefix . \"Param\",\n"
2269 "\t\t\t {\n"
2270 "\t\t\t declaration_name => [ \"string\", $prefix . \"ParamName\" ],\n"
2271 "\t\t\t type => [ \"string\", $prefix . \"ParamType\" ],\n"
2272 "\t\t\t },\n"
2273 "\t\t\t],\n"
2274 "\t\t ],\n"
2275 "\t\t detailed =>\n"
2276 "\t\t [ \"hash\", $prefix . \"Detailed\",\n"
2277 "\t\t\t{\n"
2278 "\t\t\t doc => [ \"doc\", $prefix . \"DetailedDoc\" ],\n"
2279 "\t\t\t return => [ \"doc\", $prefix . \"Return\" ],\n"
2280 "\t\t\t see => [ \"doc\", $prefix . \"See\" ],\n"
2281 "\t\t\t params =>\n"
2282 "\t\t\t [ \"list\", $prefix . \"PDBlocks\",\n"
2283 "\t\t\t [ \"hash\", $prefix . \"PDBlock\",\n"
2284 "\t\t\t\t{\n"
2285 "\t\t\t\t parameters =>\n"
2286 "\t\t\t\t [ \"list\", $prefix . \"PDParams\",\n"
2287 "\t\t\t\t [ \"hash\", $prefix . \"PDParam\",\n"
2288 "\t\t\t\t\t{\n"
2289 "\t\t\t\t\t name => [ \"string\", $prefix . \"PDParamName\" ],\n"
2290 "\t\t\t\t\t},\n"
2291 "\t\t\t\t ],\n"
2292 "\t\t\t\t ],\n"
2293 "\t\t\t\t doc => [ \"doc\", $prefix . \"PDDoc\" ],\n"
2294 "\t\t\t\t},\n"
2295 "\t\t\t ],\n"
2296 "\t\t\t ],\n"
2297 "\t\t\t},\n"
2298 "\t\t ],\n"
2299 "\t\t },\n"
2300 "\t\t],\n"
2301 "\t ],\n"
2302 "\t },\n"
2303 "\t];\n"
2304 "}\n"
2305 "\n"
2306 "$doxystructure =\n"
2307 " [ \"hash\", \"Root\",\n"
2308 " {\n"
2309 "\tfiles =>\n"
2310 "\t [ \"list\", \"Files\",\n"
2311 "\t [ \"hash\", \"File\",\n"
2312 "\t {\n"
2313 "\t\tname => [ \"string\", \"FileName\" ],\n"
2314 "\t\ttypedefs => memberlist(\"FileTypedef\"),\n"
2315 "\t\tvariables => memberlist(\"FileVariable\"),\n"
2316 "\t\tfunctions => memberlist(\"FileFunction\"),\n"
2317 "\t\tdetailed =>\n"
2318 "\t\t [ \"hash\", \"FileDetailed\",\n"
2319 "\t\t {\n"
2320 "\t\t doc => [ \"doc\", \"FileDetailedDoc\" ],\n"
2321 "\t\t },\n"
2322 "\t\t ],\n"
2323 "\t },\n"
2324 "\t ],\n"
2325 "\t ],\n"
2326 "\tpages =>\n"
2327 "\t [ \"list\", \"Pages\",\n"
2328 "\t [ \"hash\", \"Page\",\n"
2329 "\t {\n"
2330 "\t\tname => [ \"string\", \"PageName\" ],\n"
2331 "\t\tdetailed =>\n"
2332 "\t\t [ \"hash\", \"PageDetailed\",\n"
2333 "\t\t {\n"
2334 "\t\t doc => [ \"doc\", \"PageDetailedDoc\" ],\n"
2335 "\t\t },\n"
2336 "\t\t ],\n"
2337 "\t },\n"
2338 "\t ],\n"
2339 "\t ],\n"
2340 "\tclasses =>\n"
2341 "\t [ \"list\", \"Classes\",\n"
2342 "\t [ \"hash\", \"Class\",\n"
2343 "\t {\n"
2344 "\t\tname => [ \"string\", \"ClassName\" ],\n"
2345 "\t\tpublic_typedefs => memberlist(\"ClassPublicTypedef\"),\n"
2346 "\t\tpublic_methods => memberlist(\"ClassPublicMethod\"),\n"
2347 "\t\tpublic_members => memberlist(\"ClassPublicMember\"),\n"
2348 "\t\tprotected_typedefs => memberlist(\"ClassProtectedTypedef\"),\n"
2349 "\t\tprotected_methods => memberlist(\"ClassProtectedMethod\"),\n"
2350 "\t\tprotected_members => memberlist(\"ClassProtectedMember\"),\n"
2351 "\t\tprivate_typedefs => memberlist(\"ClassPrivateTypedef\"),\n"
2352 "\t\tprivate_methods => memberlist(\"ClassPrivateMethod\"),\n"
2353 "\t\tprivate_members => memberlist(\"ClassPrivateMember\"),\n"
2354 "\t\tdetailed =>\n"
2355 "\t\t [ \"hash\", \"ClassDetailed\",\n"
2356 "\t\t {\n"
2357 "\t\t doc => [ \"doc\", \"ClassDetailedDoc\" ],\n"
2358 "\t\t },\n"
2359 "\t\t ],\n"
2360 "\t },\n"
2361 "\t ],\n"
2362 "\t ],\n"
2363 "\tgroups =>\n"
2364 "\t [ \"list\", \"Groups\",\n"
2365 "\t [ \"hash\", \"Group\",\n"
2366 "\t {\n"
2367 "\t\tname => [ \"string\", \"GroupName\" ],\n"
2368 "\t\ttitle => [ \"string\", \"GroupTitle\" ],\n"
2369 "\t\tfiles =>\n"
2370 "\t\t [ \"list\", \"Files\",\n"
2371 "\t\t [ \"hash\", \"File\",\n"
2372 "\t\t {\n"
2373 "\t\t name => [ \"string\", \"Filename\" ]\n"
2374 "\t\t }\n"
2375 "\t\t ],\n"
2376 "\t\t ],\n"
2377 "\t\tclasses =>\n"
2378 "\t\t [ \"list\", \"Classes\",\n"
2379 "\t\t [ \"hash\", \"Class\",\n"
2380 "\t\t {\n"
2381 "\t\t name => [ \"string\", \"Classname\" ]\n"
2382 "\t\t }\n"
2383 "\t\t ],\n"
2384 "\t\t ],\n"
2385 "\t\tnamespaces =>\n"
2386 "\t\t [ \"list\", \"Namespaces\",\n"
2387 "\t\t [ \"hash\", \"Namespace\",\n"
2388 "\t\t {\n"
2389 "\t\t name => [ \"string\", \"NamespaceName\" ]\n"
2390 "\t\t }\n"
2391 "\t\t ],\n"
2392 "\t\t ],\n"
2393 "\t\tpages =>\n"
2394 "\t\t [ \"list\", \"Pages\",\n"
2395 "\t\t [ \"hash\", \"Page\","
2396 "\t\t {\n"
2397 "\t\t title => [ \"string\", \"PageName\" ]\n"
2398 "\t\t }\n"
2399 "\t\t ],\n"
2400 "\t\t ],\n"
2401 "\t\tgroups =>\n"
2402 "\t\t [ \"list\", \"Groups\",\n"
2403 "\t\t [ \"hash\", \"Group\",\n"
2404 "\t\t {\n"
2405 "\t\t title => [ \"string\", \"GroupName\" ]\n"
2406 "\t\t }\n"
2407 "\t\t ],\n"
2408 "\t\t ],\n"
2409 "\t\tfunctions => memberlist(\"GroupFunction\"),\n"
2410 "\t\tdetailed =>\n"
2411 "\t\t [ \"hash\", \"GroupDetailed\",\n"
2412 "\t\t {\n"
2413 "\t\t doc => [ \"doc\", \"GroupDetailedDoc\" ],\n"
2414 "\t\t },\n"
2415 "\t\t ],\n"
2416 "\t }\n"
2417 "\t ],\n"
2418 "\t ],\n"
2419 " },\n"
2420 " ];\n"
2421 "\n"
2422 "1;\n";
2423
2424 return true;
2425}

References createOutputFile(), and pathDoxyStructurePM.

Referenced by generate().

◆ generateMakefile()

bool PerlModGenerator::generateMakefile ( )

Definition at line 2523 of file perlmodgen.cpp.

2524{
2525 std::ofstream makefileStream;
2526 if (!createOutputFile(makefileStream, pathMakefile))
2527 return false;
2528
2529 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2530 QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
2531
2532 makefileStream <<
2533 ".PHONY: default clean" << (perlmodLatex ? " pdf" : "") << "\n"
2534 "default: " << (perlmodLatex ? "pdf" : "clean") << "\n"
2535 "\n"
2536 "include " << pathDoxyRules << "\n"
2537 "\n"
2538 "clean: clean-perlmod\n";
2539
2540 if (perlmodLatex) {
2541 makefileStream <<
2542 "pdf: $(" << prefix << "DOXYLATEX_PDF)\n"
2543 "dvi: $(" << prefix << "DOXYLATEX_DVI)\n";
2544 }
2545
2546 return true;
2547}

References Config_getBool, Config_getString, createOutputFile(), pathDoxyRules, pathMakefile, and prefix.

Referenced by generate().

◆ generatePerlModForClass()

void PerlModGenerator::generatePerlModForClass ( const ClassDef * cd)

Definition at line 1719 of file perlmodgen.cpp.

1720{
1721 // + brief description
1722 // + detailed description
1723 // + template argument list(s)
1724 // - include file
1725 // + member groups
1726 // + inheritance diagram
1727 // + list of direct super classes
1728 // + list of direct sub classes
1729 // + list of inner classes
1730 // + collaboration diagram
1731 // + list of all members
1732 // + user defined member sections
1733 // + standard member sections
1734 // + detailed member documentation
1735 // - examples using the class
1736
1737 if (cd->isReference()) return; // skip external references.
1738 if (cd->isAnonymous()) return; // skip anonymous compounds.
1739 if (cd->isImplicitTemplateInstance()) return; // skip generated template instances.
1740
1741 m_output.openHash()
1742 .addFieldQuotedString("name", cd->name());
1743 /* DGA: fix # #7547 Perlmod does not generate "kind" information to discriminate struct/union */
1744 m_output.addFieldQuotedString("kind", cd->compoundTypeString());
1745
1746 if (!cd->baseClasses().empty())
1747 {
1748 m_output.openList("base");
1749 for (const auto &bcd : cd->baseClasses())
1750 {
1751 m_output.openHash()
1752 .addFieldQuotedString("name", bcd.classDef->displayName())
1753 .addFieldQuotedString("virtualness", getVirtualnessName(bcd.virt))
1754 .addFieldQuotedString("protection", getProtectionName(bcd.prot))
1755 .closeHash();
1756 }
1757 m_output.closeList();
1758 }
1759
1760 if (!cd->subClasses().empty())
1761 {
1762 m_output.openList("derived");
1763 for (const auto &bcd : cd->subClasses())
1764 {
1765 m_output.openHash()
1766 .addFieldQuotedString("name", bcd.classDef->displayName())
1767 .addFieldQuotedString("virtualness", getVirtualnessName(bcd.virt))
1768 .addFieldQuotedString("protection", getProtectionName(bcd.prot))
1769 .closeHash();
1770 }
1771 m_output.closeList();
1772 }
1773
1774 {
1775 m_output.openList("inner");
1776 for (const auto &icd : cd->getClasses())
1777 m_output.openHash()
1778 .addFieldQuotedString("name", icd->name())
1779 .closeHash();
1780 m_output.closeList();
1781 }
1782
1784
1788
1789 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubTypes()),"public_typedefs");
1790 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubMethods()),"public_methods");
1791 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubAttribs()),"public_members");
1792 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubSlots()),"public_slots");
1793 generatePerlModSection(cd,cd->getMemberList(MemberListType::Signals()),"signals");
1794 generatePerlModSection(cd,cd->getMemberList(MemberListType::DcopMethods()),"dcop_methods");
1795 generatePerlModSection(cd,cd->getMemberList(MemberListType::Properties()),"properties");
1796 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubStaticMethods()),"public_static_methods");
1797 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubStaticAttribs()),"public_static_members");
1798 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProTypes()),"protected_typedefs");
1799 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProMethods()),"protected_methods");
1800 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProAttribs()),"protected_members");
1801 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProSlots()),"protected_slots");
1802 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProStaticMethods()),"protected_static_methods");
1803 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProStaticAttribs()),"protected_static_members");
1804 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriTypes()),"private_typedefs");
1805 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriMethods()),"private_methods");
1806 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriAttribs()),"private_members");
1807 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriSlots()),"private_slots");
1808 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriStaticMethods()),"private_static_methods");
1809 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriStaticAttribs()),"private_static_members");
1810 generatePerlModSection(cd,cd->getMemberList(MemberListType::Friends()),"friend_methods");
1811 generatePerlModSection(cd,cd->getMemberList(MemberListType::Related()),"related_methods");
1812
1813 addPerlModDocBlock(m_output,"brief",cd->getDefFileName(),cd->getDefLine(),cd,nullptr,cd->briefDescription());
1814 addPerlModDocBlock(m_output,"detailed",cd->getDefFileName(),cd->getDefLine(),cd,nullptr,cd->documentation());
1815
1816#if 0
1817 DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
1818 if (!inheritanceGraph.isTrivial())
1819 {
1820 t << " <inheritancegraph>" << endl;
1821 inheritanceGraph.writePerlMod(t);
1822 t << " </inheritancegraph>" << endl;
1823 }
1824 DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation);
1825 if (!collaborationGraph.isTrivial())
1826 {
1827 t << " <collaborationgraph>" << endl;
1828 collaborationGraph.writePerlMod(t);
1829 t << " </collaborationgraph>" << endl;
1830 }
1831 t << " <location file=\""
1832 << cd->getDefFileName() << "\" line=\""
1833 << cd->getDefLine() << "\"";
1834 if (cd->getStartBodyLine()!=-1)
1835 {
1836 t << " bodystart=\"" << cd->getStartBodyLine() << "\" bodyend=\""
1837 << cd->getEndBodyLine() << "\"";
1838 }
1839 t << "/>" << endl;
1840#endif
1841
1842 m_output.closeHash();
1843}
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 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 int getEndBodyLine() 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 int getStartBodyLine() const =0
virtual bool isReference() const =0
void generatePerlModSection(const Definition *d, MemberList *ml, const QCString &name, const QCString &header=QCString())
void addIncludeInfo(const IncludeInfo *ii)
void addListOfAllMembers(const ClassDef *cd)
void generatePerlUserDefinedSection(const Definition *d, const MemberGroupList &mgl)
static void addTemplateList(const ClassDef *cd, PerlModOutput &output)
static void addPerlModDocBlock(PerlModOutput &output, const QCString &name, const QCString &fileName, int lineNr, const Definition *scope, const MemberDef *md, const QCString &text)

References addIncludeInfo(), addListOfAllMembers(), addPerlModDocBlock(), addTemplateList(), ClassDef::baseClasses(), Definition::briefDescription(), ClassDef::compoundTypeString(), Definition::documentation(), generatePerlModSection(), generatePerlUserDefinedSection(), ClassDef::getClasses(), Definition::getDefFileName(), Definition::getDefLine(), Definition::getEndBodyLine(), ClassDef::getMemberGroups(), ClassDef::getMemberList(), getProtectionName(), Definition::getStartBodyLine(), getVirtualnessName(), ClassDef::includeInfo(), Definition::isAnonymous(), ClassDef::isImplicitTemplateInstance(), Definition::isReference(), DotClassGraph::isTrivial(), m_output, Definition::name(), and ClassDef::subClasses().

Referenced by generatePerlModOutput().

◆ generatePerlModForConcept()

void PerlModGenerator::generatePerlModForConcept ( const ConceptDef * cd)

Definition at line 1845 of file perlmodgen.cpp.

1846{
1847 if (cd->isReference()) return; // skip external references
1848
1849 m_output.openHash()
1850 .addFieldQuotedString("name", cd->name());
1851
1854 m_output.addFieldQuotedString("initializer", cd->initializer());
1855 addPerlModDocBlock(m_output,"brief",cd->getDefFileName(),cd->getDefLine(),nullptr,nullptr,cd->briefDescription());
1856 addPerlModDocBlock(m_output,"detailed",cd->getDefFileName(),cd->getDefLine(),nullptr,nullptr,cd->documentation());
1857
1858 m_output.closeHash();
1859}
virtual QCString initializer() const =0
virtual const IncludeInfo * includeInfo() const =0

References addIncludeInfo(), addPerlModDocBlock(), addTemplateList(), Definition::briefDescription(), Definition::documentation(), Definition::getDefFileName(), Definition::getDefLine(), ConceptDef::includeInfo(), ConceptDef::initializer(), Definition::isReference(), m_output, and Definition::name().

Referenced by generatePerlModOutput().

◆ generatePerlModForFile()

void PerlModGenerator::generatePerlModForFile ( const FileDef * fd)

Definition at line 1972 of file perlmodgen.cpp.

1973{
1974 // + includes files
1975 // + includedby files
1976 // - include graph
1977 // - included by graph
1978 // - contained class definitions
1979 // - contained namespace definitions
1980 // - member groups
1981 // + normal members
1982 // + brief desc
1983 // + detailed desc
1984 // - source code
1985 // - location
1986 // - number of lines
1987
1988 if (fd->isReference()) return;
1989
1990 m_output.openHash()
1991 .addFieldQuotedString("name", fd->name());
1992
1993 m_output.openList("includes");
1994 for (const auto &inc: fd->includeFileList())
1995 {
1996 m_output.openHash()
1997 .addFieldQuotedString("name", inc.includeName);
1998 if (inc.fileDef && !inc.fileDef->isReference())
1999 {
2000 m_output.addFieldQuotedString("ref", inc.fileDef->getOutputFileBase());
2001 }
2002 m_output.closeHash();
2003 }
2004 m_output.closeList();
2005
2006 m_output.openList("included_by");
2007 for (const auto &inc : fd->includedByFileList())
2008 {
2009 m_output.openHash()
2010 .addFieldQuotedString("name", inc.includeName);
2011 if (inc.fileDef && !inc.fileDef->isReference())
2012 {
2013 m_output.addFieldQuotedString("ref", inc.fileDef->getOutputFileBase());
2014 }
2015 m_output.closeHash();
2016 }
2017 m_output.closeList();
2018
2020
2021 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecDefineMembers()),"defines");
2022 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
2023 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
2024 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecEnumMembers()),"enums");
2025 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecFuncMembers()),"functions");
2026 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecVarMembers()),"variables");
2027
2028 addPerlModDocBlock(m_output,"brief",fd->getDefFileName(),fd->getDefLine(),nullptr,nullptr,fd->briefDescription());
2029 addPerlModDocBlock(m_output,"detailed",fd->getDefFileName(),fd->getDefLine(),nullptr,nullptr,fd->documentation());
2030
2031 m_output.closeHash();
2032}
virtual const MemberGroupList & getMemberGroups() const =0
virtual const IncludeInfoList & includeFileList() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual const IncludeInfoList & includedByFileList() const =0

References addPerlModDocBlock(), Definition::briefDescription(), Definition::documentation(), generatePerlModSection(), generatePerlUserDefinedSection(), Definition::getDefFileName(), Definition::getDefLine(), FileDef::getMemberGroups(), FileDef::getMemberList(), FileDef::includedByFileList(), FileDef::includeFileList(), Definition::isReference(), m_output, and Definition::name().

Referenced by generatePerlModOutput().

◆ generatePerlModForGroup()

void PerlModGenerator::generatePerlModForGroup ( const GroupDef * gd)

Definition at line 2034 of file perlmodgen.cpp.

2035{
2036 // + members
2037 // + member groups
2038 // + files
2039 // + classes
2040 // + namespaces
2041 // - packages
2042 // + pages
2043 // + child groups
2044 // - examples
2045 // + brief description
2046 // + detailed description
2047
2048 if (gd->isReference()) return; // skip external references
2049
2050 m_output.openHash()
2051 .addFieldQuotedString("name", gd->name())
2052 .addFieldQuotedString("title", gd->groupTitle());
2053
2054 if (!gd->getFiles().empty())
2055 {
2056 m_output.openList("files");
2057 for (const auto &fd : gd->getFiles())
2058 m_output.openHash()
2059 .addFieldQuotedString("name", fd->name())
2060 .closeHash();
2061 m_output.closeList();
2062 }
2063
2064 if (!gd->getClasses().empty())
2065 {
2066 m_output.openList("classes");
2067 for (const auto &cd : gd->getClasses())
2068 m_output.openHash()
2069 .addFieldQuotedString("name", cd->name())
2070 .closeHash();
2071 m_output.closeList();
2072 }
2073
2074 if (!gd->getConcepts().empty())
2075 {
2076 m_output.openList("concepts");
2077 for (const auto &cd : gd->getConcepts())
2078 m_output.openHash()
2079 .addFieldQuotedString("name", cd->name())
2080 .closeHash();
2081 m_output.closeList();
2082 }
2083
2084 if (!gd->getModules().empty())
2085 {
2086 m_output.openList("modules");
2087 for (const auto &mod : gd->getModules())
2088 m_output.openHash()
2089 .addFieldQuotedString("name", mod->name())
2090 .closeHash();
2091 m_output.closeList();
2092 }
2093
2094 if (!gd->getNamespaces().empty())
2095 {
2096 m_output.openList("namespaces");
2097 for (const auto &nd : gd->getNamespaces())
2098 m_output.openHash()
2099 .addFieldQuotedString("name", nd->name())
2100 .closeHash();
2101 m_output.closeList();
2102 }
2103
2104 if (!gd->getPages().empty())
2105 {
2106 m_output.openList("pages");
2107 for (const auto &pd : gd->getPages())
2108 m_output.openHash()
2109 .addFieldQuotedString("title", pd->title())
2110 .closeHash();
2111 m_output.closeList();
2112 }
2113
2114 if (!gd->getSubGroups().empty())
2115 {
2116 m_output.openList("groups");
2117 for (const auto &sgd : gd->getSubGroups())
2118 m_output.openHash()
2119 .addFieldQuotedString("title", sgd->groupTitle())
2120 .closeHash();
2121 m_output.closeList();
2122 }
2123
2125
2126 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecDefineMembers()),"defines");
2127 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
2128 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
2129 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecEnumMembers()),"enums");
2130 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecFuncMembers()),"functions");
2131 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecVarMembers()),"variables");
2132
2133 addPerlModDocBlock(m_output,"brief",gd->getDefFileName(),gd->getDefLine(),nullptr,nullptr,gd->briefDescription());
2134 addPerlModDocBlock(m_output,"detailed",gd->getDefFileName(),gd->getDefLine(),nullptr,nullptr,gd->documentation());
2135
2136 m_output.closeHash();
2137}
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
bool empty() const
Definition linkedmap.h:374

References addPerlModDocBlock(), Definition::briefDescription(), Definition::documentation(), LinkedRefMap< T, Hash, KeyEqual, Map >::empty(), generatePerlModSection(), generatePerlUserDefinedSection(), GroupDef::getClasses(), GroupDef::getConcepts(), Definition::getDefFileName(), Definition::getDefLine(), GroupDef::getFiles(), GroupDef::getMemberGroups(), GroupDef::getMemberList(), GroupDef::getModules(), GroupDef::getNamespaces(), GroupDef::getPages(), GroupDef::getSubGroups(), GroupDef::groupTitle(), Definition::isReference(), m_output, and Definition::name().

Referenced by generatePerlModOutput().

◆ generatePerlModForMember()

void PerlModGenerator::generatePerlModForMember ( const MemberDef * md,
const Definition *  )

Definition at line 1455 of file perlmodgen.cpp.

1456{
1457 // + declaration/definition arg lists
1458 // + reimplements
1459 // + reimplementedBy
1460 // + exceptions
1461 // + const/volatile specifiers
1462 // - examples
1463 // - source definition
1464 // - source references
1465 // - source referenced by
1466 // - body code
1467 // - template arguments
1468 // (templateArguments(), definitionTemplateParameterLists())
1469
1470 QCString memType;
1471 QCString name;
1472 bool isFunc=FALSE;
1473 switch (md->memberType())
1474 {
1475 case MemberType::Define: memType="define"; break;
1476 case MemberType::EnumValue: memType="enumvalue"; break;
1477 case MemberType::Property: memType="property"; break;
1478 case MemberType::Variable: memType="variable"; break;
1479 case MemberType::Typedef: memType="typedef"; break;
1480 case MemberType::Enumeration: memType="enum"; break;
1481 case MemberType::Function: memType="function"; isFunc=TRUE; break;
1482 case MemberType::Signal: memType="signal"; isFunc=TRUE; break;
1483 case MemberType::Friend: memType="friend"; isFunc=TRUE; break;
1484 case MemberType::DCOP: memType="dcop"; isFunc=TRUE; break;
1485 case MemberType::Slot: memType="slot"; isFunc=TRUE; break;
1486 case MemberType::Event: memType="event"; break;
1487 case MemberType::Interface: memType="interface"; break;
1488 case MemberType::Service: memType="service"; break;
1489 case MemberType::Sequence: memType="sequence"; break;
1490 case MemberType::Dictionary: memType="dictionary"; break;
1491 }
1492
1493 bool isFortran = md->getLanguage()==SrcLangExt::Fortran;
1494 name = md->name();
1495 if (md->isAnonymous()) name = "__unnamed" + name.right(name.length() - 1)+"__";
1496
1497 m_output.openHash()
1498 .addFieldQuotedString("kind", memType)
1499 .addFieldQuotedString("name", name)
1500 .addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
1501 .addFieldQuotedString("protection", getProtectionName(md->protection()))
1502 .addFieldBoolean("static", md->isStatic());
1503
1505 addPerlModDocBlock(m_output,"detailed",md->getDefFileName(),md->getDefLine(),md->getOuterScope(),md,md->documentation());
1506 if (md->memberType()!=MemberType::Define &&
1508 m_output.addFieldQuotedString("type", md->typeString());
1509
1510 const ArgumentList &al = md->argumentList();
1511 if (isFunc) //function
1512 {
1513 m_output.addFieldBoolean("const", al.constSpecifier())
1514 .addFieldBoolean("volatile", al.volatileSpecifier());
1515
1516 m_output.openList("parameters");
1517 const ArgumentList &declAl = md->declArgumentList();
1518 if (!declAl.empty())
1519 {
1520 auto defIt = al.begin();
1521 for (const Argument &a : declAl)
1522 {
1523 const Argument *defArg = nullptr;
1524 if (defIt!=al.end())
1525 {
1526 defArg = &(*defIt);
1527 ++defIt;
1528 }
1529 m_output.openHash();
1530
1531 if (!a.name.isEmpty())
1532 m_output.addFieldQuotedString("declaration_name", a.name);
1533
1534 if (defArg && !defArg->name.isEmpty() && defArg->name!=a.name)
1535 m_output.addFieldQuotedString("definition_name", defArg->name);
1536
1537 if (isFortran && defArg && !defArg->type.isEmpty())
1538 m_output.addFieldQuotedString("type", defArg->type);
1539 else if (!a.type.isEmpty())
1540 m_output.addFieldQuotedString("type", a.type);
1541
1542 if (!a.array.isEmpty())
1543 m_output.addFieldQuotedString("array", a.array);
1544
1545 if (!a.defval.isEmpty())
1546 m_output.addFieldQuotedString("default_value", a.defval);
1547
1548 if (!a.attrib.isEmpty())
1549 m_output.addFieldQuotedString("attributes", a.attrib);
1550
1551 m_output.closeHash();
1552 }
1553 }
1554 m_output.closeList();
1555 }
1556 else if (md->memberType()==MemberType::Define &&
1557 md->argsString()!=nullptr) // define
1558 {
1559 m_output.openList("parameters");
1560 for (const Argument &a : al)
1561 {
1562 m_output.openHash()
1563 .addFieldQuotedString("name", a.type)
1564 .closeHash();
1565 }
1566 m_output.closeList();
1567 }
1568 else if (md->argsString()!=nullptr)
1569 {
1570 m_output.addFieldQuotedString("arguments", md->argsString());
1571 }
1572
1573 if (!md->initializer().isEmpty())
1574 m_output.addFieldQuotedString("initializer", md->initializer());
1575
1576 if (!md->excpString().isEmpty())
1577 m_output.addFieldQuotedString("exceptions", md->excpString());
1578
1579 if (md->memberType()==MemberType::Enumeration) // enum
1580 {
1581 const MemberVector &enumFields = md->enumFieldList();
1582 m_output.addFieldQuotedString("type", md->enumBaseType());
1583 if (!enumFields.empty())
1584 {
1585 m_output.openList("values");
1586 for (const auto &emd : enumFields)
1587 {
1588 m_output.openHash()
1589 .addFieldQuotedString("name", emd->name());
1590
1591 if (!emd->initializer().isEmpty())
1592 m_output.addFieldQuotedString("initializer", emd->initializer());
1593
1594 addPerlModDocBlock(m_output,"brief",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->briefDescription());
1595
1596 addPerlModDocBlock(m_output,"detailed",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->documentation());
1597
1598 m_output.closeHash();
1599 }
1600 m_output.closeList();
1601 }
1602 }
1603
1604 if (md->memberType() == MemberType::Variable && !md->bitfieldString().isEmpty())
1605 {
1606 QCString bitfield = md->bitfieldString();
1607 if (bitfield.at(0) == ':') bitfield = bitfield.mid(1);
1608 m_output.addFieldQuotedString("bitfield", bitfield);
1609 }
1610
1611 const MemberDef *rmd = md->reimplements();
1612 if (rmd)
1613 m_output.openHash("reimplements")
1614 .addFieldQuotedString("name", rmd->name())
1615 .closeHash();
1616
1617 const MemberVector &rbml = md->reimplementedBy();
1618 if (!rbml.empty())
1619 {
1620 m_output.openList("reimplemented_by");
1621 for (const auto &rbmd : rbml)
1622 m_output.openHash()
1623 .addFieldQuotedString("name", rbmd->name())
1624 .closeHash();
1625 m_output.closeList();
1626 }
1627
1628 m_output.closeHash();
1629}
iterator end()
Definition arguments.h:94
bool constSpecifier() const
Definition arguments.h:111
bool empty() const
Definition arguments.h:99
iterator begin()
Definition arguments.h:93
bool volatileSpecifier() const
Definition arguments.h:112
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual Definition * getOuterScope() const =0
virtual QCString typeString() const =0
virtual QCString enumBaseType() const =0
virtual QCString excpString() 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 const ArgumentList & declArgumentList() const =0
virtual const QCString & initializer() const =0
bool empty() const noexcept
Definition memberlist.h:60
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:153
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition qcstring.h:226
char & at(size_t i)
Returns a reference to the character at index i.
Definition qcstring.h:578
QCString right(size_t len) const
Definition qcstring.h:219
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34
QCString type
Definition arguments.h:42
QCString name
Definition arguments.h:44
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Dictionary
Definition types.h:568
@ Interface
Definition types.h:565
@ Sequence
Definition types.h:567
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554
@ Service
Definition types.h:566

References addPerlModDocBlock(), MemberDef::argsString(), MemberDef::argumentList(), QCString::at(), ArgumentList::begin(), MemberDef::bitfieldString(), Definition::briefDescription(), ArgumentList::constSpecifier(), DCOP, MemberDef::declArgumentList(), Define, Dictionary, Definition::documentation(), ArgumentList::empty(), MemberVector::empty(), ArgumentList::end(), MemberDef::enumBaseType(), Enumeration, MemberDef::enumFieldList(), EnumValue, Event, MemberDef::excpString(), FALSE, Friend, Function, Definition::getDefFileName(), Definition::getDefLine(), Definition::getLanguage(), Definition::getOuterScope(), getProtectionName(), getVirtualnessName(), MemberDef::initializer(), Interface, Definition::isAnonymous(), QCString::isEmpty(), MemberDef::isStatic(), QCString::length(), m_output, MemberDef::memberType(), QCString::mid(), Argument::name, Definition::name(), Property, MemberDef::protection(), MemberDef::reimplementedBy(), MemberDef::reimplements(), QCString::right(), Sequence, Service, Signal, Slot, TRUE, Argument::type, Typedef, MemberDef::typeString(), Variable, MemberDef::virtualness(), and ArgumentList::volatileSpecifier().

Referenced by generatePerlModSection(), and generatePerlUserDefinedSection().

◆ generatePerlModForModule()

void PerlModGenerator::generatePerlModForModule ( const ModuleDef * mod)

Definition at line 1861 of file perlmodgen.cpp.

1862{
1863 // + contained class definitions
1864 // + contained concept definitions
1865 // + member groups
1866 // + normal members
1867 // + brief desc
1868 // + detailed desc
1869 // + location (file_id, line, column)
1870 // - exports
1871 // + used files
1872
1873 if (mod->isReference()) return; // skip external references
1874
1875 m_output.openHash()
1876 .addFieldQuotedString("name", mod->name());
1877
1879
1880 if (!mod->getClasses().empty())
1881 {
1882 m_output.openList("classes");
1883 for (const auto &cd : mod->getClasses())
1884 m_output.openHash()
1885 .addFieldQuotedString("name", cd->name())
1886 .closeHash();
1887 m_output.closeList();
1888 }
1889
1890 if (!mod->getConcepts().empty())
1891 {
1892 m_output.openList("concepts");
1893 for (const auto &cd : mod->getConcepts())
1894 m_output.openHash()
1895 .addFieldQuotedString("name", cd->name())
1896 .closeHash();
1897 m_output.closeList();
1898 }
1899
1900 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
1901 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecEnumMembers()),"enums");
1902 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecFuncMembers()),"functions");
1903 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecVarMembers()),"variables");
1904
1905 addPerlModDocBlock(m_output,"brief",mod->getDefFileName(),mod->getDefLine(),nullptr,nullptr,mod->briefDescription());
1906 addPerlModDocBlock(m_output,"detailed",mod->getDefFileName(),mod->getDefLine(),nullptr,nullptr,mod->documentation());
1907
1908 if (!mod->getUsedFiles().empty())
1909 {
1910 m_output.openList("files");
1911 for (const auto &fd : mod->getUsedFiles())
1912 m_output.openHash()
1913 .addFieldQuotedString("name", fd->name())
1914 .closeHash();
1915 m_output.closeList();
1916 }
1917
1918 m_output.closeHash();
1919}
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

References addPerlModDocBlock(), Definition::briefDescription(), Definition::documentation(), LinkedRefMap< T, Hash, KeyEqual, Map >::empty(), generatePerlModSection(), generatePerlUserDefinedSection(), ModuleDef::getClasses(), ModuleDef::getConcepts(), Definition::getDefFileName(), Definition::getDefLine(), ModuleDef::getMemberGroups(), ModuleDef::getMemberList(), ModuleDef::getUsedFiles(), Definition::isReference(), m_output, and Definition::name().

Referenced by generatePerlModOutput().

◆ generatePerlModForNamespace()

void PerlModGenerator::generatePerlModForNamespace ( const NamespaceDef * nd)

Definition at line 1921 of file perlmodgen.cpp.

1922{
1923 // + contained class definitions
1924 // + contained namespace definitions
1925 // + member groups
1926 // + normal members
1927 // + brief desc
1928 // + detailed desc
1929 // + location
1930 // - files containing (parts of) the namespace definition
1931
1932 if (nd->isReference()) return; // skip external references
1933
1934 m_output.openHash()
1935 .addFieldQuotedString("name", nd->name());
1936
1937 if (!nd->getClasses().empty())
1938 {
1939 m_output.openList("classes");
1940 for (const auto &cd : nd->getClasses())
1941 m_output.openHash()
1942 .addFieldQuotedString("name", cd->name())
1943 .closeHash();
1944 m_output.closeList();
1945 }
1946
1947 if (!nd->getNamespaces().empty())
1948 {
1949 m_output.openList("namespaces");
1950 for (const auto &ind : nd->getNamespaces())
1951 m_output.openHash()
1952 .addFieldQuotedString("name", ind->name())
1953 .closeHash();
1954 m_output.closeList();
1955 }
1956
1958
1959 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecDefineMembers()),"defines");
1960 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
1961 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
1962 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecEnumMembers()),"enums");
1963 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecFuncMembers()),"functions");
1964 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecVarMembers()),"variables");
1965
1966 addPerlModDocBlock(m_output,"brief",nd->getDefFileName(),nd->getDefLine(),nullptr,nullptr,nd->briefDescription());
1967 addPerlModDocBlock(m_output,"detailed",nd->getDefFileName(),nd->getDefLine(),nullptr,nullptr,nd->documentation());
1968
1969 m_output.closeHash();
1970}
virtual MemberList * getMemberList(MemberListType lt) const =0
virtual NamespaceLinkedRefMap getNamespaces() const =0
virtual ClassLinkedRefMap getClasses() const =0
virtual const MemberGroupList & getMemberGroups() const =0

References addPerlModDocBlock(), Definition::briefDescription(), Definition::documentation(), LinkedRefMap< T, Hash, KeyEqual, Map >::empty(), generatePerlModSection(), generatePerlUserDefinedSection(), NamespaceDef::getClasses(), Definition::getDefFileName(), Definition::getDefLine(), NamespaceDef::getMemberGroups(), NamespaceDef::getMemberList(), NamespaceDef::getNamespaces(), Definition::isReference(), m_output, and Definition::name().

Referenced by generatePerlModOutput().

◆ generatePerlModForPage()

void PerlModGenerator::generatePerlModForPage ( PageDef * pi)

Definition at line 2139 of file perlmodgen.cpp.

2140{
2141 // + name
2142 // + title
2143 // + documentation
2144
2145 if (pd->isReference()) return;
2146
2147 m_output.openHash()
2148 .addFieldQuotedString("name", pd->name());
2149
2150 const SectionInfo *si = SectionManager::instance().find(pd->name());
2151 if (si)
2152 m_output.addFieldQuotedString("title4", filterTitle(si->title()));
2153
2154 addPerlModDocBlock(m_output,"detailed",pd->docFile(),pd->docLine(),nullptr,nullptr,pd->documentation());
2155 m_output.closeHash();
2156}
const T * find(const std::string &key) const
Definition linkedmap.h:47
QCString title() const
Definition section.h:69
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:175
QCString filterTitle(const QCString &title)
Definition util.cpp:6086

References addPerlModDocBlock(), Definition::docFile(), Definition::docLine(), Definition::documentation(), filterTitle(), LinkedMap< T, Hash, KeyEqual, Map >::find(), SectionManager::instance(), Definition::isReference(), m_output, Definition::name(), and SectionInfo::title().

Referenced by generatePerlModOutput().

◆ generatePerlModOutput()

bool PerlModGenerator::generatePerlModOutput ( )

Definition at line 2158 of file perlmodgen.cpp.

2159{
2160 std::ofstream outputFileStream;
2161 if (!createOutputFile(outputFileStream, pathDoxyDocsPM))
2162 return false;
2163
2164 PerlModOutputStream outputStream(outputFileStream);
2165 m_output.setPerlModOutputStream(&outputStream);
2166 m_output.add("$doxydocs=").openHash();
2167
2168 m_output.openList("classes");
2169 for (const auto &cd : *Doxygen::classLinkedMap)
2170 generatePerlModForClass(cd.get());
2171 m_output.closeList();
2172
2173 m_output.openList("concepts");
2174 for (const auto &cd : *Doxygen::conceptLinkedMap)
2175 generatePerlModForConcept(cd.get());
2176 m_output.closeList();
2177
2178 m_output.openList("modules");
2179 for (const auto &mod : ModuleManager::instance().modules())
2180 generatePerlModForModule(mod.get());
2181 m_output.closeList();
2182
2183 m_output.openList("namespaces");
2184 for (const auto &nd : *Doxygen::namespaceLinkedMap)
2186 m_output.closeList();
2187
2188 m_output.openList("files");
2189 for (const auto &fn : *Doxygen::inputNameLinkedMap)
2190 {
2191 for (const auto &fd : *fn)
2192 {
2193 generatePerlModForFile(fd.get());
2194 }
2195 }
2196 m_output.closeList();
2197
2198 m_output.openList("groups");
2199 for (const auto &gd : *Doxygen::groupLinkedMap)
2200 {
2201 generatePerlModForGroup(gd.get());
2202 }
2203 m_output.closeList();
2204
2205 m_output.openList("pages");
2206 for (const auto &pd : *Doxygen::pageLinkedMap)
2207 {
2208 generatePerlModForPage(pd.get());
2209 }
2211 {
2213 }
2214 m_output.closeList();
2215
2216 m_output.closeHash().add(";\n1;\n");
2217 m_output.reset();
2218 return true;
2219}
static NamespaceLinkedMap * namespaceLinkedMap
Definition doxygen.h:115
static ConceptLinkedMap * conceptLinkedMap
Definition doxygen.h:98
static std::unique_ptr< PageDef > mainPage
Definition doxygen.h:101
static FileNameLinkedMap * inputNameLinkedMap
Definition doxygen.h:105
static ClassLinkedMap * classLinkedMap
Definition doxygen.h:96
static PageLinkedMap * pageLinkedMap
Definition doxygen.h:100
static GroupLinkedMap * groupLinkedMap
Definition doxygen.h:114
static ModuleManager & instance()
void generatePerlModForPage(PageDef *pi)
void generatePerlModForClass(const ClassDef *cd)
void generatePerlModForModule(const ModuleDef *mod)
void generatePerlModForNamespace(const NamespaceDef *nd)
void generatePerlModForGroup(const GroupDef *gd)
void generatePerlModForFile(const FileDef *fd)
void generatePerlModForConcept(const ConceptDef *cd)

References Doxygen::classLinkedMap, Doxygen::conceptLinkedMap, createOutputFile(), generatePerlModForClass(), generatePerlModForConcept(), generatePerlModForFile(), generatePerlModForGroup(), generatePerlModForModule(), generatePerlModForNamespace(), generatePerlModForPage(), Doxygen::groupLinkedMap, Doxygen::inputNameLinkedMap, ModuleManager::instance(), m_output, Doxygen::mainPage, Doxygen::namespaceLinkedMap, Doxygen::pageLinkedMap, and pathDoxyDocsPM.

Referenced by generate().

◆ generatePerlModSection()

void PerlModGenerator::generatePerlModSection ( const Definition * d,
MemberList * ml,
const QCString & name,
const QCString & header = QCString() )

Definition at line 1631 of file perlmodgen.cpp.

1633{
1634 if (ml==nullptr) return; // empty list
1635
1636 m_output.openHash(name);
1637
1638 if (!header.isEmpty())
1639 m_output.addFieldQuotedString("header", header);
1640
1641 m_output.openList("members");
1642 for (const auto &md : *ml)
1643 {
1645 }
1646 m_output.closeList()
1647 .closeHash();
1648}
void generatePerlModForMember(const MemberDef *md, const Definition *)

References generatePerlModForMember(), QCString::isEmpty(), and m_output.

Referenced by generatePerlModForClass(), generatePerlModForFile(), generatePerlModForGroup(), generatePerlModForModule(), and generatePerlModForNamespace().

◆ generatePerlUserDefinedSection()

void PerlModGenerator::generatePerlUserDefinedSection ( const Definition * d,
const MemberGroupList & mgl )

Definition at line 1675 of file perlmodgen.cpp.

1676{
1677 if (!mgl.empty())
1678 {
1679 m_output.openList("user_defined");
1680 for (const auto &mg : mgl)
1681 {
1682 m_output.openHash();
1683 if (!mg->header().isEmpty())
1684 {
1685 m_output.addFieldQuotedString("header", mg->header());
1686 }
1687
1688 if (!mg->members().empty())
1689 {
1690 m_output.openList("members");
1691 for (const auto &md : mg->members())
1692 {
1694 }
1695 m_output.closeList();
1696 }
1697 m_output.closeHash();
1698 }
1699 m_output.closeList();
1700 }
1701}

References generatePerlModForMember(), and m_output.

Referenced by generatePerlModForClass(), generatePerlModForFile(), generatePerlModForGroup(), generatePerlModForModule(), and generatePerlModForNamespace().

Member Data Documentation

◆ m_output

◆ pathDoxyDocsPM

QCString PerlModGenerator::pathDoxyDocsPM

Definition at line 1419 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyRules(), and generatePerlModOutput().

◆ pathDoxyDocsTex

QCString PerlModGenerator::pathDoxyDocsTex

Definition at line 1413 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyLatexTex(), and generateDoxyRules().

◆ pathDoxyFormatTex

QCString PerlModGenerator::pathDoxyFormatTex

Definition at line 1414 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyFormatTex(), and generateDoxyRules().

◆ pathDoxyLatexDVI

QCString PerlModGenerator::pathDoxyLatexDVI

Definition at line 1416 of file perlmodgen.cpp.

Referenced by generate(), and generateDoxyRules().

◆ pathDoxyLatexPDF

QCString PerlModGenerator::pathDoxyLatexPDF

Definition at line 1417 of file perlmodgen.cpp.

Referenced by generate(), and generateDoxyRules().

◆ pathDoxyLatexPL

QCString PerlModGenerator::pathDoxyLatexPL

Definition at line 1420 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyLatexPL(), and generateDoxyRules().

◆ pathDoxyLatexStructurePL

QCString PerlModGenerator::pathDoxyLatexStructurePL

Definition at line 1421 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyLatexStructurePL(), and generateDoxyRules().

◆ pathDoxyLatexTex

QCString PerlModGenerator::pathDoxyLatexTex

Definition at line 1415 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyLatexTex(), and generateDoxyRules().

◆ pathDoxyRules

QCString PerlModGenerator::pathDoxyRules

Definition at line 1422 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyRules(), and generateMakefile().

◆ pathDoxyStructurePM

QCString PerlModGenerator::pathDoxyStructurePM

Definition at line 1412 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyRules(), and generateDoxyStructurePM().

◆ pathDoxyStructureTex

QCString PerlModGenerator::pathDoxyStructureTex

Definition at line 1418 of file perlmodgen.cpp.

Referenced by generate(), generateDoxyFormatTex(), and generateDoxyRules().

◆ pathMakefile

QCString PerlModGenerator::pathMakefile

Definition at line 1423 of file perlmodgen.cpp.

Referenced by generate(), and generateMakefile().


The documentation for this class was generated from the following file: