44template<
class OutputCodeGen>
50 std::unique_ptr<OutputCodeIntf>
clone()
override {
return std::make_unique<OutputCodeDefer>(*
this); }
60 {
m_codeGen->writeCodeLink(
type,ref,file,anchor,name,tooltip); }
63 int lineNumber,
bool writeLineAnchor)
override
64 {
m_codeGen->writeLineNumber(ref,file,anchor,lineNumber,writeLineAnchor); }
68 {
m_codeGen->writeTooltip(
id,docInfo,decl,desc,defInfo,declInfo); }
92 {
m_codeGen->startFold(lineNr,startMarker,endMarker); }
120 std::unique_ptr<OutputCodeIntf>
clone()
override {
return std::make_unique<OutputCodeRecorder>(*
this); }
126 int lineNumber,
bool writeLineAnchor)
override;
200 template<
class T,
class... As>
203 add(std::make_unique<T>(std::forward<As>(args)...));
213 if (e.intf->type()==o) {
return static_cast<T*
>(e.intf.get()); }
223 if (e.intf->type()==o) e.enabled = enabled;
256 int lineNumber,
bool writeLineAnchor)
291 template<
class... Ts,
class... As>
298 (e.intf.get()->*methodPtr)(std::forward<As>(args)...);
350 template<
class DocGenerator>
373 bool indexWords,
bool isExample,
const QCString &exampleName ,
374 bool singleLine ,
bool linkFromIndex ,
375 bool markdownSupport );
534 int memCount,
int memTotal,
bool showInline)
578 file,anchor,title,name); }
757 template<
class... Ts,
class... As>
764 (e.intf.get()->*methodPtr)(std::forward<As>(args)...);
Class representing a built-in class diagram.
The common base class of all entity definitions found in the sources.
Representation of an call graph.
Representation of a class inheritance or dependency graph.
Representation of an directory dependency graph.
Represents a graphical class hierarchy.
Representation of a group collaboration graph.
Representation of an include dependency graph.
opaque representation of the abstract syntax tree (AST)
A model of a class/file/namespace member symbol.
Helper template class which defers all methods of OutputCodeIntf to an existing object of the templat...
void endSpecialComment() override
void startFold(int lineNr, const QCString &startMarker, const QCString &endMarker) override
void endCodeFragment(const QCString &style) override
void endCodeLine() override
OutputCodeDefer(OutputCodeGen *codeGen)
void writeLineNumber(const QCString &ref, const QCString &file, const QCString &anchor, int lineNumber, bool writeLineAnchor) override
void startCodeFragment(const QCString &style) override
void endFontClass() override
OutputType type() const override
void writeCodeLink(CodeSymbolType type, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name, const QCString &tooltip) override
OutputCodeGen * m_codeGen
void startCodeLine(int lineNr) override
void stripCodeComments(bool b) override
std::unique_ptr< OutputCodeIntf > clone() override
void startFontClass(const QCString &c) override
void setStripIndentAmount(size_t amount) override
void startSpecialComment() override
void writeCodeAnchor(const QCString &name) override
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl, const QCString &desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo) override
void codify(const QCString &s) override
Base class for code generators.
virtual void writeLineNumber(const QCString &ref, const QCString &file, const QCString &anchor, int lineNumber, bool writeLineAnchor)=0
virtual void startSpecialComment()=0
virtual void writeCodeAnchor(const QCString &name)=0
virtual void startCodeLine(int lineNr)=0
virtual void startCodeFragment(const QCString &style)=0
virtual void writeCodeLink(CodeSymbolType type, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name, const QCString &tooltip)=0
virtual void startFold(int lineNr, const QCString &startMarker, const QCString &endMarker)=0
virtual void endCodeLine()=0
virtual void startFontClass(const QCString &c)=0
virtual void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl, const QCString &desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo)=0
virtual void endSpecialComment()=0
virtual void endFontClass()=0
virtual void endCodeFragment(const QCString &style)=0
virtual void stripCodeComments(bool b)=0
virtual void codify(const QCString &s)=0
virtual void setStripIndentAmount(size_t)=0
Class representing a list of different code generators.
T * add(As &&... args)
Add a code generator to the list, using a syntax similar to std::make_unique<T>()
std::vector< OutputCodeElem > m_outputCodeList
T * get(OutputType o)
Returns a pointer to a specific generator in the list.
void codify(const QCString &s)
void writeCodeLink(CodeSymbolType type, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name, const QCString &tooltip)
void add(OutputCodeIntfPtr &&p)
void startSpecialComment()
void writeCodeAnchor(const QCString &name)
void setStripIndentAmount(size_t amount)
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl, const QCString &desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo)
void startCodeLine(int lineNr)
void setEnabledFiltered(OutputType o, bool enabled)
Enable or disable a specific generator.
void endCodeFragment(const QCString &style)
void startFold(int lineNr, const QCString &startMarker, const QCString &endMarker)
std::unique_ptr< OutputCodeIntf > OutputCodeIntfPtr
void writeLineNumber(const QCString &ref, const QCString &file, const QCString &anchor, int lineNumber, bool writeLineAnchor)
void startFontClass(const QCString &c)
void startCodeFragment(const QCString &style)
void stripCodeComments(bool b)
Implementation that allows capturing calls made to the code interface to later invoke them on a Outpu...
std::unique_ptr< OutputCodeIntf > clone() override
void startFontClass(const QCString &c) override
void startFold(int lineNr, const QCString &startMarker, const QCString &endMarker) override
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl, const QCString &desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo) override
void startCodeFragment(const QCString &style) override
void startCodeLine(int) override
void stripCodeComments(bool) override
void endFontClass() override
void startNewLine(int lineNr)
bool m_insideSpecialComment
void writeCodeLink(CodeSymbolType type, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name, const QCString &tooltip) override
void codify(const QCString &s) override
std::vector< size_t > m_lineOffset
std::vector< CallInfo > m_calls
void replay(OutputCodeList &ol, int startLine, int endLine, bool showLineNumbers, bool stripComment, size_t stripIndentAmount)
void startSpecialComment() override
OutputType type() const override
void writeCodeAnchor(const QCString &name) override
void endSpecialComment() override
void endCodeFragment(const QCString &style) override
void endCodeLine() override
void setStripIndentAmount(size_t) override
void writeLineNumber(const QCString &ref, const QCString &file, const QCString &anchor, int lineNumber, bool writeLineAnchor) override
Abstract interface for output generators.
virtual void endMemberSubtitle()=0
virtual void startConstraintList(const QCString &header)=0
virtual void startMemberDocSimple(bool b)=0
virtual void writeSearchInfo()=0
virtual void startTextLink(const QCString &file, const QCString &anchor)=0
virtual void startInlineMemberName()=0
virtual void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)=0
virtual void startDescTable(const QCString &title, const bool hasInits)=0
virtual void endMemberGroupDocs()=0
virtual void startInlineHeader()=0
virtual void endDescTableData()=0
virtual void endItemList()=0
virtual void startMemberDoc(const QCString &clName, const QCString &memName, const QCString &anchor, const QCString &title, int memCount, int memTotal, bool showInline)=0
virtual void startDescTableData()=0
virtual void endCallGraph(DotCallGraph &g)=0
virtual void endIndexListItem()=0
virtual void startParameterType(bool first, const QCString &key)=0
virtual void insertMemberAlignLeft(OutputGenerator::MemberItemType typ=OutputGenerator::MemberItemType::Normal, bool templ=FALSE)=0
virtual void endConstraintDocs()=0
virtual void startParameterName(bool one)=0
virtual void startConstraintType()=0
virtual void endMemberDocSimple(bool b)=0
virtual void endAnonTypeScope(int i1)=0
virtual void addIndexItem(const QCString &s1, const QCString &s2)=0
virtual void writeStyleInfo(int part)=0
virtual void writeLabel(const QCString &l, bool isLast)=0
virtual void startPageDoc(const QCString &pageTitle)=0
virtual void endParameterDefVal()=0
virtual void startMemberGroup()=0
virtual void startAnonTypeScope(int i1)=0
virtual void endEmphasis()=0
virtual void endConstraintList()=0
virtual void startMemberHeader(const QCString &anchor, int typ=2)=0
virtual void startIndent()=0
virtual void endDescTableRow()=0
virtual void endDirDepGraph(DotDirDeps &g)=0
virtual void endPageDoc()=0
virtual void startTitleHead(const QCString &fileName)=0
virtual void endTypewriter()=0
virtual void startBold()=0
virtual void endInlineMemberName()=0
virtual void startMemberDocList()=0
virtual void writeRuler()=0
virtual void writeGraphicalHierarchy(DotGfxHierarchyTable &g)=0
virtual void startItemList()=0
virtual void writeSplitBar(const QCString &name)=0
virtual void exceptionEntry(const QCString &prefix, bool closeBracket)=0
virtual void startMemberGroupHeader(bool b)=0
virtual void endParameterType()=0
virtual void endPlainFile()=0
virtual void startMemberDocName(bool align)=0
virtual void startMemberSubtitle()=0
virtual void startMemberSections()=0
virtual void startQuickIndices()=0
virtual void endIndexItem(const QCString &ref, const QCString &file)=0
virtual void startIndexKey()=0
virtual void endMemberGroupHeader()=0
virtual void endParameterList()=0
virtual void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)=0
virtual void endContents()=0
virtual void endTextLink()=0
virtual void endMemberGroup(bool last)=0
virtual void startMemberDocPrefixItem()=0
virtual void lineBreak(const QCString &style=QCString())=0
virtual void endInlineHeader()=0
virtual void startDescForItem()=0
virtual void endMemberSections()=0
virtual void startInlineMemberType()=0
virtual void startGroupCollaboration()=0
virtual void endLabels()=0
virtual void endMemberHeader()=0
virtual void startIndexList()=0
virtual void endParameterExtra(bool last, bool one, bool bracket)=0
virtual void writeSynopsis()=0
virtual void startDescTableRow()=0
virtual void writeLatexSpacing()=0
virtual void addLabel(const QCString &fName, const QCString &anchor)=0
virtual void lastIndexPage()=0
virtual void endDoxyAnchor(const QCString &fn, const QCString &anchor)=0
virtual void endSmall()=0
virtual void endQuickIndices()=0
virtual void startIndexValue(bool b)=0
virtual void endGroupHeader(int extraLevels=0)=0
virtual void endInclDepGraph(DotInclDepGraph &g)=0
virtual void endIndexList()=0
virtual void endInlineMemberType()=0
virtual void startConstraintDocs()=0
virtual void endMemberList()=0
virtual void startMemberTemplateParams()=0
virtual void writePageLink(const QCString &name, bool first)=0
virtual void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())=0
virtual void endDotGraph(DotClassGraph &g)=0
virtual void endInlineMemberDoc()=0
virtual void startPlainFile(const QCString &name)=0
virtual void startCenter()=0
virtual void startExamples()=0
virtual void startParameterList(bool openBracket)=0
virtual void startTypewriter()=0
virtual void writeQuickLinks(HighlightedItem hli, const QCString &file)=0
virtual void startInclDepGraph()=0
virtual void endDescTableTitle()=0
virtual void endParagraph()=0
virtual void endIndexSection(IndexSection is)=0
virtual void writeString(const QCString &text)=0
virtual void startCompoundTemplateParams()=0
virtual void endMemberDocName()=0
virtual void endParameterName()=0
virtual void startProjectNumber()=0
virtual void endMemberDescription()=0
virtual void startClassDiagram()=0
virtual void endHeaderSection()=0
virtual void endItemListItem()=0
virtual void endMemberDocList()=0
virtual void startSmall()=0
virtual void endConstraintParam()=0
virtual void endDescTable()=0
virtual void insertMemberAlign(bool templ=FALSE)=0
virtual void endMemberItem(OutputGenerator::MemberItemType type)=0
virtual void endGroupCollaboration(DotGroupCollaboration &g)=0
virtual void endMemberDocPrefixItem()=0
virtual void docify(const QCString &s)=0
virtual void endTextBlock(bool paraBreak=FALSE)=0
virtual void endSection(const QCString &lab, SectionType t)=0
virtual void endConstraintType()=0
virtual void startGroupHeader(int extraLevels=0)=0
virtual void startDescTableTitle()=0
virtual void startDescTableInit()=0
virtual void writeChar(char c)=0
virtual void startInlineMemberDoc()=0
virtual void startIndexItem(const QCString &ref, const QCString &file)=0
virtual void writeLocalToc(const SectionRefs &refs, const LocalToc <)=0
virtual void endProjectNumber()=0
virtual void writeNavigationPath(const QCString &s)=0
virtual void startDirDepGraph()=0
virtual void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int id)=0
virtual void startMemberList()=0
virtual void endTitleHead(const QCString &fileName, const QCString &name)=0
virtual void endClassDiagram(const ClassDiagram &d, const QCString &f, const QCString &n)=0
virtual void endPageRef(const QCString &c, const QCString &a)=0
virtual void startMemberDeclaration()=0
virtual void startMemberGroupDocs()=0
virtual void writeNonBreakableSpace(int num)=0
virtual void endDescForItem()=0
virtual void writeLogo()=0
virtual void startParameterExtra()=0
virtual void startDotGraph()=0
virtual void endExamples()=0
virtual void startParameterDefVal(const char *separator)=0
virtual void startPageRef()=0
virtual void startLabels()=0
virtual void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)=0
virtual void endDescTableInit()=0
virtual void startCallGraph()=0
virtual void startEmphasis()=0
virtual void startSection(const QCString &lab, const QCString &title, SectionType t)=0
virtual void endIndent()=0
virtual void writeFooter(const QCString &navPath)=0
virtual void endCompoundTemplateParams()=0
virtual void endMemberTemplateParams(const QCString &anchor, const QCString &inheritId)=0
virtual void startContents()=0
virtual void endIndexValue(const QCString &name, bool b)=0
virtual void startIndexSection(IndexSection is)=0
virtual void startConstraintParam()=0
virtual void writeInheritedSectionTitle(const QCString &id, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &title, const QCString &name)=0
virtual void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)=0
virtual void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)=0
virtual void startParagraph(const QCString &classDef=QCString())=0
virtual void startTextBlock(bool dense=FALSE)=0
virtual void startItemListItem()=0
virtual void endIndexKey()=0
virtual void startHeaderSection()=0
virtual void endCenter()=0
virtual void writeStartAnnoItem(const QCString &type, const QCString &file, const QCString &path, const QCString &name)=0
virtual void writeAnchor(const QCString &fileName, const QCString &name)=0
virtual void endMemberDoc(bool hasArgs)=0
virtual void startIndexListItem()=0
void endPageRef(const QCString &c, const QCString &a)
bool isEnabled(OutputType o)
void startMemberGroupHeader(bool b)
void endTextBlock(bool paraBreak=FALSE)
void writeString(const QCString &text)
void startGroupHeader(int extraLevels=0)
void startMemberDeclaration()
void startMemberDoc(const QCString &clName, const QCString &memName, const QCString &anchor, const QCString &title, int memCount, int memTotal, bool showInline)
void startMemberDocName(bool align)
void startIndexItem(const QCString &ref, const QCString &file)
void endTitleHead(const QCString &fileName, const QCString &name)
void endParameterExtra(bool last, bool one, bool bracket)
void endSection(const QCString &lab, SectionType t)
void endIndexValue(const QCString &name, bool b)
void disable(OutputType o)
void endMemberTemplateParams(const QCString &anchor, const QCString &inheritId)
void insertMemberAlignLeft(OutputGenerator::MemberItemType typ=OutputGenerator::MemberItemType::Normal, bool templ=FALSE)
OutputCodeList m_codeGenList
void endMemberDoc(bool hasArgs)
void startDescTableInit()
void startTitleHead(const QCString &fileName)
void endDirDepGraph(DotDirDeps &g)
void startParameterExtra()
void writeSplitBar(const QCString &name)
const OutputCodeList & codeGenerators() const
void endGroupCollaboration(DotGroupCollaboration &g)
void startParameterList(bool openBracket)
void enable(OutputType o)
void endInlineMemberType()
std::vector< OutputGenElem > m_outputGenList
void endMemberDescription()
OutputList(OutputList &&)=delete
void endMemberGroupDocs()
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
void startGroupCollaboration()
void startInlineMemberType()
void startInlineMemberDoc()
OutputCodeList & codeGenerators()
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md)
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
void endCompoundTemplateParams()
void endIndexItem(const QCString &ref, const QCString &file)
OutputList & operator=(const OutputList &ol)
void writeGraphicalHierarchy(DotGfxHierarchyTable &g)
void writeStartAnnoItem(const QCString &type, const QCString &file, const QCString &path, const QCString &name)
void startFile(const QCString &name, const QCString &manName, const QCString &title, int hierarchyLevel=0)
void startHeaderSection()
void startConstraintParam()
void endDoxyAnchor(const QCString &fn, const QCString &anchor)
void docify(const QCString &s)
void startParagraph(const QCString &classDef=QCString())
void endIndexSection(IndexSection is)
void startConstraintDocs()
void startProjectNumber()
void startTextBlock(bool dense=FALSE)
void exceptionEntry(const QCString &prefix, bool closeBracket)
void addIndexItem(const QCString &s1, const QCString &s2)
void startDescTableTitle()
void endInclDepGraph(DotInclDepGraph &g)
void startMemberSections()
void endInlineMemberDoc()
void endMemberDocPrefixItem()
void startConstraintType()
void startParameterDefVal(const char *separator)
void startAnonTypeScope(int i1)
void endMemberItem(OutputGenerator::MemberItemType type)
void startDescTable(const QCString &title, const bool hasInits)
void writeStyleInfo(int part)
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
void addLabel(const QCString &fName, const QCString &anchor)
void startDescTableData()
void pushGeneratorState()
void insertMemberAlign(bool templ=FALSE)
void endParameterDefVal()
void startParameterType(bool first, const QCString &key)
void disableAllBut(OutputType o)
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
void endConstraintParam()
void startIndexValue(bool b)
void writeAnchor(const QCString &fileName, const QCString &name)
void endGroupHeader(int extraLevels=0)
void endClassDiagram(const ClassDiagram &d, const QCString &f, const QCString &n)
void startConstraintList(const QCString &header)
void startDoxyAnchor(const QCString &fName, const QCString &manName, const QCString &anchor, const QCString &name, const QCString &args)
std::unique_ptr< OutputGenIntf > OutputGenIntfPtr
void startPageDoc(const QCString &pageTitle)
void endCallGraph(DotCallGraph &g)
void startInlineMemberName()
void endDotGraph(DotClassGraph &g)
void endMemberGroupHeader()
void endMemberGroup(bool last)
void writeLabel(const QCString &l, bool isLast)
void startMemberGroupDocs()
void startCompoundTemplateParams()
void startMemberDocSimple(bool b)
void writeLocalToc(const SectionRefs &refs, const LocalToc <)
void startPlainFile(const QCString &name)
void startMemberDocPrefixItem()
void writeFooter(const QCString &navPath)
void endAnonTypeScope(int i1)
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
void startParameterName(bool one)
void writeNavigationPath(const QCString &s)
void writePageLink(const QCString &name, bool first)
void writeQuickLinks(HighlightedItem hli, const QCString &file)
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
void endInlineMemberName()
void startMemberDocList()
void endMemberDocSimple(bool b)
OutputList & operator=(OutputList &&)=delete
void startMemberSubtitle()
void startIndexListItem()
void lineBreak(const QCString &style=QCString())
void parseText(const QCString &textStr)
void refreshCodeGenerators()
void startSection(const QCString &lab, const QCString &title, SectionType t)
void writeInheritedSectionTitle(const QCString &id, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &title, const QCString &name)
void writeNonBreakableSpace(int num)
void startIndexSection(IndexSection is)
void startTextLink(const QCString &file, const QCString &anchor)
void startMemberTemplateParams()
void startMemberHeader(const QCString &anchor, int typ=2)
This is an alternative implementation of QCString.
class that represents a list of constant references to sections.
static QCString stripComment(const QCString &s)
OutputCodeDefer< RTFCodeGenerator > RTFCodeGeneratorDefer
OutputCodeDefer< OutputCodeIntf > OutputCodeDeferExtension
OutputCodeDefer< LatexCodeGenerator > LatexCodeGeneratorDefer
OutputCodeDefer< HtmlCodeGenerator > HtmlCodeGeneratorDefer
OutputCodeDefer< DocbookCodeGenerator > DocbookCodeGeneratorDefer
OutputCodeDefer< ManCodeGenerator > ManCodeGeneratorDefer
static QCString align(const DocHtmlCell &cell)
OutputCodeElem & operator=(const OutputCodeElem &other)
OutputCodeElem(const OutputCodeElem &other)
OutputCodeElem(OutputCodeIntfPtr &&p)
CallInfo(ConditionFunc &&c, OutputFunc &&f, bool ic)
std::function< bool()> ConditionFunc
bool insideSpecialComment
std::function< void(OutputCodeList *)> OutputFunc
OutputGenElem(OutputGenIntfPtr &&v)
OutputGenElem & operator=(const OutputGenElem &other)
OutputGenElem(const OutputGenElem &other)
std::stack< bool > enabledStack