diff options
32 files changed, 434 insertions, 267 deletions
@@ -1,7 +1,7 @@ -DOXYGEN Version 1.3.4-20031026 +DOXYGEN Version 1.3.4-20031103 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (26 October 2003) +Dimitri van Heesch (03 November 2003) @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3.4_20031026 +DOXYGEN Version 1.3.4_20031103 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (26 October 2003) +Dimitri van Heesch (dimitri@stack.nl) (03 November 2003) @@ -1 +1 @@ -1.3.4-20031026 +1.3.4-20031103 diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h index 51a6191..e79946d 100644 --- a/addon/doxmlparser/include/doxmlintf.h +++ b/addon/doxmlparser/include/doxmlintf.h @@ -111,7 +111,11 @@ class IMemberReference { public: virtual IMember *member() const = 0; - virtual const IString * memberName() const = 0; + virtual const IString * name() const = 0; + virtual const IString * scope() const = 0; + virtual const IString * protection() const = 0; + virtual const IString * virtualness() const = 0; + virtual const IString * ambiguityScope() const = 0; }; class IMemberReferenceIterator @@ -695,6 +699,11 @@ class ISection ProSlots, //!< Protected slots ProStatFuncs, //!< Protected static member functions ProStatAttribs, //!< Protected static member attributes + PacTypes, //!< Package member typedefs + PacFuncs, //!< Package member functions + PacAttribs, //!< Package member attributes + PacStatFuncs, //!< Package static member functions + PacStatAttribs, //!< Package static member attributes PriTypes, //!< Private member typedefs PriFuncs, //!< Private member functions PriAttribs, //!< Private member attributes diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp index 5667844..e603975 100644 --- a/addon/doxmlparser/src/compoundhandler.cpp +++ b/addon/doxmlparser/src/compoundhandler.cpp @@ -167,46 +167,51 @@ CompoundHandler::CompoundHandler(const QString &xmlDir) addStartHandler("compoundname"); addEndHandler("compoundname",this,&CompoundHandler::endCompoundName); - addStartHandler("derivedcompoundref",this,&CompoundHandler::addSubClass); - addEndHandler("derivedcompoundref"); + addStartHandler("title",this,&CompoundHandler::startTitle); addStartHandler("basecompoundref",this,&CompoundHandler::addSuperClass); addEndHandler("basecompoundref"); - addStartHandler("briefdescription",this,&CompoundHandler::startBriefDesc); + addStartHandler("derivedcompoundref",this,&CompoundHandler::addSubClass); + addEndHandler("derivedcompoundref"); - addStartHandler("detaileddescription",this,&CompoundHandler::startDetailedDesc); - - addStartHandler("sectiondef",this,&CompoundHandler::startSection); + // includes + // includedby - addStartHandler("location",this,&CompoundHandler::startLocation); - addEndHandler("location"); - - addStartHandler("programlisting",this,&CompoundHandler::startProgramListing); - - addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph); - - addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph); - addStartHandler("incdepgraph",this,&CompoundHandler::startIncludeDependencyGraph); addStartHandler("invincdepgraph",this,&CompoundHandler::startIncludedByDependencyGraph); + addStartHandler("innerfile",this,&CompoundHandler::startInnerFile); + addEndHandler("innerfile"); + addStartHandler("innerclass",this,&CompoundHandler::startInnerClass); addEndHandler("innerclass"); addStartHandler("innernamespace",this,&CompoundHandler::startInnerNamespace); addEndHandler("innernamespace"); - addStartHandler("innerfile",this,&CompoundHandler::startInnerFile); - addEndHandler("innerfile"); - + // innerpage + addStartHandler("innergroup",this,&CompoundHandler::startInnerGroup); addEndHandler("innergroup"); addStartHandler("templateparamlist",this,&CompoundHandler::startTemplateParamList); - addStartHandler("title",this,&CompoundHandler::startTitle); + addStartHandler("sectiondef",this,&CompoundHandler::startSection); + + addStartHandler("briefdescription",this,&CompoundHandler::startBriefDesc); + + addStartHandler("detaileddescription",this,&CompoundHandler::startDetailedDesc); + + addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph); + + addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph); + + addStartHandler("programlisting",this,&CompoundHandler::startProgramListing); + + addStartHandler("location",this,&CompoundHandler::startLocation); + addEndHandler("location"); addStartHandler("listofallmembers",this,&CompoundHandler::startListOfAllMembers); } @@ -259,6 +264,7 @@ void CompoundHandler::startCompound(const QXmlAttributes& attrib) m_id = attrib.value("id"); m_kindString = attrib.value("kind"); m_kind = s_typeMap->map(m_kindString); + m_protection = attrib.value("prot"); debug(2,"startCompound(id=`%s' type=`%s')\n",m_id.data(),m_kindString.data()); } @@ -317,9 +323,14 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib) { IRelatedCompound::Protection prot = IRelatedCompound::Public; QString protString = attrib.value("prot"); - if (protString=="protected") prot = IRelatedCompound::Protected; - else if (protString=="private") prot = IRelatedCompound::Private; - + if (protString=="protected") + { + prot = IRelatedCompound::Protected; + } + else if (protString=="private") + { + prot = IRelatedCompound::Private; + } IRelatedCompound::Kind kind = IRelatedCompound::Normal; QString kindString = attrib.value("virt"); if (kindString=="virtual") kind = IRelatedCompound::Virtual; diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h index 3f6e251..5cdca35 100644 --- a/addon/doxmlparser/src/compoundhandler.h +++ b/addon/doxmlparser/src/compoundhandler.h @@ -153,6 +153,7 @@ class CompoundHandler : public IClass, DocHandler* m_detailed; ProgramListingHandler* m_programListing; StringImpl m_id; + StringImpl m_protection; StringImpl m_kindString; CompoundKind m_kind; StringImpl m_name; diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h index 51a6191..e79946d 100644 --- a/addon/doxmlparser/src/doxmlintf.h +++ b/addon/doxmlparser/src/doxmlintf.h @@ -111,7 +111,11 @@ class IMemberReference { public: virtual IMember *member() const = 0; - virtual const IString * memberName() const = 0; + virtual const IString * name() const = 0; + virtual const IString * scope() const = 0; + virtual const IString * protection() const = 0; + virtual const IString * virtualness() const = 0; + virtual const IString * ambiguityScope() const = 0; }; class IMemberReferenceIterator @@ -695,6 +699,11 @@ class ISection ProSlots, //!< Protected slots ProStatFuncs, //!< Protected static member functions ProStatAttribs, //!< Protected static member attributes + PacTypes, //!< Package member typedefs + PacFuncs, //!< Package member functions + PacAttribs, //!< Package member attributes + PacStatFuncs, //!< Package static member functions + PacStatAttribs, //!< Package static member attributes PriTypes, //!< Private member typedefs PriFuncs, //!< Private member functions PriAttribs, //!< Private member attributes diff --git a/addon/doxmlparser/src/loamhandler.cpp b/addon/doxmlparser/src/loamhandler.cpp index de726c1..a939b7b 100644 --- a/addon/doxmlparser/src/loamhandler.cpp +++ b/addon/doxmlparser/src/loamhandler.cpp @@ -9,6 +9,8 @@ ListOfAllMembersHandler::ListOfAllMembersHandler(IBaseHandler *parent) : m_paren addStartHandler("member",this,&ListOfAllMembersHandler::startMember); addStartHandler("name",this,&ListOfAllMembersHandler::startName); addEndHandler("name",this,&ListOfAllMembersHandler::endName); + addStartHandler("scope",this,&ListOfAllMembersHandler::startScope); + addEndHandler("scope",this,&ListOfAllMembersHandler::endScope); addEndHandler("listofallmembers",this,&ListOfAllMembersHandler::endListOfAllMembers); } @@ -27,7 +29,9 @@ void ListOfAllMembersHandler::startMember(const QXmlAttributes& attrib) { MemberReference *mr = new MemberReference; mr->m_memId = attrib.value("refid"); - // TODO: extract prot, virt, ambiguityscope and scope as well + mr->m_virtualness = attrib.value("virt"); + mr->m_protection = attrib.value("prot"); + mr->m_ambiguityScope = attrib.value("ambiguityscope"); m_members.append(new MemberReference); } @@ -42,6 +46,17 @@ void ListOfAllMembersHandler::endName() m_members.getLast()->m_name = m_curString; } +void ListOfAllMembersHandler::startScope(const QXmlAttributes&) +{ + m_curString=""; +} + +void ListOfAllMembersHandler::endScope() +{ + ASSERT(m_members.getLast()); + m_members.getLast()->m_scope = m_curString; +} + void ListOfAllMembersHandler::startListOfAllMembers(const QXmlAttributes& /*attrib*/) { m_parent->setDelegate(this); diff --git a/addon/doxmlparser/src/loamhandler.h b/addon/doxmlparser/src/loamhandler.h index f7e5a3f..f03c541 100644 --- a/addon/doxmlparser/src/loamhandler.h +++ b/addon/doxmlparser/src/loamhandler.h @@ -31,6 +31,8 @@ class ListOfAllMembersHandler : public BaseHandler<ListOfAllMembersHandler> virtual void startMember(const QXmlAttributes& attrib); virtual void startName(const QXmlAttributes& attrib); virtual void endName(); + virtual void startScope(const QXmlAttributes& attrib); + virtual void endScope(); virtual void startListOfAllMembers(const QXmlAttributes& attrib); virtual void endListOfAllMembers(); diff --git a/addon/doxmlparser/src/memberhandler.cpp b/addon/doxmlparser/src/memberhandler.cpp index a46df85..2ea5e4b 100644 --- a/addon/doxmlparser/src/memberhandler.cpp +++ b/addon/doxmlparser/src/memberhandler.cpp @@ -158,40 +158,45 @@ MemberHandler::MemberHandler(IBaseHandler *parent) { //printf("MemberHandler::MemberHandler() %p\n",this); addEndHandler("memberdef",this,&MemberHandler::endMember); - addEndHandler("enumvalue",this,&MemberHandler::endMember); - addStartHandler("type",this,&MemberHandler::startType); - addStartHandler("initializer",this,&MemberHandler::startInitializer); - addStartHandler("exception",this,&MemberHandler::startException); - addStartHandler("enumvalue",this,&MemberHandler::startEnumValue2); + addStartHandler("templateparamlist",this,&MemberHandler::startTemplateParamList); + addEndHandler("templateparamlist",this,&MemberHandler::endTemplateParamList); + addStartHandler("type",this,&MemberHandler::startType); + // definition + // argsstring addStartHandler("name",this,&MemberHandler::startName); addEndHandler("name",this,&MemberHandler::endName); + addStartHandler("reimplements",this,&MemberHandler::startReimplements); + addEndHandler("reimplements",this,&MemberHandler::endReimplements); + + addStartHandler("reimplementedby",this,&MemberHandler::startReimplementedBy); + addEndHandler("reimplementedby",this,&MemberHandler::endReimplementedBy); + addStartHandler("param",this,&MemberHandler::startParam); + addStartHandler("enumvalue",this,&MemberHandler::startEnumValue2); + addEndHandler("enumvalue",this,&MemberHandler::endMember); + + addStartHandler("initializer",this,&MemberHandler::startInitializer); + addStartHandler("exception",this,&MemberHandler::startException); + addStartHandler("briefdescription",this,&MemberHandler::startBriefDesc); addStartHandler("detaileddescription",this,&MemberHandler::startDetailedDesc); + // inbodydescription + + addStartHandler("location",this,&MemberHandler::startLocation); + addEndHandler("location"); + addStartHandler("references",this,&MemberHandler::startReferences); addEndHandler("references",this,&MemberHandler::endReferences); addStartHandler("referencedby",this,&MemberHandler::startReferencedBy); addEndHandler("referencedby",this,&MemberHandler::endReferencedBy); - addStartHandler("reimplements",this,&MemberHandler::startReimplements); - addEndHandler("reimplements",this,&MemberHandler::endReimplements); - - addStartHandler("reimplementedby",this,&MemberHandler::startReimplementedBy); - addEndHandler("reimplementedby",this,&MemberHandler::endReimplementedBy); - - addStartHandler("location",this,&MemberHandler::startLocation); - addEndHandler("location"); - - addStartHandler("templateparamlist",this,&MemberHandler::startTemplateParamList); - addEndHandler("templateparamlist",this,&MemberHandler::endTemplateParamList); - m_type.setAutoDelete(TRUE); m_initializer.setAutoDelete(TRUE); m_exception.setAutoDelete(TRUE); diff --git a/addon/doxmlparser/src/memberhandler.h b/addon/doxmlparser/src/memberhandler.h index 213030b..1a02df3 100644 --- a/addon/doxmlparser/src/memberhandler.h +++ b/addon/doxmlparser/src/memberhandler.h @@ -38,11 +38,19 @@ class MemberReference : public IMemberReference public: virtual ~MemberReference() {} virtual IMember *member() const; - virtual const IString *memberName() const { return &m_name; } + virtual const IString *name() const { return &m_name; } + virtual const IString *scope() const { return &m_scope; } + virtual const IString *protection() const { return &m_protection; } + virtual const IString *virtualness() const { return &m_virtualness; } + virtual const IString *ambiguityScope() const { return &m_ambiguityScope; } void initialize(MainHandler *m); QString m_memId; StringImpl m_name; + StringImpl m_scope; + StringImpl m_virtualness; + StringImpl m_protection; + StringImpl m_ambiguityScope; MainHandler *m_mainHandler; }; diff --git a/addon/doxmlparser/src/sectionhandler.cpp b/addon/doxmlparser/src/sectionhandler.cpp index 5da0006..0703de1 100644 --- a/addon/doxmlparser/src/sectionhandler.cpp +++ b/addon/doxmlparser/src/sectionhandler.cpp @@ -41,6 +41,11 @@ class SectionTypeMap m_map.insert("protected-slot",new int(ISection::ProSlots)); m_map.insert("protected-static-func",new int(ISection::ProStatFuncs)); m_map.insert("protected-static-attrib",new int(ISection::ProStatAttribs)); + m_map.insert("package-type",new int(ISection::PacTypes)); + m_map.insert("package-func",new int(ISection::PacFuncs)); + m_map.insert("package-attrib",new int(ISection::PacAttribs)); + m_map.insert("package-static-func",new int(ISection::PacStatFuncs)); + m_map.insert("package-static-attrib",new int(ISection::PacStatAttribs)); m_map.insert("private-type",new int(ISection::PriTypes)); m_map.insert("private-func",new int(ISection::PriFuncs)); m_map.insert("private-attrib",new int(ISection::PriAttribs)); diff --git a/libmd5/md5_loc.h b/libmd5/md5_loc.h index 03aeebf..3d6e2b6 100644 --- a/libmd5/md5_loc.h +++ b/libmd5/md5_loc.h @@ -30,6 +30,10 @@ #ifndef __MD5_LOC_H__ #define __MD5_LOC_H__ +#ifdef __cplusplus +extern "C" { +#endif + #define HEX_STRING "0123456789abcdef" /* to convert to hex */ #define BLOCK_SIZE_MASK (MD5_BLOCK_SIZE - 1) @@ -103,4 +107,8 @@ a += b; \ } while (0) +#ifdef __cplusplus +} +#endif + #endif /* ! __MD5_LOC_H__ */ @@ -22,6 +22,8 @@ type makeconfig > qtools\Makefile type qtools\Makefile.in >>qtools\Makefile type makeconfig > libpng\Makefile type libpng\Makefile.in >>libpng\Makefile +type makeconfig > libmd5\Makefile +type libmd5\Makefile.in >>libmd5\Makefile type makeconfig > src\Makefile type src\Makefile.in >>src\Makefile type makeconfig > examples\Makefile @@ -37,11 +39,11 @@ REM build in release or debug mode REM sed is used to replace $extraopts by either debug or release while copying sed "s/\$extraopts/%MODE%/g" qtools\qtools.pro.in >qtools\qtools.pro sed "s/\$extraopts/%MODE%/g" libpng\libpng.pro.in >libpng\libpng.pro +sed "s/\$extraopts/%MODE%/g" libmd5\libmd5.pro.in >libmd5\libmd5.pro sed "s/\$extraopts/%MODE%/g" src\libdoxygen.pro.in >src\libdoxygen.pro sed "s/\$extraopts/%MODE%/g" src\libdoxycfg.pro.in >src\libdoxycfg.pro sed "s/\$extraopts/%MODE%/g" src\doxygen.pro.in >src\doxygen.pro sed "s/\$extraopts/%MODE%/g" src\doxytag.pro.in >src\doxytag.pro -sed "s/\$extraopts/%MODE%/g" src\doxysearch.pro.in >src\doxysearch.pro sed "s/\$extraopts/%MODE%/g" addon\doxywizard\doxywizard.pro.in >addon\doxywizard\doxywizard.pro REM run make diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index ce08c50..0e37b03 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3.4_20031026 +Version: 1.3.4_20031103 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/qtools/qfile.cpp b/qtools/qfile.cpp index 2222b5b..98ed9a3 100644 --- a/qtools/qfile.cpp +++ b/qtools/qfile.cpp @@ -208,7 +208,7 @@ bool QFile::remove() return remove( fn ); } -#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_) +#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_) || defined(_OS_CYGWIN_) # define HAS_TEXT_FILEMODE // has translate/text filemode #endif #if defined(O_NONBLOCK) diff --git a/qtools/qfile_unix.cpp b/qtools/qfile_unix.cpp index 74b73d2..43424b1 100644 --- a/qtools/qfile_unix.cpp +++ b/qtools/qfile_unix.cpp @@ -40,7 +40,7 @@ #include "qfile.h" #include "qfiledefs_p.h" -#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_) +#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_) || defined(_OS_CYGWIN_) # define HAS_TEXT_FILEMODE // has translate/text filemode #endif #if defined(O_NONBLOCK) diff --git a/src/compound.xsd b/src/compound.xsd index f445278..fa1ea92 100644 --- a/src/compound.xsd +++ b/src/compound.xsd @@ -93,6 +93,7 @@ <xsd:complexType name="memberdefType"> <xsd:sequence> + <xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" /> <xsd:element name="type" type="linkedTextType" minOccurs="0" /> <xsd:element name="definition" minOccurs="0" /> <xsd:element name="argsstring" minOccurs="0" /> @@ -632,6 +633,11 @@ <xsd:enumeration value="protected-slot" /> <xsd:enumeration value="protected-static-func" /> <xsd:enumeration value="protected-static-attrib" /> + <xsd:enumeration value="package-type" /> + <xsd:enumeration value="package-func" /> + <xsd:enumeration value="package-attrib" /> + <xsd:enumeration value="package-static-func" /> + <xsd:enumeration value="package-static-attrib" /> <xsd:enumeration value="private-type" /> <xsd:enumeration value="private-func" /> <xsd:enumeration value="private-attrib" /> diff --git a/src/compound_xsd.h b/src/compound_xsd.h index 085e0a8..bef2c61 100644 --- a/src/compound_xsd.h +++ b/src/compound_xsd.h @@ -93,6 +93,7 @@ "\n" " <xsd:complexType name=\"memberdefType\">\n" " <xsd:sequence>\n" +" <xsd:element name=\"templateparamlist\" type=\"templateparamlistType\" minOccurs=\"0\" />\n" " <xsd:element name=\"type\" type=\"linkedTextType\" minOccurs=\"0\" />\n" " <xsd:element name=\"definition\" minOccurs=\"0\" />\n" " <xsd:element name=\"argsstring\" minOccurs=\"0\" />\n" @@ -632,6 +633,11 @@ " <xsd:enumeration value=\"protected-slot\" />\n" " <xsd:enumeration value=\"protected-static-func\" />\n" " <xsd:enumeration value=\"protected-static-attrib\" />\n" +" <xsd:enumeration value=\"package-type\" />\n" +" <xsd:enumeration value=\"package-func\" />\n" +" <xsd:enumeration value=\"package-attrib\" />\n" +" <xsd:enumeration value=\"package-static-func\" />\n" +" <xsd:enumeration value=\"package-static-attrib\" />\n" " <xsd:enumeration value=\"private-type\" />\n" " <xsd:enumeration value=\"private-func\" />\n" " <xsd:enumeration value=\"private-attrib\" />\n" diff --git a/src/config.l b/src/config.l index 739f5f1..594cbc2 100644 --- a/src/config.l +++ b/src/config.l @@ -1979,7 +1979,9 @@ void Config::create() "The HTML_STYLESHEET tag can be used to specify a user-defined cascading \n" "style sheet that is used by each HTML page. It can be used to \n" "fine-tune the look of the HTML output. If the tag is left blank doxygen \n" - "will generate a default style sheet \n" + "will generate a default style sheet. Note that doxygen will try to copy \n" + "the style sheet file to the HTML output directory, so don't put your own \n" + "stylesheet in the HTML output directory as well, or it will be erased! \n" ); cs->setWidgetType(ConfigString::File); cs->addDependency("GENERATE_HTML"); diff --git a/src/docparser.cpp b/src/docparser.cpp index c324dc0..1ee90f5 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -701,6 +701,7 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) QString name = linkToText(g_token->name,TRUE); if (resolveRef(g_context,g_token->name,g_inSeeBlock,&compound,&member)) { + //printf("resolveRef %s = %p (linkable?=%d)\n",g_token->name.data(),member,member->isLinkable()); if (member) // member link { children.append(new diff --git a/src/dot.cpp b/src/dot.cpp index 1b506b1..efaf077 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -295,6 +295,36 @@ static void checkDotResult(const QCString &imgName) } } +/*! Checks if a file "baseName".md5 exists. If so the contents + * are compared with \a md5. If equal FALSE is returned. If the .md5 + * file does not exist or its contents are not equal to \a md5, + * a new .md5 is generated with the \a md5 string as contents. + */ +static bool checkAndUpdateMd5Signature(const QCString &baseName,const QCString &md5) +{ + QFile f(baseName+".md5"); + if (f.open(IO_ReadOnly)) + { + // read checksum + QCString md5stored(33); + int bytesRead=f.readBlock(md5stored.data(),32); + // compare checksum + if (bytesRead==32 && md5==md5stored) + { + // bail out if equal + return FALSE; + } + } + f.close(); + // create checksum file + if (f.open(IO_WriteOnly)) + { + f.writeBlock(md5.data(),32); + f.close(); + } + return TRUE; +} + //-------------------------------------------------------------------- class DotNodeList : public QList<DotNode> @@ -880,6 +910,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) QDir::setCurrent(d.absPath()); QDir thisDir; + // put each connected subgraph of the hierarchy in a row of the HTML output out << "<table border=0 cellspacing=10 cellpadding=0>" << endl; QListIterator<DotNode> dnli(*m_rootSubgraphs); @@ -891,52 +922,75 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); baseName.sprintf("inherit_graph_%d",count++); baseName = convertNameToFile(baseName); - QCString dotName=baseName+".dot"; QCString imgName=baseName+"."+ imgExt; QCString mapName=baseName+".map"; - - QFile f(dotName); - if (!f.open(IO_WriteOnly)) return; - QTextStream t(&f); - writeGraphHeader(t); - t << " rankdir=LR;" << endl; QListIterator<DotNode> dnli2(*m_rootNodes); DotNode *node; - for (;(node=dnli2.current());++dnli2) + + // compute md5 checksum of the graph were are about to generate + QString buf; + QTextStream md5stream(&buf,IO_WriteOnly); + for (dnli2.toFirst();(node=dnli2.current());++dnli2) { if (node->m_subgraphId==n->m_subgraphId) - node->write(t,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE); + { + node->clearWriteFlag(); + node->write(md5stream,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE); + } } - writeGraphFooter(t); - f.close(); + char md5_sig[16]; + QCString sigStr(33); + md5_buffer(buf.ascii(),buf.length(),md5_sig); + md5_sig_to_string(md5_sig,sigStr.data(),33); + if (checkAndUpdateMd5Signature(baseName,sigStr)) + { + // image was new or has changed + QCString dotName=baseName+".dot"; + QFile f(dotName); + if (!f.open(IO_WriteOnly)) return; + QTextStream t(&f); + writeGraphHeader(t); + t << " rankdir=LR;" << endl; + for (dnli2.toFirst();(node=dnli2.current());++dnli2) + { + if (node->m_subgraphId==n->m_subgraphId) + { + node->clearWriteFlag(); + node->write(t,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE); + } + } + writeGraphFooter(t); + f.close(); - QCString dotArgs(maxCmdLine); - dotArgs.sprintf("-T%s \"%s\" -o \"%s\"", - imgExt.data(), dotName.data(),imgName.data()); - //printf("Running: dot -T%s %s -o %s\n",imgExt.data(),dotName.data(),imgName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Problems running dot. Check your installation!\n"); - out << "</table>" << endl; - return; - } - checkDotResult(imgName); - dotArgs.sprintf("-Timap \"%s\" -o \"%s\"",dotName.data(),mapName.data()); - //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) - { - err("Problems running dot. Check your installation!\n"); - out << "</table>" << endl; - return; + QCString dotArgs(maxCmdLine); + dotArgs.sprintf("-T%s \"%s\" -o \"%s\"", + imgExt.data(), dotName.data(),imgName.data()); + //printf("Running: dot -T%s %s -o %s\n",imgExt.data(),dotName.data(),imgName.data()); + if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; + } + checkDotResult(imgName); + dotArgs.sprintf("-Timap \"%s\" -o \"%s\"",dotName.data(),mapName.data()); + //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); + if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; + } + if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName); } + // write image and map in a table row QCString mapLabel = convertNameToFile(n->m_label); out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" alt=\"\" usemap=\"#" << mapLabel << "_map\">" << endl; out << "<map name=\"" << mapLabel << "_map\">" << endl; convertMapFile(out,mapName); out << "</map></td></tr>" << endl; - if (Config_getBool("DOT_CLEANUP")) thisDir.remove(dotName); - thisDir.remove(mapName); + //thisDir.remove(mapName); } out << "</table>" << endl; @@ -1432,36 +1486,6 @@ QCString computeMd5Signature(DotNode *root, return sigStr; } -/*! Checks if a file "baseName".md5 exists. If so the contents - * are compared with \a md5. If equal FALSE is returned. If the .md5 - * file does not exist or its contents are not equal to \a md5, - * a new .md5 is generated with the \a md5 string as contents. - */ -static bool checkAndUpdateMd5Signature(const QCString &baseName,const QCString &md5) -{ - QFile f(baseName+".md5"); - if (f.open(IO_ReadOnly)) - { - // read checksum - QCString md5stored(33); - int bytesRead=f.readBlock(md5stored.data(),32); - // compare checksum - if (bytesRead==32 && md5==md5stored) - { - // bail out if equal - return FALSE; - } - } - f.close(); - // create checksum file - if (f.open(IO_WriteOnly)) - { - f.writeBlock(md5.data(),32); - f.close(); - } - return TRUE; -} - static bool findMaximalDotGraph(DotNode *root, int maxDist, const QCString &baseName, @@ -1606,14 +1630,13 @@ QCString DotClassGraph::writeGraph(QTextStream &out, baseName = convertNameToFile(diskName()); + QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); if (findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance),baseName, thisDir,m_graphType,format,!isTBRank,m_graphType==DotNode::Inheritance)) { - if (format==BITMAP) // run dot to create a bitmap image { QCString dotArgs(maxCmdLine); - QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); QCString imgName = baseName+"."+imgExt; dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", imgExt.data(),baseName.data(),imgName.data()); @@ -1634,36 +1657,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out, QDir::setCurrent(oldDir); return baseName; } - QCString mapLabel = convertNameToFile(m_startNode->m_label+"_"+mapName); - out << "<p><center><img src=\"" << baseName << "." - << imgExt << "\" border=\"0\" usemap=\"#" - << mapLabel << "\" alt=\""; - switch (m_graphType) - { - case DotNode::Collaboration: - out << "Collaboration graph"; - break; - //case Interface: - // out << "Interface dependency graph"; - // break; - case DotNode::Inheritance: - out << "Inheritance graph"; - break; - default: - ASSERT(0); - break; - } - out << "\"></center>" << endl; - QString tmpstr; - QTextOStream tmpout(&tmpstr); - convertMapFile(tmpout,baseName+".map"); - if (!tmpstr.isEmpty()) - { - out << "<map name=\"" << mapLabel << "\">" << endl; - out << tmpstr; - out << "</map>" << endl; - } - thisDir.remove(baseName+".map"); } } else if (format==EPS) // run dot to create a .eps image @@ -1676,13 +1669,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out, QDir::setCurrent(oldDir); return baseName; } - int width,height; - if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) - { - err("Error: Could not extract bounding box from .eps!\n"); - QDir::setCurrent(oldDir); - return baseName; - } if (Config_getBool("USE_PDFLATEX")) { QCString epstopdfArgs(maxCmdLine); @@ -1695,8 +1681,51 @@ QCString DotClassGraph::writeGraph(QTextStream &out, return baseName; } } - int maxWidth = 420; /* approx. page width in points */ + } + if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); + } + + if (format==BITMAP) // run dot to create a bitmap image + { + QCString mapLabel = convertNameToFile(m_startNode->m_label+"_"+mapName); + out << "<p><center><img src=\"" << baseName << "." + << imgExt << "\" border=\"0\" usemap=\"#" + << mapLabel << "\" alt=\""; + switch (m_graphType) + { + case DotNode::Collaboration: + out << "Collaboration graph"; + break; + case DotNode::Inheritance: + out << "Inheritance graph"; + break; + default: + ASSERT(0); + break; + } + out << "\"></center>" << endl; + QString tmpstr; + QTextOStream tmpout(&tmpstr); + convertMapFile(tmpout,baseName+".map"); + if (!tmpstr.isEmpty()) + { + out << "<map name=\"" << mapLabel << "\">" << endl; + out << tmpstr; + out << "</map>" << endl; + } + //thisDir.remove(baseName+".map"); + } + else if (format==EPS) // run dot to create a .eps image + { + int width,height; + if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) + { + err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); + return baseName; + } + int maxWidth = 420; /* approx. page width in points */ out << "\\begin{figure}[H]\n" "\\begin{center}\n" "\\leavevmode\n" @@ -1704,8 +1733,6 @@ QCString DotClassGraph::writeGraph(QTextStream &out, << "pt]{" << baseName << "}\n" "\\end{center}\n" "\\end{figure}\n"; - } - if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); } QDir::setCurrent(oldDir); @@ -1850,6 +1877,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, baseName=convertNameToFile(baseName); QCString mapName=m_startNode->m_label.copy(); if (m_inverse) mapName+="dep"; + QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); if (findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance), baseName,thisDir,DotNode::Dependency,format, @@ -1860,7 +1888,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, { // run dot to create a bitmap image QCString dotArgs(maxCmdLine); - QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); QCString imgName=baseName+"."+imgExt; dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", imgExt.data(),baseName.data(),imgName.data()); @@ -1884,22 +1911,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, return baseName; } - out << "<p><center><img src=\"" << baseName << "." - << imgExt << "\" border=\"0\" usemap=\"#" - << mapName << "_map\" alt=\""; - if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; - out << "\">"; - out << "</center>" << endl; - QString tmpstr; - QTextOStream tmpout(&tmpstr); - convertMapFile(tmpout,baseName+".map"); - if (!tmpstr.isEmpty()) - { - out << "<map name=\"" << mapName << "_map\">" << endl; - out << tmpstr; - out << "</map>" << endl; - } - thisDir.remove(baseName+".map"); + //thisDir.remove(baseName+".map"); } } else if (format==EPS) @@ -1914,13 +1926,6 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, QDir::setCurrent(oldDir); return baseName; } - int width,height; - if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) - { - err("Error: Could not extract bounding box from .eps!\n"); - QDir::setCurrent(oldDir); - return baseName; - } if (Config_getBool("USE_PDFLATEX")) { QCString epstopdfArgs(maxCmdLine); @@ -1933,22 +1938,50 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out, return baseName; } } - int maxWidth = 420; /* approx. page width in points */ - - out << "\\begin{figure}[H]\n" - "\\begin{center}\n" - "\\leavevmode\n" - //"\\setlength{\\epsfxsize}{" << QMIN(width/2,maxWidth) << "pt}\n" - //"\\epsfbox{" << baseName << ".eps}\n" - "\\includegraphics[width=" << QMIN(width/2,maxWidth) - << "pt]{" << baseName << "}\n" - "\\end{center}\n" - "\\end{figure}\n"; } if (Config_getBool("DOT_CLEANUP")) thisDir.remove(baseName+".dot"); } + if (format==BITMAP) + { + out << "<p><center><img src=\"" << baseName << "." + << imgExt << "\" border=\"0\" usemap=\"#" + << mapName << "_map\" alt=\""; + if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; + out << "\">"; + out << "</center>" << endl; + QString tmpstr; + QTextOStream tmpout(&tmpstr); + convertMapFile(tmpout,baseName+".map"); + if (!tmpstr.isEmpty()) + { + out << "<map name=\"" << mapName << "_map\">" << endl; + out << tmpstr; + out << "</map>" << endl; + } + } + else if (format==EPS) + { + int width,height; + if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) + { + err("Error: Could not extract bounding box from .eps!\n"); + QDir::setCurrent(oldDir); + return baseName; + } + + int maxWidth = 420; /* approx. page width in points */ + + out << "\\begin{figure}[H]\n" + "\\begin{center}\n" + "\\leavevmode\n" + "\\includegraphics[width=" << QMIN(width/2,maxWidth) + << "pt]{" << baseName << "}\n" + "\\end{center}\n" + "\\end{figure}\n"; + } + QDir::setCurrent(oldDir); return baseName; } @@ -2014,68 +2047,87 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format, QCString baseName=m_diskName+"_cgraph"; //baseName=convertNameToFile(baseName); QCString mapName=baseName; + QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); - findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance), + if (findMaximalDotGraph(m_startNode,QMIN(m_recDepth,m_maxDistance), baseName,thisDir,DotNode::CallGraph,format, - TRUE,FALSE,FALSE); - - if (format==BITMAP) + TRUE,FALSE,FALSE)) { - // run dot to create a bitmap image - QCString dotArgs(maxCmdLine); - QCString imgExt = Config_getEnum("DOT_IMAGE_FORMAT"); - QCString imgName=baseName+"."+imgExt; - dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", - imgExt.data(),baseName.data(),imgName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + if (format==BITMAP) { - err("Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return baseName; - } - checkDotResult(imgName); + // run dot to create a bitmap image + QCString dotArgs(maxCmdLine); + QCString imgName=baseName+"."+imgExt; + dotArgs.sprintf("-T%s \"%s.dot\" -o \"%s\"", + imgExt.data(),baseName.data(),imgName.data()); + if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + { + err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return baseName; + } + checkDotResult(imgName); - if (generateImageMap) + if (generateImageMap) + { + // run dot again to create an image map + dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"", + baseName.data(),baseName.data()); + if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + { + err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return baseName; + } + } + } + else if (format==EPS) { - // run dot again to create an image map - dotArgs.sprintf("-Timap \"%s.dot\" -o \"%s.map\"", - baseName.data(),baseName.data()); + // run dot to create a .eps image + QCString dotArgs(maxCmdLine); + dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"", + baseName.data(),baseName.data()); if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) { err("Problems running dot. Check your installation!\n"); QDir::setCurrent(oldDir); return baseName; } - - out << "<p><center><img src=\"" << baseName << "." - << imgExt << "\" border=\"0\" usemap=\"#" - << mapName << "_map\" alt=\""; - out << "\">"; - out << "</center>" << endl; - QString tmpstr; - QTextOStream tmpout(&tmpstr); - convertMapFile(tmpout,baseName+".map"); - if (!tmpstr.isEmpty()) + if (Config_getBool("USE_PDFLATEX")) { - out << "<map name=\"" << mapName << "_map\">" << endl; - out << tmpstr; - out << "</map>" << endl; + QCString epstopdfArgs(maxCmdLine); + epstopdfArgs.sprintf("\"%s.eps\" --outfile=\"%s.pdf\"", + baseName.data(),baseName.data()); + if (iSystem("epstopdf",epstopdfArgs,TRUE)!=0) + { + err("Error: Problems running epstopdf. Check your TeX installation!\n"); + QDir::setCurrent(oldDir); + return baseName; + } } - thisDir.remove(baseName+".map"); } } - else if (format==EPS) + + if (format==BITMAP) { - // run dot to create a .eps image - QCString dotArgs(maxCmdLine); - dotArgs.sprintf("-Tps \"%s.dot\" -o \"%s.eps\"", - baseName.data(),baseName.data()); - if (iSystem(Config_getString("DOT_PATH")+"dot",dotArgs)!=0) + out << "<p><center><img src=\"" << baseName << "." + << imgExt << "\" border=\"0\" usemap=\"#" + << mapName << "_map\" alt=\""; + out << "\">"; + out << "</center>" << endl; + QString tmpstr; + QTextOStream tmpout(&tmpstr); + convertMapFile(tmpout,baseName+".map"); + if (!tmpstr.isEmpty()) { - err("Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return baseName; + out << "<map name=\"" << mapName << "_map\">" << endl; + out << tmpstr; + out << "</map>" << endl; } + //thisDir.remove(baseName+".map"); + } + else if (format==EPS) + { int width,height; if (!readBoundingBoxEPS(baseName+".eps",&width,&height)) { @@ -2083,18 +2135,6 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format, QDir::setCurrent(oldDir); return baseName; } - if (Config_getBool("USE_PDFLATEX")) - { - QCString epstopdfArgs(maxCmdLine); - epstopdfArgs.sprintf("\"%s.eps\" --outfile=\"%s.pdf\"", - baseName.data(),baseName.data()); - if (iSystem("epstopdf",epstopdfArgs,TRUE)!=0) - { - err("Error: Problems running epstopdf. Check your TeX installation!\n"); - QDir::setCurrent(oldDir); - return baseName; - } - } int maxWidth = 420; /* approx. page width in points */ out << "\\begin{figure}[H]\n" diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 1165c51..8360acb 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -4037,7 +4037,7 @@ static void addMemberDocs(Entry *root, static ClassDef *findClassDefinition(FileDef *fd,NamespaceDef *nd, const char *scopeName) { - ClassDef *tcd = getClass(scopeName); + ClassDef *tcd = getResolvedClass(nd,fd,scopeName); if (tcd==0) // try using declaration { ClassSDict *cl = 0; @@ -4438,7 +4438,7 @@ static void findMember(Entry *root, } //printf("new scope=`%s'\n",scopeName.data()); - QCString tempScopeName=scopeName.copy(); + QCString tempScopeName=scopeName; ClassDef *cd=getClass(scopeName); if (cd) { diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index 939cbba..6704fb2 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -625,6 +625,9 @@ void FTVHelp::generateTreeView() else { QTextStream t(&f); +#if QT_VERSION >= 200 + t.setEncoding(QTextStream::Latin1); +#endif t << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"; t << " <head>\n"; t << " <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=\"" diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 3a260a2..d247102 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -1397,6 +1397,9 @@ void HtmlGenerator::writeSearchPage() if (f.open(IO_WriteOnly)) { QTextStream t(&f); +#if QT_VERSION >= 200 + t.setEncoding(QTextStream::Latin1); +#endif if (g_header.isEmpty()) { writeDefaultHeaderFile(t,"Search"); diff --git a/src/latexgen.cpp b/src/latexgen.cpp index e330e1e..273dd74 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -247,7 +247,8 @@ static void writeDefaultHeaderPart1(QTextStream &t) "\\usepackage{multicol}\n" "\\usepackage{float}\n" "\\usepackage{textcomp}\n" - "\\usepackage{alltt}\n"; + "\\usepackage{alltt}\n" + "\\usepackage{ae,aecompl,aeguill}\n"; if (Config_getBool("PDF_HYPERLINKS")) { t << "\\usepackage{times}" << endl; diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f3f9156..3ce930d 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -522,7 +522,7 @@ QCString MemberDef::anchor() const bool MemberDef::isLinkableInProject() const { - //printf("MemberDef::isLinkableInProject()\n"); + //printf("MemberDef::isLinkableInProject(name=%s)\n",name().data()); if (m_templateMaster) { return m_templateMaster->isLinkableInProject(); diff --git a/src/memberlist.cpp b/src/memberlist.cpp index e943f17..e6da01e 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -243,7 +243,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, if (md->isDetailedSectionLinkable()) { ol.disableAllBut(OutputGenerator::Html); - ol.endEmphasis(); + //ol.endEmphasis(); ol.docify(" "); if (md->getGroupDef()!=0 && gd==0) // forward link to group { @@ -256,7 +256,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, } ol.parseText(theTranslator->trMore()); ol.endTextLink(); - ol.startEmphasis(); + //ol.startEmphasis(); ol.enableAll(); } ol.endMemberDescription(); diff --git a/src/pngenc.cpp b/src/pngenc.cpp index 5a52e2f..8578819 100644 --- a/src/pngenc.cpp +++ b/src/pngenc.cpp @@ -24,7 +24,8 @@ # define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) #endif -#include <png.h> +#define ALL_STATIC +#include <../libpng/png.h> #include <stdio.h> #include <stdlib.h> #include <string.h> diff --git a/src/scanner.l b/src/scanner.l index d70ad39..98a568a 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -672,6 +672,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] %x EnumDocArg1 %x FuncPtr %x EndFuncPtr +%x FuncPtrInit %x FuncFunc %x FuncFuncEnd %x FuncFuncType @@ -2643,8 +2644,32 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] lastCPPContext = YY_START; BEGIN(SkipCPP); } -<FuncQual>"=" { // typically a initialized function pointer +<FuncQual>"=" { // typically an initialized function pointer current->args += *yytext; + BEGIN(FuncPtrInit); + } +<FuncPtrInit>[{;] { + unput(*yytext); + BEGIN(FuncQual); + } +<FuncPtrInit>\" { + current->args += *yytext; + pCopyQuotedString=¤t->args; + lastStringContext=FuncPtrInit; + BEGIN(CopyString); + } +<FuncPtrInit>{CHARLIT} { + current->args += yytext; + } +<FuncPtrInit>{ID} { + current->args += yytext; + } +<FuncPtrInit>. { + current->args += *yytext; + } +<FuncPtrInit>\n { + current->args += *yytext; + yyLineNr++; } <FuncQual>{ID} { // typically a K&R style C function if (checkForKnRstyleC()) diff --git a/src/util.cpp b/src/util.cpp index 4147bcd..4a0e1ab 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -17,7 +17,7 @@ #include <stdlib.h> #include <ctype.h> -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__CYGWIN__) #include <windows.h> #endif @@ -43,7 +43,7 @@ #include "reflist.h" #include "pagedef.h" -#ifndef _WIN32 +#if !defined(_WIN32) || defined(__CYGWIN__) #include <unistd.h> #include <stdlib.h> #include <sys/types.h> @@ -94,7 +94,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile) { QTime time; time.start(); -#ifndef _WIN32 +#if !defined(_WIN32) || defined(__CYGWIN__) isBatchFile=isBatchFile; /*! taken from the system() manpage on my Linux box */ int pid,status=0; @@ -167,7 +167,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile) } #endif // _OS_SOLARIS -#else +#else // Win32 specific if (isBatchFile) { QCString fullCmd = command; @@ -2697,6 +2697,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, } if (bmd) md=bmd; } + if (md && !md->isLinkable()) md=0; // ignore things we cannot link to if (md) // found a matching global member { fd=md->getFileDef(); @@ -2963,18 +2964,19 @@ bool generateRef(OutputDocInterface &od,const char *scName, if (resolveRef(scName,name,inSeeBlock,&compound,&md)) { - if (md) // link to member + if (md && md->isLinkable()) // link to member { od.writeObjectLink(md->getReference(), md->getOutputFileBase(), md->anchor(),linkText); // generate the page reference (for LaTeX) - if (md->isLinkableInProject()) + if (!md->isReference()) { writePageRef(od,md->getOutputFileBase(),md->anchor()); } + return TRUE; } - else // link to compound + else if (compound && compound->isLinkable()) // link to compound { if (rt==0 && compound->definitionType()==Definition::TypeGroup) { @@ -2991,14 +2993,11 @@ bool generateRef(OutputDocInterface &od,const char *scName, { writePageRef(od,compound->getOutputFileBase(),0); } + return TRUE; } - return TRUE; - } - else // no link possible - { - od.docify(linkText); - return FALSE; } + od.docify(linkText); + return FALSE; } bool resolveLink(/* in */ const char *scName, diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index ec3bc47..5c0c191 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -1012,6 +1012,11 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) generateXMLSection(cd,ti,t,&cd->proSlots,"protected-slot"); generateXMLSection(cd,ti,t,&cd->proStaticMethods,"protected-static-func"); generateXMLSection(cd,ti,t,&cd->proStaticAttribs,"protected-static-attrib"); + generateXMLSection(cd,ti,t,&cd->pacTypes,"package-type"); + generateXMLSection(cd,ti,t,&cd->pacMethods,"package-func"); + generateXMLSection(cd,ti,t,&cd->pacAttribs,"package-attrib"); + generateXMLSection(cd,ti,t,&cd->pacStaticMethods,"package-static-func"); + generateXMLSection(cd,ti,t,&cd->pacStaticAttribs,"package-static-attrib"); generateXMLSection(cd,ti,t,&cd->priTypes,"private-type"); generateXMLSection(cd,ti,t,&cd->priMethods,"private-func"); generateXMLSection(cd,ti,t,&cd->priAttribs,"private-attrib"); |