5785{
5787 Token retval = Token::make_RetVal_OK();
5789
5790 if (!
m_id.isEmpty())
5791 {
5793 if (sec)
5794 {
5797 QCString titleStr = sec->
title();
5802 }
5803 }
5804
5805
5807 DocPara *lastPar=nullptr;
5808 do
5809 {
5812 if (isFirst) { par->markFirst(); isFirst=
FALSE; }
5813 retval=par->parse();
5814 if (!par->isEmpty())
5815 {
5817 lastPar = par;
5818 }
5819 else
5820 {
5822 }
5823 if (retval.
is(TokenRetval::TK_LISTITEM))
5824 {
5826 }
5827 if (retval.
is(TokenRetval::RetVal_Internal))
5828 {
5831 if (retval.is(TokenRetval::RetVal_EndInternal))
5832 {
5833 retval = Token::make_RetVal_OK();
5834 }
5835 }
5836 }
while (!retval.
is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF, TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
5837 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph,
5838 TokenRetval::RetVal_SubSubParagraph, TokenRetval::RetVal_EndInternal)
5839 );
5840
5842
5843 while (true)
5844 {
5845 if (retval.
is(TokenRetval::RetVal_Subsection) &&
m_level<=1)
5846 {
5847
5848 while (retval.
is(TokenRetval::RetVal_Subsection))
5849 {
5851 2,
5854 }
5855 break;
5856 }
5857 else if (retval.
is(TokenRetval::RetVal_Subsubsection) &&
m_level<=2)
5858 {
5861 {
5863 parser()->tokenizer.getLineNr(),
5864 "Unexpected subsubsection command found inside {}!",
5866 }
5867
5868 while (retval.
is(TokenRetval::RetVal_Subsubsection))
5869 {
5871 3,
5874 }
5875 if (!(
m_level < 2 && retval.
is(TokenRetval::RetVal_Subsection)))
break;
5876 }
5877 else if (retval.
is(TokenRetval::RetVal_Paragraph) &&
m_level<=3)
5878 {
5881 {
5883 "Unexpected paragraph command found inside {}!",
5885 }
5886
5887 while (retval.
is(TokenRetval::RetVal_Paragraph))
5888 {
5890 4,
5893 }
5894 if (!(
m_level<3 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection))))
break;
5895 }
5896 else if (retval.
is(TokenRetval::RetVal_SubParagraph) &&
m_level<=4)
5897 {
5900 {
5902 "Unexpected subparagraph command found inside {}!",
5904 }
5905
5906 while (retval.
is(TokenRetval::RetVal_SubParagraph))
5907 {
5909 5,
5912 }
5913 if (!(
m_level<4 && (retval.
is_any_of(TokenRetval::RetVal_Subsection,TokenRetval::RetVal_Subsubsection,TokenRetval::RetVal_Paragraph))))
break;
5914 }
5915 else if (retval.
is(TokenRetval::RetVal_SubSubParagraph) &&
m_level<=5)
5916 {
5919 {
5921 "Unexpected subsubparagraph command found inside {}!",
5923 }
5924
5925 while (retval.
is(TokenRetval::RetVal_SubSubParagraph))
5926 {
5928 6,
5931 }
5932 if (!(
m_level<5 && (retval.
is_any_of( TokenRetval::RetVal_Subsection, TokenRetval::RetVal_Subsubsection,
5933 TokenRetval::RetVal_Paragraph, TokenRetval::RetVal_SubParagraph)))) break;
5934 }
5935 else
5936 {
5937 break;
5938 }
5939 }
5940
5942 TokenRetval::RetVal_Section, TokenRetval::RetVal_Subsection,
5943 TokenRetval::RetVal_Subsubsection, TokenRetval::RetVal_Paragraph,
5944 TokenRetval::RetVal_SubParagraph, TokenRetval::RetVal_SubSubParagraph,
5945 TokenRetval::RetVal_Internal, TokenRetval::RetVal_EndInternal)
5946 );
5947
5949 return retval;
5950}
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,...