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

Node representing a HTML table row. More...

#include <src/docnode.h>

+ Inheritance diagram for DocHtmlRow:
+ Collaboration diagram for DocHtmlRow:

Public Member Functions

 DocHtmlRow (DocParser *parser, DocNodeVariant *parent, const HtmlAttribList &attribs)
 
size_t numCells () const
 
const HtmlAttribListattribs () const
 
Token parse ()
 
Token parseXml (bool header)
 
bool isHeading () const
 
void setVisibleCells (uint32_t n)
 
uint32_t visibleCells () const
 
uint32_t rowIndex () const
 
- 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 Member Functions

void setRowIndex (uint32_t idx)
 

Private Attributes

HtmlAttribList m_attribs
 
uint32_t m_visibleCells = 0
 
uint32_t m_rowIdx = static_cast<uint32_t>(-1)
 

Friends

class DocHtmlTable
 

Additional Inherited Members

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

Detailed Description

Node representing a HTML table row.

Definition at line 1239 of file docnode.h.

Constructor & Destructor Documentation

◆ DocHtmlRow()

DocHtmlRow::DocHtmlRow ( DocParser * parser,
DocNodeVariant * parent,
const HtmlAttribList & attribs )
inline

Definition at line 1243 of file docnode.h.

DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:140
HtmlAttribList m_attribs
Definition docnode.h:1256
const HtmlAttribList & attribs() const
Definition docnode.h:1246
DocParser * parser()
Definition docnode.h:97
DocNodeVariant * parent()
Definition docnode.h:89

References attribs(), DocCompoundNode::DocCompoundNode(), m_attribs, DocNode::parent(), and DocNode::parser().

Member Function Documentation

◆ attribs()

const HtmlAttribList & DocHtmlRow::attribs ( ) const
inline

Definition at line 1246 of file docnode.h.

1246{ return m_attribs; }

References m_attribs.

Referenced by DocHtmlRow(), DocbookDocVisitor::operator()(), and HtmlDocVisitor::operator()().

◆ isHeading()

bool DocHtmlRow::isHeading ( ) const

Definition at line 1883 of file docnode.cpp.

1884{ // a row is a table heading if all cells are marked as such
1885 bool heading=TRUE;
1886 for (const auto &n : children())
1887 {
1888 const DocHtmlCell *cell = std::get_if<DocHtmlCell>(&n);
1889 if (cell && !cell->isHeading())
1890 {
1891 heading = FALSE;
1892 break;
1893 }
1894 }
1895 return !children().empty() && heading;
1896}
DocNodeList & children()
Definition docnode.h:142
bool isHeading() const
Definition docnode.h:1194
bool empty() const
checks whether the container is empty
Definition growvector.h:140
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34

References DocCompoundNode::children(), GrowVector< T >::empty(), FALSE, DocHtmlCell::isHeading(), and TRUE.

Referenced by DocbookDocVisitor::operator()(), LatexDocVisitor::operator()(), RTFDocVisitor::operator()(), parse(), and parseXml().

◆ numCells()

size_t DocHtmlRow::numCells ( ) const
inline

Definition at line 1245 of file docnode.h.

1245{ return children().size(); }
size_t size() const
returns the number of elements
Definition growvector.h:93

References DocCompoundNode::children(), and GrowVector< T >::size().

Referenced by RTFDocVisitor::operator()().

◆ parse()

Token DocHtmlRow::parse ( )

Definition at line 1898 of file docnode.cpp.

1899{
1900 AUTO_TRACE();
1901 Token retval = Token::make_RetVal_OK();
1902 auto ns = AutoNodeStack(parser(),thisVariant());
1903
1904 bool isHeading=FALSE;
1905 bool isFirst=TRUE;
1906 DocHtmlCell *cell=nullptr;
1907
1908 // get next token
1909 Token tok=parser()->tokenizer.lex();
1910 // skip whitespace
1911 while (tok.is_any_of(TokenRetval::TK_WHITESPACE,TokenRetval::TK_NEWPARA)) tok=parser()->tokenizer.lex();
1912 // should find a html tag now
1913 if (tok.is(TokenRetval::TK_HTMLTAG))
1914 {
1915 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1916 if (tagId==HtmlTagType::HTML_TD && !parser()->context.token->endTag) // found <td> tag
1917 {
1918 }
1919 else if (tagId==HtmlTagType::HTML_TH && !parser()->context.token->endTag) // found <th> tag
1920 {
1922 }
1923 else // found some other tag
1924 {
1925 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"expected <td> or <th> tag but "
1926 "found <%s> instead!",qPrint(parser()->context.token->name));
1927 parser()->tokenizer.pushBackHtmlTag(parser()->context.token->name);
1928 goto endrow;
1929 }
1930 }
1931 else if (tok.is_any_of(TokenRetval::TK_NONE,TokenRetval::TK_EOF)) // premature end of comment
1932 {
1933 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"unexpected end of comment while looking"
1934 " for a html description title");
1935 goto endrow;
1936 }
1937 else // token other than html token
1938 {
1939 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"expected <td> or <th> tag but found %s token instead!",
1940 tok.to_string());
1941 goto endrow;
1942 }
1943
1944 // parse one or more cells
1945 do
1946 {
1947 children().append<DocHtmlCell>(parser(),thisVariant(),
1949 isHeading);
1950 cell = children().get_last<DocHtmlCell>();
1951 cell->markFirst(isFirst);
1952 isFirst=FALSE;
1953 retval=cell->parse();
1954 isHeading = retval.is(TokenRetval::RetVal_TableHCell);
1955 }
1956 while (retval.is_any_of(TokenRetval::RetVal_TableCell,TokenRetval::RetVal_TableHCell));
1957 cell->markLast(TRUE);
1958
1959endrow:
1960 return retval;
1961}
void markLast(bool v=TRUE)
Definition docnode.h:1198
void markFirst(bool v=TRUE)
Definition docnode.h:1197
Token parse()
Definition docnode.cpp:1731
bool isHeading() const
Definition docnode.cpp:1883
DocNodeVariant * thisVariant()
Definition docnode.h:92
DocTokenizer tokenizer
DocParserContext context
void pushBackHtmlTag(const QCString &tag)
bool is(TokenRetval rv) const
TOKEN_SPECIFICATIONS RETVAL_SPECIFICATIONS const char * to_string() const
bool is_any_of(ARGS... args) const
HtmlTagType
Definition cmdmapper.h:169
#define AUTO_TRACE(...)
Definition docnode.cpp:46
#define warn_doc_error(file, line, fmt,...)
Definition message.h:74
const Mapper< HtmlTagType > * htmlTagMapper
const char * qPrint(const char *s)
Definition qcstring.h:672
void append(Args &&... args)
Append a new DocNodeVariant to the list by constructing it with type T and parameters Args.
Definition docnode.h:1393
T * get_last()
Returns a pointer to the last element in the list if that element exists and holds a T,...
Definition docnode.h:1404
TokenInfo * token
Definition docparser_p.h:92
HtmlAttribList attribs

References DocNodeList::append(), TokenInfo::attribs, AUTO_TRACE, DocCompoundNode::children(), DocParser::context, FALSE, DocNodeList::get_last(), HTML_TD, HTML_TH, Mappers::htmlTagMapper, Token::is(), Token::is_any_of(), isHeading(), DocTokenizer::lex(), DocHtmlCell::markFirst(), DocHtmlCell::markLast(), DocHtmlCell::parse(), DocNode::parser(), DocTokenizer::pushBackHtmlTag(), qPrint(), DocNode::thisVariant(), Token::to_string(), DocParserContext::token, DocParser::tokenizer, TRUE, and warn_doc_error.

◆ parseXml()

Token DocHtmlRow::parseXml ( bool header)

Definition at line 1963 of file docnode.cpp.

1964{
1965 AUTO_TRACE();
1966 Token retval = Token::make_RetVal_OK();
1967 auto ns = AutoNodeStack(parser(),thisVariant());
1968
1969 bool isFirst=TRUE;
1970 DocHtmlCell *cell=nullptr;
1971
1972 // get next token
1973 Token tok=parser()->tokenizer.lex();
1974 // skip whitespace
1975 while (tok.is_any_of(TokenRetval::TK_WHITESPACE,TokenRetval::TK_NEWPARA)) tok=parser()->tokenizer.lex();
1976 // should find a html tag now
1977 if (tok.is(TokenRetval::TK_HTMLTAG))
1978 {
1979 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1980 if (tagId==HtmlTagType::XML_TERM && !parser()->context.token->endTag) // found <term> tag
1981 {
1982 }
1983 else if (tagId==HtmlTagType::XML_DESCRIPTION && !parser()->context.token->endTag) // found <description> tag
1984 {
1985 }
1986 else // found some other tag
1987 {
1988 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"expected <term> or <description> tag but "
1989 "found <%s> instead!",qPrint(parser()->context.token->name));
1990 parser()->tokenizer.pushBackHtmlTag(parser()->context.token->name);
1991 goto endrow;
1992 }
1993 }
1994 else if (tok.is_any_of(TokenRetval::TK_NONE,TokenRetval::TK_EOF)) // premature end of comment
1995 {
1996 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"unexpected end of comment while looking"
1997 " for a html description title");
1998 goto endrow;
1999 }
2000 else // token other than html token
2001 {
2002 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"expected <td> or <th> tag but found %s token instead!",
2003 tok.to_string());
2004 goto endrow;
2005 }
2006
2007 do
2008 {
2010 cell = children().get_last<DocHtmlCell>();
2011 cell->markFirst(isFirst);
2012 isFirst=FALSE;
2013 retval=cell->parseXml();
2014 }
2015 while (retval.is_any_of(TokenRetval::RetVal_TableCell,TokenRetval::RetVal_TableHCell));
2016 cell->markLast(TRUE);
2017
2018endrow:
2019 return retval;
2020}
Token parseXml()
Definition docnode.cpp:1765

References DocNodeList::append(), TokenInfo::attribs, AUTO_TRACE, DocCompoundNode::children(), DocParser::context, FALSE, DocNodeList::get_last(), Mappers::htmlTagMapper, Token::is(), Token::is_any_of(), isHeading(), DocTokenizer::lex(), DocHtmlCell::markFirst(), DocHtmlCell::markLast(), DocNode::parser(), DocHtmlCell::parseXml(), DocTokenizer::pushBackHtmlTag(), qPrint(), DocNode::thisVariant(), Token::to_string(), DocParserContext::token, DocParser::tokenizer, TRUE, warn_doc_error, XML_DESCRIPTION, and XML_TERM.

◆ rowIndex()

uint32_t DocHtmlRow::rowIndex ( ) const
inline

Definition at line 1252 of file docnode.h.

1252{ return m_rowIdx; }
uint32_t m_rowIdx
Definition docnode.h:1258

References m_rowIdx.

Referenced by LatexDocVisitor::operator()().

◆ setRowIndex()

void DocHtmlRow::setRowIndex ( uint32_t idx)
inlineprivate

Definition at line 1255 of file docnode.h.

1255{ m_rowIdx = idx; }

References m_rowIdx.

Referenced by DocHtmlTable::computeTableGrid().

◆ setVisibleCells()

void DocHtmlRow::setVisibleCells ( uint32_t n)
inline

Definition at line 1250 of file docnode.h.

1250{ m_visibleCells = n; }
uint32_t m_visibleCells
Definition docnode.h:1257

References m_visibleCells.

Referenced by DocHtmlTable::computeTableGrid().

◆ visibleCells()

uint32_t DocHtmlRow::visibleCells ( ) const
inline

Definition at line 1251 of file docnode.h.

1251{ return m_visibleCells; }

References m_visibleCells.

Friends And Related Symbol Documentation

◆ DocHtmlTable

friend class DocHtmlTable
friend

Definition at line 1241 of file docnode.h.

References DocHtmlTable.

Referenced by DocHtmlTable.

Member Data Documentation

◆ m_attribs

HtmlAttribList DocHtmlRow::m_attribs
private

Definition at line 1256 of file docnode.h.

Referenced by attribs(), and DocHtmlRow().

◆ m_rowIdx

uint32_t DocHtmlRow::m_rowIdx = static_cast<uint32_t>(-1)
private

Definition at line 1258 of file docnode.h.

Referenced by rowIndex(), and setRowIndex().

◆ m_visibleCells

uint32_t DocHtmlRow::m_visibleCells = 0
private

Definition at line 1257 of file docnode.h.

Referenced by setVisibleCells(), and visibleCells().


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