Commit 70b82ece authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.1

parent ecdf7c39
DOXYGEN Version 1.3-20030524 DOXYGEN Version 1.3.1
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (24 May 2003) Dimitri van Heesch (28 May 2003)
DOXYGEN Version 1.3_20030524 DOXYGEN Version 1.3.1
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (24 May 2003) Dimitri van Heesch (dimitri@stack.nl) (28 May 2003)
...@@ -104,7 +104,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -104,7 +104,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF \refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF
\refitem cfg_generate_buglist GENERATE_BUGLIST \refitem cfg_generate_buglist GENERATE_BUGLIST
\refitem cfg_generate_chi GENERATE_CHI \refitem cfg_generate_chi GENERATE_CHI
\refitem cfg_generate_todolist GENERATE_DEPRECIATELIST \refitem cfg_generate_deprecatedlist GENERATE_DEPRECIATEDLIST
\refitem cfg_generate_html GENERATE_HTML \refitem cfg_generate_html GENERATE_HTML
\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
\refitem cfg_generate_latex GENERATE_LATEX \refitem cfg_generate_latex GENERATE_LATEX
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3_20030524 Version: 1.3.1
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -63,6 +63,7 @@ static bool g_hasParamCommand; ...@@ -63,6 +63,7 @@ static bool g_hasParamCommand;
static MemberDef * g_memberDef; static MemberDef * g_memberDef;
static QDict<void> g_paramsFound; static QDict<void> g_paramsFound;
static bool g_isExample; static bool g_isExample;
static QCString g_exampleName;
static SectionDict *g_sectionDict; static SectionDict *g_sectionDict;
// include file state // include file state
...@@ -811,7 +812,7 @@ reparsetoken: ...@@ -811,7 +812,7 @@ reparsetoken:
{ {
doctokenizerYYsetStateHtmlOnly(); doctokenizerYYsetStateHtmlOnly();
tok = doctokenizerYYlex(); tok = doctokenizerYYlex();
children.append(new DocVerbatim(parent,g_context,g_token->verb,DocVerbatim::HtmlOnly,g_isExample,g_fileName)); children.append(new DocVerbatim(parent,g_context,g_token->verb,DocVerbatim::HtmlOnly,g_isExample,g_exampleName));
if (tok==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: htmlonly section ended without end marker"); if (tok==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: htmlonly section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -820,7 +821,7 @@ reparsetoken: ...@@ -820,7 +821,7 @@ reparsetoken:
{ {
doctokenizerYYsetStateLatexOnly(); doctokenizerYYsetStateLatexOnly();
tok = doctokenizerYYlex(); tok = doctokenizerYYlex();
children.append(new DocVerbatim(parent,g_context,g_token->verb,DocVerbatim::LatexOnly,g_isExample,g_fileName)); children.append(new DocVerbatim(parent,g_context,g_token->verb,DocVerbatim::LatexOnly,g_isExample,g_exampleName));
if (tok==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: latexonly section ended without end marker",doctokenizerYYlineno); if (tok==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: latexonly section ended without end marker",doctokenizerYYlineno);
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -3168,7 +3169,7 @@ void DocPara::handleIncludeOperator(const QString &cmdName,DocIncOperator::Type ...@@ -3168,7 +3169,7 @@ void DocPara::handleIncludeOperator(const QString &cmdName,DocIncOperator::Type
tokToString(tok),cmdName.data()); tokToString(tok),cmdName.data());
return; return;
} }
DocIncOperator *op = new DocIncOperator(this,t,g_token->name,g_context,g_isExample,g_fileName); DocIncOperator *op = new DocIncOperator(this,t,g_token->name,g_context,g_isExample,g_exampleName);
DocNode *n1 = m_children.last(); DocNode *n1 = m_children.last();
DocNode *n2 = n1!=0 ? m_children.prev() : 0; DocNode *n2 = n1!=0 ? m_children.prev() : 0;
bool isFirst = n1==0 || // no last node bool isFirst = n1==0 || // no last node
...@@ -3389,7 +3390,7 @@ void DocPara::handleInclude(const QString &cmdName,DocInclude::Type t) ...@@ -3389,7 +3390,7 @@ void DocPara::handleInclude(const QString &cmdName,DocInclude::Type t)
tokToString(tok),cmdName.data()); tokToString(tok),cmdName.data());
return; return;
} }
DocInclude *inc = new DocInclude(this,g_token->name,g_context,t,g_isExample,g_fileName); DocInclude *inc = new DocInclude(this,g_token->name,g_context,t,g_isExample,g_exampleName);
m_children.append(inc); m_children.append(inc);
inc->parse(); inc->parse();
} }
...@@ -3564,7 +3565,7 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3564,7 +3565,7 @@ int DocPara::handleCommand(const QString &cmdName)
if (g_token->verb.at(i)=='\n') li=i+1; if (g_token->verb.at(i)=='\n') li=i+1;
i++; i++;
} }
m_children.append(new DocVerbatim(this,g_context,g_token->verb.mid(li),DocVerbatim::Code,g_isExample,g_fileName)); m_children.append(new DocVerbatim(this,g_context,g_token->verb.mid(li),DocVerbatim::Code,g_isExample,g_exampleName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: code section ended without end marker"); if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: code section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -3573,7 +3574,7 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3573,7 +3574,7 @@ int DocPara::handleCommand(const QString &cmdName)
{ {
doctokenizerYYsetStateHtmlOnly(); doctokenizerYYsetStateHtmlOnly();
retval = doctokenizerYYlex(); retval = doctokenizerYYlex();
m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::HtmlOnly,g_isExample,g_fileName)); m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::HtmlOnly,g_isExample,g_exampleName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: htmlonly section ended without end marker"); if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: htmlonly section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -3582,7 +3583,7 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3582,7 +3583,7 @@ int DocPara::handleCommand(const QString &cmdName)
{ {
doctokenizerYYsetStateLatexOnly(); doctokenizerYYsetStateLatexOnly();
retval = doctokenizerYYlex(); retval = doctokenizerYYlex();
m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::LatexOnly,g_isExample,g_fileName)); m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::LatexOnly,g_isExample,g_exampleName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: latexonly section ended without end marker"); if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: latexonly section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -3591,7 +3592,7 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3591,7 +3592,7 @@ int DocPara::handleCommand(const QString &cmdName)
{ {
doctokenizerYYsetStateVerbatim(); doctokenizerYYsetStateVerbatim();
retval = doctokenizerYYlex(); retval = doctokenizerYYlex();
m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::Verbatim,g_isExample,g_fileName)); m_children.append(new DocVerbatim(this,g_context,g_token->verb,DocVerbatim::Verbatim,g_isExample,g_exampleName));
if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: verbatim section ended without end marker"); if (retval==0) warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: verbatim section ended without end marker");
doctokenizerYYsetStatePara(); doctokenizerYYsetStatePara();
} }
...@@ -4652,6 +4653,7 @@ void DocRoot::parse() ...@@ -4652,6 +4653,7 @@ void DocRoot::parse()
DocNode *validatingParseDoc(const char *fileName,int startLine, DocNode *validatingParseDoc(const char *fileName,int startLine,
const char *context,MemberDef *md, const char *context,MemberDef *md,
const char *input,bool isExample, const char *input,bool isExample,
const char *exampleName,
SectionDict *sections) SectionDict *sections)
{ {
...@@ -4671,6 +4673,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, ...@@ -4671,6 +4673,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
g_includeFileOffset = 0; g_includeFileOffset = 0;
g_includeFileLength = 0; g_includeFileLength = 0;
g_isExample = isExample; g_isExample = isExample;
g_exampleName = exampleName;
g_hasParamCommand = FALSE; g_hasParamCommand = FALSE;
g_paramsFound.setAutoDelete(FALSE); g_paramsFound.setAutoDelete(FALSE);
g_paramsFound.clear(); g_paramsFound.clear();
...@@ -4721,6 +4724,7 @@ DocNode *validatingParseText(const char *input) ...@@ -4721,6 +4724,7 @@ DocNode *validatingParseText(const char *input)
g_includeFileOffset = 0; g_includeFileOffset = 0;
g_includeFileLength = 0; g_includeFileLength = 0;
g_isExample = FALSE; g_isExample = FALSE;
g_exampleName = "";
g_hasParamCommand = FALSE; g_hasParamCommand = FALSE;
g_paramsFound.setAutoDelete(FALSE); g_paramsFound.setAutoDelete(FALSE);
g_paramsFound.clear(); g_paramsFound.clear();
......
...@@ -47,6 +47,7 @@ class SectionDict; ...@@ -47,6 +47,7 @@ class SectionDict;
* Can be 0. * Can be 0.
* @param input String representation of the documentation block. * @param input String representation of the documentation block.
* @param isExample TRUE if the documentation belongs to an example. * @param isExample TRUE if the documentation belongs to an example.
* @param exampleName Base name of the example file (0 if isExample is FALSE).
* @param sections Sections (and anchors) found in the documentation are * @param sections Sections (and anchors) found in the documentation are
* collected here (if not 0). * collected here (if not 0).
* @returns Root node of the abstract syntax tree. Ownership of the * @returns Root node of the abstract syntax tree. Ownership of the
...@@ -55,7 +56,7 @@ class SectionDict; ...@@ -55,7 +56,7 @@ class SectionDict;
DocNode *validatingParseDoc(const char *fileName,int startLine, DocNode *validatingParseDoc(const char *fileName,int startLine,
const char *context, MemberDef *md, const char *context, MemberDef *md,
const char *input,bool isExample, const char *input,bool isExample,
SectionDict *sections=0); const char *exampleName=0,SectionDict *sections=0);
/*! Main entry point for parsing simple text fragments. These /*! Main entry point for parsing simple text fragments. These
* fragments are limited to words, whitespace and symbols. * fragments are limited to words, whitespace and symbols.
......
...@@ -3769,7 +3769,8 @@ static void addMemberDocs(Entry *root, ...@@ -3769,7 +3769,8 @@ static void addMemberDocs(Entry *root,
fullName+=md->name(); fullName+=md->name();
if (al) if (al)
{ {
mergeArguments(md->argumentList(),al); //printf("merging arguments (1)\n");
mergeArguments(md->argumentList(),al,TRUE);
} }
else else
{ {
...@@ -3781,7 +3782,8 @@ static void addMemberDocs(Entry *root, ...@@ -3781,7 +3782,8 @@ static void addMemberDocs(Entry *root,
) )
) )
{ {
mergeArguments(md->argumentList(),root->argList); //printf("merging arguments (2)\n");
mergeArguments(md->argumentList(),root->argList,TRUE);
} }
} }
if (over_load) // the \overload keyword was used if (over_load) // the \overload keyword was used
...@@ -6283,7 +6285,8 @@ static void generateExampleDocs() ...@@ -6283,7 +6285,8 @@ static void generateExampleDocs()
pd->getOuterScope()?pd->getOuterScope()->name().data():0, // context pd->getOuterScope()?pd->getOuterScope()->name().data():0, // context
0, // memberDef 0, // memberDef
pd->documentation()+"\n\\include "+pd->name(), // docs pd->documentation()+"\n\\include "+pd->name(), // docs
TRUE // is example TRUE, // is example
pd->name()
); );
endFile(*outputList); endFile(*outputList);
} }
......
...@@ -59,7 +59,7 @@ static const char *defaultStyleSheet = ...@@ -59,7 +59,7 @@ static const char *defaultStyleSheet =
" width: 98%;\n" " width: 98%;\n"
" border: 1px solid #CCCCCC;\n" " border: 1px solid #CCCCCC;\n"
" background-color: #f5f5f5;\n" " background-color: #f5f5f5;\n"
" padding: 0px;\n" " padding-left: 4px;\n"
" margin: 4px;\n" " margin: 4px;\n"
"}\n" "}\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n" "DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n"
......
...@@ -241,7 +241,7 @@ void LatexDocVisitor::visit(DocVerbatim *s) ...@@ -241,7 +241,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
if (m_hide) return; if (m_hide) return;
switch(s->type()) switch(s->type())
{ {
case DocVerbatim::Code: // fall though case DocVerbatim::Code:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile()); parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile());
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\\normalsize" << endl;
...@@ -295,8 +295,8 @@ void LatexDocVisitor::visit(DocInclude *inc) ...@@ -295,8 +295,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
void LatexDocVisitor::visit(DocIncOperator *op) void LatexDocVisitor::visit(DocIncOperator *op)
{ {
//printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n", printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
// op->type(),op->isFirst(),op->isLast(),op->text().data()); op->type(),op->isFirst(),op->isLast(),op->text().data());
if (op->isFirst()) if (op->isFirst())
{ {
if (!m_hide) m_t << "\n\n\\footnotesize\\begin{verbatim}"; if (!m_hide) m_t << "\n\n\\footnotesize\\begin{verbatim}";
...@@ -305,16 +305,19 @@ void LatexDocVisitor::visit(DocIncOperator *op) ...@@ -305,16 +305,19 @@ void LatexDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile()); if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
} }
if (op->isLast()) if (op->isLast())
{ {
popEnabled(); popEnabled();
if (m_hide) m_t << "\\end{verbatim}\\normalsize" << endl; if (!m_hide) m_t << "\\end{verbatim}\\normalsize" << endl;
} }
else else
{ {
m_t << endl; if (!m_hide) m_t << endl;
} }
} }
......
...@@ -258,7 +258,10 @@ void ManDocVisitor::visit(DocIncOperator *op) ...@@ -258,7 +258,10 @@ void ManDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile()); if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
} }
if (op->isLast()) if (op->isLast())
{ {
......
...@@ -424,7 +424,7 @@ void MemberDef::insertEnumField(MemberDef *md) ...@@ -424,7 +424,7 @@ void MemberDef::insertEnumField(MemberDef *md)
bool MemberDef::addExample(const char *anchor,const char *nameStr, bool MemberDef::addExample(const char *anchor,const char *nameStr,
const char *file) const char *file)
{ {
//printf("%s::addExample(%s,%s,%s)\n",name.data(),anchor,nameStr,file); //printf("%s::addExample(%s,%s,%s)\n",name().data(),anchor,nameStr,file);
if (exampleSDict==0) exampleSDict = new ExampleSDict; if (exampleSDict==0) exampleSDict = new ExampleSDict;
if (exampleSDict->find(nameStr)==0) if (exampleSDict->find(nameStr)==0)
{ {
...@@ -1029,8 +1029,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1029,8 +1029,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
QCString cname = container->name(); QCString cname = container->name();
QCString cfname = container->getOutputFileBase(); QCString cfname = container->getOutputFileBase();
ol.addIndexItem(name(),cname); //ol.addIndexItem(name(),cname);
ol.addIndexItem(cname,name()); //ol.addIndexItem(cname,name());
if (Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP")) if (Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP"))
{ {
......
...@@ -194,7 +194,7 @@ void OutputList::popGeneratorState() ...@@ -194,7 +194,7 @@ void OutputList::popGeneratorState()
void OutputList::parseDoc(const char *fileName,int startLine, void OutputList::parseDoc(const char *fileName,int startLine,
const char * clName,MemberDef * md, const char * clName,MemberDef * md,
const QCString &docStr,bool isExample, const QCString &docStr,bool isExample,
SectionDict *sections) const char *exampleName,SectionDict *sections)
{ {
int count=0; int count=0;
OutputGenerator *og=outputs->first(); OutputGenerator *og=outputs->first();
...@@ -206,7 +206,8 @@ void OutputList::parseDoc(const char *fileName,int startLine, ...@@ -206,7 +206,8 @@ void OutputList::parseDoc(const char *fileName,int startLine,
if (count==0) return; // no output formats enabled. if (count==0) return; // no output formats enabled.
DocNode *root = validatingParseDoc(fileName,startLine, DocNode *root = validatingParseDoc(fileName,startLine,
clName,md,docStr,isExample,sections); clName,md,docStr,isExample,exampleName,
sections);
og=outputs->first(); og=outputs->first();
while (og) while (og)
......
...@@ -62,7 +62,7 @@ class OutputList : public OutputDocInterface ...@@ -62,7 +62,7 @@ class OutputList : public OutputDocInterface
void parseDoc(const char *fileName,int startLine, void parseDoc(const char *fileName,int startLine,
const char *clName,MemberDef *md,const QCString &docStr, const char *clName,MemberDef *md,const QCString &docStr,
bool isExample,SectionDict *sections=0); bool isExample,const char *exampleName=0,SectionDict *sections=0);
void parseText(const QCString &textStr); void parseText(const QCString &textStr);
......
...@@ -1272,7 +1272,7 @@ static void addPerlModDocBlock(PerlModOutput &output, ...@@ -1272,7 +1272,7 @@ static void addPerlModDocBlock(PerlModOutput &output,
if (stext.isEmpty()) if (stext.isEmpty())
output.addField(name).add("{}"); output.addField(name).add("{}");
else { else {
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext,FALSE); DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext,FALSE,0);
output.openHash(name); output.openHash(name);
PerlModDocVisitor *visitor = new PerlModDocVisitor(output); PerlModDocVisitor *visitor = new PerlModDocVisitor(output);
root->accept(visitor); root->accept(visitor);
......
...@@ -377,7 +377,10 @@ void RTFDocVisitor::visit(DocIncOperator *op) ...@@ -377,7 +377,10 @@ void RTFDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile()); if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
} }
if (op->isLast()) if (op->isLast())
{ {
......
...@@ -2126,7 +2126,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2126,7 +2126,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ReadBody,ReadNSBody>{BN}+ { current->program += yytext ; <ReadBody,ReadNSBody>{BN}+ { current->program += yytext ;
lineCount() ; lineCount() ;
} }
<ReadBody,ReadNSBody>. { current->program += yytext ; } <ReadBody,ReadNSBody>. { current->program += yytext ; }
<ReadBody,ReadNSBody>"'#" { current->program += yytext ; }
<FindMembers>"("/({BN}*{ID}{BN}*"::")*{ID}{BN}*")"{BN}*"(" | /* typedef void (A::func_t)(args...) */ <FindMembers>"("/({BN}*{ID}{BN}*"::")*{ID}{BN}*")"{BN}*"(" | /* typedef void (A::func_t)(args...) */
<FindMembers>("("({BN}*{ID}{BN}*"::")*({BN}*"*"{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) */ <FindMembers>("("({BN}*{ID}{BN}*"::")*({BN}*"*"{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) */
...@@ -2337,6 +2338,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2337,6 +2338,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START; lastCContext = YY_START;
BEGIN( SkipCxxComment ); BEGIN( SkipCxxComment );
} }
<ReadFuncArgType,ReadTempArgs>"'#" { if (! insidePHP)
REJECT;
*copyArgString+=yytext;
fullArgString+=yytext;
}
<ReadFuncArgType,ReadTempArgs>"#" { <ReadFuncArgType,ReadTempArgs>"#" {
if (! insidePHP) if (! insidePHP)
REJECT; REJECT;
...@@ -4590,11 +4596,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4590,11 +4596,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Doc>"*/" { <Doc>"*/" {
checkDocs(); checkDocs();
current->doc += "\n\n"; current->doc += "\n\n";
//printf("End of docs at line %d\n",yyLineNr); //printf("End of docs at line %d: %s\n",yyLineNr,current->doc.data());
if (lastDocContext==SkipCurly && Config_getBool("HIDE_IN_BODY_DOCS")) if (lastDocContext==SkipCurly && Config_getBool("HIDE_IN_BODY_DOCS"))
{ {
current->doc.resize(0); current->doc.resize(0);
} }
if (current->section==Entry::GROUPDOC_SEC)
{
current_root->addSubEntry(current);
current = new Entry ;
initEntry();
}
BEGIN( lastDocContext ); BEGIN( lastDocContext );
} }
<JavaDoc>"*/" { <JavaDoc>"*/" {
......
...@@ -1909,7 +1909,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl, ...@@ -1909,7 +1909,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
// merges the initializer of two argument lists // merges the initializer of two argument lists
// pre: the types of the arguments in the list should match. // pre: the types of the arguments in the list should match.
void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl) void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl,bool forceNameOverwrite)
{ {
//printf("mergeArguments `%s', `%s'\n", //printf("mergeArguments `%s', `%s'\n",
// argListToString(srcAl).data(),argListToString(dstAl).data()); // argListToString(srcAl).data(),argListToString(dstAl).data());
...@@ -1951,13 +1951,20 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl) ...@@ -1951,13 +1951,20 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
} }
else if (!srcA->name.isEmpty() && !dstA->name.isEmpty()) else if (!srcA->name.isEmpty() && !dstA->name.isEmpty())
{ {
if (srcA->docs.isEmpty() && !dstA->docs.isEmpty()) if (forceNameOverwrite)
{ {
srcA->name = dstA->name.copy(); srcA->name = dstA->name.copy();
} }
else if (!srcA->docs.isEmpty() && dstA->docs.isEmpty()) else
{ {
dstA->name = srcA->name.copy(); if (srcA->docs.isEmpty() && !dstA->docs.isEmpty())
{
srcA->name = dstA->name.copy();
}
else if (!srcA->docs.isEmpty() && dstA->docs.isEmpty())
{
dstA->name = srcA->name.copy();
}
} }
} }
} }
......
...@@ -122,7 +122,7 @@ bool matchArguments(ArgumentList *,ArgumentList *, ...@@ -122,7 +122,7 @@ bool matchArguments(ArgumentList *,ArgumentList *,
const char *cl=0,const char *ns=0,bool checkCV=TRUE, const char *cl=0,const char *ns=0,bool checkCV=TRUE,
NamespaceList *usingNamespaces=0, NamespaceList *usingNamespaces=0,
ClassList *usingClasses=0); ClassList *usingClasses=0);
void mergeArguments(ArgumentList *,ArgumentList *); void mergeArguments(ArgumentList *,ArgumentList *,bool forceNameOverwrite=FALSE);
QCString substituteClassNames(const QCString &s); QCString substituteClassNames(const QCString &s);
QCString substitute(const char *s,const char *src,const char *dst); QCString substitute(const char *s,const char *src,const char *dst);
QCString resolveDefines(const char *n); QCString resolveDefines(const char *n);
......
...@@ -234,7 +234,10 @@ void XmlDocVisitor::visit(DocIncOperator *op) ...@@ -234,7 +234,10 @@ void XmlDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile()); if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
} }
if (op->isLast()) if (op->isLast())
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment