25 #include "outputgen.h" 28 #include "dispatcher.h" 34 #include "docbookgen.h" 36 #include "devnullgen.h" 45 template <
class T>
struct codify {
static constexpr
auto method = &T::codify; };
46 template <
class T>
struct writeCodeLink {
static constexpr
auto method = &T::writeCodeLink; };
47 template <
class T>
struct writeLineNumber {
static constexpr
auto method = &T::writeLineNumber; };
48 template <
class T>
struct writeTooltip {
static constexpr
auto method = &T::writeTooltip; };
49 template <
class T>
struct startCodeLine {
static constexpr
auto method = &T::startCodeLine; };
50 template <
class T>
struct endCodeLine {
static constexpr
auto method = &T::endCodeLine; };
51 template <
class T>
struct startFontClass {
static constexpr
auto method = &T::startFontClass; };
52 template <
class T>
struct endFontClass {
static constexpr
auto method = &T::endFontClass; };
53 template <
class T>
struct writeCodeAnchor {
static constexpr
auto method = &T::writeCodeAnchor; };
54 template <
class T>
struct startCodeFragment {
static constexpr
auto method = &T::startCodeFragment; };
55 template <
class T>
struct endCodeFragment {
static constexpr
auto method = &T::endCodeFragment; };
56 template <
class T>
struct startFold {
static constexpr
auto method = &T::startFold; };
57 template <
class T>
struct endFold {
static constexpr
auto method = &T::endFold; };
63 template<
class OutputCodeGen>
68 OutputType type()
const {
return m_codeGen->type(); }
69 void codify(
const QCString &s) { m_codeGen->codify(s); }
70 void writeCodeLink(CodeSymbolType type,
74 { m_codeGen->writeCodeLink(type,ref,file,anchor,name,tooltip); }
77 int lineNumber,
bool writeLineAnchor)
78 { m_codeGen->writeLineNumber(ref,file,anchor,lineNumber,writeLineAnchor); }
82 { m_codeGen->writeTooltip(
id,docInfo,decl,desc,defInfo,declInfo); }
84 void startCodeLine(
bool hasLineNumbers)
85 { m_codeGen->startCodeLine(hasLineNumbers); }
88 { m_codeGen->endCodeLine(); }
90 void startFontClass(
const QCString &c)
91 { m_codeGen->startFontClass(c); }
94 { m_codeGen->endFontClass(); }
96 void writeCodeAnchor(
const QCString &name)
97 { m_codeGen->writeCodeAnchor(name); }
99 void startCodeFragment(
const QCString &style)
100 { m_codeGen->startCodeFragment(style); }
102 void endCodeFragment(
const QCString &style)
103 { m_codeGen->endCodeFragment(style); }
105 void startFold(
int lineNr,
const QCString &startMarker,
const QCString &endMarker)
106 { m_codeGen->startFold(lineNr,startMarker,endMarker); }
109 { m_codeGen->endFold(); }
112 OutputCodeGen *m_codeGen;
122 virtual OutputType type()
const = 0;
123 virtual void codify(
const QCString &s) = 0;
124 virtual void writeCodeLink(CodeSymbolType type,
129 int lineNumber,
bool writeLineAnchor) = 0;
132 virtual void startCodeLine(
bool hasLineNumbers) = 0;
133 virtual void endCodeLine() = 0;
134 virtual void startFontClass(
const QCString &c) = 0;
135 virtual void endFontClass() = 0;
136 virtual void writeCodeAnchor(
const QCString &name) = 0;
137 virtual void startCodeFragment(
const QCString &style) = 0;
138 virtual void endCodeFragment(
const QCString &style) = 0;
139 virtual void startFold(
int lineNr,
const QCString &startMarker,
const QCString &endMarker) = 0;
140 virtual void endFold() = 0;
172 int id()
const {
return m_id; }
173 void setId(
int id) { m_id = id; }
176 void add(OutputCodeVariant &&v)
178 m_outputCodeList.emplace_back(std::move(v));
182 template<
class T,
class... As>
185 add(OutputCodeVariant{std::in_place_type<T>,std::forward<As>(args)...});
186 return std::get_if<T>(&m_outputCodeList.back().variant);
193 for (
auto &e : m_outputCodeList)
195 T *t = std::get_if<T>(&e.variant);
204 for (
auto &e : m_outputCodeList)
206 std::visit([&](
auto &&arg) {
if (arg.type()==o) e.enabled = enabled; },e.variant);
212 m_outputCodeList.clear();
218 { foreach<OutputCodeIntf::codify>(s); }
220 void writeCodeLink(CodeSymbolType type,
224 { foreach<OutputCodeIntf::writeCodeLink>(type,ref,file,anchor,name,tooltip); }
227 int lineNumber,
bool writeLineAnchor)
228 { foreach<OutputCodeIntf::writeLineNumber>(ref,file,anchor,lineNumber,writeLineAnchor); }
232 { foreach<OutputCodeIntf::writeTooltip>(id,docInfo,decl,desc,defInfo,declInfo); }
234 void startCodeLine(
bool hasLineNumbers)
235 { foreach<OutputCodeIntf::startCodeLine>(hasLineNumbers); }
238 { foreach<OutputCodeIntf::endCodeLine>(); }
240 void startFontClass(
const QCString &c)
241 { foreach<OutputCodeIntf::startFontClass>(c); }
244 { foreach<OutputCodeIntf::endFontClass>(); }
246 void writeCodeAnchor(
const QCString &name)
247 { foreach<OutputCodeIntf::writeCodeAnchor>(name); }
249 void startCodeFragment(
const QCString &style)
250 { foreach<OutputCodeIntf::startCodeFragment>(style); }
252 void endCodeFragment(
const QCString &style)
253 { foreach<OutputCodeIntf::endCodeFragment>(style); }
255 void startFold(
int lineNr,
const QCString &startMarker,
const QCString &endMarker)
256 { foreach<OutputCodeIntf::startFold>(lineNr,startMarker,endMarker); }
259 { foreach<OutputCodeIntf::endFold>(); }
262 template<
template <
class>
class GeneratorT,
class... As>
263 void foreach(As&&... args)
265 for (
auto &e : m_outputCodeList)
269 dispatch_call<GeneratorT>(e.variant,std::forward<As>(args)...);
274 struct OutputCodeElem
276 explicit OutputCodeElem(OutputCodeVariant &&v) : variant(std::move(v)) {}
277 OutputCodeVariant variant;
281 std::vector<OutputCodeElem> m_outputCodeList;
301 template<
class T>
struct codify {
static constexpr
auto method = &T::codify; };
302 template<
class T>
struct startFile {
static constexpr
auto method = &T::startFile; };
303 template<
class T>
struct writeDoc {
static constexpr
auto method = &T::writeDoc; };
304 template<
class T>
struct startIndexSection {
static constexpr
auto method = &T::startIndexSection; };
305 template<
class T>
struct endIndexSection {
static constexpr
auto method = &T::endIndexSection; };
306 template<
class T>
struct writePageLink {
static constexpr
auto method = &T::writePageLink; };
307 template<
class T>
struct startProjectNumber {
static constexpr
auto method = &T::startProjectNumber; };
308 template<
class T>
struct endProjectNumber {
static constexpr
auto method = &T::endProjectNumber; };
309 template<
class T>
struct writeStyleInfo {
static constexpr
auto method = &T::writeStyleInfo; };
310 template<
class T>
struct writeSearchInfo {
static constexpr
auto method = &T::writeSearchInfo; };
311 template<
class T>
struct writeFooter {
static constexpr
auto method = &T::writeFooter; };
312 template<
class T>
struct endFile {
static constexpr
auto method = &T::endFile; };
313 template<
class T>
struct startTitleHead {
static constexpr
auto method = &T::startTitleHead; };
314 template<
class T>
struct endTitleHead {
static constexpr
auto method = &T::endTitleHead; };
315 template<
class T>
struct startParagraph {
static constexpr
auto method = &T::startParagraph; };
316 template<
class T>
struct endParagraph {
static constexpr
auto method = &T::endParagraph; };
317 template<
class T>
struct writeString {
static constexpr
auto method = &T::writeString; };
318 template<
class T>
struct startIndexListItem {
static constexpr
auto method = &T::startIndexListItem; };
319 template<
class T>
struct endIndexListItem {
static constexpr
auto method = &T::endIndexListItem; };
320 template<
class T>
struct startIndexList {
static constexpr
auto method = &T::startIndexList; };
321 template<
class T>
struct endIndexList {
static constexpr
auto method = &T::endIndexList; };
322 template<
class T>
struct startIndexKey {
static constexpr
auto method = &T::startIndexKey; };
323 template<
class T>
struct endIndexKey {
static constexpr
auto method = &T::endIndexKey; };
324 template<
class T>
struct startIndexValue {
static constexpr
auto method = &T::startIndexValue; };
325 template<
class T>
struct endIndexValue {
static constexpr
auto method = &T::endIndexValue; };
326 template<
class T>
struct startItemList {
static constexpr
auto method = &T::startItemList; };
327 template<
class T>
struct endItemList {
static constexpr
auto method = &T::endItemList; };
328 template<
class T>
struct startIndexItem {
static constexpr
auto method = &T::startIndexItem; };
329 template<
class T>
struct endIndexItem {
static constexpr
auto method = &T::endIndexItem; };
330 template<
class T>
struct docify {
static constexpr
auto method = &T::docify; };
331 template<
class T>
struct writeObjectLink {
static constexpr
auto method = &T::writeObjectLink; };
332 template<
class T>
struct startTextLink {
static constexpr
auto method = &T::startTextLink; };
333 template<
class T>
struct endTextLink {
static constexpr
auto method = &T::endTextLink; };
334 template<
class T>
struct writeStartAnnoItem {
static constexpr
auto method = &T::writeStartAnnoItem; };
335 template<
class T>
struct startTypewriter {
static constexpr
auto method = &T::startTypewriter; };
336 template<
class T>
struct endTypewriter {
static constexpr
auto method = &T::endTypewriter; };
337 template<
class T>
struct startGroupHeader {
static constexpr
auto method = &T::startGroupHeader; };
338 template<
class T>
struct endGroupHeader {
static constexpr
auto method = &T::endGroupHeader; };
339 template<
class T>
struct startItemListItem {
static constexpr
auto method = &T::startItemListItem; };
340 template<
class T>
struct endItemListItem {
static constexpr
auto method = &T::endItemListItem; };
342 template<
class T>
struct endMemberSections {
static constexpr
auto method = &T::endMemberSections; };
343 template<
class T>
struct startHeaderSection {
static constexpr
auto method = &T::startHeaderSection; };
344 template<
class T>
struct endHeaderSection {
static constexpr
auto method = &T::endHeaderSection; };
345 template<
class T>
struct startMemberHeader {
static constexpr
auto method = &T::startMemberHeader; };
346 template<
class T>
struct endMemberHeader {
static constexpr
auto method = &T::endMemberHeader; };
348 template<
class T>
struct endMemberSubtitle {
static constexpr
auto method = &T::endMemberSubtitle; };
349 template<
class T>
struct startMemberDocList {
static constexpr
auto method = &T::startMemberDocList; };
350 template<
class T>
struct endMemberDocList {
static constexpr
auto method = &T::endMemberDocList; };
351 template<
class T>
struct startMemberList {
static constexpr
auto method = &T::startMemberList; };
352 template<
class T>
struct endMemberList {
static constexpr
auto method = &T::endMemberList; };
353 template<
class T>
struct startInlineHeader {
static constexpr
auto method = &T::startInlineHeader; };
354 template<
class T>
struct endInlineHeader {
static constexpr
auto method = &T::endInlineHeader; };
355 template<
class T>
struct startAnonTypeScope {
static constexpr
auto method = &T::startAnonTypeScope; };
356 template<
class T>
struct endAnonTypeScope {
static constexpr
auto method = &T::endAnonTypeScope; };
357 template<
class T>
struct startMemberItem {
static constexpr
auto method = &T::startMemberItem; };
358 template<
class T>
struct endMemberItem {
static constexpr
auto method = &T::endMemberItem; };
366 template<
class T>
struct endMemberGroupDocs {
static constexpr
auto method = &T::endMemberGroupDocs; };
367 template<
class T>
struct startMemberGroup {
static constexpr
auto method = &T::startMemberGroup; };
368 template<
class T>
struct endMemberGroup {
static constexpr
auto method = &T::endMemberGroup; };
369 template<
class T>
struct insertMemberAlign {
static constexpr
auto method = &T::insertMemberAlign; };
371 template<
class T>
struct writeRuler {
static constexpr
auto method = &T::writeRuler; };
372 template<
class T>
struct writeAnchor {
static constexpr
auto method = &T::writeAnchor; };
373 template<
class T>
struct startEmphasis {
static constexpr
auto method = &T::startEmphasis; };
374 template<
class T>
struct endEmphasis {
static constexpr
auto method = &T::endEmphasis; };
375 template<
class T>
struct writeChar {
static constexpr
auto method = &T::writeChar; };
376 template<
class T>
struct startMemberDoc {
static constexpr
auto method = &T::startMemberDoc; };
377 template<
class T>
struct endMemberDoc {
static constexpr
auto method = &T::endMemberDoc; };
378 template<
class T>
struct startDoxyAnchor {
static constexpr
auto method = &T::startDoxyAnchor; };
379 template<
class T>
struct endDoxyAnchor {
static constexpr
auto method = &T::endDoxyAnchor; };
380 template<
class T>
struct writeLatexSpacing {
static constexpr
auto method = &T::writeLatexSpacing; };
381 template<
class T>
struct startDescForItem {
static constexpr
auto method = &T::startDescForItem; };
382 template<
class T>
struct endDescForItem {
static constexpr
auto method = &T::endDescForItem; };
383 template<
class T>
struct startCenter {
static constexpr
auto method = &T::startCenter; };
384 template<
class T>
struct endCenter {
static constexpr
auto method = &T::endCenter; };
385 template<
class T>
struct startSmall {
static constexpr
auto method = &T::startSmall; };
386 template<
class T>
struct endSmall {
static constexpr
auto method = &T::endSmall; };
387 template<
class T>
struct lineBreak {
static constexpr
auto method = &T::lineBreak; };
388 template<
class T>
struct startBold {
static constexpr
auto method = &T::startBold; };
389 template<
class T>
struct endBold {
static constexpr
auto method = &T::endBold; };
395 template<
class T>
struct startExamples {
static constexpr
auto method = &T::startExamples; };
396 template<
class T>
struct endExamples {
static constexpr
auto method = &T::endExamples; };
397 template<
class T>
struct startIndent {
static constexpr
auto method = &T::startIndent; };
398 template<
class T>
struct endIndent {
static constexpr
auto method = &T::endIndent; };
399 template<
class T>
struct startSection {
static constexpr
auto method = &T::startSection; };
400 template<
class T>
struct endSection {
static constexpr
auto method = &T::endSection; };
401 template<
class T>
struct addIndexItem {
static constexpr
auto method = &T::addIndexItem; };
402 template<
class T>
struct writeSynopsis {
static constexpr
auto method = &T::writeSynopsis; };
403 template<
class T>
struct startClassDiagram {
static constexpr
auto method = &T::startClassDiagram; };
404 template<
class T>
struct endClassDiagram {
static constexpr
auto method = &T::endClassDiagram; };
405 template<
class T>
struct startPageRef {
static constexpr
auto method = &T::startPageRef; };
406 template<
class T>
struct endPageRef {
static constexpr
auto method = &T::endPageRef; };
407 template<
class T>
struct startQuickIndices {
static constexpr
auto method = &T::startQuickIndices; };
408 template<
class T>
struct endQuickIndices {
static constexpr
auto method = &T::endQuickIndices; };
409 template<
class T>
struct writeSplitBar {
static constexpr
auto method = &T::writeSplitBar; };
411 template<
class T>
struct writeLogo {
static constexpr
auto method = &T::writeLogo; };
412 template<
class T>
struct writeQuickLinks {
static constexpr
auto method = &T::writeQuickLinks; };
413 template<
class T>
struct writeSummaryLink {
static constexpr
auto method = &T::writeSummaryLink; };
414 template<
class T>
struct startContents {
static constexpr
auto method = &T::startContents; };
415 template<
class T>
struct endContents {
static constexpr
auto method = &T::endContents; };
416 template<
class T>
struct startPageDoc {
static constexpr
auto method = &T::startPageDoc; };
417 template<
class T>
struct endPageDoc {
static constexpr
auto method = &T::endPageDoc; };
419 template<
class T>
struct startDescTable {
static constexpr
auto method = &T::startDescTable; };
420 template<
class T>
struct endDescTable {
static constexpr
auto method = &T::endDescTable; };
421 template<
class T>
struct startDescTableRow {
static constexpr
auto method = &T::startDescTableRow; };
422 template<
class T>
struct endDescTableRow {
static constexpr
auto method = &T::endDescTableRow; };
424 template<
class T>
struct endDescTableTitle {
static constexpr
auto method = &T::endDescTableTitle; };
425 template<
class T>
struct startDescTableData {
static constexpr
auto method = &T::startDescTableData; };
426 template<
class T>
struct endDescTableData {
static constexpr
auto method = &T::endDescTableData; };
427 template<
class T>
struct startDotGraph {
static constexpr
auto method = &T::startDotGraph; };
428 template<
class T>
struct endDotGraph {
static constexpr
auto method = &T::endDotGraph; };
429 template<
class T>
struct startInclDepGraph {
static constexpr
auto method = &T::startInclDepGraph; };
430 template<
class T>
struct endInclDepGraph {
static constexpr
auto method = &T::endInclDepGraph; };
431 template<
class T>
struct startCallGraph {
static constexpr
auto method = &T::startCallGraph; };
432 template<
class T>
struct endCallGraph {
static constexpr
auto method = &T::endCallGraph; };
433 template<
class T>
struct startDirDepGraph {
static constexpr
auto method = &T::startDirDepGraph; };
434 template<
class T>
struct endDirDepGraph {
static constexpr
auto method = &T::endDirDepGraph; };
438 template<
class T>
struct startTextBlock {
static constexpr
auto method = &T::startTextBlock; };
439 template<
class T>
struct endTextBlock {
static constexpr
auto method = &T::endTextBlock; };
440 template<
class T>
struct lastIndexPage {
static constexpr
auto method = &T::lastIndexPage; };
443 template<
class T>
struct startMemberDocName {
static constexpr
auto method = &T::startMemberDocName; };
444 template<
class T>
struct endMemberDocName {
static constexpr
auto method = &T::endMemberDocName; };
445 template<
class T>
struct startParameterType {
static constexpr
auto method = &T::startParameterType; };
446 template<
class T>
struct endParameterType {
static constexpr
auto method = &T::endParameterType; };
447 template<
class T>
struct startParameterName {
static constexpr
auto method = &T::startParameterName; };
448 template<
class T>
struct endParameterName {
static constexpr
auto method = &T::endParameterName; };
449 template<
class T>
struct startParameterList {
static constexpr
auto method = &T::startParameterList; };
450 template<
class T>
struct endParameterList {
static constexpr
auto method = &T::endParameterList; };
451 template<
class T>
struct exceptionEntry {
static constexpr
auto method = &T::exceptionEntry; };
454 template<
class T>
struct endConstraintParam {
static constexpr
auto method = &T::endConstraintParam; };
456 template<
class T>
struct endConstraintType {
static constexpr
auto method = &T::endConstraintType; };
458 template<
class T>
struct endConstraintDocs {
static constexpr
auto method = &T::endConstraintDocs; };
459 template<
class T>
struct endConstraintList {
static constexpr
auto method = &T::endConstraintList; };
461 template<
class T>
struct endMemberDocSimple {
static constexpr
auto method = &T::endMemberDocSimple; };
467 template<
class T>
struct endInlineMemberDoc {
static constexpr
auto method = &T::endInlineMemberDoc; };
468 template<
class T>
struct startLabels {
static constexpr
auto method = &T::startLabels; };
469 template<
class T>
struct writeLabel {
static constexpr
auto method = &T::writeLabel; };
470 template<
class T>
struct endLabels {
static constexpr
auto method = &T::endLabels; };
471 template<
class T>
struct writeLocalToc {
static constexpr
auto method = &T::writeLocalToc; };
472 template<
class T>
struct cleanup {
static constexpr
auto method = &T::cleanup; };
473 template<
class T>
struct startPlainFile {
static constexpr
auto method = &T::startPlainFile; };
474 template<
class T>
struct endPlainFile {
static constexpr
auto method = &T::endPlainFile; };
494 template<
class DocGenerator>
497 m_outputGenList.emplace_back(OutputGenVariant{DocGenerator()});
498 refreshCodeGenerators();
501 const OutputCodeList &codeGenerators()
const {
return m_codeGenList; }
504 size_t size()
const {
return m_outputGenList.size(); }
508 void disable(OutputType o);
509 void enable(OutputType o);
510 bool isEnabled(OutputType o);
511 void disableAllBut(OutputType o);
512 void pushGeneratorState();
513 void popGeneratorState();
515 void generateDoc(
const QCString &fileName,
int startLine,
517 bool indexWords,
bool isExample,
const QCString &exampleName ,
518 bool singleLine ,
bool linkFromIndex ,
519 bool markdownSupport );
522 void parseText(
const QCString &textStr);
529 { foreach<OutputGenIntf::writeDoc>(ast,ctx,md,m_id); }
530 void startIndexSection(IndexSection is)
531 { foreach<OutputGenIntf::startIndexSection>(is); }
532 void endIndexSection(IndexSection is)
533 { foreach<OutputGenIntf::endIndexSection>(is); }
534 void writePageLink(
const QCString &name,
bool first)
535 { foreach<OutputGenIntf::writePageLink>(name,first); }
536 void startProjectNumber()
537 { foreach<OutputGenIntf::startProjectNumber>(); }
538 void endProjectNumber()
539 { foreach<OutputGenIntf::endProjectNumber>(); }
540 void writeStyleInfo(
int part)
541 { foreach<OutputGenIntf::writeStyleInfo>(part); }
542 void writeSearchInfo()
543 { foreach<OutputGenIntf::writeSearchInfo>(); }
544 void writeFooter(
const QCString &navPath)
545 { foreach<OutputGenIntf::writeFooter>(navPath); }
547 { foreach<OutputGenIntf::endFile>(); }
548 void startTitleHead(
const QCString &fileName)
549 { foreach<OutputGenIntf::startTitleHead>(fileName); }
551 { foreach<OutputGenIntf::endTitleHead>(fileName,name); }
553 { foreach<OutputGenIntf::startParagraph>(classDef); }
555 { foreach<OutputGenIntf::endParagraph>(); }
556 void writeString(
const QCString &text)
557 { foreach<OutputGenIntf::writeString>(text); }
558 void startIndexListItem()
559 { foreach<OutputGenIntf::startIndexListItem>(); }
560 void endIndexListItem()
561 { foreach<OutputGenIntf::endIndexListItem>(); }
562 void startIndexList()
563 { foreach<OutputGenIntf::startIndexList>(); }
565 { foreach<OutputGenIntf::endIndexList>(); }
567 { foreach<OutputGenIntf::startIndexKey>(); }
569 { foreach<OutputGenIntf::endIndexKey>(); }
570 void startIndexValue(
bool b)
571 { foreach<OutputGenIntf::startIndexValue>(b); }
572 void endIndexValue(
const QCString &name,
bool b)
573 { foreach<OutputGenIntf::endIndexValue>(name,b); }
575 { foreach<OutputGenIntf::startItemList>(); }
577 { foreach<OutputGenIntf::endItemList>(); }
579 { foreach<OutputGenIntf::startIndexItem>(ref,file); }
581 { foreach<OutputGenIntf::endIndexItem>(ref,file); }
583 { foreach<OutputGenIntf::docify>(s); }
586 { foreach<OutputGenIntf::writeObjectLink>(ref,file,anchor,name); }
588 { foreach<OutputGenIntf::startTextLink>(file,anchor); }
590 { foreach<OutputGenIntf::endTextLink>(); }
593 { foreach<OutputGenIntf::writeStartAnnoItem>(type,file,path,name); }
594 void startTypewriter()
595 { foreach<OutputGenIntf::startTypewriter>(); }
597 { foreach<OutputGenIntf::endTypewriter>(); }
598 void startGroupHeader(
int extraLevels=0)
599 { foreach<OutputGenIntf::startGroupHeader>(extraLevels); }
600 void endGroupHeader(
int extraLevels=0)
601 { foreach<OutputGenIntf::endGroupHeader>(extraLevels); }
602 void startItemListItem()
603 { foreach<OutputGenIntf::startItemListItem>(); }
604 void endItemListItem()
605 { foreach<OutputGenIntf::endItemListItem>(); }
606 void startMemberSections()
607 { foreach<OutputGenIntf::startMemberSections>(); }
608 void endMemberSections()
609 { foreach<OutputGenIntf::endMemberSections>(); }
610 void startHeaderSection()
611 { foreach<OutputGenIntf::startHeaderSection>(); }
612 void endHeaderSection()
613 { foreach<OutputGenIntf::endHeaderSection>(); }
614 void startMemberHeader(
const QCString &anchor,
int typ = 2)
615 { foreach<OutputGenIntf::startMemberHeader>(anchor,typ); }
616 void endMemberHeader()
617 { foreach<OutputGenIntf::endMemberHeader>(); }
618 void startMemberSubtitle()
619 { foreach<OutputGenIntf::startMemberSubtitle>(); }
620 void endMemberSubtitle()
621 { foreach<OutputGenIntf::endMemberSubtitle>(); }
622 void startMemberDocList()
623 { foreach<OutputGenIntf::startMemberDocList>(); }
624 void endMemberDocList()
625 { foreach<OutputGenIntf::endMemberDocList>(); }
626 void startMemberList()
627 { foreach<OutputGenIntf::startMemberList>(); }
629 { foreach<OutputGenIntf::endMemberList>(); }
630 void startInlineHeader()
631 { foreach<OutputGenIntf::startInlineHeader>(); }
632 void endInlineHeader()
633 { foreach<OutputGenIntf::endInlineHeader>(); }
634 void startAnonTypeScope(
int i1)
635 { foreach<OutputGenIntf::startAnonTypeScope>(i1); }
636 void endAnonTypeScope(
int i1)
637 { foreach<OutputGenIntf::endAnonTypeScope>(i1); }
639 { foreach<OutputGenIntf::startMemberItem>(anchor,type,id); }
640 void endMemberItem(OutputGenerator::MemberItemType type)
641 { foreach<OutputGenIntf::endMemberItem>(type); }
642 void startMemberTemplateParams()
643 { foreach<OutputGenIntf::startMemberTemplateParams>(); }
644 void endMemberTemplateParams(
const QCString &anchor,
const QCString &inheritId)
645 { foreach<OutputGenIntf::endMemberTemplateParams>(anchor,inheritId); }
646 void startCompoundTemplateParams()
647 { foreach<OutputGenIntf::startCompoundTemplateParams>(); }
648 void endCompoundTemplateParams()
649 { foreach<OutputGenIntf::endCompoundTemplateParams>(); }
650 void startMemberGroupHeader(
bool b)
651 { foreach<OutputGenIntf::startMemberGroupHeader>(b); }
652 void endMemberGroupHeader()
653 { foreach<OutputGenIntf::endMemberGroupHeader>(); }
654 void startMemberGroupDocs()
655 { foreach<OutputGenIntf::startMemberGroupDocs>(); }
656 void endMemberGroupDocs()
657 { foreach<OutputGenIntf::endMemberGroupDocs>(); }
658 void startMemberGroup()
659 { foreach<OutputGenIntf::startMemberGroup>(); }
660 void endMemberGroup(
bool last)
661 { foreach<OutputGenIntf::endMemberGroup>(last); }
662 void insertMemberAlign(
bool templ=FALSE)
663 { foreach<OutputGenIntf::insertMemberAlign>(templ); }
664 void insertMemberAlignLeft(OutputGenerator::MemberItemType typ=OutputGenerator::MemberItemType::Normal,
bool templ=FALSE)
665 { foreach<OutputGenIntf::insertMemberAlignLeft>(typ,templ); }
667 { foreach<OutputGenIntf::writeRuler>(); }
669 { foreach<OutputGenIntf::writeAnchor>(fileName,name); }
671 { foreach<OutputGenIntf::startEmphasis>(); }
673 { foreach<OutputGenIntf::endEmphasis>(); }
674 void writeChar(
char c)
675 { foreach<OutputGenIntf::writeChar>(c); }
678 int memCount,
int memTotal,
bool showInline)
679 { foreach<OutputGenIntf::startMemberDoc>(clName,memName,anchor,title,memCount,memTotal,showInline); }
680 void endMemberDoc(
bool hasArgs)
681 { foreach<OutputGenIntf::endMemberDoc>(hasArgs); }
685 { foreach<OutputGenIntf::startDoxyAnchor>(fName,manName,anchor,name,args); }
687 { foreach<OutputGenIntf::endDoxyAnchor>(fn,anchor); }
688 void writeLatexSpacing()
689 { foreach<OutputGenIntf::writeLatexSpacing>(); }
690 void startDescForItem()
691 { foreach<OutputGenIntf::startDescForItem>(); }
692 void endDescForItem()
693 { foreach<OutputGenIntf::endDescForItem>(); }
695 { foreach<OutputGenIntf::startCenter>(); }
697 { foreach<OutputGenIntf::endCenter>(); }
699 { foreach<OutputGenIntf::startSmall>(); }
701 { foreach<OutputGenIntf::endSmall>(); }
703 { foreach<OutputGenIntf::lineBreak>(style); }
705 { foreach<OutputGenIntf::startBold>(); }
707 { foreach<OutputGenIntf::endBold>(); }
709 { foreach<OutputGenIntf::startMemberDescription>(anchor,inheritId, typ); }
710 void endMemberDescription()
711 { foreach<OutputGenIntf::endMemberDescription>(); }
712 void startMemberDeclaration()
713 { foreach<OutputGenIntf::startMemberDeclaration>(); }
715 { foreach<OutputGenIntf::endMemberDeclaration>(anchor,inheritId); }
719 { foreach<OutputGenIntf::writeInheritedSectionTitle>(id,ref,
720 file,anchor,title,name); }
722 { foreach<OutputGenIntf::startExamples>(); }
724 { foreach<OutputGenIntf::endExamples>(); }
726 { foreach<OutputGenIntf::startIndent>(); }
728 { foreach<OutputGenIntf::endIndent>(); }
730 { foreach<OutputGenIntf::startSection>(lab,title,t); }
731 void endSection(
const QCString &lab,SectionType t)
732 { foreach<OutputGenIntf::endSection>(lab,t); }
734 { foreach<OutputGenIntf::addIndexItem>(s1,s2); }
736 { foreach<OutputGenIntf::writeSynopsis>(); }
737 void startClassDiagram()
738 { foreach<OutputGenIntf::startClassDiagram>(); }
740 { foreach<OutputGenIntf::endClassDiagram>(d,f,n); }
742 { foreach<OutputGenIntf::startPageRef>(); }
744 { foreach<OutputGenIntf::endPageRef>(c,a); }
745 void startQuickIndices()
746 { foreach<OutputGenIntf::startQuickIndices>(); }
747 void endQuickIndices()
748 { foreach<OutputGenIntf::endQuickIndices>(); }
749 void writeSplitBar(
const QCString &name)
750 { foreach<OutputGenIntf::writeSplitBar>(name); }
751 void writeNavigationPath(
const QCString &s)
752 { foreach<OutputGenIntf::writeNavigationPath>(s); }
754 { foreach<OutputGenIntf::writeLogo>(); }
755 void writeQuickLinks(
bool compact,HighlightedItem hli,
const QCString &file,
bool needsFolding)
756 { foreach<OutputGenIntf::writeQuickLinks>(compact,hli,file,needsFolding); }
758 { foreach<OutputGenIntf::writeSummaryLink>(file,anchor,title,first); }
760 { foreach<OutputGenIntf::startContents>(); }
762 { foreach<OutputGenIntf::endContents>(); }
763 void startPageDoc(
const QCString &pageTitle)
764 { foreach<OutputGenIntf::startPageDoc>( pageTitle); }
766 { foreach<OutputGenIntf::endPageDoc>(); }
767 void writeNonBreakableSpace(
int num)
768 { foreach<OutputGenIntf::writeNonBreakableSpace>(num); }
769 void startDescTable(
const QCString &title)
770 { foreach<OutputGenIntf::startDescTable>(title); }
772 { foreach<OutputGenIntf::endDescTable>(); }
773 void startDescTableRow()
774 { foreach<OutputGenIntf::startDescTableRow>(); }
775 void endDescTableRow()
776 { foreach<OutputGenIntf::endDescTableRow>(); }
777 void startDescTableTitle()
778 { foreach<OutputGenIntf::startDescTableTitle>(); }
779 void endDescTableTitle()
780 { foreach<OutputGenIntf::endDescTableTitle>(); }
781 void startDescTableData()
782 { foreach<OutputGenIntf::startDescTableData>(); }
783 void endDescTableData()
784 { foreach<OutputGenIntf::endDescTableData>(); }
786 { foreach<OutputGenIntf::startDotGraph>(); }
788 { foreach<OutputGenIntf::endDotGraph>(g); }
789 void startInclDepGraph()
790 { foreach<OutputGenIntf::startInclDepGraph>(); }
792 { foreach<OutputGenIntf::endInclDepGraph>(g); }
793 void startCallGraph()
794 { foreach<OutputGenIntf::startCallGraph>(); }
796 { foreach<OutputGenIntf::endCallGraph>(g); }
797 void startDirDepGraph()
798 { foreach<OutputGenIntf::startDirDepGraph>(); }
800 { foreach<OutputGenIntf::endDirDepGraph>(g); }
801 void startGroupCollaboration()
802 { foreach<OutputGenIntf::startGroupCollaboration>(); }
804 { foreach<OutputGenIntf::endGroupCollaboration>(g); }
806 { foreach<OutputGenIntf::writeGraphicalHierarchy>(g); }
807 void startTextBlock(
bool dense=FALSE)
808 { foreach<OutputGenIntf::startTextBlock>(dense); }
809 void endTextBlock(
bool paraBreak=FALSE)
810 { foreach<OutputGenIntf::endTextBlock>(paraBreak); }
812 { foreach<OutputGenIntf::lastIndexPage>(); }
813 void startMemberDocPrefixItem()
814 { foreach<OutputGenIntf::startMemberDocPrefixItem>(); }
815 void endMemberDocPrefixItem()
816 { foreach<OutputGenIntf::endMemberDocPrefixItem>(); }
817 void startMemberDocName(
bool align)
818 { foreach<OutputGenIntf::startMemberDocName>(align); }
819 void endMemberDocName()
820 { foreach<OutputGenIntf::endMemberDocName>(); }
821 void startParameterType(
bool first,
const QCString &key)
822 { foreach<OutputGenIntf::startParameterType>(first,key); }
823 void endParameterType()
824 { foreach<OutputGenIntf::endParameterType>(); }
825 void startParameterName(
bool one)
826 { foreach<OutputGenIntf::startParameterName>(one); }
827 void endParameterName(
bool last,
bool one,
bool bracket)
828 { foreach<OutputGenIntf::endParameterName>(last,one,bracket); }
829 void startParameterList(
bool openBracket)
830 { foreach<OutputGenIntf::startParameterList>(openBracket); }
831 void endParameterList()
832 { foreach<OutputGenIntf::endParameterList>(); }
833 void exceptionEntry(
const QCString &prefix,
bool closeBracket)
834 { foreach<OutputGenIntf::exceptionEntry>(prefix,closeBracket); }
836 void startConstraintList(
const QCString &header)
837 { foreach<OutputGenIntf::startConstraintList>(header); }
838 void startConstraintParam()
839 { foreach<OutputGenIntf::startConstraintParam>(); }
840 void endConstraintParam()
841 { foreach<OutputGenIntf::endConstraintParam>(); }
842 void startConstraintType()
843 { foreach<OutputGenIntf::startConstraintType>(); }
844 void endConstraintType()
845 { foreach<OutputGenIntf::endConstraintType>(); }
846 void startConstraintDocs()
847 { foreach<OutputGenIntf::startConstraintDocs>(); }
848 void endConstraintDocs()
849 { foreach<OutputGenIntf::endConstraintDocs>(); }
850 void endConstraintList()
851 { foreach<OutputGenIntf::endConstraintList>(); }
853 void startMemberDocSimple(
bool b)
854 { foreach<OutputGenIntf::startMemberDocSimple>(b); }
855 void endMemberDocSimple(
bool b)
856 { foreach<OutputGenIntf::endMemberDocSimple>(b); }
857 void startInlineMemberType()
858 { foreach<OutputGenIntf::startInlineMemberType>(); }
859 void endInlineMemberType()
860 { foreach<OutputGenIntf::endInlineMemberType>(); }
861 void startInlineMemberName()
862 { foreach<OutputGenIntf::startInlineMemberName>(); }
863 void endInlineMemberName()
864 { foreach<OutputGenIntf::endInlineMemberName>(); }
865 void startInlineMemberDoc()
866 { foreach<OutputGenIntf::startInlineMemberDoc>(); }
867 void endInlineMemberDoc()
868 { foreach<OutputGenIntf::endInlineMemberDoc>(); }
871 { foreach<OutputGenIntf::startLabels>(); }
872 void writeLabel(
const QCString &l,
bool isLast)
873 { foreach<OutputGenIntf::writeLabel>(l,isLast); }
875 { foreach<OutputGenIntf::endLabels>(); }
878 { foreach<OutputGenIntf::writeLocalToc>(refs,lt); }
881 { foreach<OutputGenIntf::cleanup>(); }
883 void startPlainFile(
const QCString &name)
884 { foreach<OutputGenIntf::startPlainFile>(name); }
886 { foreach<OutputGenIntf::endPlainFile>(); }
891 void refreshCodeGenerators();
893 template<
template <
class>
class GeneratorT,
class... As>
894 void foreach(As&&... args)
896 for (
auto &e : m_outputGenList)
900 dispatch_call<GeneratorT>(e.variant,std::forward<As>(args)...);
907 explicit OutputGenElem(OutputGenVariant &&v) : variant(std::move(v)) {}
908 OutputGenVariant variant;
909 void setEnabled(
bool e) { enabled = e && !enabledStack.empty() ? enabledStack.top() : e; }
911 std::stack<bool> enabledStack;
914 std::vector<OutputGenElem> m_outputGenList;
Definition: outputlist.h:425
Definition: outputlist.h:464
Definition: outputlist.h:325
Definition: outputlist.h:432
Definition: outputlist.h:453
Definition: outputlist.h:392
Definition: outputlist.h:46
Definition: outputlist.h:465
Definition: outputlist.h:458
Definition: outputlist.h:335
Definition: outputlist.h:424
Helper template class which defers all methods of OutputCodeIntf to an existing object of the templat...
Definition: outputlist.h:64
T * add(As &&... args)
Add a code generator to the list, using a syntax similar to std::make_unique<T>() ...
Definition: outputlist.h:183
Definition: outputlist.h:394
Definition: outputlist.h:413
Definition: outputlist.h:409
Definition: outputlist.h:420
Definition: outputlist.h:376
The common base class of all entity definitions found in the sources.
Definition: definition.h:74
Definition: outputlist.h:433
Definition: outputlist.h:454
Definition: outputlist.h:388
Definition: outputlist.h:429
A model of a class/file/namespace member symbol.
Definition: memberdef.h:46
Definition: outputlist.h:383
Definition: outputlist.h:423
Definition: outputlist.h:358
Definition: outputlist.h:447
Definition: outputlist.h:304
Definition: outputlist.h:45
Definition: outputlist.h:471
Definition: outputlist.h:384
Definition: outputlist.h:430
Definition: outputlist.h:472
Definition: outputlist.h:369
Definition: outputlist.h:444
Definition: outputlist.h:443
Definition: outputlist.h:411
Definition: outputlist.h:467
Definition: outputlist.h:466
Definition: outputlist.h:355
Definition: outputlist.h:372
Definition: outputlist.h:371
Definition: outputlist.h:336
Definition: outputlist.h:301
Definition: outputlist.h:463
Namespace containing typed wrappers to refer to member functions for specific generators called by Ou...
Definition: outputlist.h:299
Definition: outputlist.h:387
Definition: outputlist.h:379
Definition: outputlist.h:451
Definition: outputlist.h:397
Definition: outputlist.h:416
Definition: outputlist.h:339
Definition: outputlist.h:375
Definition: outputlist.h:356
Definition: outputlist.h:51
Generator for RTF code fragments.
Definition: rtfgen.h:29
Definition: outputlist.h:470
Definition: outputlist.h:452
Definition: outputlist.h:398
Definition: outputlist.h:408
Definition: outputlist.h:421
Definition: outputlist.h:348
Generator for HTML code fragments.
Definition: htmlgen.h:24
Definition: outputlist.h:438
Definition: outputlist.h:361
class that represents a list of constant references to sections.
Definition: section.h:98
Generator for RTF output.
Definition: rtfgen.h:73
Definition: outputlist.h:427
Definition: outputlist.h:396
Definition: outputlist.h:445
Definition: outputlist.h:306
Definition: outputlist.h:321
Definition: outputlist.h:418
Definition: outputlist.h:395
Definition: outputlist.h:407
Represents a graphical class hierarchy.
Definition: dotgfxhierarchytable.h:31
Definition: outputlist.h:342
Definition: outputlist.h:446
Definition: outputlist.h:341
Definition: outputlist.h:360
Definition: outputlist.h:365
Generator for HTML output.
Definition: htmlgen.h:71
Definition: outputlist.h:461
Representation of a group collaboration graph.
Definition: dotgroupcollaboration.h:28
Definition: outputlist.h:49
Definition: outputlist.h:449
Definition: outputlist.h:302
Definition: outputlist.h:414
Definition: outputlist.h:322
Definition: outputlist.h:324
Definition: outputlist.h:54
Definition: docbookgen.h:96
Definition: outputlist.h:57
Definition: outputlist.h:316
Definition: outputlist.h:319
Definition: outputlist.h:441
Definition: outputlist.h:435
Definition: outputlist.h:312
Definition: outputlist.h:320
Definition: outputlist.h:307
Definition: outputlist.h:53
Definition: outputlist.h:315
Definition: outputlist.h:357
Definition: outputlist.h:333
Definition: outputlist.h:332
Definition: outputlist.h:404
Definition: outputlist.h:436
Definition: outputlist.h:440
Definition: outputlist.h:305
Definition: outputlist.h:323
Definition: outputlist.h:462
Definition: outputlist.h:456
Definition: outputlist.h:313
Definition: outputlist.h:412
opaque representation of the abstract syntax tree (AST)
Definition: docparser.h:46
Namespace containing typed wrappers to refer to member functions for specific code generators called ...
Definition: outputlist.h:43
Definition: outputlist.h:340
void setEnabledFiltered(OutputType o, bool enabled)
Enable or disable a specific generator.
Definition: outputlist.h:202
Definition: outputlist.h:310
Definition: outputlist.h:403
Definition: outputlist.h:303
Definition: outputlist.h:426
Definition: outputlist.h:326
Generator for LaTeX code fragments.
Definition: latexgen.h:29
Base class that allows alternative implementations outside of the fixed set supported by OutputCodeLi...
Definition: outputlist.h:118
Definition: outputlist.h:410
Class representing a list of different code generators.
Definition: outputlist.h:154
Definition: outputlist.h:368
Definition: outputlist.h:389
Definition: outputlist.h:448
Definition: outputlist.h:434
Definition: outputlist.h:437
Definition: outputlist.h:349
Definition: outputlist.h:459
Definition: outputlist.h:428
Definition: outputlist.h:473
Definition: outputlist.h:450
Definition: outputlist.h:380
Definition: outputlist.h:455
Definition: outputlist.h:468
Definition: outputlist.h:352
Definition: outputlist.h:50
Definition: outputlist.h:415
Class implementing OutputCodeIntf by throwing away everything.
Definition: devnullgen.h:20
Definition: outputlist.h:460
Definition: outputlist.h:331
Definition: outputlist.h:327
Definition: outputlist.h:377
Definition: outputlist.h:422
Definition: outputlist.h:334
Definition: outputlist.h:47
Class representing a built-in class diagram.
Definition: diagram.h:29
Definition: outputlist.h:457
Definition: outputlist.h:442
Definition: outputlist.h:431
Definition: outputlist.h:378
Definition: outputlist.h:314
Definition: outputlist.h:419
Definition: outputlist.h:386
Representation of an call graph.
Definition: dotcallgraph.h:26
Definition: outputlist.h:308
void add(OutputCodeVariant &&v)
Add a code generator already wrapped in a variant type.
Definition: outputlist.h:176
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:479
Representation of a class inheritance or dependency graph.
Definition: dotclassgraph.h:28
Definition: outputlist.h:382
Generator for LaTeX output.
Definition: latexgen.h:88
Definition: outputlist.h:55
Definition: outputlist.h:330
Generator for Man page code fragments.
Definition: mangen.h:26
Definition: outputlist.h:391
Definition: docbookgen.h:47
Definition: outputlist.h:417
Definition: outputlist.h:401
Definition: outputlist.h:56
Definition: outputlist.h:400
Definition: outputlist.h:347
Definition: outputlist.h:474
Representation of an include dependency graph.
Definition: dotincldepgraph.h:30
Representation of an directory dependency graph.
Definition: dotdirdeps.h:25
Definition: outputlist.h:402
Definition: outputlist.h:385
Definition: outputlist.h:393
This is an alternative implementation of QCString.
Definition: qcstring.h:92
Definition: outputlist.h:52
Definition: outputlist.h:370
Definition: outputlist.h:317
Definition: outputlist.h:373
Definition: outputlist.h:309
Definition: outputlist.h:366
Definition: outputlist.h:374
Definition: outputlist.h:390
Definition: outputlist.h:362
Definition: outputlist.h:381
Definition: outputlist.h:399
Definition: outputlist.h:351
Definition: outputlist.h:439
Definition: outputgen.h:49
Definition: outputlist.h:329
Definition: outputlist.h:469
Definition: outputlist.h:318
Definition: outputlist.h:328
Definition: outputgen.h:41
Generator for Man page output.
Definition: mangen.h:63
Definition: outputlist.h:359
Definition: outputlist.h:350
Definition: outputlist.h:367