6013{
6015 Token retval = Token::make_RetVal_OK();
6017
6018 if (!
m_id.isEmpty())
6019 {
6021 if (sec)
6022 {
6025 QCString titleStr = sec->
title();
6030 }
6031 }
6032
6033
6035 DocPara *lastPar=nullptr;
6036 do
6037 {
6040 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
6041 retval=par->parse();
6042 if (!par->isEmpty())
6043 {
6045 lastPar = par;
6046 }
6047 else
6048 {
6050 }
6051 if (retval.
is(TokenRetval::TK_LISTITEM))
6052 {
6054 }
6055 if (retval.
is(TokenRetval::RetVal_Internal))
6056 {
6059 if (retval.is(TokenRetval::RetVal_EndInternal))
6060 {
6061 retval = Token::make_RetVal_OK();
6062 }
6063 }
6064 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6065 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
6066 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
6067 );
6068
6070
6071 while (true)
6072 {
6073 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
6074 {
6075
6076 while (retval.
is(TokenRetval::RetVal_Subsection))
6077 {
6079 2,
6082 }
6083 break;
6084 }
6085 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
6086 {
6089 {
6091 parser()->tokenizer.getLineNr(),
6092 "Unexpected subsubsection command found inside {}!",
6094 }
6095
6096 while (retval.
is(TokenRetval::RetVal_Subsubsection))
6097 {
6099 3,
6102 }
6103 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
6104 }
6105 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
6106 {
6109 {
6111 "Unexpected paragraph command found inside {}!",
6113 }
6114
6115 while (retval.
is(TokenRetval::RetVal_Paragraph))
6116 {
6118 4,
6121 }
6122 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
6123 }
6124 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
6125 {
6128 {
6130 "Unexpected subparagraph command found inside {}!",
6132 }
6133
6134 while (retval.
is(TokenRetval::RetVal_SubParagraph))
6135 {
6137 5,
6140 }
6141 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
6142 }
6143 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
6144 {
6147 {
6149 "Unexpected subsubparagraph command found inside {}!",
6151 }
6152
6153 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
6154 {
6156 6,
6159 }
6160 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
6161 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
6162 }
6163 else
6164 {
6165 break;
6166 }
6167 }
6168
6170 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6171 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
6172 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
6173 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
6174 );
6175
6177 return retval;
6178}
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,...