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

Release-1.4.5-20051227

parent ed2cf9f7
......@@ -6,7 +6,7 @@
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
CREATE_SUBDIRS = YES
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
......@@ -76,7 +76,6 @@ FILE_PATTERNS = *.h \
*.cpp
RECURSIVE = NO
EXCLUDE = src/code.cpp \
src/config.cpp \
src/ce_lex.cpp \
src/ce_parse.cpp \
src/declinfo.cpp \
......@@ -94,7 +93,9 @@ EXCLUDE = src/code.cpp \
src/commentcnv.cpp \
src/commentscan.cpp \
src/pycode.cpp \
src/pyscanner.cpp
src/config.cpp \
src/pyscanner.cpp \
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
......
DOXYGEN Version 1.4.5-20051127
DOXYGEN Version 1.4.5-20051227
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (27 November 2005)
Dimitri van Heesch (27 December 2005)
aix-g++
aix-xlc
beos-g++
dgux-g++
freebsd-g++
gnu-g++
hpux-acc
hpux-cc
hpux-g++
irix-64
irix-dcc
irix-g++
irix-n32
linux-g++
aix-g++
aix-xlc
beos-g++
dgux-g++
freebsd-g++
gnu-g++
hpux-acc
hpux-cc
hpux-g++
irix-64
irix-dcc
irix-g++
irix-n32
linux-g++
linux-64
macosx-c++
m68k-atari-mint-g++
netbsd-g++
openbsd-g++
osf1-cxx
osf1-g++
qnx-g++
sco-g++
solaris-cc
solaris-g++
sunos-g++
ultrix-g++
unixware-g++
netbsd-g++
openbsd-g++
osf1-cxx
osf1-g++
qnx-g++
sco-g++
solaris-cc
solaris-g++
sunos-g++
ultrix-g++
unixware-g++
win32-g++
DOXYGEN Version 1.4.5_20051127
DOXYGEN Version 1.4.5_20051227
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) (27 November 2005)
Dimitri van Heesch (dimitri@stack.nl) (27 December 2005)
......@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=5
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20051127
doxygen_version_mmn=20051227
bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......@@ -243,6 +243,7 @@ fi
#- check for qt --------------------------------------------------------------
LIBDIR=lib
if test "$f_wizard" = YES; then
if test -z "$QTDIR"; then
echo " QTDIR environment variable not set!"
......@@ -264,8 +265,11 @@ if test "$f_wizard" = YES; then
exit 2
else
if test ! -d "$QTDIR/lib"; then
echo "QTDIR is set to $QTDIR, but library directory $QTDIR/lib does not exist!"
exit 2
if test ! -d "$QTDIR/lib64"; then
echo "QTDIR is set to $QTDIR, but library directory $QTDIR/lib does not exist!"
exit 2
fi
LIBDIR=lib64
fi
if test ! -d "$QTDIR/include"; then
echo "QTDIR is set to $QTDIR, but include directory $QTDIR/include does not exist!"
......@@ -276,8 +280,8 @@ if test "$f_wizard" = YES; then
exit 2
fi
echo " headers $QTDIR/include,"
echo " libraries $QTDIR/lib"
if test -n "`ls $QTDIR/lib/* | grep qt-mt`"; then
echo " libraries $QTDIR/$LIBDIR"
if test -n "`ls $QTDIR/$LIBDIR/* | grep qt-mt`"; then
f_thread=YES
fi
fi
......@@ -571,7 +575,7 @@ done
# - generating src/lang_cfg.h
if test -e "src/lang_cfg.h"; then
if test -f "src/lang_cfg.h"; then
chmod u+w src/lang_cfg.h # make sure file can be overwritten
fi
echo -n " Generating src/lang_cfg.h..."
......
......@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.4.5), 31 languages
Currently (version 1.4.5-20051109), 31 languages
are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
......
......@@ -61,7 +61,7 @@ doxygen will try to read the configuration file from standard
input (<code>stdin</code>), which can be useful for scripting.
The configuration file has a format that is similar to that of a (simple)
Makefile. It contains of a number of assignments (tags) of the form:
Makefile. It consists of a number of assignments (tags) of the form:
<tt>TAGNAME = VALUE</tt> or <br>
<tt>TAGNAME = VALUE1 VALUE2 ... </tt><br>
......@@ -95,7 +95,7 @@ To omit all \c test directories from a source tree for instance, one could use:
\verbatim EXCLUDE_PATTERNS = */test/*
\endverbatim
Doxygen looking at the file's extension to determine how to parse a file.
Doxygen looks at the file's extension to determine how to parse a file.
If a file has an <code>.idl</code> or <code>.odl</code> extension it is
treated as an IDL file. If it has a <code>.java</code> extension it is
treated as a file written in Java. Files ending with <code>.cs</code> are
......@@ -162,7 +162,7 @@ supports DHTML and Javascript.
If you plan to use the search engine (see
\ref cfg_searchengine "SEARCHENGINE"), you should view the HTML output
via a PHP enable web server (e.g. apache with the PHP module installed).
via a PHP-enabled web server (e.g. apache with the PHP module installed).
\subsection latex_out LaTeX output
\addindex LaTeX
......@@ -229,7 +229,7 @@ capabilities of the man page format, so some information
\section step3 Step 3: Documenting the sources
Although documenting the source is presented as step 3, in a new project
Although documenting the sources is presented as step 3, in a new project
this should of course be step 1. Here I assume
you already have some code and you want doxygen to generate a nice document
describing the API and maybe the internals as well.
......
......@@ -585,6 +585,8 @@ class Transl:
prototype += ' ' + tokenStr
uniPrototype = tokenStr # start collecting the unified prototype
status = 4
elif tokenId == 'tilde':
status = 4
else:
self.__unexpectedToken(status, tokenId, tokenLineNo)
......
(1.4.5)
(1.4.5-20051109)
Doxygen supports the following 31 languages (sorted alphabetically):
......@@ -30,7 +30,7 @@ still may be some details listed even for them:
TranslatorHungarian
TranslatorIndonesian -- Remove the obsolete methods (never used).
TranslatorItalian
TranslatorJapanese -- Change the base class to Translator.
TranslatorJapanese -- Remove the obsolete methods (never used).
TranslatorKorean
TranslatorLithuanian
TranslatorPolish -- Remove the obsolete methods (never used).
......@@ -387,7 +387,7 @@ TranslatorIndonesian (Translator)
virtual QCString trNoDescriptionAvailable()
TranslatorJapanese (TranslatorAdapter_1_3_9)
TranslatorJapanese (Translator)
------------------
Implements 192 of the required methods.
......
......@@ -14,6 +14,7 @@ SET MODE=release
if "%2"=="debug" SET MODE=debug
REM use perl to create the config file
perl wintools\version.pl >VERSION
perl wintools\make.pl %CC%
type makeconfig > Makefile
......
......@@ -213,6 +213,7 @@ private:
class QM_EXPORT QXmlReader
{
public:
virtual ~QXmlReader() {}
virtual bool feature( const QString& name, bool *ok = 0 ) const = 0;
virtual void setFeature( const QString& name, bool value ) = 0;
virtual bool hasFeature( const QString& name ) const = 0;
......@@ -401,6 +402,7 @@ private:
class QM_EXPORT QXmlContentHandler
{
public:
virtual ~QXmlContentHandler() {}
virtual void setDocumentLocator( QXmlLocator* locator ) = 0;
virtual bool startDocument() = 0;
virtual bool endDocument() = 0;
......@@ -418,6 +420,7 @@ public:
class QM_EXPORT QXmlErrorHandler
{
public:
virtual ~QXmlErrorHandler() {}
virtual bool warning( const QXmlParseException& exception ) = 0;
virtual bool error( const QXmlParseException& exception ) = 0;
virtual bool fatalError( const QXmlParseException& exception ) = 0;
......@@ -427,6 +430,7 @@ public:
class QM_EXPORT QXmlDTDHandler
{
public:
virtual ~QXmlDTDHandler() {}
virtual bool notationDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
virtual bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName ) = 0;
virtual QString errorString() = 0;
......@@ -435,6 +439,7 @@ public:
class QM_EXPORT QXmlEntityResolver
{
public:
virtual ~QXmlEntityResolver() {}
virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret ) = 0;
virtual QString errorString() = 0;
};
......@@ -442,6 +447,7 @@ public:
class QM_EXPORT QXmlLexicalHandler
{
public:
virtual ~QXmlLexicalHandler() {}
virtual bool startDTD( const QString& name, const QString& publicId, const QString& systemId ) = 0;
virtual bool endDTD() = 0;
// virtual bool startEntity( const QString& name ) = 0;
......@@ -455,6 +461,7 @@ public:
class QM_EXPORT QXmlDeclHandler
{
public:
virtual ~QXmlDeclHandler() {}
virtual bool attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value ) = 0;
virtual bool internalEntityDecl( const QString& name, const QString& value ) = 0;
virtual bool externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
......
......@@ -98,6 +98,7 @@ static bool g_inFunctionTryBlock = FALSE;
static int g_lastSpecialCContext;
static int g_lastStringContext;
static int g_lastSkipCppContext;
static int g_lastVerbStringContext;
static int g_memCallContext;
static int g_lastCContext;
......@@ -105,6 +106,7 @@ static int g_lastCContext;
static bool g_insideObjC;
static bool g_insideProtocolList;
// context for an Objective-C method call
struct ObjCCallCtx
{
......@@ -881,19 +883,20 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
Definition *d = g_currentDefinition;
//printf("d=%p g_sourceFileDef=%p\n",d,g_currentDefinition);
cd = getResolvedClass(d,g_sourceFileDef,className,&md);
//printf("non-local variable name=%s context=%d cd=%s md=%s!\n",
//fprintf(stderr,"non-local variable name=%s context=%d cd=%s md=%s!\n",
// className.data(),g_theVarContext.count(),cd?cd->name().data():"<none>",
// md?md->name().data():"<none>");
if (cd==0 && md==0 && (i=className.find('<'))!=-1)
{
QCString bareName = stripTemplateSpecifiersFromScope(className);
QCString bareName = className.left(i); //stripTemplateSpecifiersFromScope(className);
//fprintf(stderr,"bareName=%s\n",bareName.data());
if (bareName!=className)
{
cd=getResolvedClass(d,g_sourceFileDef,bareName,&md); // try unspecialized version
}
}
//printf("md=%s\n",md?md->name().data():"<none>");
//printf("is found as a type %s\n",cd?cd->name().data():"<null>");
//fprintf(stderr,"is found as a type %s\n",cd?cd->name().data():"<null>");
if (cd==0 && md==0) // also see if it is variable or enum or enum value
{
if (getLink(g_classScope,clName,ol,clName))
......@@ -1756,6 +1759,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
<Body>^[ \t]*"#" {
startFontClass("preprocessor");
g_lastSkipCppContext = YY_START;
g_code->codify(yytext);
BEGIN( SkipCPP ) ;
}
......@@ -1768,7 +1772,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
<SkipCPP>\n/.*\n {
codifyLines(yytext);
endFontClass();
BEGIN( Body ) ;
BEGIN( g_lastSkipCppContext ) ;
}
<SkipCPP>"//" {
g_code->codify(yytext);
......@@ -2053,13 +2057,13 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
codifyLines(yytext);
endFontClass();
}
<Body>{KEYWORD}/{B}*"(" {
<Body>{KEYWORD}/{BN}*"(" {
startFontClass("keyword");
codifyLines(yytext);
endFontClass();
g_name.resize(0);g_type.resize(0);
}
<Body>{FLOWKW}/{B}*"(" {
<Body>{FLOWKW}/{BN}*"(" {
startFontClass("keywordflow");
codifyLines(yytext);
endFontClass();
......@@ -2125,7 +2129,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
generateClassOrGlobalLink(*g_code,yytext);
g_name+=yytext;
}
<Body>{SCOPENAME}/{B}*[;,)\]] { // "int var;" or "var, var2" or "debug(f) macro"
<Body>{SCOPENAME}/{BN}*[;,)\]] { // "int var;" or "var, var2" or "debug(f) macro"
addType();
generateClassOrGlobalLink(*g_code,yytext/*,TRUE*/);
g_name+=yytext;
......@@ -2143,7 +2147,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
addType();
g_name=varname;
}
<Body>{SCOPETNAME}/{B}*"(" { // a() or c::a() or t<A,B>::a()
<Body>{SCOPETNAME}/{BN}*"(" { // a() or c::a() or t<A,B>::a()
addType();
generateFunctionLink(*g_code,yytext);
//g_theVarContext.addVariable(g_type,yytext);
......@@ -2221,7 +2225,7 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_memCallContext = YY_START;
BEGIN( MemberCall );
}
<MemberCall>{SCOPETNAME}/{B}*"(" {
<MemberCall>{SCOPETNAME}/{BN}*"(" {
if (g_theCallContext.getClass())
{
if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),yytext))
......@@ -2463,11 +2467,15 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_code->codify(yytext);
endFontClass();
}
<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]*({B}*"<"[^\n\[\](){}<>]*">")? {
<MemberCall2,FuncCall>{ID}(({B}*"<"[^\n\[\](){}<>]*">")?({B}*"::"{B}*{ID})?)* {
addParmType();
g_parmName=yytext;
generateClassOrGlobalLink(*g_code,yytext,!g_insideBody);
}
<FuncCall>";" { // probably a cast, not a function call
g_code->codify(yytext);
BEGIN( Body );
}
<MemberCall2,FuncCall>, {
g_code->codify(yytext);
g_theVarContext.addVariable(g_parmType,g_parmName);
......@@ -2619,6 +2627,12 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
if (*yytext==';') g_parmType.resize(0);
g_parmName.resize(0);
}
<CallEnd,OldStyleArgs>"#" {
startFontClass("preprocessor");
g_lastSkipCppContext = Body;
g_code->codify(yytext);
BEGIN( SkipCPP );
}
<CallEnd>. {
unput(*yytext);
if (!g_insideBody)
......
......@@ -320,7 +320,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng);
BEGIN(CComment);
}
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{")/[^a-z_A-Z0-9] { /* start of a verbatim block */
<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{"[a-z]*)/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng);
if (yytext[2]=='[')
{
......
......@@ -698,8 +698,8 @@ static int yyread(char *buf,int max_size)
/* start command character */
CMD ("\\"|"@")
DCMD1 ("arg"|"attention"|"author"|"bug"|"code")
DCMD2 ("date"|"deprecated"|"dot"|"dotfile"|"example")
DCMD1 ("arg"|"attention"|"author"|"code")
DCMD2 ("date"|"dot"|"dotfile"|"example")
DCMD3 ("htmlinclude"|"htmlonly"|"image"|"include")
DCMD4 ("includelineno"|"internal"|"invariant")
DCMD5 ("latexonly"|"li"|"line"|"manonly"|"name")
......@@ -707,9 +707,10 @@ DCMD6 ("note"|"par"|"paragraph"|"param"|"post")
DCMD7 ("pre"|"remarks"|(("relate"[sd])("also")?))
DCMD8 ("remarks"|("return"[s]?)|"retval"|"sa"|"section")
DCMD9 ("see"|"since"|"subsection"|"subsubsection")
DCMD10 ("test"|"throw"|"todo"|"until"|"verbatim")
DCMD11 ("verbinclude"|"version"|"warning"|"xrefitem")
DCMD10 ("throw"|"until"|"verbatim")
DCMD11 ("verbinclude"|"version"|"warning")
DETAILEDCMD {CMD}({DCMD1}|{DCMD2}|{DCMD3}|{DCMD4}|{DCMD5}|{DCMD6}|{DCMD7}|{DCMD8}|{DCMD9}|{DCMD10}|{DCMD11})
XREFCMD {CMD}("bug"|"deprecated"|"test"|"todo"|"xrefitem")
PRE [pP][rR][eE]
TABLE [tT][aA][bB][lL][eE]
P [pP]
......@@ -810,7 +811,7 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
<Comment>("\\"[a-z_A-Z]+)+"\\" { // directory (or chain of commands!)
addOutput(yytext);
}
<Comment>{DETAILEDCMD}/[^a-z_A-Z]* { // command that can end a brief description
<Comment>{XREFCMD}/[^a-z_A-Z]* { // command that can end a brief description
if (inContext!=OutputXRef)
{
briefEndsAtDot=FALSE;
......@@ -819,6 +820,12 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
// continue with the same input
REJECT;
}
<Comment>{DETAILEDCMD}/[^a-z_A-Z]* { // command that can end a brief description
briefEndsAtDot=FALSE;
setOutput(OutputDoc);
// continue with the same input
REJECT;
}
<Comment>"<"{DETAILEDHTML}{ATTR}">" { // HTML command that ends a brief description
setOutput(OutputDoc);
// continue with the same input
......
......@@ -122,6 +122,7 @@
<xsd:element name="name" />
<xsd:element name="read" minOccurs="0" />
<xsd:element name="write" minOccurs="0" />
<xsd:element name="bitfield" minOccurs="0" />
<xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
......
......@@ -122,6 +122,7 @@
" <xsd:element name=\"name\" />\n"
" <xsd:element name=\"read\" minOccurs=\"0\" />\n"
" <xsd:element name=\"write\" minOccurs=\"0\" />\n"
" <xsd:element name=\"bitfield\" minOccurs=\"0\" />\n"
" <xsd:element name=\"reimplements\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"reimplementedby\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"param\" type=\"paramType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
......
......@@ -868,9 +868,13 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
QString name = linkToText(g_token->name,TRUE);
int len = g_token->name.length();
ClassDef *cd=0;
//printf("handleLinkedWord(%s)\n",name.data());
//printf("handleLinkedWord(%s) g_context=%s\n",name.data(),g_context.data());
if (!g_insideHtmlLink &&
resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member))
(resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member)
|| (!g_context.isEmpty() && // also try with global scope
resolveRef("",g_token->name,g_inSeeBlock,&compound,&member))
)
)
{
//printf("resolveRef %s = %p (linkable?=%d)\n",g_token->name.data(),member,member ? member->isLinkable() : FALSE);
if (member && member->isLinkable()) // member link
......@@ -2144,12 +2148,9 @@ QString DocLink::parse(bool isJavaLink)
}
endlink:
if (isJavaLink)
if (m_children.isEmpty()) // no link text
{
if (m_children.isEmpty()) // no link text
{
m_children.append(new DocWord(this,m_refText));
}
m_children.append(new DocWord(this,m_refText));
}
handlePendingStyleCommands(this,m_children);
......@@ -5551,7 +5552,13 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
}
else if (ctx && ctx->definitionType()==Definition::TypePage)
{
g_context = ctx->getOuterScope()->name();
Definition *scope = ((PageDef*)ctx)->getPageScope();
if (scope) g_context = scope->name();
}
else if (ctx && ctx->definitionType()==Definition::TypeGroup)
{
Definition *scope = ((GroupDef*)ctx)->getGroupScope();
if (scope) g_context = scope->name();
}
else
{
......
This diff is collapsed.
......@@ -1243,7 +1243,7 @@ void FileDef::acquireFileVersion()
if (!vercmd.isEmpty())
{
msg("Version of %s : ",filepath.data());
FILE *f=popen("\""+vercmd+"\" \""+filepath+"\"","r");
FILE *f=popen(vercmd+" \""+filepath+"\"","r");
if (!f)
{
err("Error: could not execute %s\n",vercmd.data());
......
......@@ -89,6 +89,9 @@ class GroupDef : public Definition
friend void writeGroupTreeNode(OutputList&, GroupDef*, int);
// make accessible for writing tree view of group in index.cpp - KPW
void setGroupScope(Definition *d) { groupScope = d; }
Definition *getGroupScope() const { return groupScope; }
// members in the declaration part of the documentation
MemberList decDefineMembers;
MemberList decProtoMembers;
......@@ -135,6 +138,7 @@ class GroupDef : public Definition
MemberList *allMemberList;
MemberNameInfoSDict *allMemberNameInfoSDict;
Definition *groupScope;
};
......
......@@ -1788,7 +1788,9 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
//-------------------------------------------------------------------------
// write sub indices
if ((hli==HLI_Namespaces || hli==HLI_NamespaceMembers || hli==HLI_NamespaceVisible) &&
if ((hli==HLI_Namespaces || hli==HLI_NamespaceMembers ||
hli==HLI_NamespaceVisible
) &&
documentedNamespaces>0 &&
documentedNamespaceMembers[NMHL_All]>0)
{
......
......@@ -3277,7 +3277,10 @@ void writeIndex(OutputList &ol)
ol.parseDoc(defFileName,defLine,Doxygen::mainPage,0,Config_getString("PROJECT_NUMBER"),TRUE,FALSE);
ol.endProjectNumber();
}
if (Config_getBool("DISABLE_INDEX") && Doxygen::mainPage==0) ol.writeQuickLinks(FALSE,HLI_Main);
if (Config_getBool("DISABLE_INDEX") && Doxygen::mainPage==0)
{
ol.writeQuickLinks(FALSE,HLI_Main);
}
if (Doxygen::mainPage)
{
......
......@@ -525,7 +525,7 @@ Definition *NamespaceDef::findInnerCompound(const char *n)
}
if (d==0 && usingDeclList)
{
d = usingDirList->find(n);
d = usingDeclList->find(n);
}
}
return d;
......
......@@ -14,6 +14,7 @@ PageDef::PageDef(const char *f,int l,const char *n,
{
setDocumentation(d,f,l);
subPageDict = new PageSDict(7);
pageScope = 0;
}
PageDef::~PageDef()
......
......@@ -49,12 +49,15 @@ class PageDef : public Definition
bool visibleInIndex() const;
bool documentedPage() const;
bool hasSubPages() const;
void setPageScope(Definition *d){ pageScope = d; }
Definition *getPageScope() const { return pageScope; }
private:
QCString m_fileName;
QCString m_title;
GroupDef *m_inGroup;
PageSDict *subPageDict; // list of pages in the group
Definition *pageScope;
};
class PageSDict : public SDict<PageDef>
......
......@@ -34,6 +34,7 @@ class MemberDef;
class ParserInterface
{
public:
virtual ~ParserInterface() {}
/** Parses a single input file with the goal to build an Entry tree.
* @param[in] fileName The full name of the file.
* @param[in] fileBuf The contents of the file (zero terminated).
......@@ -113,7 +114,7 @@ class ParserManager
* a given input file.
*/
ParserManager(ParserInterface *defaultParser)
: m_defaultParser(defaultParser) {}
: m_defaultParser(defaultParser) { m_parsers.setAutoDelete(TRUE); }
/** Registers an additional parser.
* @param[in] extension The file extension that will trigger
......
......@@ -1839,11 +1839,16 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('/');outputChar('*');
//g_commentCount++;
}
<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f{"|"f$"|"f["){BN}+ {
<SkipCComment>[\\@][\\@]("f{"|"f$"|"f[") {
outputArray(yytext,yyleng);
}
<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ {
outputArray(yytext,yyleng);
g_yyLineNr+=QCString(yytext).contains('\n');
}
<SkipCComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ {
outputArray(yytext,yyleng);
g_yyLineNr+=QCString(yytext).contains('\n');
if (yytext[1]=='f')
{
g_blockName="f";
......
......@@ -34,6 +34,7 @@
class PythonLanguageScanner : public ParserInterface
{
public:
virtual ~PythonLanguageScanner() {}
void parseInput(const char * fileName,
const char *fileBuf,
Entry *root);
......
......@@ -29,6 +29,7 @@
class CLanguageScanner : public ParserInterface
{
public:
virtual ~CLanguageScanner() {}
void parseInput(const char *fileName,
const char *fileBuf,
Entry *root);
......
......@@ -374,7 +374,7 @@ static void prependScope()
static bool checkForKnRstyleC()
{
if (((QCString)yyFileName).right(2).lower()!=".c") return FALSE; // must be a C file
if (!current->argList) return FALSE;
if (!current->argList) return FALSE; // must have arguments
ArgumentListIterator ali(*current->argList);
Argument *a;
for (ali.toFirst();(a=ali.current());++ali)
......@@ -2447,15 +2447,14 @@ IDLATTR ("["[^\]]*"]"){BN}*
lineCount();
int i=0,l=yyleng,j;
while (i<l && (!isId(yytext[i]))) i++;
msName = yytext;
msName = msName.right(msName.length()-i);
msName = QCString(yytext).right(l-i).stripWhiteSpace();
j=msName.find("[");
if (j!=-1)
{
msArgs=msName.right(msName.length()-j);
msName=msName.left(j);
}
msType = yytext; msType=msType.left(i);
msType=QCString(yytext).left(i);
// handle *pName in: typedef { ... } name, *pName;
if (firstTypedefEntry)
......@@ -2505,7 +2504,8 @@ IDLATTR ("["[^\]]*"]"){BN}*
p=p->parent;
}
}
if (!msName.isEmpty())
//printf("msName=%s current->name=%s\n",msName.data(),current->name.data());
if (!msName.isEmpty() && msName!=current->name) // skip typedef T {} T;
{
Entry *varEntry=new Entry;
varEntry->protection = current->protection ;
......@@ -3243,7 +3243,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
else // a global function prototype or function variable
{
static QRegExp re("([^)]*)");
static QRegExp re("([^)]*\\*[^)]*)"); // (...*...)
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
if (!current->type.isEmpty() &&
(current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
......@@ -3356,6 +3356,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
}
<SkipCurly>"}"{BN}*("/*!"|"/**"|"//!"|"///")"<" {
lineCount();
if ( curlyCount )
{
//addToBody(yytext);
......@@ -3364,7 +3365,6 @@ IDLATTR ("["[^\]]*"]"){BN}*
else
{
current->endBodyLine=yyLineNr;
lineCount();
tempEntry = current; // temporarily switch to the previous entry
current = previous;
......@@ -4310,7 +4310,7 @@ static void newEntry()
static void handleCommentBlock(const QCString &doc,bool brief)
{
int position=0;
bool needsEntry;
bool needsEntry=FALSE;
if (docBlockInBody)
{
if (previous==0)
......
......@@ -23,6 +23,7 @@
#include "util.h"
#include "config.h"
class Translator
{
private:
......@@ -438,6 +439,8 @@ class Translator
//////////////////////////////////////////////////////////////////////////
virtual QCString trOverloadText() = 0;
virtual ~Translator() {}
};
......
This diff is collapsed.
......@@ -28,6 +28,8 @@
#include <ctype.h>
#include "sortdict.h"
//--------------------------------------------------------------------
class ClassDef;
class FileDef;
class MemberList;
......@@ -81,6 +83,19 @@ class TextGeneratorOLImpl : public TextGeneratorIntf
//--------------------------------------------------------------------
enum SrcLangExt
{
SrcLangExt_IDL = 0x008,
SrcLangExt_Java = 0x010,
SrcLangExt_CSharp = 0x020,
SrcLangExt_D = 0x040,
SrcLangExt_PHP = 0x080,
SrcLangExt_ObjC = 0x100,
SrcLangExt_Cpp = 0x200,
};
//--------------------------------------------------------------------
void linkifyText(const TextGeneratorIntf &ol,
Definition *scope,
FileDef *fileScope,
......@@ -90,9 +105,13 @@ void linkifyText(const TextGeneratorIntf &ol,
bool external=TRUE,
bool keepSpaces=FALSE
);
void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1);
QCString fileToString(const char *name,bool filter=FALSE);
QCString dateToString(bool);
bool getDefs(const QCString &scopeName,
const QCString &memberName,
const char *,
......@@ -124,28 +143,30 @@ bool resolveLink(/* in */ const char *scName,
bool generateRef(OutputDocInterface &od,const char *,
const char *,bool inSeeBlock,const char * =0);
bool generateLink(OutputDocInterface &od,const char *,
const char *,bool inSeeBlock,const char *);
void generateFileRef(OutputDocInterface &od,const char *,
const char *linkTxt=0);
void writePageRef(OutputDocInterface &od,const char *cn,const char *mn);
#if 0
bool matchArguments(ArgumentList *,ArgumentList *,
const char *cl=0,const char *ns=0,bool checkCV=TRUE,
NamespaceSDict *usingNamespaces=0,
SDict<Definition> *usingClasses=0);
#endif
bool matchArguments2(Definition *srcScope,FileDef *srcFileScope,ArgumentList *srcAl,
Definition *dstScope,FileDef *dstFileScope,ArgumentList *dstAl,
bool checkCV
);
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);
ClassDef *getClass(const char *key);
ClassDef *getResolvedClass(Definition *scope,
FileDef *fileScope,
const char *key,
......@@ -153,61 +174,102 @@ ClassDef *getResolvedClass(Definition *scope,
QCString *pTemplSpec=0,
bool mayBeUnlinkable=FALSE,
bool mayBeHidden=FALSE);
NamespaceDef *getResolvedNamespace(const char *key);
FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
bool &ambig);
QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
int guessSection(const char *name);
bool isId(char c);
QCString removeRedundantWhiteSpace(const QCString &s);
QCString argListToString(ArgumentList *al,bool useCanonicalType=FALSE);
QCString tempArgListToString(ArgumentList *al);
QCString generateMarker(int id);
void writeExample(OutputList &ol,ExampleSDict *el);
QCString stripAnonymousNamespaceScope(const QCString &s);
QCString stripFromPath(const QCString &path);
QCString stripFromIncludePath(const QCString &path);
bool rightScopeMatch(const QCString &scope, const QCString &name);
bool leftScopeMatch(const QCString &scope, const QCString &name);
QCString substituteKeywords(const QCString &s,const char *title,const QCString &relPath="");
int getPrefixIndex(const QCString &name);
QCString removeAnonymousScopes(const QCString &s);
QCString replaceAnonymousScopes(const QCString &s);
void initClassHierarchy(ClassSDict *cl);
bool hasVisibleRoot(BaseClassList *bcl);
int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0);
QCString convertNameToFile(const char *name,bool allowDots=FALSE);
void extractNamespaceName(const QCString &scopeName,
QCString &className,QCString &namespaceName,
bool allowEmptyClass=FALSE);
QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &templ);
QCString stripScope(const char *name);
int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s);
QCString convertToXML(const char *s);
QCString getOverloadDocs();
void addMembersToMemberGroup(MemberList *ml,
MemberGroupSDict *memberGroupSDict,
Definition *context);
int extractClassNameFromType(const QCString &type,int &pos,
QCString &name,QCString &templSpec);
QCString substituteTemplateArgumentsInString(
const QCString &name,
ArgumentList *formalArgs,
ArgumentList *actualArgs);
ArgumentList *copyArgumentList(const ArgumentList *src);
QList<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *srcLists);
QCString stripTemplateSpecifiersFromScope(const QCString &fullName,
bool parentOnly=TRUE,
QCString *lastScopeStripped=0);
QCString resolveTypeDef(Definition *d,const QCString &name,
Definition **typedefContext=0);
QCString mergeScopes(const QCString &leftScope,const QCString &rightScope);
int getScopeFragment(const QCString &s,int p,int *l);
int filterCRLF(char *buf,int len);
void addRefItem(const QList<ListItemInfo> *sli,const char *prefix,
const char *name,const char *title,const char *args=0);
PageDef *addRelatedPage(const char *name,const QCString &ptitle,
const QCString &doc,QList<SectionInfo> *anchors,
const char *fileName,int startLine,
......@@ -215,44 +277,53 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
GroupDef *gd=0,
TagInfo *tagInfo=0
);
QCString escapeCharsInString(const char *name,bool allowDots);
void addGroupListToTitle(OutputList &ol,Definition *d);
void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing=FALSE,bool insidePre=FALSE,
bool insideItem=FALSE);
QCString rtfFormatBmkStr(const char *name);
QCString linkToText(const char *link,bool isFileName);
QCString stripExtension(const char *fName);
void replaceNamespaceAliases(QCString &scope,int i);
int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item);
int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item,
const QCString &explicitScopePart);
int computeQualifiedIndex(const QCString &name);
void addDirPrefix(QCString &fileName);
QCString relativePathToRoot(const char *name);
#define REL_PATH_TO_ROOT "../../"
void createSubDirs(QDir &d);
QCString stripPath(const char *s);
bool containsWord(const QCString &s,const QCString &word);
bool findAndRemoveWord(QCString &s,const QCString &word);
QCString stripLeadingAndTrailingEmptyLines(const QCString &s);
void stringToSearchIndex(const QCString &docUrlBase,const QCString &title,
const QCString &str, bool priority=FALSE,
const QCString &anchor="");
enum SrcLangExt
{
SrcLangExt_IDL = 0x008,
SrcLangExt_Java = 0x010,
SrcLangExt_CSharp = 0x020,
SrcLangExt_D = 0x040,
SrcLangExt_PHP = 0x080,
SrcLangExt_ObjC = 0x100,
SrcLangExt_Cpp = 0x200,
};
SrcLangExt getLanguageFromFileName(const QCString fileName);
bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n);
#endif
......@@ -605,6 +605,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " mutable=\"";
if (md->isMutable()) t << "yes"; else t << "no";
t << "\"";
}
else if (md->memberType() == MemberDef::Property)
{
......@@ -646,6 +647,12 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (md->isWritable())
t << " <write>" << convertToXML(md->getWriteAccessor()) << "</write>" << endl;
}
if (md->memberType()==MemberDef::Variable && md->bitfieldString())
{
QCString bitfield = md->bitfieldString();
if (bitfield.at(0)==':') bitfield=bitfield.mid(1);
t << " <bitfield>" << bitfield << "</bitfield>" << endl;
}
MemberDef *rmd = md->reimplements();
if (rmd)
......
#! Use the common Unix template
#$ IncludeTemplate("../unix/app.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/lib.t");
#! Use the common Unix template
#$ IncludeTemplate("../unix/subdirs.t");
#
#
#
# tmake configuration for linux-g++
#
TEMPLATE = app
CONFIG = qt warn_on release
TMAKE_CC = gcc
TMAKE_CFLAGS = -pipe
TMAKE_CFLAGS_WARN_ON = -Wall -W -fno-exceptions
TMAKE_CFLAGS_WARN_OFF =
TMAKE_CFLAGS_RELEASE = -O2
TMAKE_CFLAGS_DEBUG = -g
TMAKE_CFLAGS_SHLIB = -fPIC
TMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
TMAKE_CXX = g++
TMAKE_CXXFLAGS = $$TMAKE_CFLAGS
TMAKE_CXXFLAGS_WARN_ON = $$TMAKE_CFLAGS_WARN_ON
TMAKE_CXXFLAGS_WARN_OFF = $$TMAKE_CFLAGS_WARN_OFF
TMAKE_CXXFLAGS_RELEASE = $$TMAKE_CFLAGS_RELEASE
TMAKE_CXXFLAGS_DEBUG = $$TMAKE_CFLAGS_DEBUG
TMAKE_CXXFLAGS_SHLIB = $$TMAKE_CFLAGS_SHLIB
TMAKE_CXXFLAGS_YACC = $$TMAKE_CFLAGS_YACC
TMAKE_INCDIR =
TMAKE_LIBDIR =
TMAKE_INCDIR_X11 = /usr/X11R6/include
TMAKE_LIBDIR_X11 = /usr/X11R6/lib64
TMAKE_INCDIR_QT = $(QTDIR)/include
TMAKE_LIBDIR_QT = $(QTDIR)/lib64
TMAKE_INCDIR_OPENGL = /usr/X11R6/include
TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64
TMAKE_LINK = g++
TMAKE_LINK_SHLIB = g++
TMAKE_LFLAGS =
TMAKE_LFLAGS_RELEASE =
TMAKE_LFLAGS_DEBUG = -g
TMAKE_LFLAGS_SHLIB = -shared
TMAKE_LFLAGS_SONAME = -Wl,-soname,
TMAKE_LIBS =
TMAKE_LIBS_X11 = -lXext -lX11 -lm
TMAKE_LIBS_X11SM = -lICE -lSM
TMAKE_LIBS_QT = -lqt
TMAKE_LIBS_QT_MT = -lqt-mt
TMAKE_LIBS_QT_OPENGL = -lqgl
TMAKE_LIBS_OPENGL = -lMesaGL -lMesaGLU -lXmu
TMAKE_MOC = moc
TMAKE_AR = ar cqs
TMAKE_RANLIB =
TMAKE_TAR = tar -cf
TMAKE_GZIP = gzip -9f
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