6020{
6022 Token retval = Token::make_RetVal_OK();
6024
6025 if (!
m_id.isEmpty())
6026 {
6028 if (sec)
6029 {
6032 QCString titleStr = sec->
title();
6037 }
6038 }
6039
6040
6042 DocPara *lastPar=nullptr;
6043 do
6044 {
6047 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
6048 retval=par->parse();
6049 if (!par->isEmpty())
6050 {
6052 lastPar = par;
6053 }
6054 else
6055 {
6057 }
6058 if (retval.
is(TokenRetval::TK_LISTITEM))
6059 {
6061 }
6062 if (retval.
is(TokenRetval::RetVal_Internal))
6063 {
6066 if (retval.is(TokenRetval::RetVal_EndInternal))
6067 {
6068 retval = Token::make_RetVal_OK();
6069 }
6070 }
6071 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6072 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
6073 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
6074 );
6075
6077
6078 while (true)
6079 {
6080 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
6081 {
6082
6083 while (retval.
is(TokenRetval::RetVal_Subsection))
6084 {
6086 2,
6089 }
6090 break;
6091 }
6092 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
6093 {
6096 {
6098 parser()->tokenizer.getLineNr(),
6099 "Unexpected subsubsection command found inside {}!",
6101 }
6102
6103 while (retval.
is(TokenRetval::RetVal_Subsubsection))
6104 {
6106 3,
6109 }
6110 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
6111 }
6112 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
6113 {
6116 {
6118 "Unexpected paragraph command found inside {}!",
6120 }
6121
6122 while (retval.
is(TokenRetval::RetVal_Paragraph))
6123 {
6125 4,
6128 }
6129 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
6130 }
6131 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
6132 {
6135 {
6137 "Unexpected subparagraph command found inside {}!",
6139 }
6140
6141 while (retval.
is(TokenRetval::RetVal_SubParagraph))
6142 {
6144 5,
6147 }
6148 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
6149 }
6150 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
6151 {
6154 {
6156 "Unexpected subsubparagraph command found inside {}!",
6158 }
6159
6160 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
6161 {
6163 6,
6166 }
6167 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
6168 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
6169 }
6170 else
6171 {
6172 break;
6173 }
6174 }
6175
6177 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6178 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
6179 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
6180 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
6181 );
6182
6184 return retval;
6185}
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,...