Commit 35c2baed authored by dimitri's avatar dimitri

Release-1.3.1

parent 9e1745a1
DOXYGEN Version 1.3-20030524
DOXYGEN Version 1.3.1
Please read the installation section of the manual
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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.
\refitem cfg_generate_autogen_def GENERATE_AUTOGEN_DEF
\refitem cfg_generate_buglist GENERATE_BUGLIST
\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_htmlhelp GENERATE_HTMLHELP
\refitem cfg_generate_latex GENERATE_LATEX
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_20030524
Version: 1.3.1
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -63,6 +63,7 @@ static bool g_hasParamCommand;
static MemberDef * g_memberDef;
static QDict<void> g_paramsFound;
static bool g_isExample;
static QCString g_exampleName;
static SectionDict *g_sectionDict;
// include file state
......@@ -811,7 +812,7 @@ reparsetoken:
{
doctokenizerYYsetStateHtmlOnly();
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");
doctokenizerYYsetStatePara();
}
......@@ -820,7 +821,7 @@ reparsetoken:
{
doctokenizerYYsetStateLatexOnly();
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);
doctokenizerYYsetStatePara();
}
......@@ -3168,7 +3169,7 @@ void DocPara::handleIncludeOperator(const QString &cmdName,DocIncOperator::Type
tokToString(tok),cmdName.data());
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 *n2 = n1!=0 ? m_children.prev() : 0;
bool isFirst = n1==0 || // no last node
......@@ -3389,7 +3390,7 @@ void DocPara::handleInclude(const QString &cmdName,DocInclude::Type t)
tokToString(tok),cmdName.data());
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);
inc->parse();
}
......@@ -3564,7 +3565,7 @@ int DocPara::handleCommand(const QString &cmdName)
if (g_token->verb.at(i)=='\n') li=i+1;
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");
doctokenizerYYsetStatePara();
}
......@@ -3573,7 +3574,7 @@ int DocPara::handleCommand(const QString &cmdName)
{
doctokenizerYYsetStateHtmlOnly();
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");
doctokenizerYYsetStatePara();
}
......@@ -3582,7 +3583,7 @@ int DocPara::handleCommand(const QString &cmdName)
{
doctokenizerYYsetStateLatexOnly();
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");
doctokenizerYYsetStatePara();
}
......@@ -3591,7 +3592,7 @@ int DocPara::handleCommand(const QString &cmdName)
{
doctokenizerYYsetStateVerbatim();
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");
doctokenizerYYsetStatePara();
}
......@@ -4652,6 +4653,7 @@ void DocRoot::parse()
DocNode *validatingParseDoc(const char *fileName,int startLine,
const char *context,MemberDef *md,
const char *input,bool isExample,
const char *exampleName,
SectionDict *sections)
{
......@@ -4671,6 +4673,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
g_includeFileOffset = 0;
g_includeFileLength = 0;
g_isExample = isExample;
g_exampleName = exampleName;
g_hasParamCommand = FALSE;
g_paramsFound.setAutoDelete(FALSE);
g_paramsFound.clear();
......@@ -4721,6 +4724,7 @@ DocNode *validatingParseText(const char *input)
g_includeFileOffset = 0;
g_includeFileLength = 0;
g_isExample = FALSE;
g_exampleName = "";
g_hasParamCommand = FALSE;
g_paramsFound.setAutoDelete(FALSE);
g_paramsFound.clear();
......
......@@ -47,6 +47,7 @@ class SectionDict;
* Can be 0.
* @param input String representation of the documentation block.
* @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
* collected here (if not 0).
* @returns Root node of the abstract syntax tree. Ownership of the
......@@ -55,7 +56,7 @@ class SectionDict;
DocNode *validatingParseDoc(const char *fileName,int startLine,
const char *context, MemberDef *md,
const char *input,bool isExample,
SectionDict *sections=0);
const char *exampleName=0,SectionDict *sections=0);
/*! Main entry point for parsing simple text fragments. These
* fragments are limited to words, whitespace and symbols.
......
......@@ -3769,7 +3769,8 @@ static void addMemberDocs(Entry *root,
fullName+=md->name();
if (al)
{
mergeArguments(md->argumentList(),al);
//printf("merging arguments (1)\n");
mergeArguments(md->argumentList(),al,TRUE);
}
else
{
......@@ -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
......@@ -6283,7 +6285,8 @@ static void generateExampleDocs()
pd->getOuterScope()?pd->getOuterScope()->name().data():0, // context
0, // memberDef
pd->documentation()+"\n\\include "+pd->name(), // docs
TRUE // is example
TRUE, // is example
pd->name()
);
endFile(*outputList);
}
......
......@@ -59,7 +59,7 @@ static const char *defaultStyleSheet =
" width: 98%;\n"
" border: 1px solid #CCCCCC;\n"
" background-color: #f5f5f5;\n"
" padding: 0px;\n"
" padding-left: 4px;\n"
" margin: 4px;\n"
"}\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)
if (m_hide) return;
switch(s->type())
{
case DocVerbatim::Code: // fall though
case DocVerbatim::Code:
m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,s->context(),s->text().latin1(),s->isExample(),s->exampleFile());
m_t << "\\end{verbatim}\\normalsize" << endl;
......@@ -295,8 +295,8 @@ void LatexDocVisitor::visit(DocInclude *inc)
void LatexDocVisitor::visit(DocIncOperator *op)
{
//printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
// op->type(),op->isFirst(),op->isLast(),op->text().data());
printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
op->type(),op->isFirst(),op->isLast(),op->text().data());
if (op->isFirst())
{
if (!m_hide) m_t << "\n\n\\footnotesize\\begin{verbatim}";
......@@ -305,16 +305,19 @@ void LatexDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
}
if (op->isLast())
{
popEnabled();
if (m_hide) m_t << "\\end{verbatim}\\normalsize" << endl;
if (!m_hide) m_t << "\\end{verbatim}\\normalsize" << endl;
}
else
{
m_t << endl;
if (!m_hide) m_t << endl;
}
}
......
......@@ -258,7 +258,10 @@ void ManDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
}
if (op->isLast())
{
......
......@@ -424,7 +424,7 @@ void MemberDef::insertEnumField(MemberDef *md)
bool MemberDef::addExample(const char *anchor,const char *nameStr,
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->find(nameStr)==0)
{
......@@ -1029,8 +1029,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
QCString cname = container->name();
QCString cfname = container->getOutputFileBase();
ol.addIndexItem(name(),cname);
ol.addIndexItem(cname,name());
//ol.addIndexItem(name(),cname);
//ol.addIndexItem(cname,name());
if (Config_getBool("GENERATE_HTML") && Config_getBool("GENERATE_HTMLHELP"))
{
......
......@@ -194,7 +194,7 @@ void OutputList::popGeneratorState()
void OutputList::parseDoc(const char *fileName,int startLine,
const char * clName,MemberDef * md,
const QCString &docStr,bool isExample,
SectionDict *sections)
const char *exampleName,SectionDict *sections)
{
int count=0;
OutputGenerator *og=outputs->first();
......@@ -206,7 +206,8 @@ void OutputList::parseDoc(const char *fileName,int startLine,
if (count==0) return; // no output formats enabled.
DocNode *root = validatingParseDoc(fileName,startLine,
clName,md,docStr,isExample,sections);
clName,md,docStr,isExample,exampleName,
sections);
og=outputs->first();
while (og)
......
......@@ -62,7 +62,7 @@ class OutputList : public OutputDocInterface
void parseDoc(const char *fileName,int startLine,
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);
......
......@@ -1272,7 +1272,7 @@ static void addPerlModDocBlock(PerlModOutput &output,
if (stext.isEmpty())
output.addField(name).add("{}");
else {
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext,FALSE);
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext,FALSE,0);
output.openHash(name);
PerlModDocVisitor *visitor = new PerlModDocVisitor(output);
root->accept(visitor);
......
......@@ -377,7 +377,10 @@ void RTFDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
}
if (op->isLast())
{
......
......@@ -2126,7 +2126,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ReadBody,ReadNSBody>{BN}+ { current->program += yytext ;
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}*"::")*({BN}*"*"{BN}*)+)+ { /* typedef void (A::*ptr_t)(args...) */
......@@ -2337,6 +2338,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START;
BEGIN( SkipCxxComment );
}
<ReadFuncArgType,ReadTempArgs>"'#" { if (! insidePHP)
REJECT;
*copyArgString+=yytext;
fullArgString+=yytext;
}
<ReadFuncArgType,ReadTempArgs>"#" {
if (! insidePHP)
REJECT;
......@@ -4590,11 +4596,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Doc>"*/" {
checkDocs();
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"))
{
current->doc.resize(0);
}
if (current->section==Entry::GROUPDOC_SEC)
{
current_root->addSubEntry(current);
current = new Entry ;
initEntry();
}
BEGIN( lastDocContext );
}
<JavaDoc>"*/" {
......
......@@ -1909,7 +1909,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
// merges the initializer of two argument lists
// 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",
// argListToString(srcAl).data(),argListToString(dstAl).data());
......@@ -1951,13 +1951,20 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
}
else if (!srcA->name.isEmpty() && !dstA->name.isEmpty())
{
if (srcA->docs.isEmpty() && !dstA->docs.isEmpty())
if (forceNameOverwrite)
{
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 *,
const char *cl=0,const char *ns=0,bool checkCV=TRUE,
NamespaceList *usingNamespaces=0,
ClassList *usingClasses=0);
void mergeArguments(ArgumentList *,ArgumentList *);
void mergeArguments(ArgumentList *,ArgumentList *,bool forceNameOverwrite=FALSE);
QCString substituteClassNames(const QCString &s);
QCString substitute(const char *s,const char *src,const char *dst);
QCString resolveDefines(const char *n);
......
......@@ -234,7 +234,10 @@ void XmlDocVisitor::visit(DocIncOperator *op)
}
if (op->type()!=DocIncOperator::Skip)
{
popEnabled();
if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile());
pushEnabled();
m_hide=TRUE;
}
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