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 540 of file docnode.cpp.

540 :
542{
543}
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 545 of file docnode.cpp.

546{
547 AUTO_TRACE();
548 auto ns = AutoNodeStack(parser(),thisVariant());
549
551 Token tok = parser()->tokenizer.lex();
552 while (!tok.is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF))
553 {
554 if (!parser()->defaultHandleToken(thisVariant(),tok,children()))
555 {
556 parser()->errorHandleDefaultToken(thisVariant(),tok,children(),"\\refitem");
557 }
558 tok = parser()->tokenizer.lex();
559 }
562
563 if (!m_target.empty())
564 {
565 const SectionInfo *sec = SectionManager::instance().find(m_target);
566 if (sec==nullptr && parser()->context.lang==SrcLangExt::Markdown) // lookup as markdown file
567 {
569 }
570 if (sec) // ref to section or anchor
571 {
572 // set defaults
573 m_ref = sec->ref();
576 m_anchor = sec->label();
577 m_isSubPage = false;
578 // adjust if needed
579 switch (sec->type().level())
580 {
582 {
583 PageDef *pd = Doxygen::pageLinkedMap->find(m_target);
584 m_isSubPage = pd && pd->hasParentPage();
585 if (!m_isSubPage)
586 {
587 m_anchor="";
588 }
589 }
590 break;
593 break;
596 break;
599 break;
600 default:
601 break;
602 }
603 //printf("m_ref=%s,m_file=%s,type=%d\n",
604 // qPrint(m_ref),qPrint(m_file),m_refType);
605 }
606 else
607 {
608 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to unknown section {}",m_target);
609 }
610 }
611 else
612 {
613 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to empty target");
614 }
615}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
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:53
static DString stripKnownExtensions(const DString &text)
Definition docnode.cpp:111
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, 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: