Commit b0cbd597 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3-rc3-20020215

parent 8fda55cd
DOXYGEN Version 1.3-rc3 DOXYGEN Version 1.3-rc3-20030215
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 (01 February 2003) Dimitri van Heesch (15 February 2003)
DOXYGEN Version 1.3_rc3 DOXYGEN Version 1.3_rc3_20030215
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) (01 February 2003) Dimitri van Heesch (dimitri@stack.nl) (15 February 2003)
1.3-rc3 1.3-rc3-20030215
...@@ -727,6 +727,12 @@ class ISection ...@@ -727,6 +727,12 @@ class ISection
virtual bool isProtected() const = 0; virtual bool isProtected() const = 0;
}; };
class IUserDefined : public ISection
{
public:
virtual const IString * header() const = 0;
};
class ISectionIterator class ISectionIterator
{ {
public: public:
......
...@@ -727,6 +727,12 @@ class ISection ...@@ -727,6 +727,12 @@ class ISection
virtual bool isProtected() const = 0; virtual bool isProtected() const = 0;
}; };
class IUserDefined : public ISection
{
public:
virtual const IString * header() const = 0;
};
class ISectionIterator class ISectionIterator
{ {
public: public:
......
...@@ -88,6 +88,8 @@ SectionHandler::SectionHandler(IBaseHandler *parent) : m_parent(parent) ...@@ -88,6 +88,8 @@ SectionHandler::SectionHandler(IBaseHandler *parent) : m_parent(parent)
m_members.setAutoDelete(TRUE); m_members.setAutoDelete(TRUE);
addEndHandler("sectiondef",this,&SectionHandler::endSection); addEndHandler("sectiondef",this,&SectionHandler::endSection);
addStartHandler("memberdef",this,&SectionHandler::startMember); addStartHandler("memberdef",this,&SectionHandler::startMember);
addStartHandler("header",this,&SectionHandler::startHeader);
addEndHandler("header",this,&SectionHandler::endHeader);
} }
SectionHandler::~SectionHandler() SectionHandler::~SectionHandler()
...@@ -115,6 +117,18 @@ void SectionHandler::startMember(const QXmlAttributes& attrib) ...@@ -115,6 +117,18 @@ void SectionHandler::startMember(const QXmlAttributes& attrib)
m_members.append(memHandler); m_members.append(memHandler);
} }
void SectionHandler::startHeader(const QXmlAttributes&)
{
m_header="";
m_curString="";
}
void SectionHandler::endHeader()
{
m_header = m_curString.stripWhiteSpace();
debug(2,"member header=`%s'\n",m_header.data());
}
void SectionHandler::initialize(CompoundHandler *ch) void SectionHandler::initialize(CompoundHandler *ch)
{ {
QListIterator<MemberHandler> mli(m_members); QListIterator<MemberHandler> mli(m_members);
......
...@@ -34,12 +34,14 @@ class SectionIterator : ...@@ -34,12 +34,14 @@ class SectionIterator :
}; };
class SectionHandler : public ISection, public BaseHandler<SectionHandler> class SectionHandler : public IUserDefined, public BaseHandler<SectionHandler>
{ {
public: public:
virtual void startMember(const QXmlAttributes& attrib); virtual void startMember(const QXmlAttributes& attrib);
virtual void startHeader(const QXmlAttributes& attrib);
virtual void startSection(const QXmlAttributes& attrib); virtual void startSection(const QXmlAttributes& attrib);
virtual void endSection(); virtual void endSection();
virtual void endHeader();
SectionHandler(IBaseHandler *parent); SectionHandler(IBaseHandler *parent);
virtual ~SectionHandler(); virtual ~SectionHandler();
...@@ -73,10 +75,17 @@ class SectionHandler : public ISection, public BaseHandler<SectionHandler> ...@@ -73,10 +75,17 @@ class SectionHandler : public ISection, public BaseHandler<SectionHandler>
void initialize(CompoundHandler *c); void initialize(CompoundHandler *c);
// IUserDefined implementation
virtual const IString *header() const
{
return &m_header;
}
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
SectionKind m_kind; SectionKind m_kind;
StringImpl m_kindString; StringImpl m_kindString;
StringImpl m_header;
QList<MemberHandler> m_members; QList<MemberHandler> m_members;
}; };
......
...@@ -565,6 +565,11 @@ int main(int argc,char **argv) ...@@ -565,6 +565,11 @@ int main(int argc,char **argv)
printf(" Section kind=%s\n",sec->kindString()->latin1()); printf(" Section kind=%s\n",sec->kindString()->latin1());
IMemberIterator *mli = sec->members(); IMemberIterator *mli = sec->members();
IMember *mem; IMember *mem;
if( sec->kind() == ISection::UserDefined )
{
IUserDefined *group = dynamic_cast<IUserDefined*>(sec);
printf(" Title=%s\n", group->header()->latin1() );
}
for (mli->toFirst();(mem=mli->current());mli->toNext()) for (mli->toFirst();(mem=mli->current());mli->toNext())
{ {
ILinkedTextIterator *lti = mem->type(); ILinkedTextIterator *lti = mem->type();
......
...@@ -421,13 +421,6 @@ TMAKE_MOC = $QTDIR/bin/moc ...@@ -421,13 +421,6 @@ TMAKE_MOC = $QTDIR/bin/moc
EOF EOF
fi fi
#if test "$f_platform" = "win32-g++"; then
# cat >> .tmakeconfig <<EOF
# TMAKE_LFLAGS += -D_WIN32
#EOF
#fi
if test "$f_english" = YES; then if test "$f_english" = YES; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_CXXFLAGS += -DENGLISH_ONLY TMAKE_CXXFLAGS += -DENGLISH_ONLY
......
...@@ -417,6 +417,8 @@ function's detailed documentation block. ...@@ -417,6 +417,8 @@ function's detailed documentation block.
comments) as a brief description. This used to be the default behaviour. comments) as a brief description. This used to be the default behaviour.
The new default is to treat a multi-line C++ comment block as a detailed The new default is to treat a multi-line C++ comment block as a detailed
description. Set this tag to YES if you prefer the old behaviour instead. description. Set this tag to YES if you prefer the old behaviour instead.
Note that setting this tag to YES also means that rational rose comments
are not recognised any more.
\anchor cfg_details_at_top \anchor cfg_details_at_top
<dt>\c DETAILS_AT_TOP <dd> <dt>\c DETAILS_AT_TOP <dd>
......
...@@ -25,10 +25,10 @@ to get the latest distribution, if you did not have it already. ...@@ -25,10 +25,10 @@ to get the latest distribution, if you did not have it already.
This section is divided into the following sections: This section is divided into the following sections:
<ul> <ul>
<li>\ref install_src_unix "Compiling from source on Unix" <li>\ref install_src_unix "Compiling from source on Unix"
<li>\ref install_bin_unix "Installating the binaries on Unix" <li>\ref install_bin_unix "Installing the binaries on Unix"
<li>\ref unix_problems "Known compilation problems for Unix" <li>\ref unix_problems "Known compilation problems for Unix"
<li>\ref install_src_windows "Compiling from source on Windows" <li>\ref install_src_windows "Compiling from source on Windows"
<li>\ref install_bin_windows "Installating the binaries on Windows" <li>\ref install_bin_windows "Installing the binaries on Windows"
<li>\ref build_tools "Tools used to develop doxygen" <li>\ref build_tools "Tools used to develop doxygen"
</ul> </ul>
...@@ -158,7 +158,7 @@ Compilation is now done by performing the following steps: ...@@ -158,7 +158,7 @@ Compilation is now done by performing the following steps:
</ol> </ol>
\section install_bin_unix Installating the binaries on Unix \section install_bin_unix Installing the binaries on Unix
After the compilation of the source code do a <code>make install</code> After the compilation of the source code do a <code>make install</code>
to install doxygen. If you downloaded the binary distribution for Unix, to install doxygen. If you downloaded the binary distribution for Unix,
...@@ -540,7 +540,7 @@ Compilation is now done by performing the following steps: ...@@ -540,7 +540,7 @@ Compilation is now done by performing the following steps:
documentation can be generated. documentation can be generated.
</ol> </ol>
\section install_bin_windows Installating the binaries on Windows \section install_bin_windows Installing the binaries on Windows
There is no fancy installation procedure at the moment (if anyone can There is no fancy installation procedure at the moment (if anyone can
add it in a location independent way please let me know). add it in a location independent way please let me know).
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.3-rc3), 28 languages Currently (version 1.2.14-20020317), 28 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3_rc3 Version: 1.3_rc3_20030215
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
......
...@@ -128,6 +128,8 @@ ...@@ -128,6 +128,8 @@
#define _OS_UNIXWARE7_ #define _OS_UNIXWARE7_
#elif !defined(_SCO_DS) && defined(__USLC__) && defined(__SCO_VERSION__) #elif !defined(_SCO_DS) && defined(__USLC__) && defined(__SCO_VERSION__)
#define _OS_UNIXWARE7_ #define _OS_UNIXWARE7_
#elif defined(__CYGWIN__)
#define _OS_CYGWIN_
#else #else
#error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com" #error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
#endif #endif
......
...@@ -74,6 +74,6 @@ win32:SOURCES += qfile_win32.cpp \ ...@@ -74,6 +74,6 @@ win32:SOURCES += qfile_win32.cpp \
INCLUDEPATH = . INCLUDEPATH = .
TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQT_LITE_UNICODE TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQT_LITE_UNICODE
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:TMAKE_CXXFLAGS += -D_WIN32 -D__CYGWIN__ -DALL_STATIC win32-g++:TMAKE_CXXFLAGS += -D__CYGWIN__ -DALL_STATIC
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
DESTDIR = ../lib DESTDIR = ../lib
...@@ -1171,7 +1171,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1171,7 +1171,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
addType(); addType();
g_code->codify(yytext); g_code->codify(yytext);
} }
<ClassName>{ID} { <ClassName>{ID}("::"{ID})* {
g_curClassName=yytext; g_curClassName=yytext;
addType(); addType();
generateClassOrGlobalLink(*g_code,yytext); generateClassOrGlobalLink(*g_code,yytext);
......
...@@ -543,12 +543,19 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children, ...@@ -543,12 +543,19 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
return tok; return tok;
} }
while ((tok=doctokenizerYYlex()) && while ((tok=doctokenizerYYlex()) &&
tok!=TK_WHITESPACE && tok!=TK_WHITESPACE &&
tok!=TK_NEWPARA && tok!=TK_NEWPARA &&
tok!=TK_LISTITEM && tok!=TK_LISTITEM &&
tok!=TK_ENDLIST tok!=TK_ENDLIST
) )
{ {
static QRegExp specialChar("[.,|()\\[\\]:;\\?]");
if (tok==TK_WORD && g_token->name.length()==1 &&
g_token->name.find(specialChar)!=-1)
{
// special character that ends the markup command
return tok;
}
if (!defaultHandleToken(parent,tok,children)) if (!defaultHandleToken(parent,tok,children))
{ {
switch (tok) switch (tok)
...@@ -732,6 +739,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children ...@@ -732,6 +739,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
DBG((" name=%s",g_token->name.data())); DBG((" name=%s",g_token->name.data()));
} }
DBG(("\n")); DBG(("\n"));
reparsetoken:
QString tokenName = g_token->name; QString tokenName = g_token->name;
switch (tok) switch (tok)
{ {
...@@ -767,8 +775,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children ...@@ -767,8 +775,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
tok=handleStyleArgument(parent,children,tokenName); tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
} }
break; break;
case CMD_BOLD: case CMD_BOLD:
...@@ -776,8 +785,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children ...@@ -776,8 +785,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,TRUE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,TRUE));
tok=handleStyleArgument(parent,children,tokenName); tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
} }
break; break;
case CMD_CODE: case CMD_CODE:
...@@ -785,8 +795,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children ...@@ -785,8 +795,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,TRUE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,TRUE));
tok=handleStyleArgument(parent,children,tokenName); tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE)); children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE));
children.append(new DocWhiteSpace(parent," ")); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara; if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
} }
break; break;
case CMD_HTMLONLY: case CMD_HTMLONLY:
...@@ -1001,7 +1012,14 @@ handlepara: ...@@ -1001,7 +1012,14 @@ handlepara:
return FALSE; return FALSE;
break; break;
case TK_URL: case TK_URL:
children.append(new DocURL(parent,g_token->name,g_token->isEMailAddr)); if (g_insideHtmlLink)
{
children.append(new DocWord(parent,g_token->name));
}
else
{
children.append(new DocURL(parent,g_token->name,g_token->isEMailAddr));
}
break; break;
default: default:
return FALSE; return FALSE;
...@@ -1347,16 +1365,18 @@ void DocXRefItem::parse() ...@@ -1347,16 +1365,18 @@ void DocXRefItem::parse()
{ {
RefItem *item = refList->getRefItem(m_id); RefItem *item = refList->getRefItem(m_id);
ASSERT(item!=0); ASSERT(item!=0);
if (item)
m_file = refList->listName();
m_anchor = item->listAnchor;
m_title = refList->sectionTitle();
if (!item->text.isEmpty())
{ {
docParserPushContext(); m_file = refList->listName();
internalValidatingParseDoc(this,m_children,item->text); m_anchor = item->listAnchor;
docParserPopContext(); m_title = refList->sectionTitle();
if (!item->text.isEmpty())
{
docParserPushContext();
internalValidatingParseDoc(this,m_children,item->text);
docParserPopContext();
}
} }
} }
} }
...@@ -3392,19 +3412,19 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -3392,19 +3412,19 @@ int DocPara::handleCommand(const QString &cmdName)
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
retval=handleStyleArgument(this,m_children,cmdName); retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
m_children.append(new DocWhiteSpace(this," ")); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break; break;
case CMD_BOLD: case CMD_BOLD:
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,TRUE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,TRUE));
retval=handleStyleArgument(this,m_children,cmdName); retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
m_children.append(new DocWhiteSpace(this," ")); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break; break;
case CMD_CODE: case CMD_CODE:
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,TRUE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,TRUE));
retval=handleStyleArgument(this,m_children,cmdName); retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,FALSE)); m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,FALSE));
m_children.append(new DocWhiteSpace(this," ")); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break; break;
case CMD_BSLASH: case CMD_BSLASH:
m_children.append(new DocSymbol(this,DocSymbol::BSlash)); m_children.append(new DocSymbol(this,DocSymbol::BSlash));
...@@ -4255,7 +4275,7 @@ reparsetoken: ...@@ -4255,7 +4275,7 @@ reparsetoken:
// the command ended normally, keep scanner for new tokens. // the command ended normally, keep scanner for new tokens.
retval = 0; retval = 0;
} }
else if (retval==TK_LISTITEM || retval==TK_ENDLIST) else if (retval==TK_LISTITEM || retval==TK_ENDLIST || retval==TK_WORD)
{ {
tok = retval; tok = retval;
goto reparsetoken; goto reparsetoken;
......
...@@ -1239,7 +1239,6 @@ static void findIncludedUsingDirectives() ...@@ -1239,7 +1239,6 @@ static void findIncludedUsingDirectives()
{ {
fd->visited=FALSE; fd->visited=FALSE;
} }
fn=Doxygen::inputNameList.next();
} }
// then recursively add using directives found in #include files // then recursively add using directives found in #include files
// to files that have not been visited. // to files that have not been visited.
...@@ -1247,11 +1246,14 @@ static void findIncludedUsingDirectives() ...@@ -1247,11 +1246,14 @@ static void findIncludedUsingDirectives()
{ {
FileNameIterator fni(*fn); FileNameIterator fni(*fn);
FileDef *fd; FileDef *fd;
for (;(fd=fni.current());++fni) for (fni.toFirst();(fd=fni.current());++fni)
{ {
if (!fd->visited) fd->addIncludedUsingDirectives(); if (!fd->visited)
{
//printf("----- adding using directives for file %s\n",fd->name().data());
fd->addIncludedUsingDirectives();
}
} }
fn=Doxygen::inputNameList.next();
} }
} }
...@@ -4419,6 +4421,10 @@ static void findMember(Entry *root, ...@@ -4419,6 +4421,10 @@ static void findMember(Entry *root,
{ {
Debug::print(Debug::FindMembers,0, Debug::print(Debug::FindMembers,0,
"1. funcName=`%s'\n",funcName.data()); "1. funcName=`%s'\n",funcName.data());
if (funcName.left(9)=="operator ")
{
funcName = substitute(funcName,className+"::","");
}
if (!funcTempList.isEmpty()) // try with member specialization if (!funcTempList.isEmpty()) // try with member specialization
{ {
mn=Doxygen::memberNameSDict[funcName+funcTempList]; mn=Doxygen::memberNameSDict[funcName+funcTempList];
...@@ -4677,9 +4683,10 @@ static void findMember(Entry *root, ...@@ -4677,9 +4683,10 @@ static void findMember(Entry *root,
{ {
warn_cont("%s ",md->typeString()); warn_cont("%s ",md->typeString());
} }
warn_cont("%s::%s%s\n", QCString qScope = cd->qualifiedNameWithTemplateParameters();
cd->qualifiedNameWithTemplateParameters().data(), if (!qScope.isEmpty()) warn_cont("%s::%s",qScope.data(),md->name().data());
md->name().data(),md->argsString()); if (md->argsString()) warn_cont("%s",md->argsString());
warn_cont("\n");
} }
} }
} }
......
...@@ -27,7 +27,6 @@ win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib ...@@ -27,7 +27,6 @@ win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib shell32.lib win32-borland:LIBS += qtools.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:TMAKE_CXXFLAGS += -D_WIN32
INCLUDEPATH += ../qtools INCLUDEPATH += ../qtools
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
TARGET = ../bin/doxytag TARGET = ../bin/doxytag
...@@ -651,26 +651,32 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) ...@@ -651,26 +651,32 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
void FileDef::addIncludedUsingDirectives() void FileDef::addIncludedUsingDirectives()
{ {
if (!visited) if (visited) return;
visited=TRUE;
//printf("( FileDef::addIncludedUsingDirectives for file %s\n",name().data());
NamespaceList nl;
if (includeList) // file contains #includes
{ {
visited=TRUE;
NamespaceList nl;
if (includeList) // file contains #includes
{ {
QListIterator<IncludeInfo> iii(*includeList); QListIterator<IncludeInfo> iii(*includeList);
IncludeInfo *ii; IncludeInfo *ii;
for (;(ii=iii.current());++iii) // foreach #include... for (iii.toFirst();(ii=iii.current());++iii) // foreach #include...
{ {
if (ii->fileDef) // ...that is a known file if (ii->fileDef && !ii->fileDef->visited) // ...that is a known file
{ {
// recurse into this file // recurse into this file
ii->fileDef->addIncludedUsingDirectives(); ii->fileDef->addIncludedUsingDirectives();
} }
} }
}
{
QListIterator<IncludeInfo> iii(*includeList);
IncludeInfo *ii;
// iterate through list from last to first // iterate through list from last to first
for (iii.toLast();(ii=iii.current());--iii) for (iii.toLast();(ii=iii.current());--iii)
{ {
if (ii->fileDef) if (ii->fileDef && ii->fileDef!=this)
{ {
NamespaceList *unl = ii->fileDef->usingDirList; NamespaceList *unl = ii->fileDef->usingDirList;
if (unl) if (unl)
...@@ -681,14 +687,16 @@ void FileDef::addIncludedUsingDirectives() ...@@ -681,14 +687,16 @@ void FileDef::addIncludedUsingDirectives()
{ {
// append each using directive found in a #include file // append each using directive found in a #include file
if (usingDirList==0) usingDirList = new NamespaceList; if (usingDirList==0) usingDirList = new NamespaceList;
//printf("Prepending used namespace %s to the list of file %s\n",
// nd->name().data(),name().data());
usingDirList->prepend(nd); usingDirList->prepend(nd);
} }
} }
} }
} }
} }
// add elements of nl to usingDirList
} }
//printf(") end FileDef::addIncludedUsingDirectives for file %s\n",name().data());
} }
......
...@@ -111,7 +111,6 @@ HEADERS = bufstr.h \ ...@@ -111,7 +111,6 @@ HEADERS = bufstr.h \
translator_sr.h \ translator_sr.h \
translator_tw.h \ translator_tw.h \
translator_ua.h \ translator_ua.h \
treeview.h \
unistd.h \ unistd.h \
util.h \ util.h \
version.h \ version.h \
......
...@@ -16,8 +16,10 @@ ...@@ -16,8 +16,10 @@
#! #!
#$ IncludeTemplate("lib.t"); #$ IncludeTemplate("lib.t");
LEX = flex LEX = flex
YACC = bison YACC = bison
PERL = perl
INCBUFSIZE = $(PERL) -n -e "s/YY_BUF_SIZE 16384/YY_BUF_SIZE 262144/g; print $$_;"
#${ #${
sub GenerateDep { sub GenerateDep {
...@@ -45,13 +47,13 @@ sub GenerateDep { ...@@ -45,13 +47,13 @@ sub GenerateDep {
#################### ####################
#$ GenerateDep("scanner.cpp","scanner.l"); #$ GenerateDep("scanner.cpp","scanner.l");
$(LEX) -PscanYY -t scanner.l >scanner.cpp $(LEX) -PscanYY -t scanner.l | $(INCBUFSIZE) >scanner.cpp
#$ GenerateDep("code.cpp","code.l"); #$ GenerateDep("code.cpp","code.l");
$(LEX) -PcodeYY -t code.l >code.cpp $(LEX) -PcodeYY -t code.l | $(INCBUFSIZE) >code.cpp
#$ GenerateDep("pre.cpp","pre.l"); #$ GenerateDep("pre.cpp","pre.l");
$(LEX) -PpreYY -t pre.l >pre.cpp $(LEX) -PpreYY -t pre.l | $(INCBUFSIZE) >pre.cpp
#$ GenerateDep("declinfo.cpp","declinfo.l"); #$ GenerateDep("declinfo.cpp","declinfo.l");
$(LEX) -PdeclinfoYY -t declinfo.l >declinfo.cpp $(LEX) -PdeclinfoYY -t declinfo.l >declinfo.cpp
...@@ -75,6 +77,6 @@ sub GenerateDep { ...@@ -75,6 +77,6 @@ sub GenerateDep {
$(YACC) -l -d -p cppExpYY constexp.y -o ce_parse.c $(YACC) -l -d -p cppExpYY constexp.y -o ce_parse.c
-rm ce_parse.c -rm ce_parse.c
treeview.h: treeview.js #treeview.h: treeview.js
cat treeview.js | sed -e "s/\\\\/\\\\\\\\/g" -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >treeview.h # cat treeview.js | sed -e "s/\\\\/\\\\\\\\/g" -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >treeview.h
...@@ -1623,7 +1623,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1623,7 +1623,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defLitText+=' '; g_defLitText+=' ';
BEGIN(SkipCPPComment); BEGIN(SkipCPPComment);
} }
<SkipCComment>"*/" { <SkipCComment>[/]?"*/" {
if (yytext[0]=='/') outputChar('/');
outputChar('*');outputChar('/'); outputChar('*');outputChar('/');
if (--g_commentCount<=0) if (--g_commentCount<=0)
{ {
...@@ -1647,7 +1648,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1647,7 +1648,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCComment>. { <SkipCComment>. {
outputChar(*yytext); outputChar(*yytext);
} }
<RemoveCComment>"*/" { BEGIN(g_lastCContext); } <RemoveCComment>"*/" { BEGIN(g_lastCContext); }
<RemoveCComment>"//" <RemoveCComment>"//"
<RemoveCComment>"/*" <RemoveCComment>"/*"
<RemoveCComment>[^*\n]+ <RemoveCComment>[^*\n]+
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#define YY_NEVER_INTERACTIVE 1 #define YY_NEVER_INTERACTIVE 1
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
* *
* statics * statics
...@@ -181,6 +181,7 @@ static void initParser() ...@@ -181,6 +181,7 @@ static void initParser()
insideTryBlock = FALSE; insideTryBlock = FALSE;
autoGroupStack.setAutoDelete(TRUE); autoGroupStack.setAutoDelete(TRUE);
lastDefGroup.groupname.resize(0); lastDefGroup.groupname.resize(0);
insideFormula = FALSE;
} }
static void initEntry() static void initEntry()
...@@ -959,7 +960,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -959,7 +960,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface <FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface
lineCount(); lineCount();
if (insideIDL || insideJava) if (insideIDL || insideJava || insideCS)
{ {
isTypedef=FALSE; isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC; current->section = Entry::INTERFACE_SEC;
...@@ -3899,6 +3900,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3899,6 +3900,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<ReadFormulaShort>\n { <ReadFormulaShort>\n {
formulaText+=" "; formulaText+=" ";
yyLineNr++;
if (lastFormulaContext==LineDoc || if (lastFormulaContext==LineDoc ||
lastFormulaContext==AfterDocLine lastFormulaContext==AfterDocLine
) )
...@@ -3922,7 +3924,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3922,7 +3924,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
insideFormula=FALSE; insideFormula=FALSE;
BEGIN(lastFormulaContext); BEGIN(lastFormulaContext);
} }
<ReadFormulaLong>\n { formulaText+=*yytext; } <ReadFormulaLong>\n { formulaText+=*yytext; yyLineNr++; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; } <ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<ExampleDoc,PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" { <ExampleDoc,PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs(); checkDocs();
...@@ -4195,7 +4197,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -4195,7 +4197,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
} }
<ClassDocBrief>"<"{BR}{ATTR}">" <ClassDocBrief>"<"{BR}{ATTR}">"
<ClassDocBrief>{BS}/{SECTIONCMD} { <ClassDocBrief>{BS}/{SECTIONCMD} |
<ClassDocBrief>{B}*/{SECTIONCMD} {
current->brief=current->brief.stripWhiteSpace(); current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext ); BEGIN( lastBriefContext );
} }
...@@ -4445,12 +4448,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -4445,12 +4448,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n { <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->doc += yytext; current->doc += yytext;
yyLineNr++;
} }
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ { <ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->brief += "-"; current->brief += "-";
} }
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n { <ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->brief += "."; current->brief += "."; yyLineNr++;
} }
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/] <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ { <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
......
This diff is collapsed.
...@@ -41,11 +41,13 @@ ...@@ -41,11 +41,13 @@
* -------------+------------------------------------------------------------ * -------------+------------------------------------------------------------
* 2002-10-22 | Update for new since 1.2.18 * 2002-10-22 | Update for new since 1.2.18
* -------------+------------------------------------------------------------ * -------------+------------------------------------------------------------
* 2003-02-04 | Corrected typo. Thanks to Bertrand M. :)
* -------------+------------------------------------------------------------
*/ */
#ifndef TRANSLATOR_FR_H #ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H #define TRANSLATOR_FR_H
class TranslatorFrench : public TranslatorAdapter_1_2_17 class TranslatorFrench : public Translator
{ {
public: public:
QCString idLanguage() QCString idLanguage()
...@@ -205,7 +207,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17 ...@@ -205,7 +207,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
/*! This is an introduction to the annotated compound list. */ /*! This is an introduction to the annotated compound list. */
QCString trCompoundListDescription() QCString trCompoundListDescription()
{ return "Liste des classes, des strutures et des unions " { return "Liste des classes, des structures et des unions "
"avec une brève description :"; "avec une brève description :";
} }
...@@ -384,7 +386,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17 ...@@ -384,7 +386,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
* of documentation blocks for enumeration types * of documentation blocks for enumeration types
*/ */
QCString trEnumerationTypeDocumentation() QCString trEnumerationTypeDocumentation()
{ return "Documentation du type de l'énumeration"; } { return "Documentation du type de l'énumération"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values * of documentation blocks for enumeration values
...@@ -959,13 +961,13 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17 ...@@ -959,13 +961,13 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
"</ul>\n" "</ul>\n"
"Les flèches ont la signification suivante:\n" "Les flèches ont la signification suivante:\n"
"<ul>\n" "<ul>\n"
"<li>Une flèche bleu foncé est utilisée pour visuliser une relation d'héritage public " "<li>Une flèche bleu foncé est utilisée pour visualiser une relation d'héritage public "
"entre deux classes.\n" "entre deux classes.\n"
"<li>Une flèche vert foncé est utilisée pour une relation d'héritage protégé.\n" "<li>Une flèche vert foncé est utilisée pour une relation d'héritage protégé.\n"
"<li>Une flèche rouge foncé est utilisée pour une relation d'héritage privé.\n" "<li>Une flèche rouge foncé est utilisée pour une relation d'héritage privé.\n"
"<li>Une flèche violette en pointillés est utilisée si une classe est contenue ou " "<li>Une flèche violette en pointillés est utilisée si une classe est contenue ou "
"utilisée par une autre classe. La flèche est étiquetée avec la ou les variable(s) " "utilisée par une autre classe. La flèche est étiquetée avec la ou les variable(s) "
"qui permettent d'acceder à la classe ou structure pointée. \n" "qui permettent d'accéder à la classe ou structure pointée. \n"
"</ul>\n"; "</ul>\n";
} }
/*! text for the link to the legend page */ /*! text for the link to the legend page */
......
This diff is collapsed.
This diff is collapsed.
...@@ -98,7 +98,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile) ...@@ -98,7 +98,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
if (command==0) return 1; if (command==0) return 1;
//#ifdef _OS_SOLARIS_ #ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
// on Solaris fork() duplicates the memory usage // on Solaris fork() duplicates the memory usage
// so we use vfork instead // so we use vfork instead
...@@ -131,38 +131,36 @@ int iSystem(const char *command,const char *args,bool isBatchFile) ...@@ -131,38 +131,36 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
} }
return status; return status;
//#else /* Other unices where clients do copy on demand for the parent's pages #else // Other Unices just use fork
// * when forked.
// */ pid = fork();
// if (pid==-1) return -1;
// pid = fork(); if (pid==0)
// if (pid==-1) return -1; {
// if (pid==0) char buf[4096];
// { strcpy(buf,command);
// char buf[4096]; strcat(buf," ");
// strcpy(buf,command); strcat(buf,args);
// strcat(buf," "); const char * argv[4];
// strcat(buf,args); argv[0] = "sh";
// const char * argv[4]; argv[1] = "-c";
// argv[0] = "sh"; argv[2] = buf;
// argv[1] = "-c"; argv[3] = 0;
// argv[2] = buf; execve("/bin/sh",(char * const *)argv,environ);
// argv[3] = 0; exit(127);
// execve("/bin/sh",(char * const *)argv,environ); }
// exit(127); for (;;)
// } {
// for (;;) if (waitpid(pid,&status,0)==-1)
// { {
// if (waitpid(pid,&status,0)==-1) if (errno!=EINTR) return -1;
// { }
// if (errno!=EINTR) return -1; else
// } {
// else return status;
// { }
// return status; }
// } #endif // _OS_SOLARIS
// }
//#endif
#else #else
if (isBatchFile) if (isBatchFile)
......
...@@ -510,10 +510,17 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -510,10 +510,17 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList(); ArgumentList *al = md->argumentList();
t << " const=\""; t << " const=\"";
if (al && al->constSpecifier) t << "yes"; else t << "no"; if (al && al->constSpecifier) t << "yes"; else t << "no";
t << "\" volatile=\""; t << "\"";
}
if (md->memberType() == MemberDef::Variable)
{
ArgumentList *al = md->argumentList();
t << " volatile=\"";
if (al && al->volatileSpecifier) t << "yes"; else t << "no"; if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t << "\""; t << "\"";
} }
t << ">" << endl; t << ">" << endl;
if (md->memberType()!=MemberDef::Define && if (md->memberType()!=MemberDef::Define &&
......
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