6029{
6031 Token retval = Token::make_RetVal_OK();
6033
6034 if (!
m_id.isEmpty())
6035 {
6037 if (sec)
6038 {
6041 QCString titleStr = sec->
title();
6046 }
6047 }
6048
6049
6051 DocPara *lastPar=nullptr;
6052 do
6053 {
6056 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
6057 retval=par->parse();
6058 if (!par->isEmpty())
6059 {
6061 lastPar = par;
6062 }
6063 else
6064 {
6066 }
6067 if (retval.
is(TokenRetval::TK_LISTITEM))
6068 {
6070 }
6071 if (retval.
is(TokenRetval::RetVal_Internal))
6072 {
6075 if (retval.is(TokenRetval::RetVal_EndInternal))
6076 {
6077 retval = Token::make_RetVal_OK();
6078 }
6079 }
6080 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6081 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
6082 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
6083 );
6084
6086
6087 while (true)
6088 {
6089 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
6090 {
6091
6092 while (retval.
is(TokenRetval::RetVal_Subsection))
6093 {
6095 2,
6098 }
6099 break;
6100 }
6101 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
6102 {
6105 {
6107 parser()->tokenizer.getLineNr(),
6108 "Unexpected subsubsection command found inside {}!",
6110 }
6111
6112 while (retval.
is(TokenRetval::RetVal_Subsubsection))
6113 {
6115 3,
6118 }
6119 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
6120 }
6121 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
6122 {
6125 {
6127 "Unexpected paragraph command found inside {}!",
6129 }
6130
6131 while (retval.
is(TokenRetval::RetVal_Paragraph))
6132 {
6134 4,
6137 }
6138 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
6139 }
6140 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
6141 {
6144 {
6146 "Unexpected subparagraph command found inside {}!",
6148 }
6149
6150 while (retval.
is(TokenRetval::RetVal_SubParagraph))
6151 {
6153 5,
6156 }
6157 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
6158 }
6159 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
6160 {
6163 {
6165 "Unexpected subsubparagraph command found inside {}!",
6167 }
6168
6169 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
6170 {
6172 6,
6175 }
6176 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
6177 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
6178 }
6179 else
6180 {
6181 break;
6182 }
6183 }
6184
6186 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6187 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
6188 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
6189 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
6190 );
6191
6193 return retval;
6194}
static AnchorGenerator & instance()
Returns the singleton instance.
DocNodeVariant * thisVariant()
void markLast(bool v=TRUE)
std::unique_ptr< DocNodeVariant > m_title
DocSection(DocParser *parser, DocNodeVariant *parent, int level, const QCString &id)
const DocNodeVariant * title() const
void pop_back()
removes the last element
const T * find(const std::string &key) const
bool isEmpty() const
Returns TRUE iff the string is empty.
QCString fileName() const
static SectionManager & instance()
returns a reference to the singleton
bool is(TokenRetval rv) const
TOKEN_SPECIFICATIONS RETVAL_SPECIFICATIONS const char * to_string() const
bool is_any_of(ARGS... args) const
static const char * g_sectionLevelToName[]
#define INTERNAL_ASSERT(x)
#define AUTO_TRACE_EXIT(...)
std::unique_ptr< DocNodeVariant > createDocNode(Args &&...args)
#define warn_doc_error(file, line, fmt,...)
void append(Args &&... args)
Append a new DocNodeVariant to the list by constructing it with type T and parameters Args.
T * get_last()
Returns a pointer to the last element in the list if that element exists and holds a T,...