6008{
6010 Token retval = Token::make_RetVal_OK();
6012
6013 if (!
m_id.isEmpty())
6014 {
6016 if (sec)
6017 {
6020 QCString titleStr = sec->
title();
6025 }
6026 }
6027
6028
6030 DocPara *lastPar=nullptr;
6031 do
6032 {
6035 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
6036 retval=par->parse();
6037 if (!par->isEmpty())
6038 {
6040 lastPar = par;
6041 }
6042 else
6043 {
6045 }
6046 if (retval.
is(TokenRetval::TK_LISTITEM))
6047 {
6049 }
6050 if (retval.
is(TokenRetval::RetVal_Internal))
6051 {
6054 if (retval.is(TokenRetval::RetVal_EndInternal))
6055 {
6056 retval = Token::make_RetVal_OK();
6057 }
6058 }
6059 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6060 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
6061 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
6062 );
6063
6065
6066 while (true)
6067 {
6068 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
6069 {
6070
6071 while (retval.
is(TokenRetval::RetVal_Subsection))
6072 {
6074 2,
6077 }
6078 break;
6079 }
6080 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
6081 {
6084 {
6086 parser()->tokenizer.getLineNr(),
6087 "Unexpected subsubsection command found inside {}!",
6089 }
6090
6091 while (retval.
is(TokenRetval::RetVal_Subsubsection))
6092 {
6094 3,
6097 }
6098 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
6099 }
6100 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
6101 {
6104 {
6106 "Unexpected paragraph command found inside {}!",
6108 }
6109
6110 while (retval.
is(TokenRetval::RetVal_Paragraph))
6111 {
6113 4,
6116 }
6117 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
6118 }
6119 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
6120 {
6123 {
6125 "Unexpected subparagraph command found inside {}!",
6127 }
6128
6129 while (retval.
is(TokenRetval::RetVal_SubParagraph))
6130 {
6132 5,
6135 }
6136 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
6137 }
6138 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
6139 {
6142 {
6144 "Unexpected subsubparagraph command found inside {}!",
6146 }
6147
6148 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
6149 {
6151 6,
6154 }
6155 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
6156 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
6157 }
6158 else
6159 {
6160 break;
6161 }
6162 }
6163
6165 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6166 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
6167 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
6168 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
6169 );
6170
6172 return retval;
6173}
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,...