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

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 QCString &target)
QCString target () const
QCString file () const
QCString anchor () const
QCString relPath () const
QCString 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

QCString m_target
RefType m_refType = Unknown
bool m_isSubPage = false
QCString m_file
QCString m_relPath
QCString m_ref
QCString 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 QCString & target )

Definition at line 535 of file docnode.cpp.

535 :
537{
538}
DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:141
DocParser * parser()
Definition docnode.h:98
DocNodeVariant * parent()
Definition docnode.h:90
QCString m_target
Definition docnode.h:957
QCString target() const
Definition docnode.h:947
QCString m_relPath
Definition docnode.h:961

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

Member Function Documentation

◆ anchor()

QCString DocSecRefItem::anchor ( ) const
inline

◆ file()

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

541{
542 AUTO_TRACE();
543 auto ns = AutoNodeStack(parser(),thisVariant());
544
546 Token tok = parser()->tokenizer.lex();
547 while (!tok.is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF))
548 {
549 if (!parser()->defaultHandleToken(thisVariant(),tok,children()))
550 {
551 parser()->errorHandleDefaultToken(thisVariant(),tok,children(),"\\refitem");
552 }
553 tok = parser()->tokenizer.lex();
554 }
557
558 if (!m_target.isEmpty())
559 {
560 const SectionInfo *sec = SectionManager::instance().find(m_target);
561 if (sec==nullptr && parser()->context.lang==SrcLangExt::Markdown) // lookup as markdown file
562 {
564 }
565 if (sec) // ref to section or anchor
566 {
567 // set defaults
568 m_ref = sec->ref();
571 m_anchor = sec->label();
572 m_isSubPage = false;
573 // adjust if needed
574 switch (sec->type().level())
575 {
577 {
578 PageDef *pd = Doxygen::pageLinkedMap->find(m_target);
579 m_isSubPage = pd && pd->hasParentPage();
580 if (!m_isSubPage)
581 {
582 m_anchor="";
583 }
584 }
585 break;
588 break;
591 break;
594 break;
595 default:
596 break;
597 }
598 //printf("m_ref=%s,m_file=%s,type=%d\n",
599 // qPrint(m_ref),qPrint(m_file),m_refType);
600 }
601 else
602 {
603 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to unknown section {}",m_target);
604 }
605 }
606 else
607 {
608 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"reference to empty target");
609 }
610}
DocNodeList & children()
Definition docnode.h:143
DocNodeVariant * thisVariant()
Definition docnode.h:93
@ Table
Definition docnode.h:110
@ Requirement
Definition docnode.h:110
@ Section
Definition docnode.h:110
@ Anchor
Definition docnode.h:110
void handlePendingStyleCommands(DocNodeVariant *parent, DocNodeList &children, size_t numberOfElementsToClose=0)
DocTokenizer tokenizer
void errorHandleDefaultToken(DocNodeVariant *parent, Token tok, DocNodeList &children, const QCString &txt)
QCString m_ref
Definition docnode.h:962
RefType m_refType
Definition docnode.h:958
void setStateTitle()
void setStatePara()
static PageLinkedMap * pageLinkedMap
Definition doxygen.h:99
const T * find(const std::string &key) const
Definition linkedmap.h:47
virtual bool hasParentPage() const =0
QCString label() const
Definition section.h:69
QCString ref() const
Definition section.h:72
QCString fileName() const
Definition section.h:74
SectionType type() const
Definition section.h:71
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:48
static QCString stripKnownExtensions(const QCString &text)
Definition docnode.cpp:106
QCString markdownFileNameToId(const QCString &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(), 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()

QCString 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()

QCString 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()

QCString 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

QCString DocSecRefItem::m_anchor
private

Definition at line 963 of file docnode.h.

Referenced by anchor(), and parse().

◆ m_file

QCString 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

QCString 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

QCString DocSecRefItem::m_relPath
private

Definition at line 961 of file docnode.h.

Referenced by DocSecRefItem(), and relPath().

◆ m_target

QCString 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: