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 1425 of file perlmodgen.cpp.

Constructor & Destructor Documentation

◆ PerlModGenerator()

PerlModGenerator::PerlModGenerator ( bool pretty)
inline

Definition at line 1444 of file perlmodgen.cpp.

1444: m_output(pretty) { }
PerlModOutput m_output

References m_output.

Member Function Documentation

◆ addIncludeInfo()

void PerlModGenerator::addIncludeInfo ( const IncludeInfo * ii)

Definition at line 1722 of file perlmodgen.cpp.

1723{
1724 if (ii)
1725 {
1726 QCString nm = ii->includeName;
1727 if (nm.isEmpty() && ii->fileDef) nm = ii->fileDef->docName();
1728 if (!nm.isEmpty())
1729 {
1730 m_output.openHash("includes");
1731 m_output.addFieldBoolean("local", ii->kind==IncludeKind::IncludeLocal || ii->kind==IncludeKind::ImportLocal)
1732 .addFieldQuotedString("name", nm)
1733 .closeHash();
1734 }
1735 }
1736}
virtual const QCString & docName() const =0
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
@ 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 1669 of file perlmodgen.cpp.

1670{
1671 m_output.openList("all_members");
1672 for (auto &mni : cd->memberNameInfoLinkedMap())
1673 {
1674 for (auto &mi : *mni)
1675 {
1676 const MemberDef *md=mi->memberDef();
1677 const ClassDef *mcd=md->getClassDef();
1678
1679 m_output.openHash()
1680 .addFieldQuotedString("name", md->name())
1681 .addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
1682 .addFieldQuotedString("protection", getProtectionName(mi->prot()));
1683
1684 if (!mi->ambiguityResolutionScope().isEmpty())
1685 m_output.addFieldQuotedString("ambiguity_scope", mi->ambiguityResolutionScope());
1686
1687 m_output.addFieldQuotedString("scope", mcd->name())
1688 .closeHash();
1689 }
1690 }
1691 m_output.closeList();
1692}
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 2251 of file perlmodgen.cpp.

2252{
2253 std::string outputDirectory = Config_getString(OUTPUT_DIRECTORY).str();
2254 perlModDir.setPath(outputDirectory+"/perlmod");
2255 if (!perlModDir.exists() && !perlModDir.mkdir(outputDirectory+"/perlmod"))
2256 {
2257 err("Could not create perlmod directory in {}\n",outputDirectory);
2258 return false;
2259 }
2260 return true;
2261}
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 2240 of file perlmodgen.cpp.

2241{
2243 if (!f.is_open())
2244 {
2245 err("Cannot open file {} for writing!\n", s);
2246 return false;
2247 }
2248 return true;
2249}
std::ofstream openOutputStream(const QCString &name, bool append=false)
Definition portable.cpp:649

References err, and Portable::openOutputStream().

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

◆ generate()

void PerlModGenerator::generate ( )

Definition at line 2910 of file perlmodgen.cpp.

2911{
2912 // + classes
2913 // + namespaces
2914 // + files
2915 // - packages
2916 // + groups
2917 // + related pages
2918 // - examples
2919
2920 Dir perlModDir;
2921 if (!createOutputDir(perlModDir))
2922 return;
2923
2924 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2925
2926 QCString perlModAbsPath = perlModDir.absPath();
2927 pathDoxyDocsPM = perlModAbsPath + "/DoxyDocs.pm";
2928 pathDoxyStructurePM = perlModAbsPath + "/DoxyStructure.pm";
2929 pathMakefile = perlModAbsPath + "/Makefile";
2930 pathDoxyRules = perlModAbsPath + "/doxyrules.make";
2931
2932 if (perlmodLatex) {
2933 pathDoxyStructureTex = perlModAbsPath + "/doxystructure.tex";
2934 pathDoxyFormatTex = perlModAbsPath + "/doxyformat.tex";
2935 pathDoxyLatexTex = perlModAbsPath + "/doxylatex.tex";
2936 pathDoxyLatexDVI = perlModAbsPath + "/doxylatex.dvi";
2937 pathDoxyLatexPDF = perlModAbsPath + "/doxylatex.pdf";
2938 pathDoxyDocsTex = perlModAbsPath + "/doxydocs.tex";
2939 pathDoxyLatexPL = perlModAbsPath + "/doxylatex.pl";
2940 pathDoxyLatexStructurePL = perlModAbsPath + "/doxylatex-structure.pl";
2941 }
2942
2943 if (!(generatePerlModOutput()
2945 && generateMakefile()
2946 && generateDoxyRules()))
2947 return;
2948
2949 if (perlmodLatex) {
2954 return;
2955 }
2956}
std::string absPath() const
Definition dir.cpp:364
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 2723 of file perlmodgen.cpp.

2724{
2725 std::ofstream doxyFormatTexStream;
2726 if (!createOutputFile(doxyFormatTexStream, pathDoxyFormatTex))
2727 return false;
2728
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"
2733 "\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"
2738 "\n"
2739 "\\input{" << pathDoxyStructureTex << "}\n"
2740 "\n"
2741 "\\newbox\\BoxA\n"
2742 "\\dimendef\\DimenA=151\\relax\n"
2743 "\\dimendef\\DimenB=152\\relax\n"
2744 "\\countdef\\ZoneDepth=151\\relax\n"
2745 "\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"
2750 "\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"
2753 "\n"
2754 "\\def\\Zone#1#2#3{%\n"
2755 "\\Defcs{Test#1}{#2}%\n"
2756 "\\Defcs{Emit#1}{#3}%\n"
2757 "\\Defcs{#1}{%\n"
2758 "\\advance\\ZoneDepth1\\relax\n"
2759 "\\Letcs{Mode\\number\\ZoneDepth}0\\relax\n"
2760 "\\Letcs{Present\\number\\ZoneDepth}0\\relax\n"
2761 "\\Cs{Test#1}\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"
2768 "\\Cs{Emit#1}\n"
2769 "\\advance\\ZoneDepth-1\\relax\\fi\n"
2770 "\\advance\\ZoneDepth1\\relax\\fi\n"
2771 "\\advance\\ZoneDepth-1\\relax}}\n"
2772 "\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"
2779 "\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"
2784 "%\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"
2788 "\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"
2793 "%\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"
2797 "\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"
2803 "%\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"
2809 "##1%\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"
2815 "##1}\n"
2816 "\n"
2817 "\\Defcs{#1ParamName}##1{\\textit{##1}}\n"
2818 "\\Defcs{#1Param}{\\Cs{field#1ParamType}{} \\Cs{field#1ParamName}}\n"
2819 "\\Defcs{#1ParamsSep}{, }\n"
2820 "\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"
2825 "%\n"
2826 "\\Zone{#1s}{\\Cs{field#1List}}{\\subsubsection{#2}\\Cs{field#1List}}%\n"
2827 "\\Member{#1}{%\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"
2830 "\n"
2831 "\\def\\FileDetailed{\\fieldFileDetailedDoc\\par}\n"
2832 "\\def\\ClassDetailed{\\fieldClassDetailedDoc\\par}\n"
2833 "\n"
2834 "\\def\\FileSubzones{\\fieldFileTypedefs\\fieldFileVariables\\fieldFileFunctions}\n"
2835 "\n"
2836 "\\def\\ClassSubzones{%\n"
2837 "\\fieldClassPublicTypedefs\\fieldClassPublicMembers\\fieldClassPublicMethods\n"
2838 "\\fieldClassProtectedTypedefs\\fieldClassProtectedMembers\\fieldClassProtectedMethods\n"
2839 "\\fieldClassPrivateTypedefs\\fieldClassPrivateMembers\\fieldClassPrivateMethods}\n"
2840 "\n"
2841 "\\Member{Page}{\\subsection{\\fieldPageName}\\fieldPageDetailedDoc}\n"
2842 "\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"
2847 "\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"
2858 "\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"
2862 "\n"
2863 "\\newlength{\\oldparskip}\n"
2864 "\\newlength{\\oldparindent}\n"
2865 "\\newlength{\\oldfboxrule}\n"
2866 "\n"
2867 "\\ZoneDepth0\\relax\n"
2868 "\\Letcs{Mode0}1\\relax\n"
2869 "\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";
2881
2882 return true;
2883}
bool createOutputFile(std::ofstream &f, const QCString &s)

References createOutputFile(), pathDoxyFormatTex, and pathDoxyStructureTex.

Referenced by generate().

◆ generateDoxyLatexPL()

bool PerlModGenerator::generateDoxyLatexPL ( )

Definition at line 2601 of file perlmodgen.cpp.

2602{
2603 std::ofstream doxyLatexPLStream;
2604 if (!createOutputFile(doxyLatexPLStream, pathDoxyLatexPL))
2605 return false;
2606
2607 doxyLatexPLStream <<
2608 "use DoxyStructure;\n"
2609 "use DoxyDocs;\n"
2610 "\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"
2620 "\tprint $text;\n"
2621 "}\n"
2622 "\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"
2637 "\t\t\t} else {\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"
2641 "\t\t\t}\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"
2664 "\t\t \t}\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"
2668 "\t\t}\n"
2669 "\t}\n"
2670 "}\n"
2671 "\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"
2684 "\t\t} else {\n"
2685 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2686 "\t\t}\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"
2694 "\t\t\t} else {\n"
2695 "#\t\t\t\t\tprint \"\\\\\" . $subname . \"Empty%\\n\";\n"
2696 "\t\t\t}\n"
2697 "\t\t\tprint \"}%\\n\";\n"
2698 "\t\t}\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"
2707 "\t\t\t\t}\n"
2708 "\t\t\t\tgenerate($subitem, $$node[2]);\n"
2709 "\t\t\t\t$index++;\n"
2710 "\t\t\t}\n"
2711 "\t\t\tprint \"}%\\n\";\n"
2712 "\t\t} else {\n"
2713 "#\t\t\tprint \"\\\\\" . $name . \"Empty%\\n\";\n"
2714 "\t\t}\n"
2715 "\t}\n"
2716 "}\n"
2717 "\n"
2718 "generate($doxydocs, $doxystructure);\n";
2719
2720 return true;
2721}

References createOutputFile(), and pathDoxyLatexPL.

Referenced by generate().

◆ generateDoxyLatexStructurePL()

bool PerlModGenerator::generateDoxyLatexStructurePL ( )

Definition at line 2568 of file perlmodgen.cpp.

2569{
2570 std::ofstream doxyLatexStructurePLStream;
2571 if (!createOutputFile(doxyLatexStructurePLStream, pathDoxyLatexStructurePL))
2572 return false;
2573
2574 doxyLatexStructurePLStream <<
2575 "use DoxyStructure;\n"
2576 "\n"
2577 "sub process($) {\n"
2578 "\tmy $node = $_[0];\n"
2579 "\tmy ($type, $name) = @$node[0, 1];\n"
2580 "\tmy $command;\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"
2587 "\t\t}\n"
2588 "\t}\n"
2589 "\telsif ($type eq \"list\") {\n"
2590 "\t\t$command = \"List\";\n"
2591 "\t\tprocess($$node[2]);\n"
2592 "\t}\n"
2593 "\tprint \"\\\\\" . $command . \"Node{\" . $name . \"}%\\n\";\n"
2594 "}\n"
2595 "\n"
2596 "process($doxystructure);\n";
2597
2598 return true;
2599}

References createOutputFile(), and pathDoxyLatexStructurePL.

Referenced by generate().

◆ generateDoxyLatexTex()

bool PerlModGenerator::generateDoxyLatexTex ( )

Definition at line 2885 of file perlmodgen.cpp.

2886{
2887 std::ofstream doxyLatexTexStream;
2888 if (!createOutputFile(doxyLatexTexStream, pathDoxyLatexTex))
2889 return false;
2890
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"
2898 "\n"
2899 "\\input{doxyformat}\n"
2900 "\n"
2901 "\\begin{document}\n"
2902 "\\input{" << pathDoxyDocsTex << "}\n"
2903 "\\sloppy\n"
2904 "\\EmitDoxyDocs\n"
2905 "\\end{document}\n";
2906
2907 return true;
2908}

References createOutputFile(), pathDoxyDocsTex, and pathDoxyLatexTex.

Referenced by generate().

◆ generateDoxyRules()

bool PerlModGenerator::generateDoxyRules ( )

Definition at line 2446 of file perlmodgen.cpp.

2447{
2448 std::ofstream doxyRulesStream;
2449 if (!createOutputFile(doxyRulesStream, pathDoxyRules))
2450 return false;
2451
2452 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2453 QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
2454
2455 doxyRulesStream <<
2456 prefix << "DOXY_EXEC_PATH = " << pathDoxyExec << "\n" <<
2457 prefix << "DOXYFILE = " << pathDoxyfile << "\n" <<
2458 prefix << "DOXYDOCS_PM = " << pathDoxyDocsPM << "\n" <<
2459 prefix << "DOXYSTRUCTURE_PM = " << pathDoxyStructurePM << "\n" <<
2460 prefix << "DOXYRULES = " << pathDoxyRules << "\n";
2461 if (perlmodLatex)
2462 doxyRulesStream <<
2463 prefix << "DOXYLATEX_PL = " << pathDoxyLatexPL << "\n" <<
2464 prefix << "DOXYLATEXSTRUCTURE_PL = " << pathDoxyLatexStructurePL << "\n" <<
2465 prefix << "DOXYSTRUCTURE_TEX = " << pathDoxyStructureTex << "\n" <<
2466 prefix << "DOXYDOCS_TEX = " << pathDoxyDocsTex << "\n" <<
2467 prefix << "DOXYFORMAT_TEX = " << pathDoxyFormatTex << "\n" <<
2468 prefix << "DOXYLATEX_TEX = " << pathDoxyLatexTex << "\n" <<
2469 prefix << "DOXYLATEX_DVI = " << pathDoxyLatexDVI << "\n" <<
2470 prefix << "DOXYLATEX_PDF = " << pathDoxyLatexPDF << "\n";
2471
2472 doxyRulesStream <<
2473 "\n"
2474 ".PHONY: clean-perlmod\n"
2475 "clean-perlmod::\n"
2476 "\trm -f $(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
2477 "\t$(" << prefix << "DOXYDOCS_PM)";
2478 if (perlmodLatex)
2479 doxyRulesStream <<
2480 " \\\n"
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";
2491
2492 doxyRulesStream <<
2493 "$(" << prefix << "DOXYRULES) \\\n"
2494 "$(" << prefix << "DOXYMAKEFILE) \\\n"
2495 "$(" << prefix << "DOXYSTRUCTURE_PM) \\\n"
2496 "$(" << prefix << "DOXYDOCS_PM)";
2497 if (perlmodLatex) {
2498 doxyRulesStream <<
2499 " \\\n"
2500 "$(" << prefix << "DOXYLATEX_PL) \\\n"
2501 "$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
2502 "$(" << prefix << "DOXYFORMAT_TEX) \\\n"
2503 "$(" << prefix << "DOXYLATEX_TEX)";
2504 }
2505 doxyRulesStream <<
2506 ": \\\n"
2507 "\t$(" << prefix << "DOXYFILE)\n"
2508 "\tcd $(" << prefix << "DOXY_EXEC_PATH) ; doxygen \"$<\"\n";
2509
2510 if (perlmodLatex) {
2511 doxyRulesStream <<
2512 "\n"
2513 "$(" << prefix << "DOXYDOCS_TEX): \\\n"
2514 "$(" << prefix << "DOXYLATEX_PL) \\\n"
2515 "$(" << prefix << "DOXYDOCS_PM)\n"
2516 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2517 "\n"
2518 "$(" << prefix << "DOXYSTRUCTURE_TEX): \\\n"
2519 "$(" << prefix << "DOXYLATEXSTRUCTURE_PL) \\\n"
2520 "$(" << prefix << "DOXYSTRUCTURE_PM)\n"
2521 "\tperl -I\"$(<D)\" \"$<\" >\"$@\"\n"
2522 "\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"
2529 "\n"
2530 "$(" << prefix << "DOXYLATEX_PDF): \\\n"
2531 "$(" << prefix << "DOXYLATEX_TEX)\n"
2532 "\tpdflatex -interaction=nonstopmode \"$<\"\n"
2533 "\n"
2534 "$(" << prefix << "DOXYLATEX_DVI): \\\n"
2535 "$(" << prefix << "DOXYLATEX_TEX)\n"
2536 "\tlatex -interaction=nonstopmode \"$<\"\n";
2537 }
2538
2539 return true;
2540}
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 2263 of file perlmodgen.cpp.

2264{
2265 std::ofstream doxyModelPMStream;
2266 if (!createOutputFile(doxyModelPMStream, pathDoxyStructurePM))
2267 return false;
2268
2269 doxyModelPMStream <<
2270 "sub memberlist($) {\n"
2271 " my $prefix = $_[0];\n"
2272 " return\n"
2273 "\t[ \"hash\", $prefix . \"s\",\n"
2274 "\t {\n"
2275 "\t members =>\n"
2276 "\t [ \"list\", $prefix . \"List\",\n"
2277 "\t\t[ \"hash\", $prefix,\n"
2278 "\t\t {\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"
2288 "\t\t\t {\n"
2289 "\t\t\t declaration_name => [ \"string\", $prefix . \"ParamName\" ],\n"
2290 "\t\t\t type => [ \"string\", $prefix . \"ParamType\" ],\n"
2291 "\t\t\t },\n"
2292 "\t\t\t],\n"
2293 "\t\t ],\n"
2294 "\t\t detailed =>\n"
2295 "\t\t [ \"hash\", $prefix . \"Detailed\",\n"
2296 "\t\t\t{\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"
2303 "\t\t\t\t{\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"
2307 "\t\t\t\t\t{\n"
2308 "\t\t\t\t\t name => [ \"string\", $prefix . \"PDParamName\" ],\n"
2309 "\t\t\t\t\t},\n"
2310 "\t\t\t\t ],\n"
2311 "\t\t\t\t ],\n"
2312 "\t\t\t\t doc => [ \"doc\", $prefix . \"PDDoc\" ],\n"
2313 "\t\t\t\t},\n"
2314 "\t\t\t ],\n"
2315 "\t\t\t ],\n"
2316 "\t\t\t},\n"
2317 "\t\t ],\n"
2318 "\t\t },\n"
2319 "\t\t],\n"
2320 "\t ],\n"
2321 "\t },\n"
2322 "\t];\n"
2323 "}\n"
2324 "\n"
2325 "$doxystructure =\n"
2326 " [ \"hash\", \"Root\",\n"
2327 " {\n"
2328 "\tfiles =>\n"
2329 "\t [ \"list\", \"Files\",\n"
2330 "\t [ \"hash\", \"File\",\n"
2331 "\t {\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"
2336 "\t\tdetailed =>\n"
2337 "\t\t [ \"hash\", \"FileDetailed\",\n"
2338 "\t\t {\n"
2339 "\t\t doc => [ \"doc\", \"FileDetailedDoc\" ],\n"
2340 "\t\t },\n"
2341 "\t\t ],\n"
2342 "\t },\n"
2343 "\t ],\n"
2344 "\t ],\n"
2345 "\tpages =>\n"
2346 "\t [ \"list\", \"Pages\",\n"
2347 "\t [ \"hash\", \"Page\",\n"
2348 "\t {\n"
2349 "\t\tname => [ \"string\", \"PageName\" ],\n"
2350 "\t\tdetailed =>\n"
2351 "\t\t [ \"hash\", \"PageDetailed\",\n"
2352 "\t\t {\n"
2353 "\t\t doc => [ \"doc\", \"PageDetailedDoc\" ],\n"
2354 "\t\t },\n"
2355 "\t\t ],\n"
2356 "\t },\n"
2357 "\t ],\n"
2358 "\t ],\n"
2359 "\tclasses =>\n"
2360 "\t [ \"list\", \"Classes\",\n"
2361 "\t [ \"hash\", \"Class\",\n"
2362 "\t {\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"
2373 "\t\tdetailed =>\n"
2374 "\t\t [ \"hash\", \"ClassDetailed\",\n"
2375 "\t\t {\n"
2376 "\t\t doc => [ \"doc\", \"ClassDetailedDoc\" ],\n"
2377 "\t\t },\n"
2378 "\t\t ],\n"
2379 "\t },\n"
2380 "\t ],\n"
2381 "\t ],\n"
2382 "\tgroups =>\n"
2383 "\t [ \"list\", \"Groups\",\n"
2384 "\t [ \"hash\", \"Group\",\n"
2385 "\t {\n"
2386 "\t\tname => [ \"string\", \"GroupName\" ],\n"
2387 "\t\ttitle => [ \"string\", \"GroupTitle\" ],\n"
2388 "\t\tfiles =>\n"
2389 "\t\t [ \"list\", \"Files\",\n"
2390 "\t\t [ \"hash\", \"File\",\n"
2391 "\t\t {\n"
2392 "\t\t name => [ \"string\", \"Filename\" ]\n"
2393 "\t\t }\n"
2394 "\t\t ],\n"
2395 "\t\t ],\n"
2396 "\t\tclasses =>\n"
2397 "\t\t [ \"list\", \"Classes\",\n"
2398 "\t\t [ \"hash\", \"Class\",\n"
2399 "\t\t {\n"
2400 "\t\t name => [ \"string\", \"Classname\" ]\n"
2401 "\t\t }\n"
2402 "\t\t ],\n"
2403 "\t\t ],\n"
2404 "\t\tnamespaces =>\n"
2405 "\t\t [ \"list\", \"Namespaces\",\n"
2406 "\t\t [ \"hash\", \"Namespace\",\n"
2407 "\t\t {\n"
2408 "\t\t name => [ \"string\", \"NamespaceName\" ]\n"
2409 "\t\t }\n"
2410 "\t\t ],\n"
2411 "\t\t ],\n"
2412 "\t\tpages =>\n"
2413 "\t\t [ \"list\", \"Pages\",\n"
2414 "\t\t [ \"hash\", \"Page\","
2415 "\t\t {\n"
2416 "\t\t title => [ \"string\", \"PageName\" ]\n"
2417 "\t\t }\n"
2418 "\t\t ],\n"
2419 "\t\t ],\n"
2420 "\t\tgroups =>\n"
2421 "\t\t [ \"list\", \"Groups\",\n"
2422 "\t\t [ \"hash\", \"Group\",\n"
2423 "\t\t {\n"
2424 "\t\t title => [ \"string\", \"GroupName\" ]\n"
2425 "\t\t }\n"
2426 "\t\t ],\n"
2427 "\t\t ],\n"
2428 "\t\tfunctions => memberlist(\"GroupFunction\"),\n"
2429 "\t\tdetailed =>\n"
2430 "\t\t [ \"hash\", \"GroupDetailed\",\n"
2431 "\t\t {\n"
2432 "\t\t doc => [ \"doc\", \"GroupDetailedDoc\" ],\n"
2433 "\t\t },\n"
2434 "\t\t ],\n"
2435 "\t }\n"
2436 "\t ],\n"
2437 "\t ],\n"
2438 " },\n"
2439 " ];\n"
2440 "\n"
2441 "1;\n";
2442
2443 return true;
2444}

References createOutputFile(), and pathDoxyStructurePM.

Referenced by generate().

◆ generateMakefile()

bool PerlModGenerator::generateMakefile ( )

Definition at line 2542 of file perlmodgen.cpp.

2543{
2544 std::ofstream makefileStream;
2545 if (!createOutputFile(makefileStream, pathMakefile))
2546 return false;
2547
2548 bool perlmodLatex = Config_getBool(PERLMOD_LATEX);
2549 QCString prefix = Config_getString(PERLMOD_MAKEVAR_PREFIX);
2550
2551 makefileStream <<
2552 ".PHONY: default clean" << (perlmodLatex ? " pdf" : "") << "\n"
2553 "default: " << (perlmodLatex ? "pdf" : "clean") << "\n"
2554 "\n"
2555 "include " << pathDoxyRules << "\n"
2556 "\n"
2557 "clean: clean-perlmod\n";
2558
2559 if (perlmodLatex) {
2560 makefileStream <<
2561 "pdf: $(" << prefix << "DOXYLATEX_PDF)\n"
2562 "dvi: $(" << prefix << "DOXYLATEX_DVI)\n";
2563 }
2564
2565 return true;
2566}

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

Referenced by generate().

◆ generatePerlModForClass()

void PerlModGenerator::generatePerlModForClass ( const ClassDef * cd)

Definition at line 1738 of file perlmodgen.cpp.

1739{
1740 // + brief description
1741 // + detailed description
1742 // + template argument list(s)
1743 // - include file
1744 // + member groups
1745 // + inheritance diagram
1746 // + list of direct super classes
1747 // + list of direct sub classes
1748 // + list of inner classes
1749 // + collaboration diagram
1750 // + list of all members
1751 // + user defined member sections
1752 // + standard member sections
1753 // + detailed member documentation
1754 // - examples using the class
1755
1756 if (cd->isReference()) return; // skip external references.
1757 if (cd->isAnonymous()) return; // skip anonymous compounds.
1758 if (cd->isImplicitTemplateInstance()) return; // skip generated template instances.
1759
1760 m_output.openHash()
1761 .addFieldQuotedString("name", cd->name());
1762 /* DGA: fix # #7547 Perlmod does not generate "kind" information to discriminate struct/union */
1763 m_output.addFieldQuotedString("kind", cd->compoundTypeString());
1764
1765 if (!cd->baseClasses().empty())
1766 {
1767 m_output.openList("base");
1768 for (const auto &bcd : cd->baseClasses())
1769 {
1770 m_output.openHash()
1771 .addFieldQuotedString("name", bcd.classDef->displayName())
1772 .addFieldQuotedString("virtualness", getVirtualnessName(bcd.virt))
1773 .addFieldQuotedString("protection", getProtectionName(bcd.prot))
1774 .closeHash();
1775 }
1776 m_output.closeList();
1777 }
1778
1779 if (!cd->subClasses().empty())
1780 {
1781 m_output.openList("derived");
1782 for (const auto &bcd : cd->subClasses())
1783 {
1784 m_output.openHash()
1785 .addFieldQuotedString("name", bcd.classDef->displayName())
1786 .addFieldQuotedString("virtualness", getVirtualnessName(bcd.virt))
1787 .addFieldQuotedString("protection", getProtectionName(bcd.prot))
1788 .closeHash();
1789 }
1790 m_output.closeList();
1791 }
1792
1793 {
1794 m_output.openList("inner");
1795 for (const auto &icd : cd->getClasses())
1796 m_output.openHash()
1797 .addFieldQuotedString("name", icd->name())
1798 .closeHash();
1799 m_output.closeList();
1800 }
1801
1803
1807
1808 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubTypes()),"public_typedefs");
1809 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubMethods()),"public_methods");
1810 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubAttribs()),"public_members");
1811 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubSlots()),"public_slots");
1812 generatePerlModSection(cd,cd->getMemberList(MemberListType::Signals()),"signals");
1813 generatePerlModSection(cd,cd->getMemberList(MemberListType::DcopMethods()),"dcop_methods");
1814 generatePerlModSection(cd,cd->getMemberList(MemberListType::Properties()),"properties");
1815 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubStaticMethods()),"public_static_methods");
1816 generatePerlModSection(cd,cd->getMemberList(MemberListType::PubStaticAttribs()),"public_static_members");
1817 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProTypes()),"protected_typedefs");
1818 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProMethods()),"protected_methods");
1819 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProAttribs()),"protected_members");
1820 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProSlots()),"protected_slots");
1821 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProStaticMethods()),"protected_static_methods");
1822 generatePerlModSection(cd,cd->getMemberList(MemberListType::ProStaticAttribs()),"protected_static_members");
1823 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriTypes()),"private_typedefs");
1824 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriMethods()),"private_methods");
1825 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriAttribs()),"private_members");
1826 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriSlots()),"private_slots");
1827 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriStaticMethods()),"private_static_methods");
1828 generatePerlModSection(cd,cd->getMemberList(MemberListType::PriStaticAttribs()),"private_static_members");
1829 generatePerlModSection(cd,cd->getMemberList(MemberListType::Friends()),"friend_methods");
1830 generatePerlModSection(cd,cd->getMemberList(MemberListType::Related()),"related_methods");
1831
1832 addPerlModDocBlock(m_output,"brief",cd->getDefFileName(),cd->getDefLine(),cd,nullptr,cd->briefDescription());
1833 addPerlModDocBlock(m_output,"detailed",cd->getDefFileName(),cd->getDefLine(),cd,nullptr,cd->documentation());
1834
1835#if 0
1836 DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
1837 if (!inheritanceGraph.isTrivial())
1838 {
1839 t << " <inheritancegraph>" << endl;
1840 inheritanceGraph.writePerlMod(t);
1841 t << " </inheritancegraph>" << endl;
1842 }
1843 DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation);
1844 if (!collaborationGraph.isTrivial())
1845 {
1846 t << " <collaborationgraph>" << endl;
1847 collaborationGraph.writePerlMod(t);
1848 t << " </collaborationgraph>" << endl;
1849 }
1850 t << " <location file=\""
1851 << cd->getDefFileName() << "\" line=\""
1852 << cd->getDefLine() << "\"";
1853 if (cd->getStartBodyLine()!=-1)
1854 {
1855 t << " bodystart=\"" << cd->getStartBodyLine() << "\" bodyend=\""
1856 << cd->getEndBodyLine() << "\"";
1857 }
1858 t << "/>" << endl;
1859#endif
1860
1861 m_output.closeHash();
1862}
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 1864 of file perlmodgen.cpp.

1865{
1866 if (cd->isReference()) return; // skip external references
1867
1868 m_output.openHash()
1869 .addFieldQuotedString("name", cd->name());
1870
1873 m_output.addFieldQuotedString("initializer", cd->initializer());
1874 addPerlModDocBlock(m_output,"brief",cd->getDefFileName(),cd->getDefLine(),nullptr,nullptr,cd->briefDescription());
1875 addPerlModDocBlock(m_output,"detailed",cd->getDefFileName(),cd->getDefLine(),nullptr,nullptr,cd->documentation());
1876
1877 m_output.closeHash();
1878}
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 1991 of file perlmodgen.cpp.

1992{
1993 // + includes files
1994 // + includedby files
1995 // - include graph
1996 // - included by graph
1997 // - contained class definitions
1998 // - contained namespace definitions
1999 // - member groups
2000 // + normal members
2001 // + brief desc
2002 // + detailed desc
2003 // - source code
2004 // - location
2005 // - number of lines
2006
2007 if (fd->isReference()) return;
2008
2009 m_output.openHash()
2010 .addFieldQuotedString("name", fd->name());
2011
2012 m_output.openList("includes");
2013 for (const auto &inc: fd->includeFileList())
2014 {
2015 m_output.openHash()
2016 .addFieldQuotedString("name", inc.includeName);
2017 if (inc.fileDef && !inc.fileDef->isReference())
2018 {
2019 m_output.addFieldQuotedString("ref", inc.fileDef->getOutputFileBase());
2020 }
2021 m_output.closeHash();
2022 }
2023 m_output.closeList();
2024
2025 m_output.openList("included_by");
2026 for (const auto &inc : fd->includedByFileList())
2027 {
2028 m_output.openHash()
2029 .addFieldQuotedString("name", inc.includeName);
2030 if (inc.fileDef && !inc.fileDef->isReference())
2031 {
2032 m_output.addFieldQuotedString("ref", inc.fileDef->getOutputFileBase());
2033 }
2034 m_output.closeHash();
2035 }
2036 m_output.closeList();
2037
2039
2040 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecDefineMembers()),"defines");
2041 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
2042 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
2043 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecEnumMembers()),"enums");
2044 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecFuncMembers()),"functions");
2045 generatePerlModSection(fd,fd->getMemberList(MemberListType::DecVarMembers()),"variables");
2046
2047 addPerlModDocBlock(m_output,"brief",fd->getDefFileName(),fd->getDefLine(),nullptr,nullptr,fd->briefDescription());
2048 addPerlModDocBlock(m_output,"detailed",fd->getDefFileName(),fd->getDefLine(),nullptr,nullptr,fd->documentation());
2049
2050 m_output.closeHash();
2051}
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 2053 of file perlmodgen.cpp.

2054{
2055 // + members
2056 // + member groups
2057 // + files
2058 // + classes
2059 // + namespaces
2060 // - packages
2061 // + pages
2062 // + child groups
2063 // - examples
2064 // + brief description
2065 // + detailed description
2066
2067 if (gd->isReference()) return; // skip external references
2068
2069 m_output.openHash()
2070 .addFieldQuotedString("name", gd->name())
2071 .addFieldQuotedString("title", gd->groupTitle());
2072
2073 if (!gd->getFiles().empty())
2074 {
2075 m_output.openList("files");
2076 for (const auto &fd : gd->getFiles())
2077 m_output.openHash()
2078 .addFieldQuotedString("name", fd->name())
2079 .closeHash();
2080 m_output.closeList();
2081 }
2082
2083 if (!gd->getClasses().empty())
2084 {
2085 m_output.openList("classes");
2086 for (const auto &cd : gd->getClasses())
2087 m_output.openHash()
2088 .addFieldQuotedString("name", cd->name())
2089 .closeHash();
2090 m_output.closeList();
2091 }
2092
2093 if (!gd->getConcepts().empty())
2094 {
2095 m_output.openList("concepts");
2096 for (const auto &cd : gd->getConcepts())
2097 m_output.openHash()
2098 .addFieldQuotedString("name", cd->name())
2099 .closeHash();
2100 m_output.closeList();
2101 }
2102
2103 if (!gd->getModules().empty())
2104 {
2105 m_output.openList("modules");
2106 for (const auto &mod : gd->getModules())
2107 m_output.openHash()
2108 .addFieldQuotedString("name", mod->name())
2109 .closeHash();
2110 m_output.closeList();
2111 }
2112
2113 if (!gd->getNamespaces().empty())
2114 {
2115 m_output.openList("namespaces");
2116 for (const auto &nd : gd->getNamespaces())
2117 m_output.openHash()
2118 .addFieldQuotedString("name", nd->name())
2119 .closeHash();
2120 m_output.closeList();
2121 }
2122
2123 if (!gd->getPages().empty())
2124 {
2125 m_output.openList("pages");
2126 for (const auto &pd : gd->getPages())
2127 m_output.openHash()
2128 .addFieldQuotedString("title", pd->title())
2129 .closeHash();
2130 m_output.closeList();
2131 }
2132
2133 if (!gd->getSubGroups().empty())
2134 {
2135 m_output.openList("groups");
2136 for (const auto &sgd : gd->getSubGroups())
2137 m_output.openHash()
2138 .addFieldQuotedString("title", sgd->groupTitle())
2139 .closeHash();
2140 m_output.closeList();
2141 }
2142
2144
2145 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecDefineMembers()),"defines");
2146 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
2147 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
2148 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecEnumMembers()),"enums");
2149 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecFuncMembers()),"functions");
2150 generatePerlModSection(gd,gd->getMemberList(MemberListType::DecVarMembers()),"variables");
2151
2152 addPerlModDocBlock(m_output,"brief",gd->getDefFileName(),gd->getDefLine(),nullptr,nullptr,gd->briefDescription());
2153 addPerlModDocBlock(m_output,"detailed",gd->getDefFileName(),gd->getDefLine(),nullptr,nullptr,gd->documentation());
2154
2155 m_output.closeHash();
2156}
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 1474 of file perlmodgen.cpp.

1475{
1476 // + declaration/definition arg lists
1477 // + reimplements
1478 // + reimplementedBy
1479 // + exceptions
1480 // + const/volatile specifiers
1481 // - examples
1482 // - source definition
1483 // - source references
1484 // - source referenced by
1485 // - body code
1486 // - template arguments
1487 // (templateArguments(), definitionTemplateParameterLists())
1488
1489 QCString memType;
1490 QCString name;
1491 bool isFunc=FALSE;
1492 switch (md->memberType())
1493 {
1494 case MemberType::Define: memType="define"; break;
1495 case MemberType::EnumValue: memType="enumvalue"; break;
1496 case MemberType::Property: memType="property"; break;
1497 case MemberType::Variable: memType="variable"; break;
1498 case MemberType::Typedef: memType="typedef"; break;
1499 case MemberType::Enumeration: memType="enum"; break;
1500 case MemberType::Function: memType="function"; isFunc=TRUE; break;
1501 case MemberType::Signal: memType="signal"; isFunc=TRUE; break;
1502 case MemberType::Friend: memType="friend"; isFunc=TRUE; break;
1503 case MemberType::DCOP: memType="dcop"; isFunc=TRUE; break;
1504 case MemberType::Slot: memType="slot"; isFunc=TRUE; break;
1505 case MemberType::Event: memType="event"; break;
1506 case MemberType::Interface: memType="interface"; break;
1507 case MemberType::Service: memType="service"; break;
1508 case MemberType::Sequence: memType="sequence"; break;
1509 case MemberType::Dictionary: memType="dictionary"; break;
1510 }
1511
1512 bool isFortran = md->getLanguage()==SrcLangExt::Fortran;
1513 name = md->name();
1514 if (md->isAnonymous()) name = "__unnamed" + name.right(name.length() - 1)+"__";
1515
1516 m_output.openHash()
1517 .addFieldQuotedString("kind", memType)
1518 .addFieldQuotedString("name", name)
1519 .addFieldQuotedString("virtualness", getVirtualnessName(md->virtualness()))
1520 .addFieldQuotedString("protection", getProtectionName(md->protection()))
1521 .addFieldBoolean("static", md->isStatic());
1522
1524 addPerlModDocBlock(m_output,"detailed",md->getDefFileName(),md->getDefLine(),md->getOuterScope(),md,md->documentation());
1525 if (md->memberType()!=MemberType::Define &&
1527 m_output.addFieldQuotedString("type", md->typeString());
1528
1529 const ArgumentList &al = md->argumentList();
1530 if (isFunc) //function
1531 {
1532 m_output.addFieldBoolean("const", al.constSpecifier())
1533 .addFieldBoolean("volatile", al.volatileSpecifier());
1534
1535 m_output.openList("parameters");
1536 const ArgumentList &declAl = md->declArgumentList();
1537 if (!declAl.empty())
1538 {
1539 auto defIt = al.begin();
1540 for (const Argument &a : declAl)
1541 {
1542 const Argument *defArg = nullptr;
1543 if (defIt!=al.end())
1544 {
1545 defArg = &(*defIt);
1546 ++defIt;
1547 }
1548 m_output.openHash();
1549
1550 if (!a.name.isEmpty())
1551 m_output.addFieldQuotedString("declaration_name", a.name);
1552
1553 if (defArg && !defArg->name.isEmpty() && defArg->name!=a.name)
1554 m_output.addFieldQuotedString("definition_name", defArg->name);
1555
1556 if (isFortran && defArg && !defArg->type.isEmpty())
1557 m_output.addFieldQuotedString("type", defArg->type);
1558 else if (!a.type.isEmpty())
1559 m_output.addFieldQuotedString("type", a.type);
1560
1561 if (!a.array.isEmpty())
1562 m_output.addFieldQuotedString("array", a.array);
1563
1564 if (!a.defval.isEmpty())
1565 m_output.addFieldQuotedString("default_value", a.defval);
1566
1567 if (!a.attrib.isEmpty())
1568 m_output.addFieldQuotedString("attributes", a.attrib);
1569
1570 m_output.closeHash();
1571 }
1572 }
1573 m_output.closeList();
1574 }
1575 else if (md->memberType()==MemberType::Define &&
1576 md->argsString()!=nullptr) // define
1577 {
1578 m_output.openList("parameters");
1579 for (const Argument &a : al)
1580 {
1581 m_output.openHash()
1582 .addFieldQuotedString("name", a.type)
1583 .closeHash();
1584 }
1585 m_output.closeList();
1586 }
1587 else if (md->argsString()!=nullptr)
1588 {
1589 m_output.addFieldQuotedString("arguments", md->argsString());
1590 }
1591
1592 if (!md->initializer().isEmpty())
1593 m_output.addFieldQuotedString("initializer", md->initializer());
1594
1595 if (!md->excpString().isEmpty())
1596 m_output.addFieldQuotedString("exceptions", md->excpString());
1597
1598 if (md->memberType()==MemberType::Enumeration) // enum
1599 {
1600 const MemberVector &enumFields = md->enumFieldList();
1601 m_output.addFieldQuotedString("type", md->enumBaseType());
1602 if (!enumFields.empty())
1603 {
1604 m_output.openList("values");
1605 for (const auto &emd : enumFields)
1606 {
1607 m_output.openHash()
1608 .addFieldQuotedString("name", emd->name());
1609
1610 if (!emd->initializer().isEmpty())
1611 m_output.addFieldQuotedString("initializer", emd->initializer());
1612
1613 addPerlModDocBlock(m_output,"brief",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->briefDescription());
1614
1615 addPerlModDocBlock(m_output,"detailed",emd->getDefFileName(),emd->getDefLine(),emd->getOuterScope(),emd,emd->documentation());
1616
1617 m_output.closeHash();
1618 }
1619 m_output.closeList();
1620 }
1621 }
1622
1623 if (md->memberType() == MemberType::Variable && !md->bitfieldString().isEmpty())
1624 {
1625 QCString bitfield = md->bitfieldString();
1626 if (bitfield.at(0) == ':') bitfield = bitfield.mid(1);
1627 m_output.addFieldQuotedString("bitfield", bitfield);
1628 }
1629
1630 const MemberDef *rmd = md->reimplements();
1631 if (rmd)
1632 m_output.openHash("reimplements")
1633 .addFieldQuotedString("name", rmd->name())
1634 .closeHash();
1635
1636 const MemberVector &rbml = md->reimplementedBy();
1637 if (!rbml.empty())
1638 {
1639 m_output.openList("reimplemented_by");
1640 for (const auto &rbmd : rbml)
1641 m_output.openHash()
1642 .addFieldQuotedString("name", rbmd->name())
1643 .closeHash();
1644 m_output.closeList();
1645 }
1646
1647 m_output.closeHash();
1648}
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:166
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition qcstring.h:241
char & at(size_t i)
Returns a reference to the character at index i.
Definition qcstring.h:593
QCString right(size_t len) const
Definition qcstring.h:234
#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 1880 of file perlmodgen.cpp.

1881{
1882 // + contained class definitions
1883 // + contained concept definitions
1884 // + member groups
1885 // + normal members
1886 // + brief desc
1887 // + detailed desc
1888 // + location (file_id, line, column)
1889 // - exports
1890 // + used files
1891
1892 if (mod->isReference()) return; // skip external references
1893
1894 m_output.openHash()
1895 .addFieldQuotedString("name", mod->name());
1896
1898
1899 if (!mod->getClasses().empty())
1900 {
1901 m_output.openList("classes");
1902 for (const auto &cd : mod->getClasses())
1903 m_output.openHash()
1904 .addFieldQuotedString("name", cd->name())
1905 .closeHash();
1906 m_output.closeList();
1907 }
1908
1909 if (!mod->getConcepts().empty())
1910 {
1911 m_output.openList("concepts");
1912 for (const auto &cd : mod->getConcepts())
1913 m_output.openHash()
1914 .addFieldQuotedString("name", cd->name())
1915 .closeHash();
1916 m_output.closeList();
1917 }
1918
1919 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
1920 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecEnumMembers()),"enums");
1921 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecFuncMembers()),"functions");
1922 generatePerlModSection(mod,mod->getMemberList(MemberListType::DecVarMembers()),"variables");
1923
1924 addPerlModDocBlock(m_output,"brief",mod->getDefFileName(),mod->getDefLine(),nullptr,nullptr,mod->briefDescription());
1925 addPerlModDocBlock(m_output,"detailed",mod->getDefFileName(),mod->getDefLine(),nullptr,nullptr,mod->documentation());
1926
1927 if (!mod->getUsedFiles().empty())
1928 {
1929 m_output.openList("files");
1930 for (const auto &fd : mod->getUsedFiles())
1931 m_output.openHash()
1932 .addFieldQuotedString("name", fd->name())
1933 .closeHash();
1934 m_output.closeList();
1935 }
1936
1937 m_output.closeHash();
1938}
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 1940 of file perlmodgen.cpp.

1941{
1942 // + contained class definitions
1943 // + contained namespace definitions
1944 // + member groups
1945 // + normal members
1946 // + brief desc
1947 // + detailed desc
1948 // + location
1949 // - files containing (parts of) the namespace definition
1950
1951 if (nd->isReference()) return; // skip external references
1952
1953 m_output.openHash()
1954 .addFieldQuotedString("name", nd->name());
1955
1956 if (!nd->getClasses().empty())
1957 {
1958 m_output.openList("classes");
1959 for (const auto &cd : nd->getClasses())
1960 m_output.openHash()
1961 .addFieldQuotedString("name", cd->name())
1962 .closeHash();
1963 m_output.closeList();
1964 }
1965
1966 if (!nd->getNamespaces().empty())
1967 {
1968 m_output.openList("namespaces");
1969 for (const auto &ind : nd->getNamespaces())
1970 m_output.openHash()
1971 .addFieldQuotedString("name", ind->name())
1972 .closeHash();
1973 m_output.closeList();
1974 }
1975
1977
1978 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecDefineMembers()),"defines");
1979 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecProtoMembers()),"prototypes");
1980 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecTypedefMembers()),"typedefs");
1981 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecEnumMembers()),"enums");
1982 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecFuncMembers()),"functions");
1983 generatePerlModSection(nd,nd->getMemberList(MemberListType::DecVarMembers()),"variables");
1984
1985 addPerlModDocBlock(m_output,"brief",nd->getDefFileName(),nd->getDefLine(),nullptr,nullptr,nd->briefDescription());
1986 addPerlModDocBlock(m_output,"detailed",nd->getDefFileName(),nd->getDefLine(),nullptr,nullptr,nd->documentation());
1987
1988 m_output.closeHash();
1989}
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 2158 of file perlmodgen.cpp.

2159{
2160 // + name
2161 // + title
2162 // + documentation
2163
2164 if (pd->isReference()) return;
2165
2166 m_output.openHash()
2167 .addFieldQuotedString("name", pd->name());
2168
2169 const SectionInfo *si = SectionManager::instance().find(pd->name());
2170 if (si)
2171 m_output.addFieldQuotedString("title4", filterTitle(si->title()));
2172
2173 addPerlModDocBlock(m_output,"detailed",pd->docFile(),pd->docLine(),nullptr,nullptr,pd->documentation());
2174 m_output.closeHash();
2175}
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:178
QCString filterTitle(const QCString &title)
Definition util.cpp:5526

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 2177 of file perlmodgen.cpp.

2178{
2179 std::ofstream outputFileStream;
2180 if (!createOutputFile(outputFileStream, pathDoxyDocsPM))
2181 return false;
2182
2183 PerlModOutputStream outputStream(outputFileStream);
2184 m_output.setPerlModOutputStream(&outputStream);
2185 m_output.add("$doxydocs=").openHash();
2186
2187 m_output.openList("classes");
2188 for (const auto &cd : *Doxygen::classLinkedMap)
2189 generatePerlModForClass(cd.get());
2190 m_output.closeList();
2191
2192 m_output.openList("concepts");
2193 for (const auto &cd : *Doxygen::conceptLinkedMap)
2194 generatePerlModForConcept(cd.get());
2195 m_output.closeList();
2196
2197 m_output.openList("modules");
2198 for (const auto &mod : ModuleManager::instance().modules())
2199 generatePerlModForModule(mod.get());
2200 m_output.closeList();
2201
2202 m_output.openList("namespaces");
2203 for (const auto &nd : *Doxygen::namespaceLinkedMap)
2205 m_output.closeList();
2206
2207 m_output.openList("files");
2208 for (const auto &fn : *Doxygen::inputNameLinkedMap)
2209 {
2210 for (const auto &fd : *fn)
2211 {
2212 generatePerlModForFile(fd.get());
2213 }
2214 }
2215 m_output.closeList();
2216
2217 m_output.openList("groups");
2218 for (const auto &gd : *Doxygen::groupLinkedMap)
2219 {
2220 generatePerlModForGroup(gd.get());
2221 }
2222 m_output.closeList();
2223
2224 m_output.openList("pages");
2225 for (const auto &pd : *Doxygen::pageLinkedMap)
2226 {
2227 generatePerlModForPage(pd.get());
2228 }
2230 {
2232 }
2233 m_output.closeList();
2234
2235 m_output.closeHash().add(";\n1;\n");
2236 m_output.reset();
2237 return true;
2238}
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 1650 of file perlmodgen.cpp.

1652{
1653 if (ml==nullptr) return; // empty list
1654
1655 m_output.openHash(name);
1656
1657 if (!header.isEmpty())
1658 m_output.addFieldQuotedString("header", header);
1659
1660 m_output.openList("members");
1661 for (const auto &md : *ml)
1662 {
1664 }
1665 m_output.closeList()
1666 .closeHash();
1667}
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 1694 of file perlmodgen.cpp.

1695{
1696 if (!mgl.empty())
1697 {
1698 m_output.openList("user_defined");
1699 for (const auto &mg : mgl)
1700 {
1701 m_output.openHash();
1702 if (!mg->header().isEmpty())
1703 {
1704 m_output.addFieldQuotedString("header", mg->header());
1705 }
1706
1707 if (!mg->members().empty())
1708 {
1709 m_output.openList("members");
1710 for (const auto &md : mg->members())
1711 {
1713 }
1714 m_output.closeList();
1715 }
1716 m_output.closeHash();
1717 }
1718 m_output.closeList();
1719 }
1720}

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 1438 of file perlmodgen.cpp.

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

◆ pathDoxyDocsTex

QCString PerlModGenerator::pathDoxyDocsTex

Definition at line 1432 of file perlmodgen.cpp.

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

◆ pathDoxyFormatTex

QCString PerlModGenerator::pathDoxyFormatTex

Definition at line 1433 of file perlmodgen.cpp.

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

◆ pathDoxyLatexDVI

QCString PerlModGenerator::pathDoxyLatexDVI

Definition at line 1435 of file perlmodgen.cpp.

Referenced by generate(), and generateDoxyRules().

◆ pathDoxyLatexPDF

QCString PerlModGenerator::pathDoxyLatexPDF

Definition at line 1436 of file perlmodgen.cpp.

Referenced by generate(), and generateDoxyRules().

◆ pathDoxyLatexPL

QCString PerlModGenerator::pathDoxyLatexPL

Definition at line 1439 of file perlmodgen.cpp.

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

◆ pathDoxyLatexStructurePL

QCString PerlModGenerator::pathDoxyLatexStructurePL

Definition at line 1440 of file perlmodgen.cpp.

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

◆ pathDoxyLatexTex

QCString PerlModGenerator::pathDoxyLatexTex

Definition at line 1434 of file perlmodgen.cpp.

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

◆ pathDoxyRules

QCString PerlModGenerator::pathDoxyRules

Definition at line 1441 of file perlmodgen.cpp.

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

◆ pathDoxyStructurePM

QCString PerlModGenerator::pathDoxyStructurePM

Definition at line 1431 of file perlmodgen.cpp.

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

◆ pathDoxyStructureTex

QCString PerlModGenerator::pathDoxyStructureTex

Definition at line 1437 of file perlmodgen.cpp.

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

◆ pathMakefile

QCString PerlModGenerator::pathMakefile

Definition at line 1442 of file perlmodgen.cpp.

Referenced by generate(), and generateMakefile().


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