Commit 3c814844 authored by dimitri's avatar dimitri

Release-1.4.7-20061004

parent c844985a
DOXYGEN Version 1.4.7-20060910 DOXYGEN Version 1.4.7-20061004
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 (10 September 2006) Dimitri van Heesch (04 October 2006)
...@@ -84,7 +84,7 @@ pdf: docs ...@@ -84,7 +84,7 @@ pdf: docs
DISTFILES = Doxyfile libpng libmd5 addon tmake doc wintools examples bin lib objects \ DISTFILES = Doxyfile libpng libmd5 addon tmake doc wintools examples bin lib objects \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \ qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \ Makefile.win_make.in INSTALL make.bat LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION packages VERSION packages winbuild
archive: clean archive: clean
tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES) tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES)
......
DOXYGEN Version 1.4.7_20060910 DOXYGEN Version 1.4.7_20061004
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) (10 September 2006) Dimitri van Heesch (dimitri@stack.nl) (04 October 2006)
...@@ -20,7 +20,7 @@ doxygen_version_minor=4 ...@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=7 doxygen_version_revision=7
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20060910 doxygen_version_mmn=20061004
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -37,8 +37,9 @@ ...@@ -37,8 +37,9 @@
\section linkclass Links to classes. \section linkclass Links to classes.
All words in the documentation that correspond to a documented class All words in the documentation that correspond to a documented class and
will automatically be replaced by a link to the page containing the contain at least one upper case character will automatically be replaced by
a link to the page containing the
documentation of the class. If you want to prevent that a word documentation of the class. If you want to prevent that a word
that corresponds to a documented class is replaced by a link you that corresponds to a documented class is replaced by a link you
should put a \% in front of the word. should put a \% in front of the word.
...@@ -59,17 +60,23 @@ ...@@ -59,17 +60,23 @@
<li><tt>\<functionName\>"()"</tt> <li><tt>\<functionName\>"()"</tt>
<li><tt>"::"\<functionName\></tt> <li><tt>"::"\<functionName\></tt>
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"("\<argument-list\>")"</tt> <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"("\<argument-list\>")"</tt>
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"("\<argument-list\>")"\<modifiers\></tt>
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"()"</tt> <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\>"()"</tt>
<li><tt>(\<className\>"::")<sup>n</sup>\<functionName\></tt> <li><tt>(\<className\>"::")<sup>n</sup>\<functionName\></tt>
</ol> </ol>
where n\>0. where n\>0.
\par Note 1: \par Note 1:
The patterns above should not contain spaces, tabs or newlines. Function arguments should be specified with correct types, i.e.
\par Note 2: 'fun(const std::string&,bool)' or '()' to match any prototype.
\par Note 2:
Member function modifiers (like 'const' and 'volatile')
are required to identify the target, i.e. 'func(int) const' and 'fun(int)'
target different member functions.
\par Note 3:
For JavaDoc compatibility a \# may be used instead of a :: in For JavaDoc compatibility a \# may be used instead of a :: in
the patterns above. the patterns above.
\par Note 3: \par Note 4:
In the documentation of a class containing a member foo, In the documentation of a class containing a member foo,
a reference to a global variable is made using ::foo, whereas \#foo a reference to a global variable is made using ::foo, whereas \#foo
will link to the member. will link to the member.
......
...@@ -102,7 +102,7 @@ when the translator was updated. ...@@ -102,7 +102,7 @@ when the translator was updated.
<td>Danish</td> <td>Danish</td>
<td>Erik S&oslash;e S&oslash;rensen</td> <td>Erik S&oslash;e S&oslash;rensen</td>
<td>eriksoe+doxygen at daimi dot au dot dk</td> <td>eriksoe+doxygen at daimi dot au dot dk</td>
<td>1.3.9</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Dutch</td> <td>Dutch</td>
...@@ -162,7 +162,7 @@ when the translator was updated. ...@@ -162,7 +162,7 @@ when the translator was updated.
<td>Japanese</td> <td>Japanese</td>
<td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td> <td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td>
<td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td> <td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td>
<td>1.4.6</td> <td>up-to-date</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>JapaneseEn</td> <td>JapaneseEn</td>
...@@ -294,7 +294,7 @@ when the translator was updated. ...@@ -294,7 +294,7 @@ when the translator was updated.
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\ Czech & Petr P\v{r}ikryl & {\tt\tiny prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & up-to-date \\
\hline \hline
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\ Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline \hline
...@@ -316,7 +316,7 @@ when the translator was updated. ...@@ -316,7 +316,7 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\ ~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
\hline \hline
Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.4.6 \\ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & up-to-date \\
~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\ ~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\
~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\ ~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
\hline \hline
......
...@@ -8,7 +8,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean ...@@ -8,7 +8,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
(+En), Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian, (+En), Lithuanian, Norwegian, Persian, Polish, Portuguese, Romanian,
Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Of them, 10 translators are up-to-date, 23 translators are based on Of them, 12 translators are up-to-date, 21 translators are based on
some adapter class, and 2 are English based. some adapter class, and 2 are English based.
---------------------------------------------------------------------- ----------------------------------------------------------------------
...@@ -22,10 +22,12 @@ still may be some details listed even for them: ...@@ -22,10 +22,12 @@ still may be some details listed even for them:
TranslatorChinese TranslatorChinese
TranslatorCroatian TranslatorCroatian
TranslatorCzech TranslatorCzech
TranslatorDanish -- Change the base class to Translator.
TranslatorDutch -- Remove the obsolete methods (never used). TranslatorDutch -- Remove the obsolete methods (never used).
TranslatorEnglish -- Remove the obsolete methods (never used). TranslatorEnglish -- Remove the obsolete methods (never used).
TranslatorGerman TranslatorGerman
TranslatorItalian -- Change the base class to Translator. TranslatorItalian -- Change the base class to Translator.
TranslatorJapanese -- Remove the obsolete methods (never used).
TranslatorRussian TranslatorRussian
---------------------------------------------------------------------- ----------------------------------------------------------------------
...@@ -42,7 +44,6 @@ must be implemented to become up-to-date: ...@@ -42,7 +44,6 @@ must be implemented to become up-to-date:
TranslatorNorwegian 1.4.6 1 method to implement TranslatorNorwegian 1.4.6 1 method to implement
TranslatorLithuanian 1.4.6 2 methods to implement TranslatorLithuanian 1.4.6 2 methods to implement
TranslatorKorean 1.4.6 2 methods to implement TranslatorKorean 1.4.6 2 methods to implement
TranslatorJapanese 1.4.6 1 method to implement
TranslatorIndonesian 1.4.6 1 method to implement TranslatorIndonesian 1.4.6 1 method to implement
TranslatorHungarian 1.4.6 2 methods to implement TranslatorHungarian 1.4.6 2 methods to implement
TranslatorFrench 1.4.6 1 method to implement TranslatorFrench 1.4.6 1 method to implement
...@@ -52,7 +53,6 @@ must be implemented to become up-to-date: ...@@ -52,7 +53,6 @@ must be implemented to become up-to-date:
TranslatorUkrainian 1.4.1 2 methods to implement TranslatorUkrainian 1.4.1 2 methods to implement
TranslatorSerbian 1.4.1 2 methods to implement TranslatorSerbian 1.4.1 2 methods to implement
TranslatorRomanian 1.4.1 2 methods to implement TranslatorRomanian 1.4.1 2 methods to implement
TranslatorDanish 1.3.9 8 methods to implement
TranslatorPortuguese 1.3.3 13 methods to implement TranslatorPortuguese 1.3.3 13 methods to implement
TranslatorSlovak 1.2.18 22 methods to implement TranslatorSlovak 1.2.18 22 methods to implement
TranslatorGreek 1.2.11 27 methods to implement TranslatorGreek 1.2.11 27 methods to implement
...@@ -145,21 +145,10 @@ TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement ...@@ -145,21 +145,10 @@ TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
TranslatorDanish (TranslatorAdapter_1_3_9) 8 methods to implement TranslatorDanish (TranslatorAdapter_1_3_9)
---------------- ----------------
Implements 186 of the required methods. Implements 194 of the required methods.
Missing methods (should be implemented):
virtual QCString trOverloadText()
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trCallerGraph()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
Obsolete methods (should be removed, never used): Obsolete methods (should be removed, never used):
...@@ -435,14 +424,10 @@ TranslatorItalian (TranslatorAdapter_1_4_6) ...@@ -435,14 +424,10 @@ TranslatorItalian (TranslatorAdapter_1_4_6)
Implements 194 of the required methods. Implements 194 of the required methods.
TranslatorJapanese (TranslatorAdapter_1_4_6) 1 method to implement TranslatorJapanese (Translator)
------------------ ------------------
Implements 193 of the required methods. Implements 194 of the required methods.
Missing methods (should be implemented):
virtual QCString trCallerGraph()
Obsolete methods (should be removed, never used): Obsolete methods (should be removed, never used):
......
...@@ -262,6 +262,19 @@ ...@@ -262,6 +262,19 @@
#error "Qt has not been tested with this compiler - talk to qt-bugs@trolltech.com" #error "Qt has not been tested with this compiler - talk to qt-bugs@trolltech.com"
#endif #endif
// detect Microsoft compiler version
#ifdef _CC_MSVC_
#if _MSC_VER >= 1400
#define _CC_V2005
#elif _MSC_VER >= 1310
#define _CC_V2003
#elif _MSC_VER > 1300
#define _CC_V2002
#else
#define _CC_V1998
#endif
#endif
#ifndef Q_PACKED #ifndef Q_PACKED
#define Q_PACKED #define Q_PACKED
#endif #endif
......
...@@ -168,6 +168,8 @@ class ClassDefImpl ...@@ -168,6 +168,8 @@ class ClassDefImpl
* groups? * groups?
*/ */
bool subGrouping; bool subGrouping;
bool usedOnly;
}; };
void ClassDefImpl::init(const char *defFileName, const char *name, void ClassDefImpl::init(const char *defFileName, const char *name,
...@@ -206,6 +208,7 @@ void ClassDefImpl::init(const char *defFileName, const char *name, ...@@ -206,6 +208,7 @@ void ClassDefImpl::init(const char *defFileName, const char *name,
isTemplArg = FALSE; isTemplArg = FALSE;
membersMerged = FALSE; membersMerged = FALSE;
categoryOf = 0; categoryOf = 0;
usedOnly = FALSE;
QCString ns; QCString ns;
extractNamespaceName(name,className,ns); extractNamespaceName(name,className,ns);
//printf("m_name=%s m_className=%s ns=%s\n",m_name.data(),m_className.data(),ns.data()); //printf("m_name=%s m_className=%s ns=%s\n",m_name.data(),m_className.data(),ns.data());
...@@ -258,78 +261,11 @@ ClassDef::ClassDef( ...@@ -258,78 +261,11 @@ ClassDef::ClassDef(
m_impl->isObjC = FALSE; m_impl->isObjC = FALSE;
m_impl->init(defFileName,name(),compoundTypeString(),fName); m_impl->init(defFileName,name(),compoundTypeString(),fName);
#if 0
m_compType=ct;
m_isObjC = FALSE;
QCString compoundName=compoundTypeString();
if (fName)
{
m_fileName=stripExtension(fName);
}
else
{
m_fileName=compoundName+name();
}
m_exampleSDict = 0;
m_inherits = 0;
m_inheritedBy = 0;
m_allMemberNameInfoSDict = 0;
m_incInfo=0;
m_tempArgs=0;
m_prot=Public;
m_nspace=0;
m_fileDef=0;
m_usesImplClassDict=0;
m_usedByImplClassDict=0;
m_usesIntfClassDict=0;
memberGroupSDict = 0;
m_innerClasses = 0;
m_subGrouping=Config_getBool("SUBGROUPING");
m_templateInstances = 0;
m_variableInstances = 0;
m_templateMaster =0;
m_templBaseClassNames = 0;
m_artificial = FALSE;
m_isAbstract = FALSE;
m_isStatic = FALSE;
m_isTemplArg = FALSE;
m_membersMerged = FALSE;
m_categoryOf = 0;
QCString ns;
extractNamespaceName(name(),m_className,ns);
//printf("m_name=%s m_className=%s ns=%s\n",m_name.data(),m_className.data(),ns.data());
if (((QCString)defFileName).right(5)!=".java" &&
guessSection(defFileName)==Entry::SOURCE_SEC)
{
m_isLocal=TRUE;
}
else
{
m_isLocal=FALSE;
}
#endif
} }
// destroy the class definition // destroy the class definition
ClassDef::~ClassDef() ClassDef::~ClassDef()
{ {
#if 0
delete m_inherits;
delete m_inheritedBy;
delete m_allMemberNameInfoSDict;
delete m_exampleSDict;
delete m_usesImplClassDict;
delete m_usedByImplClassDict;
delete m_usesIntfClassDict;
delete m_incInfo;
delete memberGroupSDict;
delete m_innerClasses;
delete m_templateInstances;
delete m_variableInstances;
delete m_templBaseClassNames;
delete m_tempArgs;
#endif
delete m_impl; delete m_impl;
} }
...@@ -3080,6 +3016,11 @@ MemberDef *ClassDef::getMemberByName(const QCString &name) const ...@@ -3080,6 +3016,11 @@ MemberDef *ClassDef::getMemberByName(const QCString &name) const
return xmd; return xmd;
} }
bool ClassDef::isAccessibleMember(MemberDef *md)
{
return md->getClassDef() && isBaseClass(md->getClassDef(),TRUE);
}
MemberList *ClassDef::createMemberList(MemberList::ListType lt) MemberList *ClassDef::createMemberList(MemberList::ListType lt)
{ {
m_impl->memberLists.setAutoDelete(TRUE); m_impl->memberLists.setAutoDelete(TRUE);
...@@ -3321,3 +3262,13 @@ void ClassDef::setCategoryOf(ClassDef *cd) ...@@ -3321,3 +3262,13 @@ void ClassDef::setCategoryOf(ClassDef *cd)
m_impl->categoryOf = cd; m_impl->categoryOf = cd;
} }
void ClassDef::setUsedOnly(bool b)
{
m_impl->usedOnly = b;
}
bool ClassDef::isUsedOnly() const
{
return m_impl->usedOnly;
}
...@@ -188,6 +188,11 @@ class ClassDef : public Definition ...@@ -188,6 +188,11 @@ class ClassDef : public Definition
*/ */
bool isBaseClass(ClassDef *bcd,bool followInstances,int level=0); bool isBaseClass(ClassDef *bcd,bool followInstances,int level=0);
/*! returns TRUE iff \a md is a member of this class or of the
* the public/protected members of a base class
*/
bool isAccessibleMember(MemberDef *md);
/*! Returns a sorted dictionary with all template instances found for /*! Returns a sorted dictionary with all template instances found for
* this template class. Returns 0 if not a template or no instances. * this template class. Returns 0 if not a template or no instances.
*/ */
...@@ -258,6 +263,8 @@ class ClassDef : public Definition ...@@ -258,6 +263,8 @@ class ClassDef : public Definition
ClassDef *getVariableInstance(const char *templSpec); ClassDef *getVariableInstance(const char *templSpec);
bool isUsedOnly() const;
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// --- setters ---- // --- setters ----
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
...@@ -290,6 +297,7 @@ class ClassDef : public Definition ...@@ -290,6 +297,7 @@ class ClassDef : public Definition
void addMembersToTemplateInstance(ClassDef *cd,const char *templSpec); void addMembersToTemplateInstance(ClassDef *cd,const char *templSpec);
void makeTemplateArgument(bool b=TRUE); void makeTemplateArgument(bool b=TRUE);
void setCategoryOf(ClassDef *cd); void setCategoryOf(ClassDef *cd);
void setUsedOnly(bool b);
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// --- actions ---- // --- actions ----
......
...@@ -798,7 +798,7 @@ static bool getLinkInScope(const QCString &c, // scope ...@@ -798,7 +798,7 @@ static bool getLinkInScope(const QCString &c, // scope
FileDef *fd; FileDef *fd;
NamespaceDef *nd; NamespaceDef *nd;
GroupDef *gd; GroupDef *gd;
//printf("Trying `%s'::`%s'\n",c.data(),m.data()); //printf("getLinkInScope: trying `%s'::`%s'\n",c.data(),m.data());
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) && if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) &&
md->isLinkable()) md->isLinkable())
{ {
...@@ -851,6 +851,7 @@ static bool getLink(const char *className, ...@@ -851,6 +851,7 @@ static bool getLink(const char *className,
CodeOutputInterface &ol, CodeOutputInterface &ol,
const char *text=0) const char *text=0)
{ {
//printf("getLink(%s,%s)\n",className,memberName);
QCString m=removeRedundantWhiteSpace(memberName); QCString m=removeRedundantWhiteSpace(memberName);
QCString c=className; QCString c=className;
if (!getLinkInScope(c,m,memberName,ol,text)) if (!getLinkInScope(c,m,memberName,ol,text))
......
...@@ -107,96 +107,125 @@ static bool handlePublicSection(const QCString &s); ...@@ -107,96 +107,125 @@ static bool handlePublicSection(const QCString &s);
static bool handleInherit(const QCString &); static bool handleInherit(const QCString &);
typedef bool (*DocCmdFunc)(const QCString &name); typedef bool (*DocCmdFunc)(const QCString &name);
struct DocCmdMap struct DocCmdMap
{ {
const char *cmdName; const char *cmdName;
DocCmdFunc handler; DocCmdFunc handler;
bool endsBrief;
}; };
// map of command to handler function // map of command to handler function
static DocCmdMap docCmdMap[] = static DocCmdMap docCmdMap[] =
{ {
{ "brief", &handleBrief }, // command name handler function ends brief description
{ "short", &handleBrief }, { "brief", &handleBrief, FALSE },
{ "fn", &handleFn }, { "short", &handleBrief, FALSE },
{ "var", &handleFn }, { "fn", &handleFn, TRUE },
{ "typedef", &handleFn }, { "var", &handleFn, TRUE },
{ "property", &handleFn }, { "typedef", &handleFn, TRUE },
{ "def", &handleDef }, { "property", &handleFn, TRUE },
{ "overload", &handleOverload }, { "def", &handleDef, TRUE },
{ "enum", &handleEnum }, { "overload", &handleOverload, TRUE },
{ "defgroup", &handleDefGroup }, { "enum", &handleEnum, TRUE },
{ "addtogroup", &handleAddToGroup }, { "defgroup", &handleDefGroup, TRUE },
{ "weakgroup", &handleWeakGroup }, { "addtogroup", &handleAddToGroup, TRUE },
{ "namespace", &handleNamespace }, { "weakgroup", &handleWeakGroup, TRUE },
{ "package", &handlePackage }, { "namespace", &handleNamespace, TRUE },
{ "class", &handleClass }, { "package", &handlePackage, TRUE },
{ "protocol", &handleProtocol }, { "class", &handleClass, TRUE },
{ "category", &handleCategory }, { "protocol", &handleProtocol, TRUE },
{ "union", &handleUnion }, { "category", &handleCategory, TRUE },
{ "struct", &handleStruct }, { "union", &handleUnion, TRUE },
{ "interface", &handleInterface }, { "struct", &handleStruct, TRUE },
{ "idlexcept", &handleIdlException }, { "interface", &handleInterface, TRUE },
{ "page", &handlePage }, { "idlexcept", &handleIdlException, TRUE },
{ "mainpage", &handleMainpage }, { "page", &handlePage, TRUE },
{ "file", &handleFile }, { "mainpage", &handleMainpage, TRUE },
{ "dir", &handleDir }, { "file", &handleFile, TRUE },
{ "example", &handleExample }, { "dir", &handleDir, TRUE },
{ "details", &handleDetails }, { "example", &handleExample, TRUE },
{ "name", &handleName }, { "details", &handleDetails, TRUE },
{ "todo", &handleTodo }, { "name", &handleName, TRUE },
{ "test", &handleTest }, { "todo", &handleTodo, TRUE },
{ "bug", &handleBug }, { "test", &handleTest, TRUE },
{ "deprecated", &handleDeprecated }, { "bug", &handleBug, TRUE },
{ "xrefitem", &handleXRefItem }, { "deprecated", &handleDeprecated, TRUE },
{ "related", &handleRelated }, { "xrefitem", &handleXRefItem, TRUE },
{ "relates", &handleRelated }, { "related", &handleRelated, TRUE },
{ "relatedalso", &handleRelatedAlso }, { "relates", &handleRelated, TRUE },
{ "relatesalso", &handleRelatedAlso }, { "relatedalso", &handleRelatedAlso, TRUE },
{ "refitem", &handleRefItem }, { "relatesalso", &handleRelatedAlso, TRUE },
{ "subpage", &handleSubpage }, { "refitem", &handleRefItem, TRUE },
{ "section", &handleSection }, { "subpage", &handleSubpage, TRUE },
{ "subsection", &handleSection }, { "section", &handleSection, TRUE },
{ "subsubsection", &handleSection }, { "subsection", &handleSection, TRUE },
{ "paragraph", &handleSection }, { "subsubsection", &handleSection, TRUE },
{ "anchor", &handleAnchor }, { "paragraph", &handleSection, TRUE },
{ "verbatim", &handleFormatBlock }, { "anchor", &handleAnchor, TRUE },
{ "latexonly", &handleFormatBlock }, { "verbatim", &handleFormatBlock, TRUE },
{ "htmlonly", &handleFormatBlock }, { "latexonly", &handleFormatBlock, FALSE },
{ "xmlonly", &handleFormatBlock }, { "htmlonly", &handleFormatBlock, FALSE },
{ "rtfonly", &handleFormatBlock }, { "xmlonly", &handleFormatBlock, FALSE },
{ "manonly", &handleFormatBlock }, { "rtfonly", &handleFormatBlock, FALSE },
{ "dot", &handleFormatBlock }, { "manonly", &handleFormatBlock, FALSE },
{ "code", &handleFormatBlock }, { "dot", &handleFormatBlock, TRUE },
{ "addindex", &handleAddIndex }, { "code", &handleFormatBlock, TRUE },
{ "if", &handleIf }, { "addindex", &handleAddIndex, TRUE },
{ "ifnot", &handleIfNot }, { "if", &handleIf, FALSE },
{ "elseif", &handleElseIf }, { "ifnot", &handleIfNot, FALSE },
{ "else", &handleElse }, { "elseif", &handleElseIf, FALSE },
{ "endif", &handleEndIf }, { "else", &handleElse, FALSE },
{ "ingroup", &handleIngroup }, { "endif", &handleEndIf, FALSE },
{ "nosubgrouping", &handleNoSubGrouping }, { "ingroup", &handleIngroup, TRUE },
{ "showinitializer", &handleShowInitializer }, { "nosubgrouping", &handleNoSubGrouping, TRUE },
{ "hideinitializer", &handleHideInitializer }, { "showinitializer", &handleShowInitializer, TRUE },
{ "callgraph", &handleCallgraph }, { "hideinitializer", &handleHideInitializer, TRUE },
{ "callergraph", &handleCallergraph }, { "callgraph", &handleCallgraph, TRUE },
{ "internal", &handleInternal }, { "callergraph", &handleCallergraph, TRUE },
{ "_linebr", &handleLineBr }, { "internal", &handleInternal, TRUE },
{ "static", &handleStatic }, { "_linebr", &handleLineBr, FALSE },
{ "pure", &handlePure }, { "static", &handleStatic, TRUE },
{ "private", &handlePrivate}, { "pure", &handlePure, TRUE },
{ "privatesection", &handlePrivateSection }, { "private", &handlePrivate, TRUE },
{ "protected", &handleProtected }, { "privatesection", &handlePrivateSection, TRUE },
{ "protectedsection",&handleProtectedSection }, { "protected", &handleProtected, TRUE },
{ "public", &handlePublic }, { "protectedsection",&handleProtectedSection, TRUE },
{ "publicsection", &handlePublicSection }, { "public", &handlePublic, TRUE },
{ "inherit", &handleInherit }, { "publicsection", &handlePublicSection, TRUE },
{ 0, 0 } { "inherit", &handleInherit, TRUE },
{ "arg", 0, TRUE },
{ "attention", 0, TRUE },
{ "author", 0, TRUE },
{ "date", 0, TRUE },
{ "dotfile", 0, TRUE },
{ "htmlinclude", 0, TRUE },
{ "image", 0, TRUE },
{ "include", 0, TRUE },
{ "includelineno", 0, TRUE },
{ "invariant", 0, TRUE },
{ "li", 0, TRUE },
{ "line", 0, TRUE },
{ "note", 0, TRUE },
{ "par", 0, TRUE },
{ "param", 0, TRUE },
{ "post", 0, TRUE },
{ "pre", 0, TRUE },
{ "remarks", 0, TRUE },
{ "return", 0, TRUE },
{ "returns", 0, TRUE },
{ "retval", 0, TRUE },
{ "sa", 0, TRUE },
{ "see", 0, TRUE },
{ "since", 0, TRUE },
{ "throw", 0, TRUE },
{ "until", 0, TRUE },
{ "verbinclude", 0, TRUE },
{ "version", 0, TRUE },
{ "warning", 0, TRUE },
{ 0, 0, FALSE }
}; };
/** @brief Command mapper. /** @brief Command mapper.
* *
* Maps a command name (as found in a comment block) onto a * Maps a command name (as found in a comment block) onto a
...@@ -205,8 +234,14 @@ static DocCmdMap docCmdMap[] = ...@@ -205,8 +234,14 @@ static DocCmdMap docCmdMap[] =
class DocCmdMapper class DocCmdMapper
{ {
public: public:
struct Cmd
{
DocCmdFunc func;
bool endsBrief;
};
/** maps a command name to a handler function */ /** maps a command name to a handler function */
static DocCmdFunc *map(const char *name) static Cmd *map(const char *name)
{ {
return instance()->find(name); return instance()->find(name);
} }
...@@ -224,21 +259,30 @@ class DocCmdMapper ...@@ -224,21 +259,30 @@ class DocCmdMapper
return s_instance; return s_instance;
} }
DocCmdMapper() : m_map(89) DocCmdMapper() : m_map(113)
{ {
m_map.setAutoDelete(TRUE);
DocCmdMap *p = docCmdMap; DocCmdMap *p = docCmdMap;
while (p->cmdName) while (p->cmdName)
{ {
m_map.insert(p->cmdName,&p->handler); if (m_map.find(p->cmdName)!=0)
{
printf("Error: command %s already added\n",p->cmdName);
exit(1);
}
Cmd *cmd = new Cmd;
cmd->func = p->handler;
cmd->endsBrief = p->endsBrief;
m_map.insert(p->cmdName,cmd);
p++; p++;
} }
} }
DocCmdFunc *find(const char *name) Cmd *find(const char *name)
{ {
return m_map.find(name); return m_map.find(name);
} }
QDict<DocCmdFunc> m_map; QDict<Cmd> m_map;
static DocCmdMapper *s_instance; static DocCmdMapper *s_instance;
}; };
...@@ -656,6 +700,17 @@ static inline void addOutput(char c) ...@@ -656,6 +700,17 @@ static inline void addOutput(char c)
*pOutputString+=c; *pOutputString+=c;
} }
static void endBrief()
{
if (!current->brief.stripWhiteSpace().isEmpty())
{ // only go to the detailed description if we have
// found some brief description and not just whitespace
briefEndsAtDot=FALSE;
setOutput(OutputDoc);
addOutput(yytext);
}
}
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
#undef YY_INPUT #undef YY_INPUT
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
...@@ -801,12 +856,14 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-] ...@@ -801,12 +856,14 @@ 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 // continue with the same input
REJECT; REJECT;
} }
/*
<Comment>{DETAILEDCMD}/[^a-z_A-Z]* { // command that can end a brief description <Comment>{DETAILEDCMD}/[^a-z_A-Z]* { // command that can end a brief description
briefEndsAtDot=FALSE; briefEndsAtDot=FALSE;
setOutput(OutputDoc); setOutput(OutputDoc);
// continue with the same input // continue with the same input
REJECT; REJECT;
} }
*/
<Comment>"<"{DETAILEDHTML}{ATTR}">" { // HTML command that ends a brief description <Comment>"<"{DETAILEDHTML}{ATTR}">" { // HTML command that ends a brief description
setOutput(OutputDoc); setOutput(OutputDoc);
// continue with the same input // continue with the same input
...@@ -825,10 +882,16 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-] ...@@ -825,10 +882,16 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
} }
<Comment>{CMD}[a-z_A-Z]+{B}* { // potentially interesting command <Comment>{CMD}[a-z_A-Z]+{B}* { // potentially interesting command
QCString cmdName = QCString(&yytext[1]).stripWhiteSpace(); QCString cmdName = QCString(&yytext[1]).stripWhiteSpace();
DocCmdFunc *funcPtr = DocCmdMapper::map(cmdName); DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName);
if (funcPtr) // special action is required if (cmdPtr) // special action is required
{ {
if ((*funcPtr)(cmdName)) if (cmdPtr->endsBrief && !current->brief.stripWhiteSpace().isEmpty())
{
briefEndsAtDot=FALSE;
// this command forces the end of brief description
setOutput(OutputDoc);
}
if (cmdPtr->func && cmdPtr->func(cmdName))
{ {
// implicit split of the comment block into two // implicit split of the comment block into two
// entries. Restart the next block at the start // entries. Restart the next block at the start
...@@ -846,6 +909,12 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-] ...@@ -846,6 +909,12 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
#endif #endif
yyterminate(); yyterminate();
} }
else if (cmdPtr->func==0)
{
// command without handler, to be processed
// later by parsedoc.cpp
addOutput(yytext);
}
} }
else // command not relevant else // command not relevant
{ {
...@@ -911,11 +980,10 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-] ...@@ -911,11 +980,10 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
addOutput(yytext); addOutput(yytext);
setOutput(OutputDoc); setOutput(OutputDoc);
} }
else if (!current->brief.stripWhiteSpace().isEmpty()) else
{ // only go to the detailed description if we have { // only go to the detailed description if we have
// found some brief description and not just whitespace // found some brief description and not just whitespace
setOutput(OutputDoc); endBrief();
addOutput(yytext);
} }
lineCount(); lineCount();
} }
...@@ -1853,7 +1921,7 @@ static bool handlePage(const QCString &) ...@@ -1853,7 +1921,7 @@ static bool handlePage(const QCString &)
static bool handleMainpage(const QCString &) static bool handleMainpage(const QCString &)
{ {
bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC); bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC);
current->name = "mainpage"; if (!stop) current->name = "mainpage";
BEGIN( PageDocArg2 ); BEGIN( PageDocArg2 );
return stop; return stop;
} }
...@@ -1861,7 +1929,7 @@ static bool handleMainpage(const QCString &) ...@@ -1861,7 +1929,7 @@ static bool handleMainpage(const QCString &)
static bool handleFile(const QCString &) static bool handleFile(const QCString &)
{ {
bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC); bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC);
current->name = yyFileName; if (!stop) current->name = yyFileName;
BEGIN( FileDocArg1 ); BEGIN( FileDocArg1 );
return stop; return stop;
} }
...@@ -1869,7 +1937,7 @@ static bool handleFile(const QCString &) ...@@ -1869,7 +1937,7 @@ static bool handleFile(const QCString &)
static bool handleDir(const QCString &) static bool handleDir(const QCString &)
{ {
bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC); bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC);
current->name = yyFileName; if (!stop) current->name = yyFileName;
BEGIN( FileDocArg1 ); BEGIN( FileDocArg1 );
return stop; return stop;
} }
...@@ -1877,7 +1945,7 @@ static bool handleDir(const QCString &) ...@@ -1877,7 +1945,7 @@ static bool handleDir(const QCString &)
static bool handleExample(const QCString &) static bool handleExample(const QCString &)
{ {
bool stop=makeStructuralIndicator(Entry::EXAMPLE_SEC); bool stop=makeStructuralIndicator(Entry::EXAMPLE_SEC);
current->name = yyFileName; if (!stop) current->name = yyFileName;
BEGIN( FileDocArg1 ); BEGIN( FileDocArg1 );
return stop; return stop;
} }
...@@ -1891,11 +1959,14 @@ static bool handleDetails(const QCString &) ...@@ -1891,11 +1959,14 @@ static bool handleDetails(const QCString &)
static bool handleName(const QCString &) static bool handleName(const QCString &)
{ {
bool stop=makeStructuralIndicator(Entry::MEMBERGRP_SEC); bool stop=makeStructuralIndicator(Entry::MEMBERGRP_SEC);
g_memberGroupHeader.resize(0); if (!stop)
BEGIN( NameParam );
if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group
{ {
closeGroup(current,yyFileName,yyLineNr); g_memberGroupHeader.resize(0);
BEGIN( NameParam );
if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group
{
closeGroup(current,yyFileName,yyLineNr);
}
} }
return stop; return stop;
} }
...@@ -2123,54 +2194,63 @@ static bool handleLineBr(const QCString &) ...@@ -2123,54 +2194,63 @@ static bool handleLineBr(const QCString &)
static bool handleStatic(const QCString &) static bool handleStatic(const QCString &)
{ {
endBrief();
current->stat = TRUE; current->stat = TRUE;
return FALSE; return FALSE;
} }
static bool handlePure(const QCString &) static bool handlePure(const QCString &)
{ {
endBrief();
current->virt = Pure; current->virt = Pure;
return FALSE; return FALSE;
} }
static bool handlePrivate(const QCString &) static bool handlePrivate(const QCString &)
{ {
endBrief();
current->protection = Private; current->protection = Private;
return FALSE; return FALSE;
} }
static bool handlePrivateSection(const QCString &) static bool handlePrivateSection(const QCString &)
{ {
endBrief();
current->protection = protection = Private; current->protection = protection = Private;
return FALSE; return FALSE;
} }
static bool handleProtected(const QCString &) static bool handleProtected(const QCString &)
{ {
endBrief();
current->protection = Protected; current->protection = Protected;
return FALSE; return FALSE;
} }
static bool handleProtectedSection(const QCString &) static bool handleProtectedSection(const QCString &)
{ {
endBrief();
current->protection = protection = Protected ; current->protection = protection = Protected ;
return FALSE; return FALSE;
} }
static bool handlePublic(const QCString &) static bool handlePublic(const QCString &)
{ {
endBrief();
current->protection = Public; current->protection = Public;
return FALSE; return FALSE;
} }
static bool handlePublicSection(const QCString &) static bool handlePublicSection(const QCString &)
{ {
endBrief();
current->protection = protection = Public; current->protection = protection = Public;
return FALSE; return FALSE;
} }
static bool handleInherit(const QCString &) static bool handleInherit(const QCString &)
{ {
endBrief();
BEGIN(InheritParam); BEGIN(InheritParam);
return FALSE; return FALSE;
} }
...@@ -2200,7 +2280,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser, ...@@ -2200,7 +2280,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
/* out */ bool &newEntryNeeded /* out */ bool &newEntryNeeded
) )
{ {
//fprintf(stderr,"parseCommentBlock() isBrief=%d isJavaDocStyle=%d lineNr=%d\n", //printf("parseCommentBlock() isBrief=%d isJavaDocStyle=%d lineNr=%d\n",
// isBrief,isJavaDocStyle,lineNr); // isBrief,isJavaDocStyle,lineNr);
initParser(); initParser();
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include "section.h" #include "section.h"
#include "htags.h" #include "htags.h"
#include "parserintf.h" #include "parserintf.h"
#include "objcache.h"
#include "marshal.h" #include "marshal.h"
#if defined(_MSC_VER) || defined(__BORLANDC__) #if defined(_MSC_VER) || defined(__BORLANDC__)
...@@ -237,14 +236,11 @@ Definition::Definition(const char *df,int dl, ...@@ -237,14 +236,11 @@ Definition::Definition(const char *df,int dl,
const char *name,const char *b, const char *name,const char *b,
const char *d,bool isSymbol) const char *d,bool isSymbol)
{ {
m_storagePos=-1;
m_name = name; m_name = name;
m_impl = new DefinitionImpl; m_impl = new DefinitionImpl;
m_impl->init(df,dl,name,b,d); m_impl->init(df,dl,name,b,d);
m_isSymbol = isSymbol; m_isSymbol = isSymbol;
if (isSymbol) addToMap(name,this); if (isSymbol) addToMap(name,this);
m_cacheHandle=-1;
m_flushPending = FALSE;
} }
Definition::~Definition() Definition::~Definition()
...@@ -258,11 +254,6 @@ Definition::~Definition() ...@@ -258,11 +254,6 @@ Definition::~Definition()
delete m_impl; delete m_impl;
m_impl=0; m_impl=0;
} }
if (m_cacheHandle!=-1)
{
Doxygen::symbolCache->del(m_cacheHandle);
m_cacheHandle=-1;
}
} }
void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
...@@ -1173,74 +1164,14 @@ void Definition::setLocalName(const QCString name) ...@@ -1173,74 +1164,14 @@ void Definition::setLocalName(const QCString name)
} }
void Definition::makeResident() const void Definition::makeResident() const
{
if (m_cacheHandle==-1) // not yet in cache
{
Definition *victim = 0;
Definition *that = (Definition*)this; // fake method constness
that->m_cacheHandle = Doxygen::symbolCache->add(that,(void **)&victim);
//printf("adding %s to cache, handle=%d\n",m_impl->name.data(),that->m_cacheHandle);
if (victim) // cache was full, victim was the least recently used item and has to go
{
victim->m_cacheHandle=-1; // invalidate cache handle
victim->saveToDisk(); // store the item on disk
}
else // cache not yet full
{
//printf("Adding %s to cache, handle=%d\n",m_impl->name.data(),m_cacheHandle);
}
if (m_storagePos!=-1) // already been written to disk
{
if (isLocked()) // locked in memory
{
assert(m_impl!=0);
that->m_flushPending=FALSE; // no need to flush anymore
}
else // not locked in memory
{
assert(m_impl==0);
loadFromDisk();
}
}
}
else // already cached, make this object the most recently used.
{
assert(m_impl!=0);
//printf("Touching symbol %s\n",m_impl->name.data());
Doxygen::symbolCache->use(m_cacheHandle);
}
}
void Definition::saveToDisk() const
{ {
assert(m_impl!=0);
Definition *that = (Definition *)this;
if (isLocked()) // cannot flush the item as it is locked
{
that->m_flushPending=TRUE; // flush when unlocked
}
else // ready to flush the item to disk
{
//printf("Adding %s to cache, handle=%d by replacing %s\n",
// m_impl->name.data(),m_cacheHandle,victim->m_impl->name.data());
if (m_storagePos!=-1)
// if victim was stored on disk already and is not locked
{
// free the storage space occupied by the old store item
Doxygen::symbolStorage->release(m_storagePos); // free up space for others
}
// write a the new (possibly modified) instance to disk
flushToDisk();
// end to write sequence (unless nothing was written due to the lock)
Doxygen::symbolStorage->end();
}
} }
void Definition::flushToDisk() const void Definition::flushToDisk() const
{ {
//printf("%p: Definition::flushToDisk()\n",this); //printf("%p: Definition::flushToDisk()\n",this);
Definition *that = (Definition *)this; Definition *that = (Definition *)this;
that->m_storagePos = Doxygen::symbolStorage->alloc();
//printf("Definition::flushToDisk(): pos=%d\n",(int)m_storagePos); //printf("Definition::flushToDisk(): pos=%d\n",(int)m_storagePos);
marshalUInt(Doxygen::symbolStorage,START_MARKER); marshalUInt(Doxygen::symbolStorage,START_MARKER);
marshalSectionDict (Doxygen::symbolStorage,m_impl->sectionDict); marshalSectionDict (Doxygen::symbolStorage,m_impl->sectionDict);
...@@ -1262,7 +1193,6 @@ void Definition::flushToDisk() const ...@@ -1262,7 +1193,6 @@ void Definition::flushToDisk() const
marshalUInt(Doxygen::symbolStorage,END_MARKER); marshalUInt(Doxygen::symbolStorage,END_MARKER);
delete that->m_impl; delete that->m_impl;
that->m_impl = 0; that->m_impl = 0;
that->m_flushPending=FALSE;
} }
void Definition::loadFromDisk() const void Definition::loadFromDisk() const
...@@ -1271,7 +1201,6 @@ void Definition::loadFromDisk() const ...@@ -1271,7 +1201,6 @@ void Definition::loadFromDisk() const
Definition *that = (Definition *)this; Definition *that = (Definition *)this;
assert(m_impl==0); assert(m_impl==0);
that->m_impl = new DefinitionImpl; that->m_impl = new DefinitionImpl;
Doxygen::symbolStorage->seek(m_storagePos);
uint marker = unmarshalUInt(Doxygen::symbolStorage); uint marker = unmarshalUInt(Doxygen::symbolStorage);
assert(marker==START_MARKER); assert(marker==START_MARKER);
m_impl->sectionDict = unmarshalSectionDict (Doxygen::symbolStorage); m_impl->sectionDict = unmarshalSectionDict (Doxygen::symbolStorage);
...@@ -1294,18 +1223,3 @@ void Definition::loadFromDisk() const ...@@ -1294,18 +1223,3 @@ void Definition::loadFromDisk() const
assert(marker==END_MARKER); assert(marker==END_MARKER);
} }
void Definition::lock() const
{
}
void Definition::unlock() const
{
if (m_flushPending && !isLocked())
{
// write a the new (possibly modified) instance to disk
flushToDisk();
// end to write sequence (unless nothing was written due to the lock)
Doxygen::symbolStorage->end();
}
}
...@@ -279,19 +279,14 @@ class Definition : public DefinitionIntf, public LockableObj ...@@ -279,19 +279,14 @@ class Definition : public DefinitionIntf, public LockableObj
virtual void flushToDisk() const; virtual void flushToDisk() const;
virtual void loadFromDisk() const; virtual void loadFromDisk() const;
void makeResident() const; virtual void makeResident() const;
bool isResident() const void lock() const {}
{ void unlock() const {}
return m_cacheHandle!=-1;
}
private: private:
void lock() const;
void unlock() const;
static void addToMap(const char *name,Definition *d); static void addToMap(const char *name,Definition *d);
static void removeFromMap(Definition *d); static void removeFromMap(Definition *d);
void saveToDisk() const;
void _setSymbolName(const QCString &name); void _setSymbolName(const QCString &name);
...@@ -299,10 +294,7 @@ class Definition : public DefinitionIntf, public LockableObj ...@@ -299,10 +294,7 @@ class Definition : public DefinitionIntf, public LockableObj
void _writeSourceRefList(OutputList &ol,const char *scopeName, void _writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members,bool); const QCString &text,MemberSDict *members,bool);
DefinitionImpl *m_impl; // internal structure holding all private data DefinitionImpl *m_impl; // internal structure holding all private data
off_t m_storagePos; // location where the item is stored in file (if impl==0)
int m_cacheHandle;
QCString m_name; QCString m_name;
bool m_flushPending;
bool m_isSymbol; bool m_isSymbol;
QCString m_symbolName; QCString m_symbolName;
......
...@@ -339,6 +339,7 @@ static void checkUndocumentedParams() ...@@ -339,6 +339,7 @@ static void checkUndocumentedParams()
} }
if (found) if (found)
{ {
bool first=TRUE;
QString errMsg= QString errMsg=
"Warning: The following parameters of "+ "Warning: The following parameters of "+
QString(g_memberDef->qualifiedName()) + QString(g_memberDef->qualifiedName()) +
...@@ -349,7 +350,15 @@ static void checkUndocumentedParams() ...@@ -349,7 +350,15 @@ static void checkUndocumentedParams()
QString argName = g_memberDef->isDefine() ? a->type : a->name; QString argName = g_memberDef->isDefine() ? a->type : a->name;
if (!argName.isEmpty() && g_paramsFound.find(argName)==0) if (!argName.isEmpty() && g_paramsFound.find(argName)==0)
{ {
errMsg+=" parameter "+argName+"\n"; if (!first)
{
errMsg+="\n";
}
else
{
first=FALSE;
}
errMsg+=" parameter "+argName;
} }
} }
if (g_memberDef->inheritsDocsFrom()) if (g_memberDef->inheritsDocsFrom())
......
...@@ -879,7 +879,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name,int level) ...@@ -879,7 +879,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name,int level)
static Definition *findScopeFromQualifiedName(Definition *startScope,const QCString &n, static Definition *findScopeFromQualifiedName(Definition *startScope,const QCString &n,
FileDef *fileScope) FileDef *fileScope)
{ {
//printf("findScopeFromQualifiedName(%s,%s)\n",startScope ? startScope->name().data() : 0, n.data()); //printf("<findScopeFromQualifiedName(%s,%s)\n",startScope ? startScope->name().data() : 0, n.data());
Definition *resultScope=startScope; Definition *resultScope=startScope;
if (resultScope==0) resultScope=Doxygen::globalScope; if (resultScope==0) resultScope=Doxygen::globalScope;
QCString scope=stripTemplateSpecifiersFromScope(n,FALSE); QCString scope=stripTemplateSpecifiersFromScope(n,FALSE);
...@@ -887,7 +887,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr ...@@ -887,7 +887,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
i1=getScopeFragment(scope,0,&l1); i1=getScopeFragment(scope,0,&l1);
if (i1==-1) if (i1==-1)
{ {
//printf("no fragments!\n"); //printf(">no fragments!\n");
return resultScope; return resultScope;
} }
int p=i1+l1,l2=0,i2; int p=i1+l1,l2=0,i2;
...@@ -895,24 +895,34 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr ...@@ -895,24 +895,34 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
{ {
QCString nestedNameSpecifier = scope.mid(i1,l1); QCString nestedNameSpecifier = scope.mid(i1,l1);
Definition *orgScope = resultScope; Definition *orgScope = resultScope;
//printf(" nestedNameSpecifier=%s\n",nestedNameSpecifier.data());
resultScope = resultScope->findInnerCompound(nestedNameSpecifier); resultScope = resultScope->findInnerCompound(nestedNameSpecifier);
//printf("resultScope=%p\n",resultScope); //printf(" resultScope=%p\n",resultScope);
if (resultScope==0) if (resultScope==0)
{ {
if (orgScope==Doxygen::globalScope && fileScope) NamespaceSDict *usedNamespaces;
if (orgScope==Doxygen::globalScope && fileScope &&
(usedNamespaces = fileScope->getUsedNamespaces()))
// also search for used namespaces // also search for used namespaces
{ {
NamespaceSDict *usedNamespaces = fileScope->getUsedNamespaces(); NamespaceSDict::Iterator ni(*usedNamespaces);
if (usedNamespaces) NamespaceDef *nd;
for (ni.toFirst();((nd=ni.current()) && resultScope==0);++ni)
{ {
NamespaceSDict::Iterator ni(*usedNamespaces); // restart search within the used namespace
NamespaceDef *nd; resultScope = findScopeFromQualifiedName(nd,n,fileScope);
for (ni.toFirst();((nd=ni.current()) && resultScope==0);++ni) }
if (resultScope)
{
// for a nested class A::I in used namespace N, we get
// N::A::I while looking for A, so we should compare
// resultScope->name() against scope.left(i2+l2)
//printf(" -> result=%s scope=%s\n",resultScope->name().data(),scope.data());
if (rightScopeMatch(resultScope->name(),scope.left(i2+l2)))
{ {
// restart search within the used namespace break;
resultScope = findScopeFromQualifiedName(nd,n,fileScope);
} }
if (resultScope) goto nextFragment; goto nextFragment;
} }
} }
...@@ -934,13 +944,15 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr ...@@ -934,13 +944,15 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
scope.right(scope.length()-p); scope.right(scope.length()-p);
resultScope = buildScopeFromQualifiedName(fqn,fqn.contains("::")); resultScope = buildScopeFromQualifiedName(fqn,fqn.contains("::"));
//printf("Creating scope from fqn=%s result %p\n",fqn.data(),resultScope); //printf("Creating scope from fqn=%s result %p\n",fqn.data(),resultScope);
//resultScope = findScopeFromQualifiedName(startScope,fqn,usedFd); if (resultScope)
//printf("Match! resultScope=%p\n",resultScope); {
if (resultScope) return resultScope; //printf("> Match! resultScope=%s\n",resultScope->name().data());
return resultScope;
}
} }
} }
//printf("name %s not found in scope %s\n",nestedNameSpecifier.data(),orgScope->name().data()); //printf("> name %s not found in scope %s\n",nestedNameSpecifier.data(),orgScope->name().data());
return 0; return 0;
} }
nextFragment: nextFragment:
...@@ -948,7 +960,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr ...@@ -948,7 +960,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
l1=l2; l1=l2;
p=i2+l2; p=i2+l2;
} }
//printf("findScopeFromQualifiedName scope %s\n",resultScope->name().data()); //printf(">findScopeFromQualifiedName scope %s\n",resultScope->name().data());
return resultScope; return resultScope;
} }
...@@ -1061,9 +1073,9 @@ static void addClassToContext(EntryNav *rootNav) ...@@ -1061,9 +1073,9 @@ static void addClassToContext(EntryNav *rootNav)
{ {
warn( warn(
root->fileName,root->startLine, root->fileName,root->startLine,
"Warning: class %s already has a detailed description. " "Warning: class %s already has a detailed description found in file %s at line %d. "
"Skipping the one found here.", "Skipping the one found here.",
fullName.data() fullName.data(),cd->docFile().data(),cd->docLine()
); );
} }
else if (!root->doc.isEmpty()) else if (!root->doc.isEmpty())
...@@ -1074,9 +1086,9 @@ static void addClassToContext(EntryNav *rootNav) ...@@ -1074,9 +1086,9 @@ static void addClassToContext(EntryNav *rootNav)
{ {
warn( warn(
root->fileName,root->startLine, root->fileName,root->startLine,
"Warning: class %s already has a brief description\n" "Warning: class %s already has a brief description found in file %s at line %d\n"
" skipping the one found here.", " skipping the one found here.",
fullName.data() fullName.data(),cd->briefFile().data(),cd->briefLine()
); );
} }
else if (!root->brief.isEmpty()) else if (!root->brief.isEmpty())
...@@ -1252,7 +1264,7 @@ static void resolveClassNestingRelations() ...@@ -1252,7 +1264,7 @@ static void resolveClassNestingRelations()
cd->setOuterScope(d); cd->setOuterScope(d);
warn(cd->getDefFileName(),cd->getDefLine(), warn(cd->getDefFileName(),cd->getDefLine(),
"Warning: Internal inconsistency: scope for class %s not " "Warning: Internal inconsistency: scope for class %s not "
"found!\n",cd->name().data() "found!",cd->name().data()
); );
} }
} }
...@@ -1286,7 +1298,7 @@ static void resolveClassNestingRelations() ...@@ -1286,7 +1298,7 @@ static void resolveClassNestingRelations()
cd->setOuterScope(d); cd->setOuterScope(d);
warn(cd->getDefFileName(),cd->getDefLine(), warn(cd->getDefFileName(),cd->getDefLine(),
"Warning: Internal inconsistency: scope for class %s not " "Warning: Internal inconsistency: scope for class %s not "
"found!\n",cd->name().data() "found!",cd->name().data()
); );
} }
} }
...@@ -1347,9 +1359,9 @@ static void buildNamespaceList(EntryNav *rootNav) ...@@ -1347,9 +1359,9 @@ static void buildNamespaceList(EntryNav *rootNav)
{ {
warn( warn(
root->fileName,root->startLine, root->fileName,root->startLine,
"Warning: namespace %s already has a detailed description. " "Warning: namespace %s already has a detailed description found in file %s at line %d. "
"Skipping the documentation found here.", "Skipping the documentation found here.",
fullName.data()); fullName.data(),nd->docFile().data(),nd->docLine());
} }
if (nd->briefDescription().isEmpty() && !root->brief.isEmpty()) if (nd->briefDescription().isEmpty() && !root->brief.isEmpty())
{ {
...@@ -1359,9 +1371,9 @@ static void buildNamespaceList(EntryNav *rootNav) ...@@ -1359,9 +1371,9 @@ static void buildNamespaceList(EntryNav *rootNav)
else if (!nd->briefDescription().isEmpty() && !root->brief.isEmpty()) else if (!nd->briefDescription().isEmpty() && !root->brief.isEmpty())
{ {
warn(root->fileName,root->startLine, warn(root->fileName,root->startLine,
"Warning: namespace %s already has a brief description. " "Warning: namespace %s already has a brief description found in file %s at line %d. "
"Skipping the documentation found here.", "Skipping the documentation found here.",
fullName.data() fullName.data(),nd->docFile().data(),nd->docLine()
); );
} }
} }
...@@ -3642,6 +3654,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, ...@@ -3642,6 +3654,7 @@ static void findUsedClassesForClass(EntryNav *rootNav,
usedName,ClassDef::Class); usedName,ClassDef::Class);
//printf("making %s a template argument!!!\n",usedCd->name().data()); //printf("making %s a template argument!!!\n",usedCd->name().data());
usedCd->makeTemplateArgument(); usedCd->makeTemplateArgument();
usedCd->setUsedOnly(TRUE);
Doxygen::hiddenClasses->append(usedName,usedCd); Doxygen::hiddenClasses->append(usedName,usedCd);
} }
if (usedCd) if (usedCd)
...@@ -3688,6 +3701,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, ...@@ -3688,6 +3701,7 @@ static void findUsedClassesForClass(EntryNav *rootNav,
usedCd = new ClassDef( usedCd = new ClassDef(
masterCd->getDefFileName(),masterCd->getDefLine(), masterCd->getDefFileName(),masterCd->getDefLine(),
type,ClassDef::Class); type,ClassDef::Class);
usedCd->setUsedOnly(TRUE);
Doxygen::hiddenClasses->append(type,usedCd); Doxygen::hiddenClasses->append(type,usedCd);
} }
if (usedCd) if (usedCd)
...@@ -5250,6 +5264,7 @@ static void findMember(EntryNav *rootNav, ...@@ -5250,6 +5264,7 @@ static void findMember(EntryNav *rootNav,
if (funcSpec.isEmpty()) // not a member specialization if (funcSpec.isEmpty()) // not a member specialization
{ {
int count=0; int count=0;
int noMatchCount=0;
MemberNameIterator mni(*mn); MemberNameIterator mni(*mn);
MemberDef *md; MemberDef *md;
bool memFound=FALSE; bool memFound=FALSE;
...@@ -5371,6 +5386,11 @@ static void findMember(EntryNav *rootNav, ...@@ -5371,6 +5386,11 @@ static void findMember(EntryNav *rootNav,
memFound=TRUE; memFound=TRUE;
} }
} }
else if (cd && cd!=tcd) // we did find a class with the same name as cd
// but in a different namespace
{
noMatchCount++;
}
} }
if (count==0 && rootNav->parent() && if (count==0 && rootNav->parent() &&
rootNav->parent()->section()==Entry::OBJCIMPL_SEC) rootNav->parent()->section()==Entry::OBJCIMPL_SEC)
...@@ -5402,7 +5422,8 @@ static void findMember(EntryNav *rootNav, ...@@ -5402,7 +5422,8 @@ static void findMember(EntryNav *rootNav,
} }
warn(root->fileName,root->startLine, warn(root->fileName,root->startLine,
"Warning: no matching class member found for" "Warning: no %smatching class member found for",
noMatchCount>1 ? "uniquely " : ""
); );
if (root->tArgLists) if (root->tArgLists)
...@@ -5440,6 +5461,7 @@ static void findMember(EntryNav *rootNav, ...@@ -5440,6 +5461,7 @@ static void findMember(EntryNav *rootNav,
QCString qScope = cd->qualifiedNameWithTemplateParameters(); QCString qScope = cd->qualifiedNameWithTemplateParameters();
if (!qScope.isEmpty()) warn_cont("%s::%s",qScope.data(),md->name().data()); if (!qScope.isEmpty()) warn_cont("%s::%s",qScope.data(),md->name().data());
if (md->argsString()) warn_cont("%s",md->argsString()); if (md->argsString()) warn_cont("%s",md->argsString());
if (noMatchCount>1) warn_cont(" at line %d of file %s",md->getDefLine(),md->getDefFileName().data());
warn_cont("\n"); warn_cont("\n");
} }
} }
...@@ -6146,6 +6168,7 @@ static void findEnums(EntryNav *rootNav) ...@@ -6146,6 +6168,7 @@ static void findEnums(EntryNav *rootNav)
} }
addMemberToGroups(root,md); addMemberToGroups(root,md);
#if 0
if (rootNav->children()) if (rootNav->children())
{ {
EntryNavListIterator eli(*rootNav->children()); EntryNavListIterator eli(*rootNav->children());
...@@ -6209,6 +6232,7 @@ static void findEnums(EntryNav *rootNav) ...@@ -6209,6 +6232,7 @@ static void findEnums(EntryNav *rootNav)
} }
} }
} }
#endif
} }
rootNav->releaseEntry(); rootNav->releaseEntry();
...@@ -6219,6 +6243,160 @@ static void findEnums(EntryNav *rootNav) ...@@ -6219,6 +6243,160 @@ static void findEnums(EntryNav *rootNav)
} }
} }
//----------------------------------------------------------------------
static void addEnumValuesToEnums(EntryNav *rootNav)
{
if (rootNav->section()==Entry::ENUM_SEC)
// non anonymous enumeration
{
rootNav->loadEntry(g_storage);
Entry *root = rootNav->entry();
ClassDef *cd=0;
FileDef *fd=0;
NamespaceDef *nd=0;
MemberNameSDict *mnsd=0;
bool isGlobal;
bool isRelated=FALSE;
//printf("Found enum with name `%s' relates=%s\n",root->name.data(),root->relates.data());
int i;
QCString name;
QCString scope;
if ((i=root->name.findRev("::"))!=-1) // scope is specified
{
scope=root->name.left(i); // extract scope
name=root->name.right(root->name.length()-i-2); // extract name
if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
}
else // no scope, check the scope in which the docs where found
{
if (( rootNav->parent()->section() & Entry::SCOPE_MASK )
&& !rootNav->parent()->name().isEmpty()
) // found enum docs inside a compound
{
scope=rootNav->parent()->name();
if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
}
name=root->name;
}
if (!root->relates.isEmpty())
{ // related member, prefix user specified scope
isRelated=TRUE;
if (getClass(root->relates)==0 && !scope.isEmpty())
scope=mergeScopes(scope,root->relates);
else
scope=root->relates.copy();
if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
}
if (cd && !name.isEmpty()) // found a enum inside a compound
{
//printf("Enum `%s'::`%s'\n",cd->name(),name.data());
fd=0;
mnsd=Doxygen::memberNameSDict;
isGlobal=FALSE;
}
else if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') // found enum inside namespace
{
mnsd=Doxygen::functionNameSDict;
isGlobal=TRUE;
}
else // found a global enum
{
fd=rootNav->fileDef();
mnsd=Doxygen::functionNameSDict;
isGlobal=TRUE;
}
if (!name.isEmpty())
{
MemberName *mn = mnsd->find(name);
if (mn)
{
MemberNameIterator mni(*mn);
MemberDef *md;
for (mni.toFirst(); (md=mni.current()) ; ++mni)
{
if (md->isEnumerate() && rootNav->children())
{
EntryNavListIterator eli(*rootNav->children());
EntryNav *e;
for (;(e=eli.current());++eli)
{
//printf("e->name=%s isRelated=%d\n",e->name.data(),isRelated);
MemberName *fmn=0;
MemberNameSDict *emnsd = isRelated ? Doxygen::functionNameSDict : mnsd;
if (!e->name().isEmpty() && (fmn=(*emnsd)[e->name()]))
// get list of members with the same name as the field
{
MemberNameIterator fmni(*fmn);
MemberDef *fmd;
for (fmni.toFirst(); (fmd=fmni.current()) ; ++fmni)
{
if (fmd->isEnumValue())
{
//printf("found enum value with same name\n");
if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{
NamespaceDef *fnd=fmd->getNamespaceDef();
if (fnd==nd) // enum value is inside a namespace
{
md->insertEnumField(fmd);
fmd->setEnumScope(md);
}
}
else if (isGlobal)
{
FileDef *ffd=fmd->getFileDef();
if (ffd==fd) // enum value has file scope
{
md->insertEnumField(fmd);
fmd->setEnumScope(md);
}
}
else if (isRelated && cd) // reparent enum value to
// match the enum's scope
{
md->insertEnumField(fmd); // add field def to list
fmd->setEnumScope(md); // cross ref with enum name
fmd->setEnumClassScope(cd); // cross ref with enum name
fmd->setOuterScope(cd);
fmd->makeRelated();
cd->insertMember(fmd);
}
else
{
ClassDef *fcd=fmd->getClassDef();
if (fcd==cd) // enum value is inside a class
{
//printf("Inserting enum field %s in enum scope %s\n",
// fmd->name().data(),md->name().data());
md->insertEnumField(fmd); // add field def to list
fmd->setEnumScope(md); // cross ref with enum name
}
}
}
}
}
}
}
}
}
}
rootNav->releaseEntry();
}
else
{
RECURSE_ENTRYTREE(addEnumValuesToEnums,rootNav);
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// find the documentation blocks for the enumerations // find the documentation blocks for the enumerations
...@@ -7203,7 +7381,6 @@ static void buildPageList(EntryNav *rootNav) ...@@ -7203,7 +7381,6 @@ static void buildPageList(EntryNav *rootNav)
{ {
if (rootNav->section() == Entry::PAGEDOC_SEC) if (rootNav->section() == Entry::PAGEDOC_SEC)
{ {
//printf("buildPageList %s\n",root->name.data());
rootNav->loadEntry(g_storage); rootNav->loadEntry(g_storage);
Entry *root = rootNav->entry(); Entry *root = rootNav->entry();
...@@ -8801,8 +8978,8 @@ void parseInput() ...@@ -8801,8 +8978,8 @@ void parseInput()
**************************************************************************/ **************************************************************************/
Doxygen::symbolMap = new QDict<DefinitionIntf>(1000); Doxygen::symbolMap = new QDict<DefinitionIntf>(1000);
Doxygen::symbolCache = new ObjCache(15); // 15 -> room for 32768 elements, Doxygen::symbolCache = new ObjCache(16); // 16 -> room for 65536 elements,
// ~1.0 MByte "overhead" // ~2.0 MByte "overhead"
Doxygen::symbolStorage = new Store; Doxygen::symbolStorage = new Store;
if (Doxygen::symbolStorage->open(outputDirectory+"/doxygen_objdb.tmp")==-1) if (Doxygen::symbolStorage->open(outputDirectory+"/doxygen_objdb.tmp")==-1)
...@@ -9182,6 +9359,9 @@ void parseInput() ...@@ -9182,6 +9359,9 @@ void parseInput()
msg("Building example list...\n"); msg("Building example list...\n");
buildExampleList(rootNav); buildExampleList(rootNav);
msg("Searching for enumerations...\n");
findEnums(rootNav);
msg("Searching for documented variables...\n"); msg("Searching for documented variables...\n");
buildVarList(rootNav); buildVarList(rootNav);
...@@ -9210,10 +9390,9 @@ void parseInput() ...@@ -9210,10 +9390,9 @@ void parseInput()
computeClassRelations(); computeClassRelations();
classEntries.clear(); classEntries.clear();
msg("Searching for enumerations...\n"); addEnumValuesToEnums(rootNav);
findEnums(rootNav);
findEnumDocumentation(rootNav); findEnumDocumentation(rootNav);
msg("Searching for member function documentation...\n"); msg("Searching for member function documentation...\n");
findObjCMethodDefinitions(rootNav); findObjCMethodDefinitions(rootNav);
findMemberDocumentation(rootNav); // may introduce new members ! findMemberDocumentation(rootNav); // may introduce new members !
......
...@@ -59,11 +59,13 @@ class StringDict : public QDict<QCString> ...@@ -59,11 +59,13 @@ class StringDict : public QDict<QCString>
struct LookupInfo struct LookupInfo
{ {
LookupInfo(ClassDef *cd=0,MemberDef *td=0,QCString ts="") LookupInfo() : classDef(0), typeDef(0) {}
: classDef(cd), typeDef(td), templSpec(ts) {} LookupInfo(ClassDef *cd,MemberDef *td,QCString ts,QCString rt)
: classDef(cd), typeDef(td), templSpec(ts),resolvedType(rt) {}
ClassDef *classDef; ClassDef *classDef;
MemberDef *typeDef; MemberDef *typeDef;
QCString templSpec; QCString templSpec;
QCString resolvedType;
}; };
extern QCString spaces; extern QCString spaces;
......
...@@ -93,6 +93,7 @@ FileDef::FileDef(const char *p,const char *nm, ...@@ -93,6 +93,7 @@ FileDef::FileDef(const char *p,const char *nm,
m_isJava = name().right(5)==".java"; m_isJava = name().right(5)==".java";
memberGroupSDict = 0; memberGroupSDict = 0;
acquireFileVersion(); acquireFileVersion();
m_subGrouping=Config_getBool("SUBGROUPING");
} }
/*! destroy the file definition */ /*! destroy the file definition */
...@@ -491,7 +492,8 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -491,7 +492,8 @@ void FileDef::writeDocumentation(OutputList &ol)
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
{ {
if (mg->header()!="[NOHEADER]") if ((!mg->allMembersInSameSection() || !m_subGrouping)
&& mg->header()!="[NOHEADER]")
{ {
mg->writeDeclarations(ol,0,0,this,0); mg->writeDeclarations(ol,0,0,this,0);
} }
...@@ -689,6 +691,21 @@ void FileDef::addMembersToMemberGroup() ...@@ -689,6 +691,21 @@ void FileDef::addMembersToMemberGroup()
::addMembersToMemberGroup(ml,&memberGroupSDict,this); ::addMembersToMemberGroup(ml,&memberGroupSDict,this);
} }
} }
// add members inside sections to their groups
if (memberGroupSDict)
{
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
if (mg->allMembersInSameSection() && m_subGrouping)
{
//printf("----> addToDeclarationSection(%s)\n",mg->header().data());
mg->addToDeclarationSection();
}
}
}
} }
/*! Adds member definition \a md to the list of all members of this file */ /*! Adds member definition \a md to the list of all members of this file */
...@@ -1363,6 +1380,7 @@ void FileDef::addMemberToList(MemberList::ListType lt,MemberDef *md) ...@@ -1363,6 +1380,7 @@ void FileDef::addMemberToList(MemberList::ListType lt,MemberDef *md)
{ {
ml->setInFile(TRUE); ml->setInFile(TRUE);
} }
if (ml->listType()&MemberList::declarationLists) md->setSectionList(this,ml);
} }
MemberList *FileDef::getMemberList(MemberList::ListType lt) const MemberList *FileDef::getMemberList(MemberList::ListType lt) const
......
...@@ -214,6 +214,7 @@ class FileDef : public Definition ...@@ -214,6 +214,7 @@ class FileDef : public Definition
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
NamespaceSDict *namespaceSDict; NamespaceSDict *namespaceSDict;
ClassSDict *classSDict; ClassSDict *classSDict;
bool m_subGrouping;
}; };
......
...@@ -37,20 +37,15 @@ class LockableObj ...@@ -37,20 +37,15 @@ class LockableObj
/*! Returns TRUE if the object is currently locked. */ /*! Returns TRUE if the object is currently locked. */
bool isLocked() const { return m_lockCount>0; } bool isLocked() const { return m_lockCount>0; }
#ifndef _WIN32
protected: protected:
#endif
/*! Called when the object is locked. */ /*! Called when the object is locked. */
virtual void lock() const = 0; virtual void lock() const = 0;
/*! Called when the object is unlocked. */ /*! Called when the object is unlocked. */
virtual void unlock() const = 0; virtual void unlock() const = 0;
#ifndef _WIN32 // HACK: VC++ 6.0 does not understand friend template classes.
private: private:
template<class T> friend class LockingPtr; template<class T> friend class LockingPtr;
#endif
int m_lockCount; int m_lockCount;
}; };
......
...@@ -7,17 +7,17 @@ ...@@ -7,17 +7,17 @@
#include "store.h" #include "store.h"
class ArgumentList; class ArgumentList;
class BaseInfo; struct BaseInfo;
class Grouping; struct Grouping;
class SectionInfo; struct SectionInfo;
class ListItemInfo; struct ListItemInfo;
class QCString; class QCString;
class QGString; class QGString;
class SectionDict; class SectionDict;
class MemberSDict; class MemberSDict;
class GroupList; class GroupList;
class BodyInfo; struct BodyInfo;
class DocInfo; struct DocInfo;
class MemberList; class MemberList;
class ExampleSDict; class ExampleSDict;
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "searchindex.h" #include "searchindex.h"
#include "parserintf.h" #include "parserintf.h"
#include "marshal.h" #include "marshal.h"
#include "objcache.h"
#define START_MARKER 0x4D454D5B // MEM[ #define START_MARKER 0x4D454D5B // MEM[
#define END_MARKER 0x4D454D5D // MEM] #define END_MARKER 0x4D454D5D // MEM]
...@@ -367,6 +368,7 @@ class MemberDefImpl ...@@ -367,6 +368,7 @@ class MemberDefImpl
bool isTypedefValCached; bool isTypedefValCached;
ClassDef *cachedTypedefValue; ClassDef *cachedTypedefValue;
QCString cachedTypedefTemplSpec; QCString cachedTypedefTemplSpec;
QCString cachedResolvedType;
// inbody documentation // inbody documentation
int inbodyLine; int inbodyLine;
...@@ -574,8 +576,11 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -574,8 +576,11 @@ MemberDef::MemberDef(const char *df,int dl,
const ArgumentList *tal,const ArgumentList *al const ArgumentList *tal,const ArgumentList *al
) : Definition(df,dl,removeRedundantWhiteSpace(na)) ) : Definition(df,dl,removeRedundantWhiteSpace(na))
{ {
m_storagePos=-1;
m_cacheHandle=-1;
m_impl = new MemberDefImpl; m_impl = new MemberDefImpl;
m_impl->init(this,t,a,e,p,v,s,r,mt,tal,al); m_impl->init(this,t,a,e,p,v,s,r,mt,tal,al);
m_flushPending = FALSE;
#if 0 #if 0
//printf("++++++ MemberDef(%s file=%s,line=%d static=%d) ++++++ \n", //printf("++++++ MemberDef(%s file=%s,line=%d static=%d) ++++++ \n",
...@@ -697,6 +702,11 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -697,6 +702,11 @@ MemberDef::MemberDef(const char *df,int dl,
MemberDef::~MemberDef() MemberDef::~MemberDef()
{ {
delete m_impl; delete m_impl;
if (m_cacheHandle!=-1)
{
Doxygen::symbolCache->del(m_cacheHandle);
m_cacheHandle=-1;
}
} }
void MemberDef::setReimplements(MemberDef *md) void MemberDef::setReimplements(MemberDef *md)
...@@ -774,7 +784,10 @@ QCString MemberDef::getOutputFileBase() const ...@@ -774,7 +784,10 @@ QCString MemberDef::getOutputFileBase() const
makeResident(); makeResident();
static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES"); static bool separateMemberPages = Config_getBool("SEPARATE_MEMBER_PAGES");
QCString baseName; QCString baseName;
if (m_impl->explicitOutputFileBase) //printf("Member: %s: templateMaster=%p group=%p classDef=%p nspace=%p fileDef=%p\n",
// name().data(),m_impl->templateMaster,m_impl->group,m_impl->classDef,
// m_impl->nspace,m_impl->fileDef);
if (!m_impl->explicitOutputFileBase.isEmpty())
{ {
return m_impl->explicitOutputFileBase; return m_impl->explicitOutputFileBase;
} }
...@@ -805,6 +818,7 @@ QCString MemberDef::getOutputFileBase() const ...@@ -805,6 +818,7 @@ QCString MemberDef::getOutputFileBase() const
"Warning: Internal inconsistency: member %s does not belong to any" "Warning: Internal inconsistency: member %s does not belong to any"
" container!",name().data() " container!",name().data()
); );
exit(1);
return "dummy"; return "dummy";
} }
else if (separateMemberPages) else if (separateMemberPages)
...@@ -3375,6 +3389,12 @@ QCString MemberDef::getCachedTypedefTemplSpec() const ...@@ -3375,6 +3389,12 @@ QCString MemberDef::getCachedTypedefTemplSpec() const
return m_impl->cachedTypedefTemplSpec; return m_impl->cachedTypedefTemplSpec;
} }
QCString MemberDef::getCachedResolvedTypedef() const
{
makeResident();
return m_impl->cachedResolvedType;
}
MemberDef *MemberDef::memberDefinition() const MemberDef *MemberDef::memberDefinition() const
{ {
makeResident(); makeResident();
...@@ -3591,21 +3611,24 @@ void MemberDef::setMemberDeclaration(MemberDef *md) ...@@ -3591,21 +3611,24 @@ void MemberDef::setMemberDeclaration(MemberDef *md)
m_impl->memDec=md; m_impl->memDec=md;
} }
void MemberDef::cacheTypedefVal(ClassDef*val, QCString const& templSpec) void MemberDef::cacheTypedefVal(ClassDef*val, const QCString & templSpec, const QCString &resolvedType)
{ {
makeResident(); makeResident();
m_impl->isTypedefValCached=TRUE; m_impl->isTypedefValCached=TRUE;
m_impl->cachedTypedefValue=val; m_impl->cachedTypedefValue=val;
m_impl->cachedTypedefTemplSpec=templSpec; m_impl->cachedTypedefTemplSpec=templSpec;
m_impl->cachedResolvedType=resolvedType;
} }
void MemberDef::flushToDisk() const void MemberDef::flushToDisk() const
{ {
if (isLocked()) return;
MemberDef *that = (MemberDef*)this;
that->m_storagePos = Doxygen::symbolStorage->alloc();
//printf("%p: MemberDef::flushToDisk()\n",this); //printf("%p: MemberDef::flushToDisk()\n",this);
// write the definition base class member variables to disk // write the definition base class member variables to disk
Definition::flushToDisk(); Definition::flushToDisk();
if (isLocked()) return;
//printf("%p: flushing specific part\n",this); //printf("%p: flushing specific part\n",this);
// write the memberdef member variables to disk // write the memberdef member variables to disk
...@@ -3658,6 +3681,7 @@ void MemberDef::flushToDisk() const ...@@ -3658,6 +3681,7 @@ void MemberDef::flushToDisk() const
marshalBool (Doxygen::symbolStorage,m_impl->isTypedefValCached); marshalBool (Doxygen::symbolStorage,m_impl->isTypedefValCached);
marshalObjPointer (Doxygen::symbolStorage,m_impl->cachedTypedefValue); marshalObjPointer (Doxygen::symbolStorage,m_impl->cachedTypedefValue);
marshalQCString (Doxygen::symbolStorage,m_impl->cachedTypedefTemplSpec); marshalQCString (Doxygen::symbolStorage,m_impl->cachedTypedefTemplSpec);
marshalQCString (Doxygen::symbolStorage,m_impl->cachedResolvedType);
marshalInt (Doxygen::symbolStorage,m_impl->inbodyLine); marshalInt (Doxygen::symbolStorage,m_impl->inbodyLine);
marshalQCString (Doxygen::symbolStorage,m_impl->inbodyFile); marshalQCString (Doxygen::symbolStorage,m_impl->inbodyFile);
marshalQCString (Doxygen::symbolStorage,m_impl->inbodyDocs); marshalQCString (Doxygen::symbolStorage,m_impl->inbodyDocs);
...@@ -3682,25 +3706,27 @@ void MemberDef::flushToDisk() const ...@@ -3682,25 +3706,27 @@ void MemberDef::flushToDisk() const
marshalUInt(Doxygen::symbolStorage,END_MARKER); marshalUInt(Doxygen::symbolStorage,END_MARKER);
// function doesn't modify the object conceptually but compiler doesn't know this. // function doesn't modify the object conceptually but compiler doesn't know this.
MemberDef *that = (MemberDef *)this;
delete that->m_impl; delete that->m_impl;
that->m_impl=0; that->m_impl=0;
that->m_flushPending=FALSE;
} }
void MemberDef::loadFromDisk() const void MemberDef::loadFromDisk() const
{ {
//printf("%p: MemberDef::loadFromDisk()\n",this); //printf("%p: MemberDef::loadFromDisk()\n",this);
Definition::loadFromDisk(); MemberDef *that = (MemberDef *)this;
if (isLocked()) if (isLocked())
{ {
assert(m_impl!=0); assert(m_impl!=0);
return; return;
} }
assert(m_impl==0); assert(m_impl==0);
Doxygen::symbolStorage->seek(m_storagePos);
Definition::loadFromDisk();
//printf("%p: loading specific part\n",this); //printf("%p: loading specific part\n",this);
MemberDef *that = (MemberDef *)this;
that->m_impl = new MemberDefImpl; that->m_impl = new MemberDefImpl;
uint marker = unmarshalUInt(Doxygen::symbolStorage); uint marker = unmarshalUInt(Doxygen::symbolStorage);
...@@ -3753,6 +3779,7 @@ void MemberDef::loadFromDisk() const ...@@ -3753,6 +3779,7 @@ void MemberDef::loadFromDisk() const
m_impl->isTypedefValCached = unmarshalBool (Doxygen::symbolStorage); m_impl->isTypedefValCached = unmarshalBool (Doxygen::symbolStorage);
m_impl->cachedTypedefValue = (ClassDef*)unmarshalObjPointer (Doxygen::symbolStorage); m_impl->cachedTypedefValue = (ClassDef*)unmarshalObjPointer (Doxygen::symbolStorage);
m_impl->cachedTypedefTemplSpec = unmarshalQCString (Doxygen::symbolStorage); m_impl->cachedTypedefTemplSpec = unmarshalQCString (Doxygen::symbolStorage);
m_impl->cachedResolvedType = unmarshalQCString (Doxygen::symbolStorage);
m_impl->inbodyLine = unmarshalInt (Doxygen::symbolStorage); m_impl->inbodyLine = unmarshalInt (Doxygen::symbolStorage);
m_impl->inbodyFile = unmarshalQCString (Doxygen::symbolStorage); m_impl->inbodyFile = unmarshalQCString (Doxygen::symbolStorage);
m_impl->inbodyDocs = unmarshalQCString (Doxygen::symbolStorage); m_impl->inbodyDocs = unmarshalQCString (Doxygen::symbolStorage);
...@@ -3778,3 +3805,84 @@ void MemberDef::loadFromDisk() const ...@@ -3778,3 +3805,84 @@ void MemberDef::loadFromDisk() const
assert(marker==END_MARKER); assert(marker==END_MARKER);
} }
void MemberDef::makeResident() const
{
if (m_cacheHandle==-1) // not yet in cache
{
MemberDef *victim = 0;
MemberDef *that = (MemberDef*)this; // fake method constness
that->m_cacheHandle = Doxygen::symbolCache->add(that,(void **)&victim);
//printf("adding %s to cache, handle=%d\n",m_impl->name.data(),that->m_cacheHandle);
if (victim) // cache was full, victim was the least recently used item and has to go
{
victim->m_cacheHandle=-1; // invalidate cache handle
victim->saveToDisk(); // store the item on disk
}
else // cache not yet full
{
//printf("Adding %s to cache, handle=%d\n",m_impl->name.data(),m_cacheHandle);
}
if (m_storagePos!=-1) // already been written to disk
{
if (isLocked()) // locked in memory
{
assert(m_impl!=0);
that->m_flushPending=FALSE; // no need to flush anymore
}
else // not locked in memory
{
assert(m_impl==0);
loadFromDisk();
}
}
}
else // already cached, make this object the most recently used.
{
assert(m_impl!=0);
//printf("Touching symbol %s\n",m_impl->name.data());
Doxygen::symbolCache->use(m_cacheHandle);
}
}
void MemberDef::saveToDisk() const
{
assert(m_impl!=0);
MemberDef *that = (MemberDef *)this;
if (isLocked()) // cannot flush the item as it is locked
{
that->m_flushPending=TRUE; // flush when unlocked
}
else // ready to flush the item to disk
{
//printf("Adding %s to cache, handle=%d by replacing %s\n",
// m_impl->name.data(),m_cacheHandle,victim->m_impl->name.data());
if (m_storagePos!=-1)
// if victim was stored on disk already and is not locked
{
// free the storage space occupied by the old store item
Doxygen::symbolStorage->release(m_storagePos); // free up space for others
}
// write a the new (possibly modified) instance to disk
flushToDisk();
// end to write sequence (unless nothing was written due to the lock)
Doxygen::symbolStorage->end();
}
}
void MemberDef::lock() const
{
}
void MemberDef::unlock() const
{
if (m_flushPending && !isLocked())
{
// write a the new (possibly modified) instance to disk
flushToDisk();
// end to write sequence (unless nothing was written due to the lock)
Doxygen::symbolStorage->end();
}
}
...@@ -209,6 +209,7 @@ class MemberDef : public Definition ...@@ -209,6 +209,7 @@ class MemberDef : public Definition
bool isTypedefValCached() const; bool isTypedefValCached() const;
ClassDef *getCachedTypedefVal() const; ClassDef *getCachedTypedefVal() const;
QCString getCachedTypedefTemplSpec() const; QCString getCachedTypedefTemplSpec() const;
QCString getCachedResolvedTypedef() const;
MemberDef *memberDefinition() const; MemberDef *memberDefinition() const;
MemberDef *memberDeclaration() const; MemberDef *memberDeclaration() const;
...@@ -294,7 +295,7 @@ class MemberDef : public Definition ...@@ -294,7 +295,7 @@ class MemberDef : public Definition
void setDocsForDefinition(bool b); void setDocsForDefinition(bool b);
void setGroupAlias(MemberDef *md); void setGroupAlias(MemberDef *md);
void cacheTypedefVal(ClassDef *val,const QCString &templSpec); void cacheTypedefVal(ClassDef *val,const QCString &templSpec,const QCString &resolvedType);
void invalidateTypedefValCache(); void invalidateTypedefValCache();
// declaration <-> definition relation // declaration <-> definition relation
...@@ -330,6 +331,11 @@ class MemberDef : public Definition ...@@ -330,6 +331,11 @@ class MemberDef : public Definition
void flushToDisk() const; void flushToDisk() const;
void loadFromDisk() const; void loadFromDisk() const;
private: private:
void lock() const;
void unlock() const;
void saveToDisk() const;
void makeResident() const;
static int s_indentLevel; static int s_indentLevel;
// disable copying of member defs // disable copying of member defs
MemberDef(const MemberDef &); MemberDef(const MemberDef &);
...@@ -340,6 +346,9 @@ class MemberDef : public Definition ...@@ -340,6 +346,9 @@ class MemberDef : public Definition
bool onlyText=FALSE); bool onlyText=FALSE);
MemberDefImpl *m_impl; MemberDefImpl *m_impl;
int m_cacheHandle;
off_t m_storagePos; // location where the item is stored in file (if impl==0)
bool m_flushPending;
}; };
#endif #endif
...@@ -133,6 +133,7 @@ void MemberGroup::addToDeclarationSection() ...@@ -133,6 +133,7 @@ void MemberGroup::addToDeclarationSection()
{ {
if (inDeclSection) if (inDeclSection)
{ {
//printf("Adding group %p to list %p\n",this,inDeclSection);
inDeclSection->addMemberGroup(this); inDeclSection->addMemberGroup(this);
} }
} }
......
...@@ -316,7 +316,8 @@ void MemberList::writeDeclarations(OutputList &ol, ...@@ -316,7 +316,8 @@ void MemberList::writeDeclarations(OutputList &ol,
//printf("----- writeDeclaration() ----\n"); //printf("----- writeDeclaration() ----\n");
countDecMembers(showEnumValues); // count member not in group countDecMembers(showEnumValues); // count member not in group
if (numDecMembers()==0) return; if (numDecMembers()==0) return;
//printf("MemberList::writeDeclaration(title=`%s',subtitle=`%s')=%d\n",title,subtitle,numDecMembers()); //printf("%p: MemberList::writeDeclaration(title=`%s',subtitle=`%s')=%d\n",
// this,title,subtitle,numDecMembers());
if (title) if (title)
{ {
ol.startMemberHeader(); ol.startMemberHeader();
......
...@@ -51,6 +51,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl, ...@@ -51,6 +51,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
memberGroupSDict = new MemberGroupSDict; memberGroupSDict = new MemberGroupSDict;
memberGroupSDict->setAutoDelete(TRUE); memberGroupSDict->setAutoDelete(TRUE);
visited=FALSE; visited=FALSE;
m_subGrouping=Config_getBool("SUBGROUPING");
} }
NamespaceDef::~NamespaceDef() NamespaceDef::~NamespaceDef()
...@@ -151,6 +152,21 @@ void NamespaceDef::addMembersToMemberGroup() ...@@ -151,6 +152,21 @@ void NamespaceDef::addMembersToMemberGroup()
::addMembersToMemberGroup(ml,&memberGroupSDict,this); ::addMembersToMemberGroup(ml,&memberGroupSDict,this);
} }
} }
// add members inside sections to their groups
if (memberGroupSDict)
{
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
if (mg->allMembersInSameSection() && m_subGrouping)
{
//printf("----> addToDeclarationSection(%s)\n",mg->header().data());
mg->addToDeclarationSection();
}
}
}
} }
void NamespaceDef::insertMember(MemberDef *md) void NamespaceDef::insertMember(MemberDef *md)
...@@ -316,11 +332,18 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -316,11 +332,18 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
namespaceSDict->writeDeclaration(ol,TRUE); namespaceSDict->writeDeclaration(ol,TRUE);
/* write user defined member groups */ /* write user defined member groups */
MemberGroupSDict::Iterator mgli(*memberGroupSDict); if (memberGroupSDict)
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{ {
mg->writeDeclarations(ol,0,this,0,0); MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
if ((!mg->allMembersInSameSection() || !m_subGrouping)
&& mg->header()!="[NOHEADER]")
{
mg->writeDeclarations(ol,0,this,0,0);
}
}
} }
writeMemberDeclarations(ol,MemberList::decDefineMembers,theTranslator->trDefines()); writeMemberDeclarations(ol,MemberList::decDefineMembers,theTranslator->trDefines());
...@@ -676,6 +699,7 @@ void NamespaceDef::addMemberToList(MemberList::ListType lt,MemberDef *md) ...@@ -676,6 +699,7 @@ void NamespaceDef::addMemberToList(MemberList::ListType lt,MemberDef *md)
ml->inSort(md); ml->inSort(md);
else else
ml->append(md); ml->append(md);
if (ml->listType()&MemberList::declarationLists) md->setSectionList(this,ml);
} }
MemberList *NamespaceDef::getMemberList(MemberList::ListType lt) const MemberList *NamespaceDef::getMemberList(MemberList::ListType lt) const
......
...@@ -106,7 +106,7 @@ class NamespaceDef : public Definition ...@@ -106,7 +106,7 @@ class NamespaceDef : public Definition
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
ClassSDict *classSDict; ClassSDict *classSDict;
NamespaceSDict *namespaceSDict; NamespaceSDict *namespaceSDict;
bool m_subGrouping;
}; };
class NamespaceList : public QList<NamespaceDef> class NamespaceList : public QList<NamespaceDef>
......
...@@ -176,16 +176,31 @@ void ObjCache::moveToFront(int index) ...@@ -176,16 +176,31 @@ void ObjCache::moveToFront(int index)
unsigned int ObjCache::hash(void *addr) unsigned int ObjCache::hash(void *addr)
{ {
// Thomas Wang's 32 bit Mix Function static bool isPtr64 = sizeof(addr)==8 && sizeof(long)==8;
// TODO: what if sizeof(void*)!=4 ? unsigned long key = (unsigned long)addr;
unsigned int key = (unsigned int)addr; if (isPtr64)
key += ~(key << 15); {
key ^= (key >> 10); // Thomas Wang's 64 bit Mix Function
key += (key << 3); key += ~(key << 32);
key ^= (key >> 6); key ^= (key >> 22);
key += ~(key << 11); key += ~(key << 13);
key ^= (key >> 16); key ^= (key >> 8);
key += (key << 3);
key ^= (key >> 15);
key += ~(key << 27);
key ^= (key >> 31);
}
else
{
// Thomas Wang's 32 bit Mix Function
key += ~(key << 15);
key ^= (key >> 10);
key += (key << 3);
key ^= (key >> 6);
key += ~(key << 11);
key ^= (key >> 16);
}
return key & (m_size-1); return key & (m_size-1);
} }
......
...@@ -69,6 +69,7 @@ struct FileState ...@@ -69,6 +69,7 @@ struct FileState
static int g_yyLineNr = 1; static int g_yyLineNr = 1;
static QCString g_yyFileName; static QCString g_yyFileName;
static FileDef *g_yyFileDef; static FileDef *g_yyFileDef;
static FileDef *g_inputFileDef;
static int g_ifcount = 0; static int g_ifcount = 0;
static QStrList *g_pathList = 0; static QStrList *g_pathList = 0;
static QStack<FileState> g_includeStack; static QStack<FileState> g_includeStack;
...@@ -1043,17 +1044,13 @@ void addDefine() ...@@ -1043,17 +1044,13 @@ void addDefine()
} }
md->setInitializer(g_defLitText.stripWhiteSpace()); md->setInitializer(g_defLitText.stripWhiteSpace());
//md->setDefFile(g_yyFileName); md->setFileDef(g_inputFileDef);
//md->setDefLine(g_yyLineNr);
md->setFileDef(g_yyFileDef);
md->setDefinition("#define "+g_defName); md->setDefinition("#define "+g_defName);
MemberName *mn=Doxygen::functionNameSDict->find(g_defName); MemberName *mn=Doxygen::functionNameSDict->find(g_defName);
if (mn==0) if (mn==0)
{ {
mn = new MemberName(g_defName); mn = new MemberName(g_defName);
//Doxygen::functionNameList.append(mn);
//Doxygen::functionNameDict.insert(g_defName,mn);
Doxygen::functionNameSDict->append(g_defName,mn); Doxygen::functionNameSDict->append(g_defName,mn);
} }
mn->append(md); mn->append(md);
...@@ -1790,6 +1787,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -1790,6 +1787,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_insideComment=FALSE; g_insideComment=FALSE;
BEGIN(DefineText); BEGIN(DefineText);
} }
<DefineArg>"..." { // Variadic macro
g_defVarArgs = TRUE;
g_defArgsStr+=yytext;
g_argDict->insert("__VA_ARGS__",new int(g_defArgs));
g_defArgs++;
}
<DefineArg>{ID}{B}*("..."?) { <DefineArg>{ID}{B}*("..."?) {
//printf("Define addArg(%s)\n",yytext); //printf("Define addArg(%s)\n",yytext);
QCString argName=yytext; QCString argName=yytext;
...@@ -2372,6 +2375,7 @@ void preprocessFile(const char *fileName,BufStr &output) ...@@ -2372,6 +2375,7 @@ void preprocessFile(const char *fileName,BufStr &output)
g_level = 0; g_level = 0;
g_ifcount = 0; g_ifcount = 0;
setFileName(fileName); setFileName(fileName);
g_inputFileDef = g_yyFileDef;
BEGIN( Start ); BEGIN( Start );
g_lastGuardName.resize(0); g_lastGuardName.resize(0);
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
#ifndef TRANSLATOR_JP_H #ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H #define TRANSLATOR_JP_H
class TranslatorJapanese : public TranslatorAdapter_1_4_6 class TranslatorJapanese : public Translator
{ {
private: private:
/*! The decode() can change euc into sjis */ /*! The decode() can change euc into sjis */
...@@ -453,12 +453,6 @@ class TranslatorJapanese : public TranslatorAdapter_1_4_6 ...@@ -453,12 +453,6 @@ class TranslatorJapanese : public TranslatorAdapter_1_4_6
virtual QCString trEnumerationTypeDocumentation() virtual QCString trEnumerationTypeDocumentation()
{ return decode("列挙型"); } { return decode("列挙型"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return decode("列挙型の値"); }
/*! 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 functions * of documentation blocks for functions
*/ */
...@@ -1562,5 +1556,23 @@ class TranslatorJapanese : public TranslatorAdapter_1_4_6 ...@@ -1562,5 +1556,23 @@ class TranslatorJapanese : public TranslatorAdapter_1_4_6
"利便性のために用意されています。" "利便性のために用意されています。"
"元の関数との違いは引き数のみです。"); "元の関数との違いは引き数のみです。");
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.4.6
//////////////////////////////////////////////////////////////////////////
/*! This is used to introduce a caller (or called-by) graph */
virtual QCString trCallerGraph()
{
// return "Here is the caller graph for this function:";
return "呼出しグラフ:";
}
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return "列挙型"; }
}; };
#endif #endif
...@@ -594,7 +594,8 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -594,7 +594,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *n, const char *n,
MemberDef **pTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec QCString *pTemplSpec,
QCString *pResolvedType
); );
int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item, int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item,
const QCString &explicitScopePart); const QCString &explicitScopePart);
...@@ -607,7 +608,8 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition ...@@ -607,7 +608,8 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition
* Example: typedef int T; will return 0, since "int" is not a class. * Example: typedef int T; will return 0, since "int" is not a class.
*/ */
ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
MemberDef **pMemType,QCString *pTemplSpec) MemberDef **pMemType,QCString *pTemplSpec,
QCString *pResolvedType)
{ {
//printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal()); //printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal());
bool isCached = md->isTypedefValCached(); // value already cached bool isCached = md->isTypedefValCached(); // value already cached
...@@ -616,7 +618,8 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ...@@ -616,7 +618,8 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
//printf("Already cached %s->%s\n", //printf("Already cached %s->%s\n",
// md->name().data(), // md->name().data(),
// md->getCachedTypedefVal()?md->getCachedTypedefVal()->name().data():"<none>"); // md->getCachedTypedefVal()?md->getCachedTypedefVal()->name().data():"<none>");
if (pTemplSpec) *pTemplSpec = md->getCachedTypedefTemplSpec(); if (pTemplSpec) *pTemplSpec = md->getCachedTypedefTemplSpec();
if (pResolvedType) *pResolvedType = md->getCachedResolvedTypedef();
return md->getCachedTypedefVal(); return md->getCachedTypedefVal();
} }
QCString qname = md->qualifiedName(); QCString qname = md->qualifiedName();
...@@ -625,29 +628,33 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ...@@ -625,29 +628,33 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
g_resolvedTypedefs.insert(qname,md); // put on the trace list g_resolvedTypedefs.insert(qname,md); // put on the trace list
QCString type = md->typeString(); // get the "value" of the typedef QCString type = md->typeString(); // get the "value" of the typedef
int ip=type.length()-1; // remove * and & at the end QCString typedefValue = type;
int tl=type.length();
int ip=tl-1; // remove * and & at the end
while (ip>=0 && (type.at(ip)=='*' || type.at(ip)=='&' || type.at(ip)==' ')) while (ip>=0 && (type.at(ip)=='*' || type.at(ip)=='&' || type.at(ip)==' '))
{ {
ip--; ip--;
} }
type=type.left(ip+1); type=type.left(ip+1);
type.stripPrefix("const "); // strip leading "const" int sp=0;
type.stripPrefix("struct "); // strip leading "struct" if (type.stripPrefix("const ")) sp+=6; // strip leading "const"
type.stripPrefix("union "); // strip leading "union" if (type.stripPrefix("struct ")) sp+=7; // strip leading "struct"
type=type.stripWhiteSpace(); // strip leading and trailing whitespace if (type.stripPrefix("union ")) sp+=6; // strip leading "union"
while (sp<tl && type.at(sp)==' ') sp++;
MemberDef *memTypeDef = 0; MemberDef *memTypeDef = 0;
ClassDef *result = getResolvedClassRec(md->getOuterScope(), ClassDef *result = getResolvedClassRec(md->getOuterScope(),
fileScope,type,&memTypeDef,0); fileScope,type,&memTypeDef,0,pResolvedType);
// if type is a typedef than return what it resolves to. // if type is a typedef then return what it resolves to.
if (memTypeDef && memTypeDef->isTypedef()) if (memTypeDef && memTypeDef->isTypedef())
{ {
return newResolveTypedef(fileScope,memTypeDef,pMemType,pTemplSpec); result=newResolveTypedef(fileScope,memTypeDef,pMemType,pTemplSpec);
goto done;
} }
else if (memTypeDef && memTypeDef->isEnumerate() && pMemType) else if (memTypeDef && memTypeDef->isEnumerate() && pMemType)
{ {
*pMemType = memTypeDef; *pMemType = memTypeDef;
} }
//printf("type=%s result=%p\n",type.data(),result); //printf("type=%s result=%p\n",type.data(),result);
if (result==0) if (result==0)
{ {
...@@ -656,8 +663,9 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ...@@ -656,8 +663,9 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
int i=type.find('<'); int i=type.find('<');
if (si==-1 && i!=-1) // typedef of a template => try the unspecialized version if (si==-1 && i!=-1) // typedef of a template => try the unspecialized version
{ {
*pTemplSpec = type.mid(i); if (pTemplSpec) *pTemplSpec = type.mid(i);
result = getResolvedClassRec(md->getOuterScope(),fileScope,type.left(i),0,0); result = getResolvedClassRec(md->getOuterScope(),fileScope,
type.left(i),0,0,pResolvedType);
} }
else if (si!=-1) // A::B else if (si!=-1) // A::B
{ {
...@@ -671,7 +679,25 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ...@@ -671,7 +679,25 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
if (pTemplSpec) *pTemplSpec = type.mid(i); if (pTemplSpec) *pTemplSpec = type.mid(i);
} }
result = getResolvedClassRec(md->getOuterScope(),fileScope, result = getResolvedClassRec(md->getOuterScope(),fileScope,
stripTemplateSpecifiersFromScope(type.left(i),FALSE),0,0); stripTemplateSpecifiersFromScope(type.left(i),FALSE),0,0,
pResolvedType);
}
if (result) ip=si+sp+1;
}
done:
if (pResolvedType)
{
if (result)
{
*pResolvedType=result->qualifiedName();
if (sp>0) pResolvedType->prepend(typedefValue.left(sp));
if (ip<tl-1) pResolvedType->append(typedefValue.right(tl-ip-1));
}
else
{
*pResolvedType=typedefValue;
} }
} }
...@@ -682,14 +708,10 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ...@@ -682,14 +708,10 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
{ {
//printf("setting cached typedef %p in result %p\n",md,result); //printf("setting cached typedef %p in result %p\n",md,result);
//printf("==> %s (%s,%d)\n",result->name().data(),result->getDefFileName().data(),result->getDefLine()); //printf("==> %s (%s,%d)\n",result->name().data(),result->getDefFileName().data(),result->getDefLine());
if (pTemplSpec) md->cacheTypedefVal(result,
{ pTemplSpec ? *pTemplSpec : QCString(),
md->cacheTypedefVal(result,*pTemplSpec); pResolvedType ? *pResolvedType : QCString()
} );
else
{
md->cacheTypedefVal(result,"");
}
} }
g_resolvedTypedefs.remove(qname); // remove from the trace list g_resolvedTypedefs.remove(qname); // remove from the trace list
...@@ -914,7 +936,15 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item) ...@@ -914,7 +936,15 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item)
int result=0; // assume we found it int result=0; // assume we found it
int i; int i;
if (item->getOuterScope()==scope) Definition *itemScope=item->getOuterScope();
if (itemScope==scope ||
(item->definitionType()==Definition::TypeMember &&
itemScope && itemScope->definitionType()==Definition::TypeClass &&
scope->definitionType()==Definition::TypeClass &&
((ClassDef*)scope)->isAccessibleMember((MemberDef *)item)
)
)
{ {
//printf("> found it\n"); //printf("> found it\n");
} }
...@@ -1118,14 +1148,15 @@ int computeQualifiedIndex(const QCString &name) ...@@ -1118,14 +1148,15 @@ int computeQualifiedIndex(const QCString &name)
return name.findRev("::",i==-1 ? name.length() : i); return name.findRev("::",i==-1 ? name.length() : i);
} }
void getResolvedSymbol(Definition *scope, static void getResolvedSymbol(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
Definition *d, Definition *d,
const QCString &explicitScopePart, const QCString &explicitScopePart,
int &minDistance, int &minDistance,
ClassDef *&bestMatch, ClassDef *&bestMatch,
MemberDef *&bestTypedef, MemberDef *&bestTypedef,
QCString &bestTemplSpec QCString &bestTemplSpec,
QCString &bestResolvedType
) )
{ {
//printf(" found type %x name=%s d=%p\n", //printf(" found type %x name=%s d=%p\n",
...@@ -1161,6 +1192,7 @@ void getResolvedSymbol(Definition *scope, ...@@ -1161,6 +1192,7 @@ void getResolvedSymbol(Definition *scope,
bestMatch = cd; bestMatch = cd;
bestTypedef = 0; bestTypedef = 0;
bestTemplSpec.resize(0); bestTemplSpec.resize(0);
bestResolvedType = cd->qualifiedName();
} }
else if (distance==minDistance && else if (distance==minDistance &&
fileScope && bestMatch && fileScope && bestMatch &&
...@@ -1181,6 +1213,7 @@ void getResolvedSymbol(Definition *scope, ...@@ -1181,6 +1213,7 @@ void getResolvedSymbol(Definition *scope,
bestMatch = cd; bestMatch = cd;
bestTypedef = 0; bestTypedef = 0;
bestTemplSpec.resize(0); bestTemplSpec.resize(0);
bestResolvedType = cd->qualifiedName();
} }
} }
else else
...@@ -1206,22 +1239,25 @@ void getResolvedSymbol(Definition *scope, ...@@ -1206,22 +1239,25 @@ void getResolvedSymbol(Definition *scope,
if (distance<minDistance) if (distance<minDistance)
{ {
QCString spec; QCString spec;
QCString type;
minDistance=distance; minDistance=distance;
MemberDef *enumType = 0; MemberDef *enumType = 0;
ClassDef *cd = newResolveTypedef(fileScope,md,&enumType,&spec); ClassDef *cd = newResolveTypedef(fileScope,md,&enumType,&spec,&type);
if (cd) // shouldn't be 0, but could in some weird cases if (cd) // type resolves to a class
{ {
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data()); //printf(" bestTypeDef=%p spec=%s type=%s\n",md,spec.data(),type.data());
bestMatch = cd; bestMatch = cd;
bestTypedef = md; bestTypedef = md;
bestTemplSpec = spec; bestTemplSpec = spec;
bestResolvedType = type;
} }
else if (enumType) else if (enumType) // type resolves to a enum
{ {
//printf(" is enum\n"); //printf(" is enum\n");
bestMatch = 0; bestMatch = 0;
bestTypedef = enumType; bestTypedef = enumType;
bestTemplSpec = ""; bestTemplSpec = "";
bestResolvedType = enumType->qualifiedName();
} }
else else
{ {
...@@ -1246,6 +1282,7 @@ void getResolvedSymbol(Definition *scope, ...@@ -1246,6 +1282,7 @@ void getResolvedSymbol(Definition *scope,
bestMatch = 0; bestMatch = 0;
bestTypedef = md; bestTypedef = md;
bestTemplSpec = ""; bestTemplSpec = "";
bestResolvedType = md->qualifiedName();
} }
} }
} }
...@@ -1255,6 +1292,7 @@ void getResolvedSymbol(Definition *scope, ...@@ -1255,6 +1292,7 @@ void getResolvedSymbol(Definition *scope,
//printf(" Not accessible!\n"); //printf(" Not accessible!\n");
} }
} // if definition is a class or member } // if definition is a class or member
//printf(" bestMatch=%p bestResolvedType=%s\n",bestMatch,bestResolvedType.data());
} }
/* Find the fully qualified class name refered to by the input class /* Find the fully qualified class name refered to by the input class
...@@ -1267,7 +1305,8 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1267,7 +1305,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *n, const char *n,
MemberDef **pTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec QCString *pTemplSpec,
QCString *pResolvedType
) )
{ {
//printf("[getResolvedClassRec(%s,%s)\n",scope?scope->name().data():"<global>",n); //printf("[getResolvedClassRec(%s,%s)\n",scope?scope->name().data():"<global>",n);
...@@ -1345,8 +1384,9 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1345,8 +1384,9 @@ ClassDef *getResolvedClassRec(Definition *scope,
//printf("Searching for %s result=%p\n",key.data(),pval); //printf("Searching for %s result=%p\n",key.data(),pval);
if (pval) if (pval)
{ {
if (pTemplSpec) *pTemplSpec=pval->templSpec; if (pTemplSpec) *pTemplSpec=pval->templSpec;
if (pTypeDef) *pTypeDef=pval->typeDef; if (pTypeDef) *pTypeDef=pval->typeDef;
if (pResolvedType) *pResolvedType=pval->resolvedType;
//printf("] cachedMatch=%s\n", //printf("] cachedMatch=%s\n",
// pval->classDef?pval->classDef->name().data():"<none>"); // pval->classDef?pval->classDef->name().data():"<none>");
//if (pTemplSpec) //if (pTemplSpec)
...@@ -1362,6 +1402,7 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1362,6 +1402,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
ClassDef *bestMatch=0; ClassDef *bestMatch=0;
MemberDef *bestTypedef=0; MemberDef *bestTypedef=0;
QCString bestTemplSpec; QCString bestTemplSpec;
QCString bestResolvedType;
int minDistance=10000; // init at "infinite" int minDistance=10000; // init at "infinite"
if (di->definitionType()==DefinitionIntf::TypeSymbolList) if (di->definitionType()==DefinitionIntf::TypeSymbolList)
...@@ -1372,14 +1413,16 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1372,14 +1413,16 @@ ClassDef *getResolvedClassRec(Definition *scope,
for (dli.toFirst();(d=dli.current());++dli,++count) // foreach definition for (dli.toFirst();(d=dli.current());++dli,++count) // foreach definition
{ {
getResolvedSymbol(scope,fileScope,d,explicitScopePart, getResolvedSymbol(scope,fileScope,d,explicitScopePart,
minDistance,bestMatch,bestTypedef,bestTemplSpec); minDistance,bestMatch,bestTypedef,bestTemplSpec,
bestResolvedType);
} }
} }
else else
{ {
Definition *d = (Definition *)di; Definition *d = (Definition *)di;
getResolvedSymbol(scope,fileScope,d,explicitScopePart, getResolvedSymbol(scope,fileScope,d,explicitScopePart,
minDistance,bestMatch,bestTypedef,bestTemplSpec); minDistance,bestMatch,bestTypedef,bestTemplSpec,
bestResolvedType);
} }
if (pTypeDef) if (pTypeDef)
...@@ -1390,17 +1433,24 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1390,17 +1433,24 @@ ClassDef *getResolvedClassRec(Definition *scope,
{ {
*pTemplSpec = bestTemplSpec; *pTemplSpec = bestTemplSpec;
} }
if (pResolvedType)
{
*pResolvedType = bestResolvedType;
}
//printf("getResolvedClassRec: bestMatch=%p pval->resolvedType=%s\n",
// bestMatch,bestResolvedType.data());
pval=Doxygen::lookupCache.find(key); pval=Doxygen::lookupCache.find(key);
if (pval) if (pval)
{ {
pval->classDef = bestMatch; pval->classDef = bestMatch;
pval->typeDef = bestTypedef; pval->typeDef = bestTypedef;
pval->templSpec = bestTemplSpec; pval->templSpec = bestTemplSpec;
pval->resolvedType = bestResolvedType;
} }
else else
{ {
Doxygen::lookupCache.insert(key,new LookupInfo(bestMatch,bestTypedef,bestTemplSpec)); Doxygen::lookupCache.insert(key,new LookupInfo(bestMatch,bestTypedef,bestTemplSpec,bestResolvedType));
} }
//printf("] bestMatch=%s distance=%d\n", //printf("] bestMatch=%s distance=%d\n",
// bestMatch?bestMatch->name().data():"<none>",minDistance); // bestMatch?bestMatch->name().data():"<none>",minDistance);
...@@ -1420,7 +1470,8 @@ ClassDef *getResolvedClass(Definition *scope, ...@@ -1420,7 +1470,8 @@ ClassDef *getResolvedClass(Definition *scope,
MemberDef **pTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec, QCString *pTemplSpec,
bool mayBeUnlinkable, bool mayBeUnlinkable,
bool mayBeHidden bool mayBeHidden,
QCString *pResolvedType
) )
{ {
g_resolvedTypedefs.clear(); g_resolvedTypedefs.clear();
...@@ -1439,7 +1490,7 @@ ClassDef *getResolvedClass(Definition *scope, ...@@ -1439,7 +1490,7 @@ ClassDef *getResolvedClass(Definition *scope,
// n, // n,
// mayBeUnlinkable // mayBeUnlinkable
// ); // );
ClassDef *result = getResolvedClassRec(scope,fileScope,n,pTypeDef,pTemplSpec); ClassDef *result = getResolvedClassRec(scope,fileScope,n,pTypeDef,pTemplSpec,pResolvedType);
if (!mayBeUnlinkable && result && !result->isLinkable()) if (!mayBeUnlinkable && result && !result->isLinkable())
{ {
if (!mayBeHidden || !result->isHidden()) if (!mayBeHidden || !result->isHidden())
...@@ -2115,7 +2166,7 @@ int minClassDistance(const ClassDef *cd,const ClassDef *bcd,int level) ...@@ -2115,7 +2166,7 @@ int minClassDistance(const ClassDef *cd,const ClassDef *bcd,int level)
if (level==256) if (level==256)
{ {
err("Error: Internal inconsistency: found class %s seem to have a recursive " err("Error: Internal inconsistency: found class %s seem to have a recursive "
"inheritance relation! Please send a bug report to dimitri@stack.nl\n",cd->name().data()); "inheritance relation! Please send a bug report to dimitri@stack.nl",cd->name().data());
return -1; return -1;
} }
int m=maxInheritanceDepth; int m=maxInheritanceDepth;
...@@ -2531,7 +2582,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -2531,7 +2582,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
dstAType = dstAType.right(dstAType.length()-9); dstAType = dstAType.right(dstAType.length()-9);
} }
srcAType = removeRedundantWhiteSpace(srcAType); srcAType = removeRedundantWhiteSpace(srcAType);
dstAType = removeRedundantWhiteSpace(dstAType); dstAType = removeRedundantWhiteSpace(dstAType);
...@@ -2883,9 +2933,10 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type); ...@@ -2883,9 +2933,10 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type);
QCString getCanonicalTemplateSpec(Definition *d,FileDef *fs,const QCString& spec) QCString getCanonicalTemplateSpec(Definition *d,FileDef *fs,const QCString& spec)
{ {
//printf("getCanonicalTemplateSpec(%s)\n",spec.data());
QCString templSpec = spec.stripWhiteSpace(); QCString templSpec = spec.stripWhiteSpace();
if (templSpec.isEmpty() || templSpec.at(0) != '<') return templSpec; if (templSpec.isEmpty() || templSpec.at(0) != '<') return templSpec;
return "< " + extractCanonicalType(d,fs,templSpec.right(templSpec.length()-1)); return "< " + extractCanonicalType(d,fs,templSpec.right(templSpec.length()-1).stripWhiteSpace());
} }
...@@ -2895,7 +2946,7 @@ static QCString getCanonicalTypeForIdentifier( ...@@ -2895,7 +2946,7 @@ static QCString getCanonicalTypeForIdentifier(
{ {
QCString symName,scope,result,templSpec,tmpName; QCString symName,scope,result,templSpec,tmpName;
//DefinitionList *defList=0; //DefinitionList *defList=0;
if (tSpec) templSpec = stripDeclKeywords(getCanonicalTemplateSpec(d,fs,*tSpec)); if (tSpec && !tSpec->isEmpty()) templSpec = stripDeclKeywords(getCanonicalTemplateSpec(d,fs,*tSpec));
if (word.findRev("::")!=-1 && !(tmpName=stripScope(word)).isEmpty()) if (word.findRev("::")!=-1 && !(tmpName=stripScope(word)).isEmpty())
{ {
...@@ -2909,17 +2960,19 @@ static QCString getCanonicalTypeForIdentifier( ...@@ -2909,17 +2960,19 @@ static QCString getCanonicalTypeForIdentifier(
ClassDef *cd = 0; ClassDef *cd = 0;
MemberDef *mType = 0; MemberDef *mType = 0;
QCString ts; QCString ts;
QCString resolvedType;
// lookup class / class template instance // lookup class / class template instance
cd = getResolvedClass(d,fs,word+templSpec,&mType,&ts,TRUE); cd = getResolvedClass(d,fs,word+templSpec,&mType,&ts,TRUE,TRUE,&resolvedType);
bool isTemplInst = cd && !templSpec.isEmpty(); bool isTemplInst = cd && !templSpec.isEmpty();
if (!cd && !templSpec.isEmpty()) if (!cd && !templSpec.isEmpty())
{ {
// class template specialization not known, look up class template // class template specialization not known, look up class template
cd = getResolvedClass(d,fs,word,&mType,&ts,TRUE); cd = getResolvedClass(d,fs,word,&mType,&ts,TRUE,TRUE,&resolvedType);
} }
if (cd && cd->isUsedOnly()) cd=0; // ignore types introduced by usage relations
//printf("symbol=%s word=%s cd=%s d=%s fs=%s cd->isTemplate=%d\n", //printf(" symbol=%s word=%s cd=%s d=%s fs=%s cd->isTemplate=%d\n",
// symName.data(), // symName.data(),
// word.data(), // word.data(),
// cd?cd->name().data():"<none>", // cd?cd->name().data():"<none>",
...@@ -2928,38 +2981,57 @@ static QCString getCanonicalTypeForIdentifier( ...@@ -2928,38 +2981,57 @@ static QCString getCanonicalTypeForIdentifier(
// cd?cd->isTemplate():-1 // cd?cd->isTemplate():-1
// ); // );
//printf(">>>> word '%s' => '%s' templSpec=%s ts=%s tSpec=%s\n", //printf(" >>>> word '%s' => '%s' templSpec=%s ts=%s tSpec=%s isTemplate=%d resolvedType=%s\n",
// (word+templSpec).data(), // (word+templSpec).data(),
// cd?cd->qualifiedName().data():"<none>", // cd?cd->qualifiedName().data():"<none>",
// templSpec.data(),ts.data(), // templSpec.data(),ts.data(),
// tSpec?tSpec->data():"<null>"); // tSpec?tSpec->data():"<null>",
// cd?cd->isTemplate():FALSE,
// resolvedType.data());
if (cd) // known class type //printf(" mtype=%s\n",mType?mType->name().data():"<none>");
if (cd) // resolves to a known class type
{ {
if (isTemplInst) if (mType && mType->isTypedef()) // but via a typedef
{ {
// spec is already part of class type result = resolvedType;
templSpec="";
if (tSpec) *tSpec="";
} }
else if (!ts.isEmpty() && templSpec.isEmpty()) else
{ {
// use formal template args for spec if (isTemplInst)
templSpec = stripDeclKeywords(ts); {
} // spec is already part of class type
templSpec="";
if (tSpec) *tSpec="";
}
else if (!ts.isEmpty() && templSpec.isEmpty())
{
// use formal template args for spec
templSpec = stripDeclKeywords(getCanonicalTemplateSpec(d,fs,ts));
}
result = removeRedundantWhiteSpace(cd->qualifiedName() + templSpec); result = removeRedundantWhiteSpace(cd->qualifiedName() + templSpec);
if (cd->isTemplate() && tSpec) if (cd->isTemplate() && tSpec) //
{ {
// template class, so remove the template part (it is part of the class name) if (!templSpec.isEmpty()) // specific instance
*tSpec=""; {
} result=cd->name()+templSpec;
else if (ts.isEmpty() && !templSpec.isEmpty() && cd && !cd->isTemplate() && tSpec) }
{ else // use template type
// obscure case, where a class is used as a template, but doxygen think it is {
// not (could happen when loading the class from a tag file). result=cd->qualifiedNameWithTemplateParameters();
*tSpec=""; }
// template class, so remove the template part (it is part of the class name)
*tSpec="";
}
else if (ts.isEmpty() && !templSpec.isEmpty() && cd && !cd->isTemplate() && tSpec)
{
// obscure case, where a class is used as a template, but doxygen think it is
// not (could happen when loading the class from a tag file).
*tSpec="";
}
} }
} }
else if (mType && mType->isEnumerate()) // an enum else if (mType && mType->isEnumerate()) // an enum
...@@ -2968,7 +3040,7 @@ static QCString getCanonicalTypeForIdentifier( ...@@ -2968,7 +3040,7 @@ static QCString getCanonicalTypeForIdentifier(
} }
else else
{ {
QCString resolvedType = resolveTypeDef(d,word); resolvedType = resolveTypeDef(d,word);
if (resolvedType.isEmpty()) // not known as a typedef either if (resolvedType.isEmpty()) // not known as a typedef either
{ {
result = word; result = word;
...@@ -2996,7 +3068,8 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type) ...@@ -2996,7 +3068,8 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type)
type.stripPrefix("typename "); type.stripPrefix("typename ");
type = removeRedundantWhiteSpace(type); type = removeRedundantWhiteSpace(type);
//printf("extractCanonicalType(type=%s)\n",type.data()); //printf("extractCanonicalType(type=%s) def=%s file=%s\n",type.data(),
// d ? d->name().data() : "<null>",fs ? fs->name().data() : "<null>");
static QRegExp id("[a-z_A-Z][:a-z_A-Z0-9]*"); static QRegExp id("[a-z_A-Z][:a-z_A-Z0-9]*");
...@@ -3008,7 +3081,7 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type) ...@@ -3008,7 +3081,7 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type)
//printf(" i=%d p=%d\n",i,p); //printf(" i=%d p=%d\n",i,p);
canType += type.mid(pp,i-pp); canType += type.mid(pp,i-pp);
//printf("word=%s templSpec=%s\n",word.data(),templSpec.data()); //printf(" word=%s templSpec=%s\n",word.data(),templSpec.data());
canType += getCanonicalTypeForIdentifier(d,fs,word,&templSpec); canType += getCanonicalTypeForIdentifier(d,fs,word,&templSpec);
if (!templSpec.isEmpty()) // if we didn't use up the templSpec already if (!templSpec.isEmpty()) // if we didn't use up the templSpec already
...@@ -3668,14 +3741,13 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -3668,14 +3741,13 @@ bool getDefs(const QCString &scName,const QCString &memberName,
MemberListIterator mli(*mn); MemberListIterator mli(*mn);
for (mli.toFirst();(md=mli.current());++mli) for (mli.toFirst();(md=mli.current());++mli)
{ {
//if (md->isLinkable())
//{
fd=md->getFileDef(); fd=md->getFileDef();
gd=md->getGroupDef(); gd=md->getGroupDef();
//printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n", //printf(" md->name()=`%s' md->args=`%s' fd=%p gd=%p\n",
// md->name().data(),args,fd,gd); // md->name().data(),args,fd,gd);
if ( if (
(gd && gd->isLinkable()) || (fd && fd->isLinkable()) ((gd && gd->isLinkable()) || (fd && fd->isLinkable())) &&
md->getNamespaceDef()==0
) )
{ {
//printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args); //printf(" fd=%p gd=%p args=`%s'\n",fd,gd,args);
...@@ -3698,7 +3770,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -3698,7 +3770,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
members.append(md); members.append(md);
} }
} }
//}
} }
if (members.count()!=1 && args && !strcmp(args,"()")) if (members.count()!=1 && args && !strcmp(args,"()"))
{ {
...@@ -3739,12 +3810,12 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -3739,12 +3810,12 @@ bool getDefs(const QCString &scName,const QCString &memberName,
MemberDef *bmd = 0; MemberDef *bmd = 0;
for (md=members.first(); md; md=members.next()) for (md=members.first(); md; md=members.next())
{ {
if (md->getFileDef() == currentFile) if (currentFile && md->getBodyDef()==currentFile)
{ {
bmd = 0; bmd = 0;
break; break;
} }
if (!(md->isStatic()) || Config_getBool("EXTRACT_STATIC")) bmd = md; if (!md->isStatic() || Config_getBool("EXTRACT_STATIC")) bmd = md;
} }
if (bmd) md=bmd; if (bmd) md=bmd;
} }
...@@ -4174,7 +4245,7 @@ bool generateLink(OutputDocInterface &od,const char *clName, ...@@ -4174,7 +4245,7 @@ bool generateLink(OutputDocInterface &od,const char *clName,
} }
else else
{ {
err("%s:%d: Internal error: resolveLink successful but no compound found!\n",__FILE__,__LINE__); err("%s:%d: Internal error: resolveLink successful but no compound found!",__FILE__,__LINE__);
} }
return TRUE; return TRUE;
} }
......
...@@ -175,7 +175,8 @@ ClassDef *getResolvedClass(Definition *scope, ...@@ -175,7 +175,8 @@ ClassDef *getResolvedClass(Definition *scope,
MemberDef **pTypeDef=0, MemberDef **pTypeDef=0,
QCString *pTemplSpec=0, QCString *pTemplSpec=0,
bool mayBeUnlinkable=FALSE, bool mayBeUnlinkable=FALSE,
bool mayBeHidden=FALSE); bool mayBeHidden=FALSE,
QCString *pResolvedType=0);
NamespaceDef *getResolvedNamespace(const char *key); NamespaceDef *getResolvedNamespace(const char *key);
...@@ -326,7 +327,8 @@ SrcLangExt getLanguageFromFileName(const QCString fileName); ...@@ -326,7 +327,8 @@ SrcLangExt getLanguageFromFileName(const QCString fileName);
bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n); bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n);
ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
MemberDef **pMemType=0,QCString *pTemplSpec=0); MemberDef **pMemType=0,QCString *pTemplSpec=0,
QCString *pResolvedType=0);
#endif #endif
......

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Doxygen", "Doxygen.vcproj", "{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}"
ProjectSection(ProjectDependencies) = postProject
{2543196E-6FC5-4D6A-96A8-91443CF7B21B} = {2543196E-6FC5-4D6A-96A8-91443CF7B21B}
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64} = {B6BB4771-8A4E-4656-AC08-1EF8AC182F64}
{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3} = {FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Doxytag", "Doxytag.vcproj", "{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}"
ProjectSection(ProjectDependencies) = postProject
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64} = {B6BB4771-8A4E-4656-AC08-1EF8AC182F64}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "libpng.vcproj", "{2543196E-6FC5-4D6A-96A8-91443CF7B21B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qtools", "qtools.vcproj", "{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "zlib.vcproj", "{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Doxywizard", "Doxywizard.vcproj", "{6E404596-D6B6-41A5-8F25-C52921A7C1BF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|Win32.ActiveCfg = Debug|Win32
{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Debug|Win32.Build.0 = Debug|Win32
{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|Win32.ActiveCfg = Release|Win32
{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}.Release|Win32.Build.0 = Release|Win32
{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}.Debug|Win32.ActiveCfg = Debug|Win32
{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}.Debug|Win32.Build.0 = Debug|Win32
{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}.Release|Win32.ActiveCfg = Release|Win32
{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}.Release|Win32.Build.0 = Release|Win32
{2543196E-6FC5-4D6A-96A8-91443CF7B21B}.Debug|Win32.ActiveCfg = Debug|Win32
{2543196E-6FC5-4D6A-96A8-91443CF7B21B}.Debug|Win32.Build.0 = Debug|Win32
{2543196E-6FC5-4D6A-96A8-91443CF7B21B}.Release|Win32.ActiveCfg = Release|Win32
{2543196E-6FC5-4D6A-96A8-91443CF7B21B}.Release|Win32.Build.0 = Release|Win32
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|Win32.ActiveCfg = Debug|Win32
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Debug|Win32.Build.0 = Debug|Win32
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|Win32.ActiveCfg = Release|Win32
{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}.Release|Win32.Build.0 = Release|Win32
{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}.Debug|Win32.ActiveCfg = Debug|Win32
{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}.Debug|Win32.Build.0 = Debug|Win32
{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}.Release|Win32.ActiveCfg = Release|Win32
{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}.Release|Win32.Build.0 = Release|Win32
{6E404596-D6B6-41A5-8F25-C52921A7C1BF}.Debug|Win32.ActiveCfg = Debug|Win32
{6E404596-D6B6-41A5-8F25-C52921A7C1BF}.Debug|Win32.Build.0 = Debug|Win32
{6E404596-D6B6-41A5-8F25-C52921A7C1BF}.Release|Win32.ActiveCfg = Release|Win32
{6E404596-D6B6-41A5-8F25-C52921A7C1BF}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="Doxygen"
ProjectGUID="{309C9A4A-94D2-4837-9A11-45B0A6CF35C3}"
RootNamespace="Doxygen"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/Doxygen.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Zm200 "
Optimization="0"
AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5"
PreprocessorDefinitions="ENGLISH_ONLY;_CONSOLE;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/Doxygen.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="qtools.lib libpng.lib zlib.lib ws2_32.lib"
OutputFile=".\Debug/Doxygen.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/Doxygen.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/Doxygen.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/Doxygen.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Zm200 "
Optimization="2"
InlineFunctionExpansion="2"
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="..\src,..\qtools,..\libpng,..\libmd5"
PreprocessorDefinitions="ENGLISH_ONLY;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/Doxygen.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/LTCG"
AdditionalDependencies="qtools.lib libpng.lib zlib.lib "
OutputFile=".\Release/Doxygen.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="Release"
ProgramDatabaseFile=".\Release/Doxygen.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/Doxygen.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\src\ce_lex.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\ce_parse.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\classdef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\classlist.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\cmdmapper.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\code.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\commentcnv.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\commentscan.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\config.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\cppvalue.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\debug.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\declinfo.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\defargs.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\defgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\define.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\definition.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\diagram.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\dirdef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\docparser.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\doctokenizer.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\dot.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\doxygen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\entry.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\filedef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\filename.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\formula.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\ftvhelp.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\groupdef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\htags.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\htmldocvisitor.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\htmlgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\htmlhelp.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\image.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\index.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\instdox.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\language.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\latexdocvisitor.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\latexgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\logos.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\main.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\mandocvisitor.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\mangen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\marshal.cpp"
>
</File>
<File
RelativePath="..\libmd5\md5.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\memberdef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\membergroup.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\memberlist.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\membername.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\message.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\namespacedef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\objcache.cpp"
>
</File>
<File
RelativePath="..\src\outputgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\outputlist.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\pagedef.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\perlmodgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\pngenc.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\pre.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\pycode.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\pyscanner.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\reflist.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\rtfdocvisitor.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\rtfgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\rtfstyle.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\scanner.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\searchindex.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\store.cpp"
>
</File>
<File
RelativePath="..\src\tagreader.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\translator.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\util.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\version.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\xmldocvisitor.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\xmlgen.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\src\bufstr.h"
>
</File>
<File
RelativePath="..\src\ce_parse.h"
>
</File>
<File
RelativePath="..\src\classdef.h"
>
</File>
<File
RelativePath="..\src\classlist.h"
>
</File>
<File
RelativePath="..\src\cmdmapper.h"
>
</File>
<File
RelativePath="..\src\code.h"
>
</File>
<File
RelativePath="..\src\commentcnv.h"
>
</File>
<File
RelativePath="..\src\commentscan.h"
>
</File>
<File
RelativePath="..\src\compound_xsd.h"
>
</File>
<File
RelativePath="..\src\config.h"
>
</File>
<File
RelativePath="..\src\constexp.h"
>
</File>
<File
RelativePath="..\src\cppvalue.h"
>
</File>
<File
RelativePath="..\src\debug.h"
>
</File>
<File
RelativePath="..\src\declinfo.h"
>
</File>
<File
RelativePath="..\src\defargs.h"
>
</File>
<File
RelativePath="..\src\defgen.h"
>
</File>
<File
RelativePath="..\src\define.h"
>
</File>
<File
RelativePath="..\src\definition.h"
>
</File>
<File
RelativePath="..\src\diagram.h"
>
</File>
<File
RelativePath="..\src\dirdef.h"
>
</File>
<File
RelativePath="..\src\docparser.h"
>
</File>
<File
RelativePath="..\src\doctokenizer.h"
>
</File>
<File
RelativePath="..\src\docvisitor.h"
>
</File>
<File
RelativePath="..\src\dot.h"
>
</File>
<File
RelativePath="..\src\doxygen.h"
>
</File>
<File
RelativePath="..\src\doxygen_css.h"
>
</File>
<File
RelativePath="..\src\entry.h"
>
</File>
<File
RelativePath="..\src\example.h"
>
</File>
<File
RelativePath="..\src\filedef.h"
>
</File>
<File
RelativePath="..\src\filename.h"
>
</File>
<File
RelativePath="..\src\formula.h"
>
</File>
<File
RelativePath="..\src\ftvhelp.h"
>
</File>
<File
RelativePath="..\src\groupdef.h"
>
</File>
<File
RelativePath="..\src\htags.h"
>
</File>
<File
RelativePath="..\src\htmlattrib.h"
>
</File>
<File
RelativePath="..\src\htmldocvisitor.h"
>
</File>
<File
RelativePath="..\src\htmlgen.h"
>
</File>
<File
RelativePath="..\src\htmlhelp.h"
>
</File>
<File
RelativePath="..\src\image.h"
>
</File>
<File
RelativePath="..\src\index.h"
>
</File>
<File
RelativePath="..\src\index_xsd.h"
>
</File>
<File
RelativePath="..\src\instdox.h"
>
</File>
<File
RelativePath="..\src\lang_cfg.h"
>
</File>
<File
RelativePath="..\src\language.h"
>
</File>
<File
RelativePath="..\src\latexdocvisitor.h"
>
</File>
<File
RelativePath="..\src\latexgen.h"
>
</File>
<File
RelativePath="..\src\lockingptr.h"
>
</File>
<File
RelativePath="..\src\logos.h"
>
</File>
<File
RelativePath="..\src\mandocvisitor.h"
>
</File>
<File
RelativePath="..\src\mangen.h"
>
</File>
<File
RelativePath="..\src\marshal.h"
>
</File>
<File
RelativePath="..\libmd5\md5.h"
>
</File>
<File
RelativePath="..\libmd5\md5_loc.h"
>
</File>
<File
RelativePath="..\src\memberdef.h"
>
</File>
<File
RelativePath="..\src\membergroup.h"
>
</File>
<File
RelativePath="..\src\memberlist.h"
>
</File>
<File
RelativePath="..\src\membername.h"
>
</File>
<File
RelativePath="..\src\message.h"
>
</File>
<File
RelativePath="..\src\namespacedef.h"
>
</File>
<File
RelativePath="..\src\objcache.h"
>
</File>
<File
RelativePath="..\src\outputgen.h"
>
</File>
<File
RelativePath="..\src\outputlist.h"
>
</File>
<File
RelativePath="..\src\pagedef.h"
>
</File>
<File
RelativePath="..\src\parserintf.h"
>
</File>
<File
RelativePath="..\src\perlmodgen.h"
>
</File>
<File
RelativePath="..\src\pngenc.h"
>
</File>
<File
RelativePath="..\src\pre.h"
>
</File>
<File
RelativePath="..\src\printdocvisitor.h"
>
</File>
<File
RelativePath="..\src\pycode.h"
>
</File>
<File
RelativePath="..\src\pyscanner.h"
>
</File>
<File
RelativePath="..\src\qtbc.h"
>
</File>
<File
RelativePath="..\src\reflist.h"
>
</File>
<File
RelativePath="..\src\rtfdocvisitor.h"
>
</File>
<File
RelativePath="..\src\rtfgen.h"
>
</File>
<File
RelativePath="..\src\rtfstyle.h"
>
</File>
<File
RelativePath="..\src\scanner.h"
>
</File>
<File
RelativePath="..\src\search_php.h"
>
</File>
<File
RelativePath="..\src\searchindex.h"
>
</File>
<File
RelativePath="..\src\section.h"
>
</File>
<File
RelativePath="..\src\sortdict.h"
>
</File>
<File
RelativePath="..\src\store.h"
>
</File>
<File
RelativePath="..\src\tagreader.h"
>
</File>
<File
RelativePath="..\src\translator.h"
>
</File>
<File
RelativePath="..\src\translator_adapter.h"
>
</File>
<File
RelativePath="..\src\translator_ar.h"
>
</File>
<File
RelativePath="..\src\translator_br.h"
>
</File>
<File
RelativePath="..\src\translator_ca.h"
>
</File>
<File
RelativePath="..\src\translator_cn.h"
>
</File>
<File
RelativePath="..\src\translator_cz.h"
>
</File>
<File
RelativePath="..\src\translator_de.h"
>
</File>
<File
RelativePath="..\src\translator_dk.h"
>
</File>
<File
RelativePath="..\src\translator_en.h"
>
</File>
<File
RelativePath="..\src\translator_es.h"
>
</File>
<File
RelativePath="..\src\translator_fa.h"
>
</File>
<File
RelativePath="..\src\translator_fi.h"
>
</File>
<File
RelativePath="..\src\translator_fr.h"
>
</File>
<File
RelativePath="..\src\translator_gr.h"
>
</File>
<File
RelativePath="..\src\translator_hr.h"
>
</File>
<File
RelativePath="..\src\translator_hu.h"
>
</File>
<File
RelativePath="..\src\translator_id.h"
>
</File>
<File
RelativePath="..\src\translator_it.h"
>
</File>
<File
RelativePath="..\src\translator_je.h"
>
</File>
<File
RelativePath="..\src\translator_jp.h"
>
</File>
<File
RelativePath="..\src\translator_ke.h"
>
</File>
<File
RelativePath="..\src\translator_kr.h"
>
</File>
<File
RelativePath="..\src\translator_lt.h"
>
</File>
<File
RelativePath="..\src\translator_nl.h"
>
</File>
<File
RelativePath="..\src\translator_no.h"
>
</File>
<File
RelativePath="..\src\translator_pl.h"
>
</File>
<File
RelativePath="..\src\translator_pt.h"
>
</File>
<File
RelativePath="..\src\translator_ro.h"
>
</File>
<File
RelativePath="..\src\translator_ru.h"
>
</File>
<File
RelativePath="..\src\translator_se.h"
>
</File>
<File
RelativePath="..\src\translator_si.h"
>
</File>
<File
RelativePath="..\src\translator_sk.h"
>
</File>
<File
RelativePath="..\src\translator_sr.h"
>
</File>
<File
RelativePath="..\src\translator_tw.h"
>
</File>
<File
RelativePath="..\src\translator_ua.h"
>
</File>
<File
RelativePath="..\src\translator_za.h"
>
</File>
<File
RelativePath="..\src\unistd.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
CommandLine="echo /* this is a dummy file, that is needed for compiling files that are &gt; $(InputPath)&#x0D;&#x0A;echo * generated with flex under Windows 95/NT. &gt;&gt; $(InputPath)&#x0D;&#x0A;echo */ &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #if defined(_MSC_VER) &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #include ^&lt;io.h^&gt; &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #endif &gt;&gt; $(InputPath)&#x0D;&#x0A;"
AdditionalDependencies="..\src\ce_lex.cpp;..\src\code.cpp;..\src\commentcnv.cpp;..\src\config.cpp;..\src\declinfo.cpp;..\src\defargs.cpp;..\src\doctokenizer.cpp;..\src\formula.cpp;..\src\pre.cpp;..\src\scanner.cpp;..\src\util.cpp;"
Outputs="$(InputPath)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
CommandLine="echo /* this is a dummy file, that is needed for compiling files that are &gt; $(InputPath)&#x0D;&#x0A;echo * generated with flex under Windows 95/NT. &gt;&gt; $(InputPath)&#x0D;&#x0A;echo */ &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #if defined(_MSC_VER) &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #include ^&lt;io.h^&gt; &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #endif &gt;&gt; $(InputPath)&#x0D;&#x0A;"
AdditionalDependencies="..\src\ce_lex.cpp;..\src\code.cpp;..\src\commentcnv.cpp;..\src\config.cpp;..\src\declinfo.cpp;..\src\defargs.cpp;..\src\doctokenizer.cpp;..\src\formula.cpp;..\src\pre.cpp;..\src\scanner.cpp;..\src\util.cpp;"
Outputs="$(InputPath)"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\util.h"
>
</File>
<File
RelativePath="..\src\version.h"
>
</File>
<File
RelativePath="..\src\xmldocvisitor.h"
>
</File>
<File
RelativePath="..\src\xmlgen.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="Doxytag"
ProjectGUID="{EE0E8466-1E25-4FBC-B273-5EA6776EFE95}"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Debug/Doxytag.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\src,..\qtools"
PreprocessorDefinitions="_CONSOLE;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/Doxytag.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="qtools.lib ws2_32.lib"
OutputFile=".\Debug/Doxytag.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="Debug"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/Doxytag.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/Doxytag.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName=".\Release/Doxytag.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\src,..\qtools"
PreprocessorDefinitions="_CONSOLE;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/Doxytag.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="qtools.lib "
OutputFile=".\Release/Doxytag.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="Release"
ProgramDatabaseFile=".\Release/Doxytag.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/Doxytag.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\src\config.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\doxytag.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\version.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\src\config.h"
>
</File>
<File
RelativePath="..\src\unistd.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
CommandLine="echo /* this is a dummy file, that is needed for compiling files that are &gt; $(InputPath)&#x0D;&#x0A;echo * generated with flex under Windows 95/NT. &gt;&gt; $(InputPath)&#x0D;&#x0A;echo */ &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #if defined(_MSC_VER) &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #include ^&lt;io.h^&gt; &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #endif &gt;&gt; $(InputPath)&#x0D;&#x0A;"
AdditionalDependencies="..\src\doxytag.cpp;"
Outputs="$(InputPath)"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
CommandLine="echo /* this is a dummy file, that is needed for compiling files that are &gt; $(InputPath)&#x0D;&#x0A;echo * generated with flex under Windows 95/NT. &gt;&gt; $(InputPath)&#x0D;&#x0A;echo */ &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #if defined(_MSC_VER) &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #include ^&lt;io.h^&gt; &gt;&gt; $(InputPath)&#x0D;&#x0A;echo #endif &gt;&gt; $(InputPath)&#x0D;&#x0A;"
AdditionalDependencies="..\src\doxytag.cpp;"
Outputs="$(InputPath)"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\version.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="Doxywizard"
ProjectGUID="{6E404596-D6B6-41A5-8F25-C52921A7C1BF}"
RootNamespace="Doxywizard"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
<ToolFile
RelativePath=".\moc.rules"
/>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="moc"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\Doxywizard"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="moc"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="$(QTDIR)\include;..\src"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
DisableSpecificWarnings="4267"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="$(QTDIR)\lib\qt-mt336.lib $(QTDIR)\lib\qtmain.lib"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
EntryPointSymbol=""
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\src\config.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\doxywizard.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\expert.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputbool.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputint.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputstring.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputstrlist.cpp"
>
</File>
<File
RelativePath=".\moc_doxywizard.cpp"
>
</File>
<File
RelativePath=".\moc_expert.cpp"
>
</File>
<File
RelativePath=".\moc_input.cpp"
>
</File>
<File
RelativePath=".\moc_inputbool.cpp"
>
</File>
<File
RelativePath=".\moc_inputint.cpp"
>
</File>
<File
RelativePath=".\moc_inputstring.cpp"
>
</File>
<File
RelativePath=".\moc_inputstrlist.cpp"
>
</File>
<File
RelativePath="..\addon\doxywizard\version.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\addon\doxywizard\doxywizard.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\expert.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\input.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputbool.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputint.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputstring.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\inputstrlist.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\qtbc.h"
>
</File>
<File
RelativePath="..\addon\doxywizard\version.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="libpng"
ProjectGUID="{2543196E-6FC5-4D6A-96A8-91443CF7B21B}"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\libpng"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/libpng.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release\libpng.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/libpng.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions=""
Optimization="0"
AdditionalIncludeDirectories="..\libpng"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/libpng.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Debug\libpng.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/libpng.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\libpng\png.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngerror.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pnggccrd.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngget.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngmem.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngpread.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngread.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngrio.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngrtran.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngrutil.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngset.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngtrans.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngvcrd.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngwio.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngwrite.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngwtran.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\pngwutil.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\libpng\png.h"
>
</File>
<File
RelativePath="..\libpng\pngasmrd.h"
>
</File>
<File
RelativePath="..\libpng\pngconf.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="Run Moc"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="moc"
DisplayName="Moc"
CommandLine="$(QTDIR)/bin/moc.exe $(InputPath) -o moc_$(InputName).cpp"
Outputs="moc_$(InputName).cpp"
AdditionalDependencies="$(QTDIR)/bin/moc.exe"
FileExtensions="*.h"
ExecutionDescription="Moc&apos;ing $(InputPath)"
>
<Properties>
</Properties>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="qtools"
ProjectGUID="{B6BB4771-8A4E-4656-AC08-1EF8AC182F64}"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="..\qtools"
PreprocessorDefinitions="QT_NO_CODECS;WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/qtools.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release\qtools.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/qtools.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions=""
Optimization="0"
AdditionalIncludeDirectories="..\qtools"
PreprocessorDefinitions="QT_NO_CODECS;WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/qtools.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Debug\qtools.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/qtools.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\qtools\qbuffer.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qcollection.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qdatastream.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qdatetime.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qdir.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qdir_win32.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qfile.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qfile_win32.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qfileinfo.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qfileinfo_win32.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qgarray.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qgcache.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qgdict.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qglist.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qglobal.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qgstring.cpp"
>
</File>
<File
RelativePath="..\qtools\qgvector.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qiodevice.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qmap.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qregexp.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qstring.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qstringlist.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qtextcodec.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qtextstream.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\qxml.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\qtools\scstring.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\qtools\qarray.h"
>
</File>
<File
RelativePath="..\qtools\qasciidict.h"
>
</File>
<File
RelativePath="..\qtools\qbuffer.h"
>
</File>
<File
RelativePath="..\qtools\qcache.h"
>
</File>
<File
RelativePath="..\qtools\qcollection.h"
>
</File>
<File
RelativePath="..\qtools\qconfig.h"
>
</File>
<File
RelativePath="..\qtools\qcstring.h"
>
</File>
<File
RelativePath="..\qtools\qdatastream.h"
>
</File>
<File
RelativePath="..\qtools\qdatetime.h"
>
</File>
<File
RelativePath="..\qtools\qdict.h"
>
</File>
<File
RelativePath="..\qtools\qdir.h"
>
</File>
<File
RelativePath="..\qtools\qfeatures.h"
>
</File>
<File
RelativePath="..\qtools\qfile.h"
>
</File>
<File
RelativePath="..\qtools\qfiledefs_p.h"
>
</File>
<File
RelativePath="..\qtools\qfileinfo.h"
>
</File>
<File
RelativePath="..\qtools\qgarray.h"
>
</File>
<File
RelativePath="..\qtools\qgcache.h"
>
</File>
<File
RelativePath="..\qtools\qgdict.h"
>
</File>
<File
RelativePath="..\qtools\qgeneric.h"
>
</File>
<File
RelativePath="..\qtools\qglist.h"
>
</File>
<File
RelativePath="..\qtools\qglobal.h"
>
</File>
<File
RelativePath="..\qtools\qgstring.h"
>
</File>
<File
RelativePath="..\qtools\qgvector.h"
>
</File>
<File
RelativePath="..\qtools\qintdict.h"
>
</File>
<File
RelativePath="..\qtools\qiodevice.h"
>
</File>
<File
RelativePath="..\qtools\qlist.h"
>
</File>
<File
RelativePath="..\qtools\qmap.h"
>
</File>
<File
RelativePath="..\qtools\qmodules.h"
>
</File>
<File
RelativePath="..\qtools\qptrdict.h"
>
</File>
<File
RelativePath="..\qtools\qqueue.h"
>
</File>
<File
RelativePath="..\qtools\qregexp.h"
>
</File>
<File
RelativePath="..\qtools\qshared.h"
>
</File>
<File
RelativePath="..\qtools\qsortedlist.h"
>
</File>
<File
RelativePath="..\qtools\qstack.h"
>
</File>
<File
RelativePath="..\qtools\qstring.h"
>
</File>
<File
RelativePath="..\qtools\qstringlist.h"
>
</File>
<File
RelativePath="..\qtools\qstrlist.h"
>
</File>
<File
RelativePath="..\qtools\qstrvec.h"
>
</File>
<File
RelativePath="..\qtools\qtextcodec.h"
>
</File>
<File
RelativePath="..\qtools\qtextstream.h"
>
</File>
<File
RelativePath="..\qtools\qtl.h"
>
</File>
<File
RelativePath="..\qtools\qvaluelist.h"
>
</File>
<File
RelativePath="..\qtools\qvaluestack.h"
>
</File>
<File
RelativePath="..\qtools\qvector.h"
>
</File>
<File
RelativePath="..\qtools\qxml.h"
>
</File>
<File
RelativePath="..\qtools\scstring.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="zlib"
ProjectGUID="{FC8F6EAD-29A5-42A7-A646-B775F67CD7A3}"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory=".\Debug"
IntermediateDirectory=".\Debug"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions=""
Optimization="0"
AdditionalIncludeDirectories="..\libpng"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/zlib.pch"
AssemblerListingLocation=".\Debug/"
ObjectFile=".\Debug/"
ProgramDataBaseFileName=".\Debug/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Debug\zlib.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Debug/zlib.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory=".\Release"
IntermediateDirectory=".\Release"
ConfigurationType="4"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\libpng"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile=".\Release/zlib.pch"
AssemblerListingLocation=".\Release/"
ObjectFile=".\Release/"
ProgramDataBaseFileName=".\Release/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
OutputFile=".\Release\zlib.lib"
SuppressStartupBanner="true"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile=".\Release/zlib.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="..\libpng\adler32.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\compress.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\crc32.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\deflate.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\gzio.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\infblock.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\infcodes.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\inffast.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\inflate.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\inftrees.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\infutil.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\trees.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\uncompr.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
<File
RelativePath="..\libpng\zutil.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="..\libpng\deflate.h"
>
</File>
<File
RelativePath="..\libpng\infblock.h"
>
</File>
<File
RelativePath="..\libpng\infcodes.h"
>
</File>
<File
RelativePath="..\libpng\inffast.h"
>
</File>
<File
RelativePath="..\libpng\inffixed.h"
>
</File>
<File
RelativePath="..\libpng\inftrees.h"
>
</File>
<File
RelativePath="..\libpng\infutil.h"
>
</File>
<File
RelativePath="..\libpng\trees.h"
>
</File>
<File
RelativePath="..\libpng\zconf.h"
>
</File>
<File
RelativePath="..\libpng\zlib.h"
>
</File>
<File
RelativePath="..\libpng\zutil.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
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