Doxygen
Loading...
Searching...
No Matches
DocSecRefItem Class Referencefinal

Node representing a reference to a section. More...

#include <src/docnode.h>

Inheritance diagram for DocSecRefItem:
Collaboration diagram for DocSecRefItem:

Public Member Functions

 DocSecRefItem (DocParser *parser, DocNodeVariant *parent, const DString &target)
DString target () const
DString file () const
DString anchor () const
DString relPath () const
DString ref () const
bool refToTable () const
bool isSubPage () const
void parse ()
Public Member Functions inherited from DocCompoundNode
 DocCompoundNode (DocParser *parser, DocNodeVariant *parent)
DocNodeListchildren ()
const DocNodeListchildren () const
Public Member Functions inherited from DocNode
 DocNode (DocParser *parser, DocNodeVariant *parent)
 ~DocNode ()=default
DocNodeVariantparent ()
const DocNodeVariantparent () const
DocNodeVariantthisVariant ()
const DocNodeVariantthisVariant () const
void setThisVariant (DocNodeVariant *thisVariant)
DocParserparser ()
const DocParserparser () const
void setParent (DocNodeVariant *parent)
bool isPreformatted () const

Private Attributes

DString m_target
RefType m_refType = Unknown
bool m_isSubPage = false
DString m_file
DString m_relPath
DString m_ref
DString m_anchor

Additional Inherited Members

Protected Types inherited from DocNode
enum  RefType {
  Unknown , Anchor , Section , Table ,
  Requirement
}
Protected Member Functions inherited from DocNode
void setInsidePreformatted (bool p)

Detailed Description

Node representing a reference to a section.

Definition at line 943 of file docnode.h.

Constructor & Destructor Documentation

◆ DocSecRefItem()

DocSecRefItem::DocSecRefItem ( DocParser * parser,
DocNodeVariant * parent,
const DString & target )

Definition at line 538 of file docnode.cpp.

538 :
540{
541}
DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:141
DocParser * parser()
Definition docnode.h:97
DocNodeVariant * parent()
Definition docnode.h:89
DocParserContext context
DString m_relPath
Definition docnode.h:961
DString target() const
Definition docnode.h:947
DString m_target
Definition docnode.h:957

References DocCompoundNode::DocCompoundNode(), m_relPath, m_target, DocNode::parent(), DocNode::parser(), relPath(), and target().

Member Function Documentation

◆ anchor()

DString DocSecRefItem::anchor ( ) const
inline

◆ file()

DString DocSecRefItem::file ( ) const
inline

◆ isSubPage()

bool DocSecRefItem::isSubPage ( ) const
inline

Definition at line 953 of file docnode.h.

953{ return m_isSubPage; }
bool m_isSubPage
Definition docnode.h:959

References m_isSubPage.

Referenced by HtmlDocVisitor::operator()(), and LatexDocVisitor::operator()().

◆ parse()

void DocSecRefItem::parse ( )

Definition at line 543 of file docnode.cpp.

544{
545 AUTO_TRACE();
546 auto ns = AutoNodeStack(parser(),thisVariant());
547
549 Token tok = parser()->tokenizer.lex();
550 while (!tok.is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF))
551 {
552 if (!parser()->defaultHandleToken(thisVariant(),tok,children()))
553 {
554 parser()->errorHandleDefaultToken(thisVariant(),tok,children(),"\\refitem");
555 }
556 tok = parser()->tokenizer.lex();
557 }
560
561 if (!m_target.empty())
562 {
563 const SectionInfo *sec = SectionManager::instance().find(m_target);
564 if (sec==nullptr && parser()->context.lang==SrcLangExt::Markdown) // lookup as markdown file
565 {
567 }
568 if (sec) // ref to section or anchor
569 {
570 // set defaults
571 m_ref = sec->ref();
574 m_anchor = sec->label();
575 m_isSubPage = false;
576 // adjust if needed
577 switch (sec->type().level())
578 {
580 {
581 PageDef *pd = Doxygen::pageLinkedMap->find(m_target);
582 m_isSubPage = pd && pd->hasParentPage();
583 if (!m_isSubPage)
584 {
585 m_anchor="";
586 }
587 }
588 break;
591 break;
594 break;
597 break;
598 default:
599 break;
600 }
601 //printf("m_ref=%s,m_file=%s,type=%d\n",
602 // qPrint(m_ref),qPrint(m_file),m_refType);
603 }
604 else
605 {
606 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to unknown section {}",m_target);
607 }
608 }
609 else
610 {
611 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to empty target");
612 }
613}
AutoNodeStack(DocParser *parser, DocNodeVariant *node)
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152
DocNodeList & children()
Definition docnode.h:143
DocNodeVariant * thisVariant()
Definition docnode.h:92
@ Table
Definition docnode.h:109
@ Requirement
Definition docnode.h:109
@ Section
Definition docnode.h:109
@ Anchor
Definition docnode.h:109
void handlePendingStyleCommands(DocNodeVariant *parent, DocNodeList &children, size_t numberOfElementsToClose=0)
DocTokenizer tokenizer
void errorHandleDefaultToken(DocNodeVariant *parent, Token tok, DocNodeList &children, const DString &txt)
DString m_ref
Definition docnode.h:962
RefType m_refType
Definition docnode.h:958
void setStateTitle()
void setStatePara()
static PageLinkedMap * pageLinkedMap
Definition doxygen.h:92
const T * find(const std::string &key) const
Definition linkedmap.h:47
virtual bool hasParentPage() const =0
DString fileName() const
Definition section.h:74
SectionType type() const
Definition section.h:71
DString ref() const
Definition section.h:72
DString label() const
Definition section.h:69
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:179
static constexpr int Anchor
Definition section.h:40
static constexpr int Table
Definition section.h:41
constexpr int level() const
Definition section.h:46
static constexpr int Requirement
Definition section.h:42
static constexpr int Page
Definition section.h:31
bool is_any_of(ARGS... args) const
#define AUTO_TRACE(...)
Definition docnode.cpp:51
static DString stripKnownExtensions(const DString &text)
Definition docnode.cpp:109
DString markdownFileNameToId(const DString &fileName)
processes string s and converts markdown into doxygen/html commands.
#define warn_doc_error(file, line, fmt,...)
Definition message.h:112

References DocNode::Anchor, SectionType::Anchor, AUTO_TRACE, AutoNodeStack::AutoNodeStack(), DocCompoundNode::children(), DString::empty(), DocParser::errorHandleDefaultToken(), SectionInfo::fileName(), LinkedMap< T, Hash, KeyEqual, Map >::find(), DocParser::handlePendingStyleCommands(), PageDef::hasParentPage(), SectionManager::instance(), Token::is_any_of(), SectionInfo::label(), SectionType::level(), DocTokenizer::lex(), m_anchor, m_file, m_isSubPage, m_ref, m_refType, m_target, markdownFileNameToId(), SectionType::Page, Doxygen::pageLinkedMap, DocNode::parser(), SectionInfo::ref(), DocNode::Requirement, SectionType::Requirement, DocNode::Section, DocTokenizer::setStatePara(), DocTokenizer::setStateTitle(), stripKnownExtensions(), DocNode::Table, SectionType::Table, DocNode::thisVariant(), DocParser::tokenizer, SectionInfo::type(), and warn_doc_error.

◆ ref()

DString DocSecRefItem::ref ( ) const
inline

Definition at line 951 of file docnode.h.

951{ return m_ref; }

References m_ref.

Referenced by HtmlDocVisitor::operator()(), and LatexDocVisitor::operator()().

◆ refToTable()

bool DocSecRefItem::refToTable ( ) const
inline

Definition at line 952 of file docnode.h.

952{ return m_refType==Table; }

References m_refType, and DocNode::Table.

Referenced by LatexDocVisitor::operator()().

◆ relPath()

DString DocSecRefItem::relPath ( ) const
inline

Definition at line 950 of file docnode.h.

950{ return m_relPath; }

References m_relPath.

Referenced by DocSecRefItem(), and HtmlDocVisitor::operator()().

◆ target()

DString DocSecRefItem::target ( ) const
inline

Definition at line 947 of file docnode.h.

947{ return m_target; }

References m_target.

Referenced by DocSecRefItem(), and PrintDocVisitor::operator()().

Member Data Documentation

◆ m_anchor

DString DocSecRefItem::m_anchor
private

Definition at line 963 of file docnode.h.

Referenced by anchor(), and parse().

◆ m_file

DString DocSecRefItem::m_file
private

Definition at line 960 of file docnode.h.

Referenced by file(), and parse().

◆ m_isSubPage

bool DocSecRefItem::m_isSubPage = false
private

Definition at line 959 of file docnode.h.

Referenced by isSubPage(), and parse().

◆ m_ref

DString DocSecRefItem::m_ref
private

Definition at line 962 of file docnode.h.

Referenced by parse(), and ref().

◆ m_refType

RefType DocSecRefItem::m_refType = Unknown
private

Definition at line 958 of file docnode.h.

Referenced by parse(), and refToTable().

◆ m_relPath

DString DocSecRefItem::m_relPath
private

Definition at line 961 of file docnode.h.

Referenced by DocSecRefItem(), and relPath().

◆ m_target

DString DocSecRefItem::m_target
private

Definition at line 957 of file docnode.h.

Referenced by DocSecRefItem(), parse(), and target().


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