5966{
5968 Token retval = Token::make_RetVal_OK();
5970
5971 if (!
m_id.isEmpty())
5972 {
5974 if (sec)
5975 {
5978 QCString titleStr = sec->
title();
5983 }
5984 }
5985
5986
5988 DocPara *lastPar=nullptr;
5989 do
5990 {
5993 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
5994 retval=par->parse();
5995 if (!par->isEmpty())
5996 {
5998 lastPar = par;
5999 }
6000 else
6001 {
6003 }
6004 if (retval.
is(TokenRetval::TK_LISTITEM))
6005 {
6007 }
6008 if (retval.
is(TokenRetval::RetVal_Internal))
6009 {
6012 if (retval.is(TokenRetval::RetVal_EndInternal))
6013 {
6014 retval = Token::make_RetVal_OK();
6015 }
6016 }
6017 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6018 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
6019 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
6020 );
6021
6023
6024 while (true)
6025 {
6026 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
6027 {
6028
6029 while (retval.
is(TokenRetval::RetVal_Subsection))
6030 {
6032 2,
6035 }
6036 break;
6037 }
6038 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
6039 {
6042 {
6044 parser()->tokenizer.getLineNr(),
6045 "Unexpected subsubsection command found inside {}!",
6047 }
6048
6049 while (retval.
is(TokenRetval::RetVal_Subsubsection))
6050 {
6052 3,
6055 }
6056 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
6057 }
6058 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
6059 {
6062 {
6064 "Unexpected paragraph command found inside {}!",
6066 }
6067
6068 while (retval.
is(TokenRetval::RetVal_Paragraph))
6069 {
6071 4,
6074 }
6075 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
6076 }
6077 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
6078 {
6081 {
6083 "Unexpected subparagraph command found inside {}!",
6085 }
6086
6087 while (retval.
is(TokenRetval::RetVal_SubParagraph))
6088 {
6090 5,
6093 }
6094 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
6095 }
6096 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
6097 {
6100 {
6102 "Unexpected subsubparagraph command found inside {}!",
6104 }
6105
6106 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
6107 {
6109 6,
6112 }
6113 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
6114 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
6115 }
6116 else
6117 {
6118 break;
6119 }
6120 }
6121
6123 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
6124 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
6125 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
6126 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
6127 );
6128
6130 return retval;
6131}
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,...