Commit 69124e6c authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release_1.1.0-20000305

parent f4f3f167
DOXYGEN Version 1.1.0-20000227 DOXYGEN Version 1.1.0-20000305
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.0-20000227.src.tar.gz # uncompress the archive gunzip doxygen-1.1.0-20000305.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.0-20000227.src.tar # unpack it tar xf doxygen-1.1.0-20000305.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at ...@@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (27 February 2000) Dimitri van Heesch (05 March 2000)
...@@ -10,10 +10,17 @@ clean: FORCE ...@@ -10,10 +10,17 @@ clean: FORCE
-rm -f objects/*.o -rm -f objects/*.o
distclean: clean distclean: clean
cd examples ; $(MAKE) clean
cd doc ; $(MAKE) clean
cd src ; $(MAKE) distclean
-rm -f bin/doxy*
-rm -f html
-rm -f objects/*.o
-rm -f src/Makefile.doxygen \ -rm -f src/Makefile.doxygen \
src/Makefile.doxytag \ src/Makefile.doxytag \
src/Makefile.doxysearch src/Makefile.doxysearch
-rm -f Makefile src/Makefile examples/Makefile doc/Makefile -rm -f Makefile src/Makefile examples/Makefile doc/Makefile
-rm -f .makeconfig .tmakeconfig
-rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro -rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro
-rm -f src/version.cpp -rm -f src/version.cpp
......
DOXYGEN Version 1.1.0-20000227 DOXYGEN Version 1.1.0-20000305
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (27 February 2000) Dimitri van Heesch (05 March 2000)
1.1.0-20000227 1.1.0-20000305
...@@ -27,12 +27,12 @@ Makefile.doxytag: doxytag.pro doxytag.t ...@@ -27,12 +27,12 @@ Makefile.doxytag: doxytag.pro doxytag.t
Makefile.doxysearch: doxysearch.pro Makefile.doxysearch: doxysearch.pro
$(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch
tmake: tmake:
$(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen
$(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag $(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag
$(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch
clean: clean: Makefile.doxygen Makefile.doxytag Makefile.doxysearch
$(MAKE) -f Makefile.doxygen clean $(MAKE) -f Makefile.doxygen clean
$(MAKE) -f Makefile.doxytag clean $(MAKE) -f Makefile.doxytag clean
$(MAKE) -f Makefile.doxysearch clean $(MAKE) -f Makefile.doxysearch clean
......
This diff is collapsed.
This diff is collapsed.
...@@ -314,11 +314,13 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) ...@@ -314,11 +314,13 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd)
void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local) void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local)
{ {
//printf("ClassDef::setInclude(%p,%s,%d)\n",fd,incName,local);
if (!incInfo) incInfo=new IncludeInfo; if (!incInfo) incInfo=new IncludeInfo;
if ((incName && incInfo->includeName.isEmpty()) || if ((incName && incInfo->includeName.isEmpty()) ||
(fd!=0 && incInfo->fileDef==0) (fd!=0 && incInfo->fileDef==0)
) )
{ {
//printf("Setting file info\n");
incInfo->fileDef = fd; incInfo->fileDef = fd;
incInfo->includeName = incName; incInfo->includeName = incName;
incInfo->local = local; incInfo->local = local;
...@@ -1396,7 +1398,7 @@ void ClassDef::determineImplUsageRelation() ...@@ -1396,7 +1398,7 @@ void ClassDef::determineImplUsageRelation()
{ {
ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); ClassDef *cd=getClass(name()+"::"+type.mid(i,l));
if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes!
if (cd && cd->isLinkable()) // class exists and is linkable if (cd /*&& cd->isLinkable()*/) // class exists and is linkable
{ {
found=TRUE; found=TRUE;
if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257); if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257);
......
...@@ -218,7 +218,7 @@ class BaseClassList : public QList<BaseClassDef> ...@@ -218,7 +218,7 @@ class BaseClassList : public QList<BaseClassDef>
if (c1==0 || c2==0) if (c1==0 || c2==0)
return FALSE; return FALSE;
else else
return strcmp(c1->name(),c2->name()); return strcasecmp(c1->name(),c2->name());
} }
}; };
......
...@@ -34,9 +34,9 @@ int ClassList::compareItems(GCI item1, GCI item2) ...@@ -34,9 +34,9 @@ int ClassList::compareItems(GCI item1, GCI item2)
//int prefixLength = Config::ignorePrefix.length(); //int prefixLength = Config::ignorePrefix.length();
//int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; //int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
//int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; //int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0;
return strcmp(c1->name().data()+getPrefixIndex(c1->name()), return strcasecmp(c1->name().data()+getPrefixIndex(c1->name()),
c2->name().data()+getPrefixIndex(c2->name()) c2->name().data()+getPrefixIndex(c2->name())
); );
} }
ClassListIterator::ClassListIterator(const ClassList &cllist) : ClassListIterator::ClassListIterator(const ClassList &cllist) :
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -53,7 +53,7 @@ class DefineList : public QList<Define> ...@@ -53,7 +53,7 @@ class DefineList : public QList<Define>
~DefineList() {} ~DefineList() {}
int compareItems(GCI i1,GCI i2) int compareItems(GCI i1,GCI i2)
{ {
return strcmp(((Define *)i1)->name,((Define *)i2)->name); return strcasecmp(((Define *)i1)->name,((Define *)i2)->name);
} }
}; };
...@@ -65,7 +65,7 @@ class DefineName : public QList<Define> ...@@ -65,7 +65,7 @@ class DefineName : public QList<Define>
const char *nameString() const { return name; } const char *nameString() const { return name; }
int compareItems(GCI i1,GCI i2) int compareItems(GCI i1,GCI i2)
{ {
return strcmp(((Define *)i1)->name,((Define *)i2)->name); return strcasecmp(((Define *)i1)->name,((Define *)i2)->name);
} }
private: private:
......
This diff is collapsed.
...@@ -59,13 +59,15 @@ class DotNode ...@@ -59,13 +59,15 @@ class DotNode
void removeChild(DotNode *n); void removeChild(DotNode *n);
void removeParent(DotNode *n); void removeParent(DotNode *n);
int number() const { return m_number; } int number() const { return m_number; }
void write(QTextStream &t,int maxDistance=1000); void write(QTextStream &t,bool topDown,int maxDistance=1000);
int m_subgraphId; int m_subgraphId;
void clearWriteFlag(); void clearWriteFlag();
private: private:
void colorConnectedNodes(int curColor); void colorConnectedNodes(int curColor);
const DotNode *findRoot() const; // only works for acyclic graphs! void writeBox(QTextStream &t,bool hasNonReachableChildren);
void writeArrow(QTextStream &t,DotNode *cn,EdgeInfo *ei,bool topDown);
const DotNode *findDocNode() const; // only works for acyclic graphs!
int m_number; int m_number;
QCString m_label; //!< label text QCString m_label; //!< label text
QCString m_url; //!< url of the node (format: remove$local) QCString m_url; //!< url of the node (format: remove$local)
...@@ -74,6 +76,7 @@ class DotNode ...@@ -74,6 +76,7 @@ class DotNode
QList<EdgeInfo> *m_edgeInfo; //!< edge info for each child QList<EdgeInfo> *m_edgeInfo; //!< edge info for each child
bool m_deleted; //!< used to mark a node as deleted bool m_deleted; //!< used to mark a node as deleted
bool m_written; //!< used to mark a node as written bool m_written; //!< used to mark a node as written
bool m_hasDoc; //!< used to mark a node as documented
int m_distance; //!< distance to the root node int m_distance; //!< distance to the root node
bool m_isRoot; //!< indicates if this is a root node bool m_isRoot; //!< indicates if this is a root node
}; };
...@@ -86,7 +89,7 @@ class DotGfxHierarchyTable ...@@ -86,7 +89,7 @@ class DotGfxHierarchyTable
void writeGraph(QTextStream &t,const char *path); void writeGraph(QTextStream &t,const char *path);
private: private:
void addHierarchy(DotNode *n,ClassDef *cd); void addHierarchy(DotNode *n,ClassDef *cd,bool hide);
QList<DotNode> *m_rootNodes; QList<DotNode> *m_rootNodes;
QDict<DotNode> *m_usedNodes; QDict<DotNode> *m_usedNodes;
......
This diff is collapsed.
...@@ -33,7 +33,9 @@ struct BaseInfo ...@@ -33,7 +33,9 @@ struct BaseInfo
struct Argument struct Argument
{ {
/*! Construct a new argument. */
Argument() {} Argument() {}
/*! Copy an argument (does a deep copy of all strings). */
Argument(const Argument &a) Argument(const Argument &a)
{ {
attrib=a.attrib.copy(); attrib=a.attrib.copy();
...@@ -43,6 +45,7 @@ struct Argument ...@@ -43,6 +45,7 @@ struct Argument
docs=a.docs.copy(); docs=a.docs.copy();
array=a.array.copy(); array=a.array.copy();
} }
/* Assignment of an argument (does a deep copy of all strings). */
Argument &operator=(const Argument &a) Argument &operator=(const Argument &a)
{ {
if (this!=&a) if (this!=&a)
...@@ -56,17 +59,20 @@ struct Argument ...@@ -56,17 +59,20 @@ struct Argument
} }
return *this; return *this;
} }
/*! return TRUE if this argument is documentation and the argument has a
* non empty name.
*/
bool hasDocumentation() const bool hasDocumentation() const
{ {
return !name.isEmpty() && !docs.isEmpty(); return !name.isEmpty() && !docs.isEmpty();
} }
QCString attrib; // argument attribute (IDL only) QCString attrib; /*!< Argument's attribute (IDL only) */
QCString type; // argument type QCString type; /*!< Argument's type */
QCString name; // argument name (if any) QCString name; /*!< Argument's name (may be empty) */
QCString array; // argument array specifier (if any) QCString array; /*!< Argument's array specifier (may be empty) */
QCString defval; // argument default value (if any) QCString defval; /*!< Argument's default value (may be empty) */
QCString docs; // arguments documentation (if any) QCString docs; /*!< Argument's documentation (may be empty) */
}; };
class ArgumentList : public QList<Argument> class ArgumentList : public QList<Argument>
......
...@@ -479,7 +479,7 @@ void FileDef::insertMember(MemberDef *md) ...@@ -479,7 +479,7 @@ void FileDef::insertMember(MemberDef *md)
/*! Adds compound definition \a cd to the list of all compounds of this file */ /*! Adds compound definition \a cd to the list of all compounds of this file */
void FileDef::insertClass(ClassDef *cd) void FileDef::insertClass(ClassDef *cd)
{ {
classList->append(cd); classList->inSort(cd);
} }
/*! Adds namespace definition \a nd to the list of all compounds of this file */ /*! Adds namespace definition \a nd to the list of all compounds of this file */
...@@ -487,7 +487,7 @@ void FileDef::insertNamespace(NamespaceDef *nd) ...@@ -487,7 +487,7 @@ void FileDef::insertNamespace(NamespaceDef *nd)
{ {
if (!nd->name().isEmpty() && namespaceDict->find(nd->name())==0) if (!nd->name().isEmpty() && namespaceDict->find(nd->name())==0)
{ {
namespaceList->append(nd); namespaceList->inSort(nd);
namespaceDict->insert(nd->name(),nd); namespaceDict->insert(nd->name(),nd);
} }
} }
...@@ -541,11 +541,10 @@ void FileDef::addUsingDirective(NamespaceDef *nd) ...@@ -541,11 +541,10 @@ void FileDef::addUsingDirective(NamespaceDef *nd)
void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
{ {
//printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
QCString iName = fd ? fd->absFilePath().data() : incName; QCString iName = fd ? fd->absFilePath().data() : incName;
if (!iName.isEmpty() && includeDict->find(iName)==0) if (!iName.isEmpty() && includeDict->find(iName)==0)
{ {
//printf("Adding include dependency `%s' to `%s'\n",
// fd->name().data(),name().data());
IncludeInfo *ii = new IncludeInfo; IncludeInfo *ii = new IncludeInfo;
ii->fileDef = fd; ii->fileDef = fd;
ii->includeName = incName; ii->includeName = incName;
...@@ -574,8 +573,8 @@ int FileList::compareItems(GCI item1, GCI item2) ...@@ -574,8 +573,8 @@ int FileList::compareItems(GCI item1, GCI item2)
FileDef *f2=(FileDef *)item2; FileDef *f2=(FileDef *)item2;
ASSERT(f1!=0 && f2!=0); ASSERT(f1!=0 && f2!=0);
return Config::fullPathNameFlag ? return Config::fullPathNameFlag ?
strcmp(f1->absFilePath(),f2->absFilePath()) : strcasecmp(f1->absFilePath(),f2->absFilePath()) :
strcmp(f1->name(),f2->name()); strcasecmp(f1->name(),f2->name());
} }
/*! Create a file list iterator. */ /*! Create a file list iterator. */
......
...@@ -90,49 +90,6 @@ QCString abbreviate(const char *s,const char *name) ...@@ -90,49 +90,6 @@ QCString abbreviate(const char *s,const char *name)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void initBaseClassHierarchy(BaseClassList *bcl)
{
BaseClassListIterator bcli(*bcl);
for ( ; bcli.current(); ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
if (cd->baseClasses()->count()==0) // no base classes => new root
{
initBaseClassHierarchy(cd->baseClasses());
}
cd->visited=FALSE;
}
}
//----------------------------------------------------------------------------
void initClassHierarchy(ClassList *cl)
{
ClassListIterator cli(*cl);
ClassDef *cd;
for ( ; (cd=cli.current()); ++cli)
{
cd->visited=FALSE;
initBaseClassHierarchy(cd->baseClasses());
}
}
//----------------------------------------------------------------------------
bool hasVisibleRoot(BaseClassList *bcl)
{
BaseClassListIterator bcli(*bcl);
for ( ; bcli.current(); ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
if (cd->isVisibleInHierarchy()) return TRUE;
hasVisibleRoot(cd->baseClasses());
}
return FALSE;
}
//----------------------------------------------------------------------------
void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper) void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper)
{ {
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
......
...@@ -1099,6 +1099,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1099,6 +1099,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ClassDef *bcd=0; ClassDef *bcd=0;
if (bmd && (bcd=bmd->memberClass())) if (bmd && (bcd=bmd->memberClass()))
{ {
#if 0
if (virt!=Normal) // search for virtual member of the deepest base class if (virt!=Normal) // search for virtual member of the deepest base class
{ {
MemberDef *lastBmd=bmd; MemberDef *lastBmd=bmd;
...@@ -1112,6 +1113,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1112,6 +1113,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
lastBmd=lastBmd->reimplements(); lastBmd=lastBmd->reimplements();
} }
} }
#endif
// write class that contains a member that is reimplemented by this one // write class that contains a member that is reimplemented by this one
if (bcd->isLinkable()) if (bcd->isLinkable())
{ {
......
...@@ -36,7 +36,7 @@ int MemberList::compareItems(GCI item1, GCI item2) ...@@ -36,7 +36,7 @@ int MemberList::compareItems(GCI item1, GCI item2)
{ {
MemberDef *c1=(MemberDef *)item1; MemberDef *c1=(MemberDef *)item1;
MemberDef *c2=(MemberDef *)item2; MemberDef *c2=(MemberDef *)item2;
return strcmp(c1->name(),c2->name()); return strcasecmp(c1->name(),c2->name());
} }
void MemberList::countDecMembers() void MemberList::countDecMembers()
......
...@@ -91,7 +91,7 @@ class NamespaceList : public QList<NamespaceDef> ...@@ -91,7 +91,7 @@ class NamespaceList : public QList<NamespaceDef>
~NamespaceList() {} ~NamespaceList() {}
int compareItems(GCI item1,GCI item2) int compareItems(GCI item1,GCI item2)
{ {
return strcmp(((NamespaceDef *)item1)->name(), return strcasecmp(((NamespaceDef *)item1)->name(),
((NamespaceDef *)item2)->name() ((NamespaceDef *)item2)->name()
); );
} }
......
This diff is collapsed.
...@@ -818,6 +818,7 @@ static void readIncludeFile(const QCString &inc) ...@@ -818,6 +818,7 @@ static void readIncludeFile(const QCString &inc)
FILE *f; FILE *f;
QCString oldFileName = g_yyFileName.copy(); QCString oldFileName = g_yyFileName.copy();
FileDef *oldFileDef = g_yyFileDef; FileDef *oldFileDef = g_yyFileDef;
//printf("Searching for `%s'\n",incFileName.data());
if ((f=findFile(incFileName))) // see if the include file can be found if ((f=findFile(incFileName))) // see if the include file can be found
{ {
#if SHOW_INCLUDES #if SHOW_INCLUDES
...@@ -845,8 +846,10 @@ static void readIncludeFile(const QCString &inc) ...@@ -845,8 +846,10 @@ static void readIncludeFile(const QCString &inc)
{ {
if (oldFileDef) if (oldFileDef)
{ {
bool ambig;
FileDef *fd = findFileDef(&inputNameDict,incFileName,ambig);
// add include dependency to the file in which the #include was found // add include dependency to the file in which the #include was found
oldFileDef->addIncludeDependency(0,incFileName,localInclude); oldFileDef->addIncludeDependency(fd,incFileName,localInclude);
} }
#if SHOW_INCLUDES #if SHOW_INCLUDES
msg("#include %s: not found! skipping...\n",incFileName.data()); msg("#include %s: not found! skipping...\n",incFileName.data());
......
This diff is collapsed.
...@@ -148,6 +148,8 @@ static QCString baseName; ...@@ -148,6 +148,8 @@ static QCString baseName;
static QCString *specName; static QCString *specName;
static QCString formulaText; static QCString formulaText;
static QCString sectionRef; static QCString sectionRef;
static bool insideIDL = FALSE;
static bool insideCppQuote = FALSE;
// state variable for reading the argument list of a function // state variable for reading the argument list of a function
static int argRoundCount; static int argRoundCount;
...@@ -960,6 +962,8 @@ VAR [vV][aA][rR] ...@@ -960,6 +962,8 @@ VAR [vV][aA][rR]
%x ClassDocBrief %x ClassDocBrief
%x ClassDocOverload %x ClassDocOverload
%x ClassDefineArgs %x ClassDefineArgs
%x CppQuote
%x EndCppQuote
%x GroupDocArg1 %x GroupDocArg1
%x GroupDocArg2 %x GroupDocArg2
%x GroupName %x GroupName
...@@ -1060,6 +1064,7 @@ VAR [vV][aA][rR] ...@@ -1060,6 +1064,7 @@ VAR [vV][aA][rR]
for( i = 0 ; yytext[i+1] != 6 ; i++ ) for( i = 0 ; yytext[i+1] != 6 ; i++ )
yyFileName[i] = yytext[i+1] ; yyFileName[i] = yytext[i+1] ;
yyFileName[i] = 0 ; yyFileName[i] = 0 ;
insideIDL = i>4 && strcmp(&yyFileName[i-4],".idl")==0;
msg("Parsing file %s...\n",yyFileName); msg("Parsing file %s...\n",yyFileName);
current_root = global_root ; current_root = global_root ;
initParser(); initParser();
...@@ -1719,7 +1724,7 @@ VAR [vV][aA][rR] ...@@ -1719,7 +1724,7 @@ VAR [vV][aA][rR]
generateRef(*outDoc,className, generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock); removeRedundantWhiteSpace(oName),inSeeBlock);
} }
<DocScan>("http:"|"ftp:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); } <DocScan>("http:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); }
<DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); } <DocScan>[a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); }
<DocScan>{FILEMASK} { <DocScan>{FILEMASK} {
generateFileRef(*outDoc,yytext); generateFileRef(*outDoc,yytext);
...@@ -2413,22 +2418,37 @@ VAR [vV][aA][rR] ...@@ -2413,22 +2418,37 @@ VAR [vV][aA][rR]
*currentTemplateSpec+=*yytext; *currentTemplateSpec+=*yytext;
} }
<FindMembers,FindMemberName>{SCOPENAME} { <FindMembers,FindMemberName>{SCOPENAME} {
lineCount(); if (insideIDL && yyleng==9 && strcmp(yytext,"cpp_quote")==0)
if (YY_START==FindMembers)
{ {
addType( current ) ; BEGIN(CppQuote);
current->name = yytext;
} }
else else
{ {
current->name += yytext; lineCount();
if (YY_START==FindMembers)
{
addType( current ) ;
current->name = yytext;
}
else
{
current->name += yytext;
}
QCString tmp=yytext;
if (nameIsOperator(tmp))
BEGIN( Operator );
else
BEGIN(FindMembers);
} }
QCString tmp=yytext;
if (nameIsOperator(tmp))
BEGIN( Operator );
else
BEGIN(FindMembers);
} }
<CppQuote>"("{B}*"\"" {
insideCppQuote=TRUE;
BEGIN(FindMembers);
}
<EndCppQuote>")" {
insideCppQuote=FALSE;
BEGIN(FindMembers);
}
<FindMembers>{B}*"#" { lastCPPContext = YY_START; <FindMembers>{B}*"#" { lastCPPContext = YY_START;
BEGIN( SkipCPP ) ; BEGIN( SkipCPP ) ;
} }
...@@ -2482,8 +2502,15 @@ VAR [vV][aA][rR] ...@@ -2482,8 +2502,15 @@ VAR [vV][aA][rR]
yyLineNr++; yyLineNr++;
} }
<DefineEnd>\" { <DefineEnd>\" {
lastStringContext=DefineEnd; if (insideIDL && insideCppQuote)
BEGIN(SkipString); {
BEGIN(EndCppQuote);
}
else
{
lastStringContext=DefineEnd;
BEGIN(SkipString);
}
} }
<DefineEnd>. <DefineEnd>.
...@@ -2579,10 +2606,17 @@ VAR [vV][aA][rR] ...@@ -2579,10 +2606,17 @@ VAR [vV][aA][rR]
BEGIN(lastInitializerContext); BEGIN(lastInitializerContext);
} }
<ReadInitializer>\" { <ReadInitializer>\" {
lastStringContext=YY_START; if (insideIDL && insideCppQuote)
current->initializer+=*yytext; {
pCopyQuotedString=&current->initializer; BEGIN(EndCppQuote);
BEGIN(CopyString); }
else
{
lastStringContext=YY_START;
current->initializer+=*yytext;
pCopyQuotedString=&current->initializer;
BEGIN(CopyString);
}
} }
<ReadInitializer>"'"\\[0-7]{1,3}"'" <ReadInitializer>"'"\\[0-7]{1,3}"'"
<ReadInitializer>"'"\\."'" <ReadInitializer>"'"\\."'"
...@@ -3578,6 +3612,10 @@ VAR [vV][aA][rR] ...@@ -3578,6 +3612,10 @@ VAR [vV][aA][rR]
} }
<ClassVar>[;=*&] { <ClassVar>[;=*&] {
unput(*yytext); unput(*yytext);
if (isTypedef) // typedef of a class, put typedef keyword back
{
current->type.prepend("typedef");
}
BEGIN( FindMembers ); BEGIN( FindMembers );
} }
<ClassName,ClassVar>{B}*"{"{B}* { current->fileName = yyFileName ; <ClassName,ClassVar>{B}*"{"{B}* { current->fileName = yyFileName ;
...@@ -3911,6 +3949,7 @@ VAR [vV][aA][rR] ...@@ -3911,6 +3949,7 @@ VAR [vV][aA][rR]
current->name = yytext; current->name = yytext;
newDocState(); newDocState();
} }
<NameSpaceDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<NameSpaceDocArg1>"\n" { <NameSpaceDocArg1>"\n" {
warn("Warning: missing argument after " warn("Warning: missing argument after "
"\\namespace at line %d of %s.\n",yyLineNr,yyFileName); "\\namespace at line %d of %s.\n",yyLineNr,yyFileName);
...@@ -3935,6 +3974,7 @@ VAR [vV][aA][rR] ...@@ -3935,6 +3974,7 @@ VAR [vV][aA][rR]
} }
BEGIN( ClassDocArg2 ); BEGIN( ClassDocArg2 );
} }
<ClassDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<ClassDocArg1>"\n" { <ClassDocArg1>"\n" {
warn("Warning: missing argument after " warn("Warning: missing argument after "
"\\class at line %d of %s.\n",yyLineNr,yyFileName); "\\class at line %d of %s.\n",yyLineNr,yyFileName);
...@@ -3947,6 +3987,7 @@ VAR [vV][aA][rR] ...@@ -3947,6 +3987,7 @@ VAR [vV][aA][rR]
current->name=current->name.left(current->name.length()-5); current->name=current->name.left(current->name.length()-5);
BEGIN(GroupDocArg2); BEGIN(GroupDocArg2);
} }
<GroupDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg1>"\n" { <GroupDocArg1>"\n" {
warn("Warning: missing argument after " warn("Warning: missing argument after "
"\\defgroup at line %d of %s.\n",yyLineNr,yyFileName); "\\defgroup at line %d of %s.\n",yyLineNr,yyFileName);
...@@ -3958,6 +3999,7 @@ VAR [vV][aA][rR] ...@@ -3958,6 +3999,7 @@ VAR [vV][aA][rR]
current->type = current->type.stripWhiteSpace(); current->type = current->type.stripWhiteSpace();
newDocState(); newDocState();
} }
<GroupDocArg2>"\\"{B}*"\n" { yyLineNr++; }
<GroupDocArg2>"\n" { <GroupDocArg2>"\n" {
newDocState(); newDocState();
} }
...@@ -3966,7 +4008,8 @@ VAR [vV][aA][rR] ...@@ -3966,7 +4008,8 @@ VAR [vV][aA][rR]
current->includeFile = stripQuotes(yytext); current->includeFile = stripQuotes(yytext);
BEGIN( ClassDocArg3 ); BEGIN( ClassDocArg3 );
} }
<ClassDocArg2>{BL} { yyLineNr++; <ClassDocArg2>"\\"{B}*"\n" { yyLineNr++; }
<ClassDocArg2>"\n" { yyLineNr++;
newDocState(); newDocState();
} }
<ClassDocArg3>[<]?{FILE}[>]? { <ClassDocArg3>[<]?{FILE}[>]? {
...@@ -3974,13 +4017,15 @@ VAR [vV][aA][rR] ...@@ -3974,13 +4017,15 @@ VAR [vV][aA][rR]
current->includeName = yytext; current->includeName = yytext;
newDocState(); newDocState();
} }
<ClassDocArg3>{BL} { yyLineNr++; <ClassDocArg3>"\\"{B}*"\n" { yyLineNr++; }
<ClassDocArg3>"\n" { yyLineNr++;
newDocState(); newDocState();
} }
<FileDocArg1>{FILE} { <FileDocArg1>{FILE} {
current->name = stripQuotes(yytext); current->name = stripQuotes(yytext);
newDocState(); newDocState();
} }
<FileDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<FileDocArg1>"\n" { <FileDocArg1>"\n" {
current->name = yyFileName; current->name = yyFileName;
yyLineNr++; yyLineNr++;
...@@ -3990,6 +4035,7 @@ VAR [vV][aA][rR] ...@@ -3990,6 +4035,7 @@ VAR [vV][aA][rR]
current->name = stripQuotes(yytext); current->name = stripQuotes(yytext);
BEGIN( PageDocArg2 ); BEGIN( PageDocArg2 );
} }
<PageDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<PageDocArg1>"\n" { <PageDocArg1>"\n" {
warn("Warning: missing argument after " warn("Warning: missing argument after "
"\\page at line %d of %s.\n",yyLineNr,yyFileName); "\\page at line %d of %s.\n",yyLineNr,yyFileName);
...@@ -4009,6 +4055,7 @@ VAR [vV][aA][rR] ...@@ -4009,6 +4055,7 @@ VAR [vV][aA][rR]
} }
newDocState(); newDocState();
} }
<EnumDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<EnumDocArg1>"\n" { <EnumDocArg1>"\n" {
warn("Warning: missing argument after " warn("Warning: missing argument after "
"\\enum at line %d of %s.\n",yyLineNr,yyFileName); "\\enum at line %d of %s.\n",yyLineNr,yyFileName);
...@@ -4303,6 +4350,7 @@ VAR [vV][aA][rR] ...@@ -4303,6 +4350,7 @@ VAR [vV][aA][rR]
<ClassDefineArgs>. { <ClassDefineArgs>. {
current->args+= yytext; current->args+= yytext;
} }
<ClassDocFunc>"\\"{B}*"\n" { yyLineNr++; }
<ClassDocFunc>"\n" { <ClassDocFunc>"\n" {
yyLineNr++; yyLineNr++;
current->name = current->name.stripWhiteSpace(); current->name = current->name.stripWhiteSpace();
...@@ -4450,6 +4498,12 @@ VAR [vV][aA][rR] ...@@ -4450,6 +4498,12 @@ VAR [vV][aA][rR]
} }
<SkipComment>[^\*\n]+ <SkipComment>[^\*\n]+
<*>\n { yyLineNr++ ; } <*>\n { yyLineNr++ ; }
<*>\" {
if (insideIDL && insideCppQuote)
{
BEGIN(EndCppQuote);
}
}
<*>. <*>.
<SkipComment>"//"|"/*" <SkipComment>"//"|"/*"
<*>"/*" { lastCContext = YY_START ; <*>"/*" { lastCContext = YY_START ;
......
This diff is collapsed.
...@@ -442,7 +442,7 @@ class TranslatorDutch : public Translator ...@@ -442,7 +442,7 @@ class TranslatorDutch : public Translator
QCString trSources() QCString trSources()
{ {
return "Sources"; return "Broncode";
} }
QCString trDefinedAtLineInSourceFile() QCString trDefinedAtLineInSourceFile()
{ {
...@@ -457,10 +457,81 @@ class TranslatorDutch : public Translator ...@@ -457,10 +457,81 @@ class TranslatorDutch : public Translator
// new since 1.0.0 // new since 1.0.0
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trDeprecated() QCString trDeprecated()
{ {
return "Verouderd"; return "Verouderd";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */
QCString trCollaborationDiagram(const char *clName)
{
return (QCString)"Collaboratie diagram voor "+clName+":";
}
/*! this text is put before an include dependency graph */
QCString trInclDepGraph(const char *fName)
{
return (QCString)"Include afhankelijkheidsgraaf voor "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
QCString trConstructorDocumentation()
{
return "Constructor & Destructor Documentatie";
}
/*! Used in the file documentation to point to the corresponding sources. */
QCString trGotoSourceCode()
{
return "Ga naar de bron code van deze file.";
}
/*! Used in the file sources to point to the corresponding documentation. */
QCString trGotoDocumentation()
{
return "Ga naar de documentatie van deze file.";
}
/*! Text for the \pre command */
QCString trPrecondition()
{
return "Preconditie";
}
/*! Text for the \post command */
QCString trPostcondition()
{
return "Postconditie";
}
/*! Text for the \invariant command */
QCString trInvariant()
{
return "Invariant";
}
/*! Text shown before a multi-line variable/enum initialization */
QCString trInitialValue()
{
return "Initi&euml;le waarde:";
}
/*! Text used the source code in the file index */
QCString trCode()
{
return "code";
}
QCString trGraphicalHierarchy()
{
return "Grafische Klasse Hierarchie";
}
QCString trGotoGraphicalHierarchy()
{
return "Ga naar de grafische klasse hierarchie";
}
QCString trGotoTextualHierarchy()
{
return "Ga naar de tekstu&euml;le klasse hierarchie";
}
QCString trPageIndex()
{
return "Pagina Index";
}
}; };
#endif #endif
...@@ -1968,3 +1968,47 @@ int getPrefixIndex(const QCString &name) ...@@ -1968,3 +1968,47 @@ int getPrefixIndex(const QCString &name)
} }
return 0; return 0;
} }
//----------------------------------------------------------------------------
static void initBaseClassHierarchy(BaseClassList *bcl)
{
BaseClassListIterator bcli(*bcl);
for ( ; bcli.current(); ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
if (cd->baseClasses()->count()==0) // no base classes => new root
{
initBaseClassHierarchy(cd->baseClasses());
}
cd->visited=FALSE;
}
}
//----------------------------------------------------------------------------
void initClassHierarchy(ClassList *cl)
{
ClassListIterator cli(*cl);
ClassDef *cd;
for ( ; (cd=cli.current()); ++cli)
{
cd->visited=FALSE;
initBaseClassHierarchy(cd->baseClasses());
}
}
//----------------------------------------------------------------------------
bool hasVisibleRoot(BaseClassList *bcl)
{
BaseClassListIterator bcli(*bcl);
for ( ; bcli.current(); ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
if (cd->isVisibleInHierarchy()) return TRUE;
hasVisibleRoot(cd->baseClasses());
}
return FALSE;
}
...@@ -31,6 +31,8 @@ class ArgumentList; ...@@ -31,6 +31,8 @@ class ArgumentList;
class OutputList; class OutputList;
class MemberDef; class MemberDef;
class ExampleList; class ExampleList;
class ClassList;
class BaseClassList;
extern void setAnchors(char id,MemberList *ml); extern void setAnchors(char id,MemberList *ml);
extern QCString fileToString(const char *name); extern QCString fileToString(const char *name);
...@@ -80,5 +82,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn); ...@@ -80,5 +82,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn);
QCString substituteKeywords(const QCString &s,const char *title); QCString substituteKeywords(const QCString &s,const char *title);
int getPrefixIndex(const QCString &name); int getPrefixIndex(const QCString &name);
QCString removeAnnonymousScopes(const QCString &s); QCString removeAnnonymousScopes(const QCString &s);
void initClassHierarchy(ClassList *cl);
bool hasVisibleRoot(BaseClassList *bcl);
#endif #endif
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