summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2012-02-20 21:09:54 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2012-02-20 21:09:54 (GMT)
commit34d4ace6d4037862b6d280f1d7534292c714bf59 (patch)
treea9a7b7b5542fbc9a2189f8ae6b39379770043b48 /src
parentc22d77a7a9c0f26a060a58047f514869a9e0a067 (diff)
downloadDoxygen-34d4ace6d4037862b6d280f1d7534292c714bf59.zip
Doxygen-34d4ace6d4037862b6d280f1d7534292c714bf59.tar.gz
Doxygen-34d4ace6d4037862b6d280f1d7534292c714bf59.tar.bz2
Release-1.7.6.1-20120220
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.in2
-rw-r--r--src/arguments.cpp17
-rw-r--r--src/arguments.h99
-rw-r--r--src/bufstr.h2
-rw-r--r--src/cite.cpp5
-rw-r--r--src/classdef.cpp54
-rw-r--r--src/classdef.h2
-rw-r--r--src/classlist.cpp2
-rw-r--r--src/classlist.h2
-rw-r--r--src/cmdmapper.cpp2
-rw-r--r--src/cmdmapper.h2
-rw-r--r--src/code.h2
-rw-r--r--src/code.l44
-rw-r--r--src/commentcnv.h2
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/commentscan.h2
-rw-r--r--src/commentscan.l20
-rw-r--r--src/config.h2
-rw-r--r--src/config.l2
-rw-r--r--src/config.xml24
-rwxr-xr-xsrc/configgen.py2
-rw-r--r--src/configoptions.cpp31
-rw-r--r--src/configoptions.h2
-rw-r--r--src/constexp.h2
-rw-r--r--src/constexp.l2
-rw-r--r--src/constexp.y2
-rw-r--r--src/cppvalue.cpp2
-rw-r--r--src/cppvalue.h2
-rw-r--r--src/dbusxmlscanner.cpp1
-rw-r--r--src/debug.cpp3
-rw-r--r--src/debug.h5
-rw-r--r--src/declinfo.h2
-rw-r--r--src/declinfo.l2
-rw-r--r--src/defargs.h2
-rw-r--r--src/defargs.l3
-rw-r--r--src/defgen.cpp3
-rw-r--r--src/defgen.h2
-rw-r--r--src/define.cpp2
-rw-r--r--src/define.h2
-rw-r--r--src/definition.cpp67
-rw-r--r--src/definition.h3
-rw-r--r--src/diagram.cpp2
-rw-r--r--src/diagram.h4
-rw-r--r--src/dirdef.cpp87
-rw-r--r--src/dirdef.h4
-rw-r--r--src/docparser.cpp3
-rw-r--r--src/docparser.h2
-rw-r--r--src/docsets.cpp2
-rw-r--r--src/docsets.h2
-rw-r--r--src/doctokenizer.h2
-rw-r--r--src/doctokenizer.l7
-rw-r--r--src/docvisitor.h2
-rw-r--r--src/dot.cpp12
-rw-r--r--src/dot.h2
-rw-r--r--src/doxygen.cpp24
-rw-r--r--src/doxygen.css57
-rw-r--r--src/doxygen.h2
-rw-r--r--src/doxygen.pro.in2
-rw-r--r--src/doxygen_css.h57
-rw-r--r--src/eclipsehelp.cpp2
-rw-r--r--src/eclipsehelp.h2
-rw-r--r--src/entry.cpp20
-rw-r--r--src/entry.h132
-rw-r--r--src/example.h2
-rw-r--r--src/filedef.cpp3
-rw-r--r--src/filedef.h2
-rw-r--r--src/filename.cpp2
-rw-r--r--src/filename.h2
-rw-r--r--src/filestorage.h2
-rw-r--r--src/footer.html2
-rw-r--r--src/footer_html.h2
-rw-r--r--src/formula.cpp2
-rw-r--r--src/formula.h2
-rw-r--r--src/fortrancode.h2
-rw-r--r--src/fortranscanner.h2
-rw-r--r--src/fortranscanner.l9
-rw-r--r--src/ftvhelp.cpp2
-rw-r--r--src/ftvhelp.h2
-rw-r--r--src/groupdef.cpp4
-rw-r--r--src/groupdef.h3
-rw-r--r--src/htags.cpp2
-rw-r--r--src/htags.h2
-rw-r--r--src/htmlattrib.h2
-rw-r--r--src/htmldocvisitor.cpp6
-rw-r--r--src/htmldocvisitor.h2
-rw-r--r--src/htmlgen.cpp39
-rw-r--r--src/htmlgen.h2
-rw-r--r--src/htmlhelp.cpp2
-rw-r--r--src/htmlhelp.h2
-rw-r--r--src/image.cpp2
-rw-r--r--src/image.h2
-rw-r--r--src/index.cpp275
-rw-r--r--src/index.h2
-rw-r--r--src/jquery_fx.js2
-rw-r--r--src/language.cpp2
-rw-r--r--src/language.h2
-rw-r--r--src/latexdocvisitor.cpp6
-rw-r--r--src/latexdocvisitor.h8
-rw-r--r--src/latexgen.cpp96
-rw-r--r--src/latexgen.h2
-rw-r--r--src/layout.cpp2
-rw-r--r--src/layout.h2
-rw-r--r--src/layout_default.h6
-rw-r--r--src/layout_default.xml6
-rw-r--r--src/libdoxycfg.pro.in2
-rw-r--r--src/libdoxycfg.t.in (renamed from src/libdoxycfg.t)6
-rw-r--r--src/libdoxygen.pro.in9
-rw-r--r--src/libdoxygen.t.in (renamed from src/libdoxygen.t)6
-rw-r--r--src/lockingptr.h2
-rw-r--r--src/logos.cpp2
-rw-r--r--src/logos.h2
-rw-r--r--src/main.cpp2
-rw-r--r--src/mandocvisitor.cpp2
-rw-r--r--src/mandocvisitor.h2
-rw-r--r--src/mangen.cpp4
-rw-r--r--src/mangen.h2
-rw-r--r--src/markdown.cpp109
-rw-r--r--src/markdown.h2
-rw-r--r--src/marshal.cpp1
-rw-r--r--src/marshal.h2
-rw-r--r--src/memberdef.cpp25
-rw-r--r--src/memberdef.h4
-rw-r--r--src/membergroup.cpp2
-rw-r--r--src/membergroup.h2
-rw-r--r--src/memberlist.cpp2
-rw-r--r--src/memberlist.h2
-rw-r--r--src/membername.cpp2
-rw-r--r--src/membername.h2
-rw-r--r--src/message.cpp2
-rw-r--r--src/message.h2
-rw-r--r--src/msc.cpp2
-rw-r--r--src/msc.h2
-rw-r--r--src/namespacedef.cpp2
-rw-r--r--src/namespacedef.h2
-rw-r--r--src/navtree.js4
-rw-r--r--src/navtree_js.h4
-rw-r--r--src/objcache.cpp2
-rw-r--r--src/objcache.h2
-rw-r--r--src/outputgen.cpp2
-rw-r--r--src/outputgen.h2
-rw-r--r--src/outputlist.cpp2
-rw-r--r--src/outputlist.h2
-rw-r--r--src/pagedef.cpp11
-rw-r--r--src/pagedef.h13
-rw-r--r--src/parserintf.h2
-rw-r--r--src/perlmodgen.cpp3
-rw-r--r--src/perlmodgen.h2
-rw-r--r--src/pre.h2
-rw-r--r--src/pre.l42
-rw-r--r--src/printdocvisitor.h2
-rw-r--r--src/pycode.h2
-rw-r--r--src/pycode.l2
-rw-r--r--src/pyscanner.h2
-rw-r--r--src/pyscanner.l3
-rw-r--r--src/qtbc.h2
-rw-r--r--src/reflist.cpp2
-rw-r--r--src/reflist.h2
-rw-r--r--src/rtfdocvisitor.cpp31
-rw-r--r--src/rtfdocvisitor.h2
-rw-r--r--src/rtfgen.cpp2
-rw-r--r--src/rtfgen.h2
-rw-r--r--src/rtfstyle.cpp2
-rw-r--r--src/rtfstyle.h2
-rw-r--r--src/scanner.h2
-rw-r--r--src/scanner.l19
-rw-r--r--src/searchindex.cpp2
-rw-r--r--src/searchindex.h2
-rw-r--r--src/section.h2
-rw-r--r--src/sortdict.h2
-rw-r--r--src/store.cpp2
-rw-r--r--src/store.h2
-rw-r--r--src/svgpan.js38
-rw-r--r--src/svgpan_js.h38
-rw-r--r--src/tagreader.cpp3
-rw-r--r--src/tagreader.h2
-rw-r--r--src/tclscanner.h2
-rw-r--r--src/tclscanner.l1
-rw-r--r--src/textdocvisitor.cpp2
-rw-r--r--src/textdocvisitor.h2
-rw-r--r--src/translator.h2
-rw-r--r--src/translator_am.h2
-rw-r--r--src/translator_ar.h2
-rw-r--r--src/translator_br.h2
-rw-r--r--src/translator_ca.h2
-rw-r--r--src/translator_cn.h2
-rw-r--r--src/translator_cz.h2
-rw-r--r--src/translator_de.h2
-rw-r--r--src/translator_dk.h2
-rw-r--r--src/translator_en.h2
-rw-r--r--src/translator_eo.h2
-rw-r--r--src/translator_es.h2
-rw-r--r--src/translator_fa.h2
-rw-r--r--src/translator_fi.h2
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_gr.h2
-rw-r--r--src/translator_hr.h2
-rw-r--r--src/translator_hu.h2
-rw-r--r--src/translator_id.h2
-rw-r--r--src/translator_it.h2
-rw-r--r--src/translator_je.h2
-rw-r--r--src/translator_jp.h2
-rw-r--r--src/translator_ke.h2
-rw-r--r--src/translator_kr.h2
-rw-r--r--src/translator_lt.h2
-rw-r--r--src/translator_mk.h2
-rw-r--r--src/translator_nl.h2
-rw-r--r--src/translator_no.h2
-rw-r--r--src/translator_pl.h2
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_ro.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_sc.h2
-rw-r--r--src/translator_si.h2
-rw-r--r--src/translator_sk.h2
-rw-r--r--src/translator_sr.h2
-rw-r--r--src/translator_sv.h2
-rw-r--r--src/translator_tr.h2
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/translator_ua.h2
-rw-r--r--src/translator_vi.h2
-rw-r--r--src/translator_za.h2
-rw-r--r--src/translatordecoder.h2
-rw-r--r--src/types.h92
-rw-r--r--src/util.cpp78
-rw-r--r--src/util.h26
-rw-r--r--src/version.h2
-rw-r--r--src/vhdlcode.l3
-rw-r--r--src/vhdldocgen.cpp3
-rw-r--r--src/vhdldocgen.h3
-rw-r--r--src/vhdlparser.y1
-rw-r--r--src/vhdlscanner.h2
-rw-r--r--src/xmldocvisitor.cpp2
-rw-r--r--src/xmldocvisitor.h2
-rw-r--r--src/xmlgen.cpp3
-rw-r--r--src/xmlgen.h2
235 files changed, 1429 insertions, 737 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index eb0c170..2ecffd2 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -2,7 +2,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
diff --git a/src/arguments.cpp b/src/arguments.cpp
new file mode 100644
index 0000000..128223b
--- /dev/null
+++ b/src/arguments.cpp
@@ -0,0 +1,17 @@
+#include "arguments.h"
+
+/*! the argument list is documented if one of its
+ * arguments is documented
+ */
+bool ArgumentList::hasDocumentation() const
+{
+ bool hasDocs=FALSE;
+ ArgumentListIterator ali(*this);
+ Argument *a;
+ for (ali.toFirst();!hasDocs && (a=ali.current());++ali)
+ {
+ hasDocs = a->hasDocumentation();
+ }
+ return hasDocs;
+}
+
diff --git a/src/arguments.h b/src/arguments.h
new file mode 100644
index 0000000..c5ca942
--- /dev/null
+++ b/src/arguments.h
@@ -0,0 +1,99 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef ARGUMENTS_H
+#define ARGUMENTS_H
+
+#include "qtbc.h"
+#include <qlist.h>
+
+/*! \brief This class contains the information about the argument of a
+ * function or template
+ *
+ */
+struct Argument
+{
+ /*! Construct a new argument. */
+ Argument() {}
+ /*! Copy an argument (does a deep copy of all strings). */
+ Argument(const Argument &a)
+ {
+ attrib=a.attrib.copy();
+ type=a.type.copy();
+ name=a.name.copy();
+ defval=a.defval.copy();
+ docs=a.docs.copy();
+ array=a.array.copy();
+ }
+ /*! Assignment of an argument (does a deep copy of all strings). */
+ Argument &operator=(const Argument &a)
+ {
+ if (this!=&a)
+ {
+ attrib=a.attrib.copy();
+ type=a.type.copy();
+ name=a.name.copy();
+ defval=a.defval.copy();
+ docs=a.docs.copy();
+ array=a.array.copy();
+ }
+ return *this;
+ }
+ /*! return TRUE if this argument is documentation and the argument has a
+ * non empty name.
+ */
+ bool hasDocumentation() const
+ {
+ return !name.isEmpty() && !docs.isEmpty();
+ }
+
+ QCString attrib; /*!< Argument's attribute (IDL only) */
+ QCString type; /*!< Argument's type */
+ QCString canType; /*!< Cached value of canonical type (after type resolution). Empty initially. */
+ QCString name; /*!< Argument's name (may be empty) */
+ QCString array; /*!< Argument's array specifier (may be empty) */
+ QCString defval; /*!< Argument's default value (may be empty) */
+ QCString docs; /*!< Argument's documentation (may be empty) */
+};
+
+/*! \brief This class represents an function or template argument list.
+ *
+ * This class also stores some information about member that is typically
+ * put after the argument list, such as wether the member is const,
+ * volatile or pure virtual.
+ */
+class ArgumentList : public QList<Argument>
+{
+ public:
+ /*! Creates an empty argument list */
+ ArgumentList() : QList<Argument>(),
+ constSpecifier(FALSE),
+ volatileSpecifier(FALSE),
+ pureSpecifier(FALSE)
+ { setAutoDelete(TRUE); }
+ /*! Destroys the argument list */
+ ~ArgumentList() {}
+ bool hasDocumentation() const;
+ /*! Does the member modify the state of the class? default: FALSE. */
+ bool constSpecifier;
+ /*! Is the member volatile? default: FALSE. */
+ bool volatileSpecifier;
+ /*! Is this a pure virtual member? default: FALSE */
+ bool pureSpecifier;
+};
+
+typedef QListIterator<Argument> ArgumentListIterator;
+
+#endif
diff --git a/src/bufstr.h b/src/bufstr.h
index d9a93f0..2945b5b 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/cite.cpp b/src/cite.cpp
index c684083..96e88ae 100644
--- a/src/cite.cpp
+++ b/src/cite.cpp
@@ -52,11 +52,16 @@ static QCString getListOfBibFiles(const QCString &sep,bool stripExtension)
const char *bibdata = citeDataList.first();
while (bibdata)
{
+ int i;
QCString bibFile = bibdata;
if (stripExtension && bibFile.right(4)==".bib")
{
bibFile = bibFile.left(bibFile.length()-4);
}
+ if (stripExtension && (i=bibFile.findRev('/'))!=-1)
+ {
+ bibFile = bibFile.mid(i+1);
+ }
if (!bibFile.isEmpty())
{
result+=bibFile;
diff --git a/src/classdef.cpp b/src/classdef.cpp
index c5ff60d..bd44c87 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -38,6 +38,7 @@
#include "searchindex.h"
#include "vhdldocgen.h"
#include "layout.h"
+#include "arguments.h"
//-----------------------------------------------------------------------------
@@ -404,14 +405,12 @@ void ClassDef::internalInsertMember(MemberDef *md,
if (1 /*!isReference()*/) // changed to 1 for showing members of external
// classes when HAVE_DOT and UML_LOOK are enabled.
{
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
-
bool isSimple=FALSE;
/********************************************/
/* insert member in the declaration section */
/********************************************/
- if (md->isRelated() && (extractPrivate || prot!=Private))
+ if (md->isRelated() && protectionLevelVisible(prot))
{
addMemberToList(MemberList::related,md,TRUE);
}
@@ -560,7 +559,7 @@ void ClassDef::internalInsertMember(MemberDef *md,
/*******************************************************/
/* insert member in the detailed documentation section */
/*******************************************************/
- if ((md->isRelated() && (extractPrivate || prot!=Private)) || md->isFriend())
+ if ((md->isRelated() && protectionLevelVisible(prot)) || md->isFriend())
{
addMemberToList(MemberList::relatedMembers,md,FALSE);
}
@@ -579,23 +578,13 @@ void ClassDef::internalInsertMember(MemberDef *md,
addMemberToList(MemberList::functionMembers,md,FALSE);
break;
case MemberDef::Slot:
- switch (prot)
+ if (protectionLevelVisible(prot))
{
- case Protected:
- case Package:
- case Public:
- addMemberToList(MemberList::functionMembers,md,FALSE);
- break;
- case Private:
- if (extractPrivate)
- {
- addMemberToList(MemberList::functionMembers,md,FALSE);
- }
- break;
+ addMemberToList(MemberList::functionMembers,md,FALSE);
}
break;
default: // any of the other members
- if (prot!=Private || extractPrivate)
+ if (protectionLevelVisible(prot))
{
switch (md->memberType())
{
@@ -2047,7 +2036,7 @@ void ClassDef::writeDocumentationForInnerClasses(OutputList &ol)
for (cli.toFirst();(innerCd=cli.current());++cli)
{
if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
- (innerCd->protection()!=Private || Config_getBool("EXTRACT_PRIVATE")) &&
+ protectionLevelVisible(innerCd->protection()) &&
!innerCd->isEmbeddedInOuterScope()
)
{
@@ -2162,7 +2151,7 @@ void ClassDef::writeMemberList(OutputList &ol)
memberWritten=TRUE;
}
else if (!Config_getBool("HIDE_UNDOC_MEMBERS") &&
- (md->protection()!=Private || Config_getBool("EXTRACT_PRIVATE") || md->isFriend())
+ (protectionLevelVisible(md->protection()) || md->isFriend())
) // no documentation,
// generate link to the class instead.
{
@@ -2429,6 +2418,8 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
mg->writePlainDeclarations(ol,this,0,0,0);
}
}
+ static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
+ static bool extractPackage = Config_getBool("EXTRACT_PACKAGE");
writePlainMemberDeclaration(ol,MemberList::pubTypes,inGroup);
writePlainMemberDeclaration(ol,MemberList::pubMethods,inGroup);
@@ -2446,12 +2437,15 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
writePlainMemberDeclaration(ol,MemberList::proSlots,inGroup);
writePlainMemberDeclaration(ol,MemberList::proStaticMethods,inGroup);
writePlainMemberDeclaration(ol,MemberList::proStaticAttribs,inGroup);
- writePlainMemberDeclaration(ol,MemberList::pacTypes,inGroup);
- writePlainMemberDeclaration(ol,MemberList::pacMethods,inGroup);
- writePlainMemberDeclaration(ol,MemberList::pacAttribs,inGroup);
- writePlainMemberDeclaration(ol,MemberList::pacStaticMethods,inGroup);
- writePlainMemberDeclaration(ol,MemberList::pacStaticAttribs,inGroup);
- if (Config_getBool("EXTRACT_PRIVATE"))
+ if (extractPackage)
+ {
+ writePlainMemberDeclaration(ol,MemberList::pacTypes,inGroup);
+ writePlainMemberDeclaration(ol,MemberList::pacMethods,inGroup);
+ writePlainMemberDeclaration(ol,MemberList::pacAttribs,inGroup);
+ writePlainMemberDeclaration(ol,MemberList::pacStaticMethods,inGroup);
+ writePlainMemberDeclaration(ol,MemberList::pacStaticAttribs,inGroup);
+ }
+ if (extractPrivate)
{
writePlainMemberDeclaration(ol,MemberList::priTypes,inGroup);
writePlainMemberDeclaration(ol,MemberList::priMethods,inGroup);
@@ -2467,7 +2461,6 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
/*! a link to this class is possible within this project */
bool ClassDef::isLinkableInProject() const
{
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
static bool extractLocal = Config_getBool("EXTRACT_LOCAL_CLASSES");
static bool extractStatic = Config_getBool("EXTRACT_STATIC");
static bool hideUndoc = Config_getBool("HIDE_UNDOC_CLASSES");
@@ -2480,7 +2473,7 @@ bool ClassDef::isLinkableInProject() const
return !name().isEmpty() && /* has a name */
!isArtificial() && !isHidden() && /* not hidden */
name().find('@')==-1 && /* not anonymous */
- (m_impl->prot!=Private || extractPrivate) && /* private */
+ protectionLevelVisible(m_impl->prot) && /* private/internal */
(!m_impl->isLocal || extractLocal) && /* local */
(hasDocumentation() || !hideUndoc) && /* documented */
(!m_impl->isStatic || extractStatic) && /* static */
@@ -2505,7 +2498,6 @@ bool ClassDef::isLinkable() const
bool ClassDef::isVisibleInHierarchy()
{
static bool allExternals = Config_getBool("ALLEXTERNALS");
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
static bool hideUndocClasses = Config_getBool("HIDE_UNDOC_CLASSES");
static bool extractStatic = Config_getBool("EXTRACT_STATIC");
@@ -2516,7 +2508,7 @@ bool ClassDef::isVisibleInHierarchy()
// not an artificially introduced class
!isArtificial() &&
// and not privately inherited
- (m_impl->prot!=Private || extractPrivate) &&
+ protectionLevelVisible(m_impl->prot) &&
// documented or shown anyway or documentation is external
(hasDocumentation() ||
!hideUndocClasses ||
@@ -2587,7 +2579,7 @@ void ClassDef::mergeMembers()
//static bool optimizeOutputForJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
//static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
SrcLangExt lang = getLanguage();
- QCString sep=getLanguageSpecificSeparator(lang);
+ QCString sep=getLanguageSpecificSeparator(lang,TRUE);
int sepLen = sep.length();
m_impl->membersMerged=TRUE;
diff --git a/src/classdef.h b/src/classdef.h
index fb37e0b..205b437 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/classlist.cpp b/src/classlist.cpp
index cb52541..b85b178 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/classlist.h b/src/classlist.h
index b54d510..9b76c39 100644
--- a/src/classlist.h
+++ b/src/classlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp
index b42ca4b..5b47db5 100644
--- a/src/cmdmapper.cpp
+++ b/src/cmdmapper.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/cmdmapper.h b/src/cmdmapper.h
index b2950ce..8ff3b22 100644
--- a/src/cmdmapper.h
+++ b/src/cmdmapper.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/code.h b/src/code.h
index 982d829..f811f55 100644
--- a/src/code.h
+++ b/src/code.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/code.l b/src/code.l
index 6c9bcef..46e881b 100644
--- a/src/code.l
+++ b/src/code.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -34,6 +34,7 @@
#include "util.h"
#include "membername.h"
#include "searchindex.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
@@ -546,10 +547,10 @@ static void nextCodeLine()
/*! write a code fragment `text' that may span multiple lines, inserting
* line numbers for each line.
*/
-static void codifyLines(char *text)
+static void codifyLines(const char *text)
{
//printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
- char *p=text,*sp=p;
+ const char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
@@ -559,8 +560,13 @@ static void codifyLines(char *text)
if (c=='\n')
{
g_yyLineNr++;
- *(p-1)='\0';
- g_code->codify(sp);
+ //*(p-1)='\0';
+ int l = p-sp-1;
+ char *tmp = (char*)malloc(l+1);
+ memcpy(tmp,sp,l);
+ tmp[l]='\0';
+ g_code->codify(tmp);
+ free(tmp);
nextCodeLine();
}
else
@@ -874,6 +880,7 @@ static bool getLinkInScope(const QCString &c, // scope
if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef,FALSE,g_forceTagReference) &&
md->isLinkable() && (!varOnly || md->isVariable()))
{
+ //printf("found it!\n");
if (g_exampleBlock)
{
QCString anchor;
@@ -939,7 +946,7 @@ static bool getLink(const char *className,
return TRUE;
}
-static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
+static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName,
bool typeOnly=FALSE,bool varOnly=FALSE)
{
int i=0;
@@ -954,6 +961,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName,
{
className+="-p";
}
+ className = substitute(className,"\\","::"); // for PHP namespaces
ClassDef *cd=0,*lcd=0;
MemberDef *md=0;
bool isLocal=FALSE;
@@ -1277,7 +1285,18 @@ static void generateMemberLink(CodeOutputInterface &ol,const QCString &varName,
return;
}
-static void generateFunctionLink(CodeOutputInterface &ol,char *funcName)
+static void generatePHPVariableLink(CodeOutputInterface &ol,const char *varName)
+{
+ QCString name = varName+7; // strip $this->
+ name.prepend("$");
+ //printf("generatePHPVariableLink(%s) name=%s scope=%s\n",varName,name.data(),g_classScope.data());
+ if (!getLink(g_classScope,name,ol,varName))
+ {
+ codifyLines(varName);
+ }
+}
+
+static void generateFunctionLink(CodeOutputInterface &ol,const char *funcName)
{
//CodeClassDef *ccd=0;
ClassDef *ccd=0;
@@ -2105,6 +2124,8 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
}
<ClassName>{ID}("\\"{ID})* { // PHP namespace
g_curClassName=substitute(yytext,"\\","::");
+ g_scopeStack.push(CLASSBLOCK);
+ pushScope(g_curClassName);
addType();
generateClassOrGlobalLink(*g_code,yytext);
BEGIN( ClassVar );
@@ -2204,8 +2225,8 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_code->codify(yytext);
endFontClass();
}
-<Bases>{ID} {
- //printf("%s:addBase(%s)\n",g_ccd.name.data(),yytext);
+<Bases>{SEP}?({ID}{SEP})*{ID} {
+ //fprintf(stderr,"%s:addBase(%s)\n",g_curClassName.data(),yytext);
g_curClassBases.inSort(yytext);
generateClassOrGlobalLink(*g_code,yytext);
}
@@ -2421,6 +2442,11 @@ OPERATOR {ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}
g_lastTemplCastContext = YY_START;
BEGIN(TemplCast);
}
+<Body>"$this->"{SCOPENAME}/{BN}*[;,)\]] { // PHP member variable
+ addType();
+ generatePHPVariableLink(*g_code,yytext);
+ g_name+=yytext+7;
+ }
<Body,TemplCast>{SCOPENAME}{B}*"<"[^\n\/\-\.\{\"\>]*">"("::"{ID})*/{B}* { // A<T> *pt;
int i=QCString(yytext).find('<');
QCString kw = QCString(yytext).left(i).stripWhiteSpace();
diff --git a/src/commentcnv.h b/src/commentcnv.h
index ae113a3..5277524 100644
--- a/src/commentcnv.h
+++ b/src/commentcnv.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/commentcnv.l b/src/commentcnv.l
index fa392bf..1ae07c0 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/commentscan.h b/src/commentscan.h
index a34dfc7..41cf766 100644
--- a/src/commentscan.h
+++ b/src/commentscan.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/commentscan.l b/src/commentscan.l
index 85b378a..966183d 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -1,6 +1,6 @@
/*****************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -109,6 +109,7 @@ static bool handleProtected(const QCString &);
static bool handleProtectedSection(const QCString &);
static bool handlePublic(const QCString &s);
static bool handlePublicSection(const QCString &s);
+static bool handleToc(const QCString &s);
static bool handleInherit(const QCString &);
static bool handleExtends(const QCString &);
static bool handleCopyDoc(const QCString &);
@@ -203,6 +204,7 @@ static DocCmdMap docCmdMap[] =
{ "protectedsection",&handleProtectedSection, FALSE },
{ "public", &handlePublic, FALSE },
{ "publicsection", &handlePublicSection, FALSE },
+ { "tableofcontents", &handleToc, FALSE },
{ "inherit", &handleInherit, TRUE },
{ "extends", &handleExtends, TRUE },
{ "implements", &handleExtends, TRUE },
@@ -590,9 +592,9 @@ static QCString addFormula()
formLabel.sprintf("\\form#%d",f->getId());
}
int i;
- for (i=0;i<formulaNewLines;i++) formLabel+="\\_fakenl"; // add fake newlines to
- // keep the warnings
- // correctly aligned.
+ for (i=0;i<formulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to
+ // keep the warnings
+ // correctly aligned.
return formLabel;
}
@@ -2560,6 +2562,16 @@ static bool handlePublicSection(const QCString &)
return FALSE;
}
+static bool handleToc(const QCString &)
+{
+ if (current->section==Entry::PAGEDOC_SEC ||
+ current->section==Entry::MAINPAGEDOC_SEC)
+ {
+ current->stat=TRUE; // we 'abuse' stat to pass whether or the TOC is enabled
+ }
+ return FALSE;
+}
+
static bool handleInherit(const QCString &)
{
BEGIN(InheritParam);
diff --git a/src/config.h b/src/config.h
index ffa912f..ccbf713 100644
--- a/src/config.h
+++ b/src/config.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/config.l b/src/config.l
index ee535e9..2e23ea1 100644
--- a/src/config.l
+++ b/src/config.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/config.xml b/src/config.xml
index adbb326..20eb5ac 100644
--- a/src/config.xml
+++ b/src/config.xml
@@ -355,6 +355,10 @@ the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
If the EXTRACT_PRIVATE tag is set to YES all private members of a class
will be included in the documentation.
' defval='0'/>
+ <option type='bool' id='EXTRACT_PACKAGE' docs='
+If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+scope will be included in the documentation.
+' defval='0'/>
<option type='bool' id='EXTRACT_STATIC' docs='
If the EXTRACT_STATIC tag is set to YES all static members of a file
will be included in the documentation.
@@ -1084,7 +1088,7 @@ Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
(see http://www.mathjax.org) which uses client side Javascript for the
rendering instead of using prerendered bitmaps. Use this if you do not
have LaTeX installed or if you want to formulas look prettier in the HTML
-output. When enabled you also need to install MathJax separately and
+output. When enabled you may also need to install MathJax separately and
configure the path to it using the MATHJAX_RELPATH option.
' defval='0'/>
<option type='string' id='MATHJAX_RELPATH' docs='
@@ -1092,11 +1096,11 @@ When MathJax is enabled you need to specify the location relative to the
HTML output directory using the MATHJAX_RELPATH option. The destination
directory should contain the MathJax.js script. For instance, if the mathjax
directory is located at the same level as the HTML output directory, then
-MATHJAX_RELPATH should be ../mathjax. The default value points to the
-mathjax.org site, so you can quickly see the result without installing
-MathJax, but it is strongly recommended to install a local copy of MathJax
-before deployment.
-' defval='http://www.mathjax.org/mathjax'/>
+MATHJAX_RELPATH should be ../mathjax. The default value points to
+the MathJax Content Delivery Network so you can quickly see the result without
+installing MathJax. However, it is strongly recommended to install a local
+copy of MathJax from http://www.mathjax.org before deployment.
+' defval='http://cdn.mathjax.org/mathjax/latest'/>
<option type='list' id='MATHJAX_EXTENSIONS' format='string' docs='
The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
names that should be enabled during MathJax rendering.
@@ -1493,6 +1497,14 @@ If the UML_LOOK tag is set to YES doxygen will generate inheritance and
collaboration diagrams in a style similar to the OMG&apos;s Unified Modeling
Language.
' defval='0' depends='HAVE_DOT'/>
+ <option type='int' id='UML_LIMIT_NUM_FIELDS' docs='
+If the UML_LOOK tag is enabled, the fields and methods are shown inside
+the class node. If there are many fields or methods and many nodes the
+graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
+threshold limits the number of items for each type to make the size more
+managable. Set this to 0 for no limit. Note that the threshold may be
+exceeded by 50% before the limit is enforced.
+' defval='10' minval='0' maxval='100' depends='HAVE_DOT'/>
<option type='bool' id='TEMPLATE_RELATIONS' docs='
If set to YES, the inheritance and collaboration graphs will show the
relations between templates and their instances.
diff --git a/src/configgen.py b/src/configgen.py
index f567127..2b06d9e 100755
--- a/src/configgen.py
+++ b/src/configgen.py
@@ -1,6 +1,6 @@
# python script to generate configoptions.cpp from config.xml
#
-# Copyright (C) 1997-2008 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
diff --git a/src/configoptions.cpp b/src/configoptions.cpp
index e211418..d34de2a 100644
--- a/src/configoptions.cpp
+++ b/src/configoptions.cpp
@@ -500,6 +500,12 @@ void addConfigOptions(Config *cfg)
);
//----
cb = cfg->addBool(
+ "EXTRACT_PACKAGE",
+ "If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.",
+ FALSE
+ );
+ //----
+ cb = cfg->addBool(
"EXTRACT_STATIC",
"If the EXTRACT_STATIC tag is set to YES all static members of a file\n"
"will be included in the documentation.",
@@ -1596,7 +1602,7 @@ void addConfigOptions(Config *cfg)
"(see http://www.mathjax.org) which uses client side Javascript for the\n"
"rendering instead of using prerendered bitmaps. Use this if you do not\n"
"have LaTeX installed or if you want to formulas look prettier in the HTML\n"
- "output. When enabled you also need to install MathJax separately and\n"
+ "output. When enabled you may also need to install MathJax separately and\n"
"configure the path to it using the MATHJAX_RELPATH option.",
FALSE
);
@@ -1607,12 +1613,13 @@ void addConfigOptions(Config *cfg)
"HTML output directory using the MATHJAX_RELPATH option. The destination\n"
"directory should contain the MathJax.js script. For instance, if the mathjax\n"
"directory is located at the same level as the HTML output directory, then\n"
- "MATHJAX_RELPATH should be ../mathjax. The default value points to the\n"
- "mathjax.org site, so you can quickly see the result without installing\n"
- "MathJax, but it is strongly recommended to install a local copy of MathJax\n"
- "before deployment."
+ "MATHJAX_RELPATH should be ../mathjax. The default value points to\n"
+ "the MathJax Content Delivery Network so you can quickly see the result without\n"
+ "installing MathJax.\n"
+ "However, it is strongly recommended to install a local\n"
+ "copy of MathJax from http://www.mathjax.org before deployment."
);
- cs->setDefaultValue("http://www.mathjax.org/mathjax");
+ cs->setDefaultValue("http://cdn.mathjax.org/mathjax/latest");
//----
cl = cfg->addList(
"MATHJAX_EXTENSIONS",
@@ -2260,6 +2267,18 @@ void addConfigOptions(Config *cfg)
);
cb->addDependency("HAVE_DOT");
//----
+ ci = cfg->addInt(
+ "UML_LIMIT_NUM_FIELDS",
+ "If the UML_LOOK tag is enabled, the fields and methods are shown inside\n"
+ "the class node. If there are many fields or methods and many nodes the\n"
+ "graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS\n"
+ "threshold limits the number of items for each type to make the size more\n"
+ "managable. Set this to 0 for no limit. Note that the threshold may be\n"
+ "exceeded by 50% before the limit is enforced.",
+ 0,100,10
+ );
+ ci->addDependency("HAVE_DOT");
+ //----
cb = cfg->addBool(
"TEMPLATE_RELATIONS",
"If set to YES, the inheritance and collaboration graphs will show the\n"
diff --git a/src/configoptions.h b/src/configoptions.h
index d0b17f7..8bf94d5 100644
--- a/src/configoptions.h
+++ b/src/configoptions.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/constexp.h b/src/constexp.h
index 9f762b8..8fedc34 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/constexp.l b/src/constexp.l
index 8ebd10b..fae99cf 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/constexp.y b/src/constexp.y
index b5fa9d1..c8b35e5 100644
--- a/src/constexp.y
+++ b/src/constexp.y
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/cppvalue.cpp b/src/cppvalue.cpp
index 9df5d2a..69b8be4 100644
--- a/src/cppvalue.cpp
+++ b/src/cppvalue.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/cppvalue.h b/src/cppvalue.h
index c759453..d3e2a1d 100644
--- a/src/cppvalue.h
+++ b/src/cppvalue.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/dbusxmlscanner.cpp b/src/dbusxmlscanner.cpp
index 9cc3d93..51b0a59 100644
--- a/src/dbusxmlscanner.cpp
+++ b/src/dbusxmlscanner.cpp
@@ -26,6 +26,7 @@
#include "message.h"
#include "util.h"
+#include "arguments.h"
// -----------------------------------------------------------------------
// Convenience defines:
diff --git a/src/debug.cpp b/src/debug.cpp
index 1c23737..1c3c1c1 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -45,6 +45,7 @@ static LabelMap s_labels[] =
{ "time", Debug::Time },
{ "extcmd", Debug::ExtCmd },
{ "markdown", Debug::Markdown },
+ { "filteroutput", Debug::FilterOutput },
{ 0, (Debug::DebugMask)0 }
};
diff --git a/src/debug.h b/src/debug.h
index 98b80b9..f624628 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -34,7 +34,8 @@ class Debug
PrintTree = 0x00000100,
Time = 0x00000200,
ExtCmd = 0x00000400,
- Markdown = 0x00000800
+ Markdown = 0x00000800,
+ FilterOutput = 0x00001000
};
static void print(DebugMask mask,int prio,const char *fmt,...);
static void setFlag(const char *label);
diff --git a/src/declinfo.h b/src/declinfo.h
index 9562456..a91f5bb 100644
--- a/src/declinfo.h
+++ b/src/declinfo.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/declinfo.l b/src/declinfo.l
index 8bd57b8..746aaae 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/defargs.h b/src/defargs.h
index aabbf79..b2bc198 100644
--- a/src/defargs.h
+++ b/src/defargs.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/defargs.l b/src/defargs.l
index 86f6484..acada87 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -55,6 +55,7 @@
#include "defargs.h"
#include "entry.h"
#include "util.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
diff --git a/src/defgen.cpp b/src/defgen.cpp
index 5a6133e..c3b17ba 100644
--- a/src/defgen.cpp
+++ b/src/defgen.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -28,6 +28,7 @@
#include "defargs.h"
#include "outputgen.h"
#include "dot.h"
+#include "arguments.h"
#include <qdir.h>
#include <qfile.h>
diff --git a/src/defgen.h b/src/defgen.h
index b4a77a5..5b26cd0 100644
--- a/src/defgen.h
+++ b/src/defgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/define.cpp b/src/define.cpp
index 9bc9755..e5dd154 100644
--- a/src/define.cpp
+++ b/src/define.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/define.h b/src/define.h
index 2e8a996..b5e4f6e 100644
--- a/src/define.h
+++ b/src/define.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/definition.cpp b/src/definition.cpp
index 4bca129..b917cfe 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -367,7 +367,7 @@ void Definition::addSectionsToIndex()
//printf("Definition::addSectionsToIndex()\n");
SDict<SectionInfo>::Iterator li(*m_impl->sectionDict);
SectionInfo *si;
- int level=0;
+ int level=1;
for (li.toFirst();(si=li.current());++li)
{
if (si->type==SectionInfo::Section ||
@@ -394,13 +394,70 @@ void Definition::addSectionsToIndex()
level = nextLevel;
}
}
- while (level>0)
+ while (level>1)
{
Doxygen::indexList.decContentsDepth();
level--;
}
}
+void Definition::writeToc(OutputList &ol)
+{
+ makeResident();
+ if (m_impl->sectionDict==0) return;
+ ol.pushGeneratorState();
+ ol.disableAllBut(OutputGenerator::Html);
+ ol.writeString("<div class=\"toc\">");
+ ol.writeString("<h3>");
+ ol.writeString(theTranslator->trRTFTableOfContents());
+ ol.writeString("</h3>\n");
+ ol.writeString("<ul>");
+ SDict<SectionInfo>::Iterator li(*m_impl->sectionDict);
+ SectionInfo *si;
+ int level=1;
+ char cs[2];
+ cs[1]='\0';
+ bool inLi[5]={ FALSE, FALSE, FALSE, FALSE };
+ for (li.toFirst();(si=li.current());++li)
+ {
+ if (si->type==SectionInfo::Section ||
+ si->type==SectionInfo::Subsection ||
+ si->type==SectionInfo::Subsubsection ||
+ si->type==SectionInfo::Paragraph)
+ {
+ //printf(" level=%d title=%s\n",level,si->title.data());
+ int nextLevel = (int)si->type;
+ if (nextLevel>level)
+ {
+ ol.writeString("<ul>");
+ }
+ else if (nextLevel<level)
+ {
+ if (inLi[level]) ol.writeString("</li>\n");
+ inLi[level]=FALSE;
+ ol.writeString("</ul>\n");
+ }
+ cs[0]='0'+nextLevel;
+ if (inLi[nextLevel]) ol.writeString("</li>\n");
+ ol.writeString("<li class=\"level"+QCString(cs)+"\"><a href=\"#"+si->label+"\">"+si->title+"</a>");
+ inLi[nextLevel]=TRUE;
+ level = nextLevel;
+ }
+ }
+ while (level>1)
+ {
+ if (inLi[level]) ol.writeString("</li>\n");
+ inLi[level]=FALSE;
+ ol.writeString("</ul>\n");
+ level--;
+ }
+ if (inLi[level]) ol.writeString("</li>\n");
+ inLi[level]=FALSE;
+ ol.writeString("</ul>\n");
+ ol.writeString("</div>\n");
+ ol.popGeneratorState();
+}
+
void Definition::writeDocAnchorsToTagFile()
{
makeResident();
@@ -679,7 +736,7 @@ static bool readCodeFragment(const char *fileName,
cn=fgetc(f);
if (cn!=':') found=TRUE;
}
- else if (c=='{')
+ else if (c=='{') // } so vi matching brackets has no problem
{
found=TRUE;
}
@@ -743,6 +800,8 @@ static bool readCodeFragment(const char *fileName,
if (usePipe)
{
portable_pclose(f);
+ Debug::print(Debug::FilterOutput, 0, "Filter output\n");
+ Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",result.data());
}
else
{
diff --git a/src/definition.h b/src/definition.h
index c07eb3e..e09a478 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -330,6 +330,7 @@ class Definition : public DefinitionIntf, public LockableObj
void setLocalName(const QCString name);
void addSectionsToIndex();
+ void writeToc(OutputList &ol);
protected:
diff --git a/src/diagram.cpp b/src/diagram.cpp
index 487e44a..c40002c 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/diagram.h b/src/diagram.h
index b2dacb3..3e2cac2 100644
--- a/src/diagram.h
+++ b/src/diagram.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -17,7 +17,7 @@
*/
#include "qtbc.h"
-#include "entry.h"
+#include "types.h"
class ClassDef;
class DiagramRow;
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 05ab52f..c2739f2 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -22,6 +22,7 @@ DirDef::DirDef(const char *path) : Definition(path,1,path)
m_dispName = stripFromPath(path);
// get short name (last part of path)
m_shortName = path;
+ m_diskName = path;
if (m_shortName.at(m_shortName.length()-1)=='/')
{ // strip trailing /
m_shortName = m_shortName.left(m_shortName.length()-1);
@@ -105,8 +106,9 @@ static QCString encodeDirName(const QCString &anchor)
QCString DirDef::getOutputFileBase() const
{
- return "dir_"+encodeDirName(name());
- //return QCString().sprintf("dir_%06d",m_dirCount);
+ //printf("DirDef::getOutputFileBase() %s->dir_%s\n",
+ // m_diskName.data(),encodeDirName(m_diskName).data());
+ return "dir_"+encodeDirName(m_diskName);
}
void DirDef::writeDetailedDescription(OutputList &ol,const QCString &title)
@@ -737,6 +739,86 @@ void DirRelation::writeDocumentation(OutputList &ol)
//----------------------------------------------------------------------
// external functions
+/** In order to create stable, but unique directory names,
+ * we compute the common part of the path shared by all directories.
+ */
+static void computeCommonDirPrefix()
+{
+ QCString path;
+ DirDef *dir;
+ DirSDict::Iterator sdi(*Doxygen::directories);
+ if (Doxygen::directories->count()>0) // we have at least one dir
+ {
+ // start will full path of first dir
+ sdi.toFirst();
+ dir=sdi.current();
+ path=dir->name();
+ int i=path.findRev('/',path.length()-2);
+ path=path.left(i+1);
+ bool done=FALSE;
+ if (i==-1)
+ {
+ path="";
+ }
+ else
+ {
+ while (!done)
+ {
+ int l = path.length();
+ int count=0;
+ for (sdi.toFirst();(dir=sdi.current());++sdi)
+ {
+ QCString dirName = dir->name();
+ if (dirName.length()>path.length())
+ {
+ if (strncmp(dirName,path,l)!=0) // dirName does not start with path
+ {
+ int i=path.findRev('/',l-2);
+ if (i==-1) // no unique prefix -> stop
+ {
+ path="";
+ done=TRUE;
+ }
+ else // restart with shorter path
+ {
+ path=path.left(i+1);
+ break;
+ }
+ }
+ }
+ else // dir is shorter than path -> take path of dir as new start
+ {
+ path=dir->name();
+ int i=path.findRev('/',l-2);
+ if (i==-1) // no unique prefix -> stop
+ {
+ path="";
+ done=TRUE;
+ }
+ else // restart with shorter path
+ {
+ path=path.left(i+1);
+ }
+ break;
+ }
+ count++;
+ }
+ if (count==Doxygen::directories->count())
+ // path matches for all directories -> found the common prefix
+ {
+ done=TRUE;
+ }
+ }
+ }
+ }
+ for (sdi.toFirst();(dir=sdi.current());++sdi)
+ {
+ QCString diskName = dir->name().right(dir->name().length()-path.length());
+ dir->setDiskName(diskName);
+ //printf("set disk name: %s -> %s\n",dir->name().data(),diskName.data());
+ }
+}
+
void buildDirectories()
{
// for each input file
@@ -786,6 +868,7 @@ void buildDirectories()
}
}
}
+ computeCommonDirPrefix();
}
void computeDirDependencies()
diff --git a/src/dirdef.h b/src/dirdef.h
index 445e3ff..e7a6b0e 100644
--- a/src/dirdef.h
+++ b/src/dirdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -74,6 +74,7 @@ class DirDef : public Definition
static DirDef *mergeDirectoryInTree(const QCString &path);
bool visited;
+ void setDiskName(const QCString &name) { m_diskName = name; }
private:
friend void computeDirDependencies();
@@ -96,6 +97,7 @@ class DirDef : public Definition
DirList m_subdirs;
QCString m_dispName;
QCString m_shortName;
+ QCString m_diskName;
FileList *m_fileList; // list of files in the group
int m_dirCount;
int m_level;
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 526e349..12b6e1c 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -42,6 +42,7 @@
#include "language.h"
#include "portable.h"
#include "cite.h"
+#include "arguments.h"
// debug off
#define DBG(x) do {} while(0)
diff --git a/src/docparser.h b/src/docparser.h
index 1e7f7d8..bc42389 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/docsets.cpp b/src/docsets.cpp
index 7a6ff9d..272ed69 100644
--- a/src/docsets.cpp
+++ b/src/docsets.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/docsets.h b/src/docsets.h
index 4a13d88..97457f6 100644
--- a/src/docsets.h
+++ b/src/docsets.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/doctokenizer.h b/src/doctokenizer.h
index f86020a..e5ae26a 100644
--- a/src/doctokenizer.h
+++ b/src/doctokenizer.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index c9e5756..a183377 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -322,6 +322,7 @@ NONWS [^ \t\r\n]
BLANK [ \t\r]
ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*
+PHPTYPE [\\:a-z_A-Z0-9\x80-\xFF\-]+
CITEID [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-:/]*
MAILADR ("mailto:")?[a-z_A-Z0-9.+-]+"@"[a-z_A-Z0-9-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]+
OPTSTARS ("//"{BLANK}*)?"*"*{BLANK}*
@@ -518,7 +519,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
g_token->name = "inheritdoc";
return TK_COMMAND;
}
-<St_Para>"\\_fakenl" { // artificial new line
+<St_Para>"@_fakenl" { // artificial new line
yylineno++;
}
<St_Para>{SPCMD3} {
@@ -958,7 +959,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}
g_token->name = g_token->name.left(yyleng-2);
return TK_WORD;
}
-<St_Param>({LABELID}"|")*{LABELID}{WS}+("&")?"$"{LABELID} {
+<St_Param>({PHPTYPE}{BLANK}*"|"{BLANK}*)*{PHPTYPE}{WS}+("&")?"$"{LABELID} {
QCString params = yytext;
int j = params.find('&');
int i = params.find('$');
diff --git a/src/docvisitor.h b/src/docvisitor.h
index 057da5f..c9acf64 100644
--- a/src/docvisitor.h
+++ b/src/docvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/dot.cpp b/src/dot.cpp
index f3e524d..62d1831 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -115,6 +115,13 @@ static const char svgZoomFooter[] =
" <path fill=\"none\" stroke=\"white\" stroke-width=\"1.5\" d=\"M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5\"/>\n"
" </g>\n"
" </g>\n"
+" <svg viewBox=\"0 0 25 25\" width=\"100%\" height=\"30px\" preserveAspectRatio=\"xMaxYMin meet\"> \n"
+" <g id=\"printButton\" transform=\"scale(0.4 0.4)\" onmousedown=\"handlePrint(evt)\">\n"
+" <rect height=\"23.33753581\" id=\"paper\" rx=\"2\" style=\"fill:#f2f5e9;fill-rule:evenodd;stroke:#111111;stroke-width:3.224;stroke-linejoin:round;\" transform=\"matrix(1.000000,0.000000,-0.339266,0.940691,0.000000,0.000000)\" width=\"25.55231285\" x=\"26.69387353\" y=\"7.36162977\"/>\n"
+" <rect height=\"26.272097\" id=\"body\" rx=\"2\" style=\"fill:#404040;fill-rule:evenodd;stroke:#111111;stroke-width:3.125;stroke-linejoin:round;\" width=\"50\" x=\"4.5295201\" y=\"27.078951\"/>\n"
+" <rect height=\"8.27750969\" id=\"tray\" style=\"fill:#d2d5c9;fill-rule:evenodd;stroke:#111111;stroke-width:3.125;stroke-linecap:round;stroke-linejoin:round;\" width=\"40\" x=\"10.28778839\" y=\"44.96812282\"/>\n"
+" </g>\n"
+" </svg>\n"
"</svg>\n"
;
@@ -1540,7 +1547,8 @@ static void writeBoxMemberList(FTextStream &t,
if (mma->getClassDef() == scope &&
(skipNames==0 || skipNames->find(mma->name())==0))
{
- if (totalCount>=15 && count>=10)
+ static int limit = Config_getInt("UML_LIMIT_NUM_FIELDS");
+ if (limit==0 || (totalCount>=limit*3/2 && count>=limit))
{
t << "and " << (totalCount-count-1) << " more...";
// TODO: TRANSLATE ME
diff --git a/src/dot.h b/src/dot.h
index 1ea1f66..e4acd5a 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 34fe2d1..98f076b 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -82,6 +82,7 @@
#include "cite.h"
#include "filestorage.h"
#include "markdown.h"
+#include "arguments.h"
#include "layout.h"
@@ -507,6 +508,7 @@ static void addRelatedPage(EntryNav *rootNav)
if (pd)
{
pd->addSectionsToDefinition(root->anchors);
+ pd->setShowToc(root->stat);
addPageToContext(pd,rootNav);
}
}
@@ -898,7 +900,7 @@ static Definition *findScope(Entry *root,int level=0)
* full qualified name \a name. Creates an artificial scope if the scope is
* not found and set the parent/child scope relation if the scope is found.
*/
-static Definition *buildScopeFromQualifiedName(const QCString name,int level)
+static Definition *buildScopeFromQualifiedName(const QCString name,int level,SrcLangExt lang)
{
int i=0;
int p=0,l;
@@ -922,9 +924,10 @@ static Definition *buildScopeFromQualifiedName(const QCString name,int level)
else if (nd==0 && cd==0) // scope is not known!
{
// introduce bogus namespace
- printf("++ adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
+ //printf("++ adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
nd=new NamespaceDef(
"[generated]",1,fullScope);
+ nd->setLanguage(lang);
// add namespace to the list
Doxygen::namespaceSDict->inSort(fullScope,nd);
@@ -1010,7 +1013,7 @@ static Definition *findScopeFromQualifiedName(Definition *startScope,const QCStr
// so use this instead.
QCString fqn = QCString(ui.currentKey())+
scope.right(scope.length()-p);
- resultScope = buildScopeFromQualifiedName(fqn,fqn.contains("::"));
+ resultScope = buildScopeFromQualifiedName(fqn,fqn.contains("::"),startScope->getLanguage());
//printf("Creating scope from fqn=%s result %p\n",fqn.data(),resultScope);
if (resultScope)
{
@@ -1322,7 +1325,7 @@ static void resolveClassNestingRelations()
//printf("processing unresolved=%s, iteration=%d\n",cd->name().data(),iteration);
/// create the scope artificially
// anyway, so we can at least relate scopes properly.
- Definition *d = buildScopeFromQualifiedName(name,name.contains("::"));
+ Definition *d = buildScopeFromQualifiedName(name,name.contains("::"),cd->getLanguage());
if (d!=cd && !cd->getDefFileName().isEmpty())
// avoid recursion in case of redundant scopes, i.e: namespace N { class N::C {}; }
// for this case doxygen assumes the exitance of a namespace N::N in which C is to be found!
@@ -1641,7 +1644,7 @@ static void buildNamespaceList(EntryNav *rootNav)
if (d==0) // we didn't find anything, create the scope artificially
// anyway, so we can at least relate scopes properly.
{
- Definition *d = buildScopeFromQualifiedName(fullName,fullName.contains("::"));
+ Definition *d = buildScopeFromQualifiedName(fullName,fullName.contains("::"),nd->getLanguage());
d->addInnerCompound(nd);
nd->setOuterScope(d);
// TODO: Due to the order in which the tag file is written
@@ -3186,7 +3189,7 @@ static void buildFunctionList(EntryNav *rootNav)
)
);
// otherwise, allow a duplicate global member with the same argument list
- if (!found && gd && gd==md->getGroupDef())
+ if (!found && gd && gd==md->getGroupDef() && nsName==rnsName)
{
// member is already in the group, so we don't want to add it again.
found=TRUE;
@@ -4749,8 +4752,8 @@ static void computeClassRelations()
if (!root->name.isEmpty() && root->name.find('@')==-1 && // normal name
(guessSection(root->fileName)==Entry::HEADER_SEC ||
Config_getBool("EXTRACT_LOCAL_CLASSES")) && // not defined in source file
- (root->protection!=Private || Config_getBool("EXTRACT_PRIVATE")) && // hidden by protection
- !Config_getBool("HIDE_UNDOC_CLASSES") // undocumented class are visible
+ protectionLevelVisible(root->protection) && // hidden by protection
+ !Config_getBool("HIDE_UNDOC_CLASSES") // undocumented class are visible
)
warn_undoc(
root->fileName,root->startLine,
@@ -8224,6 +8227,7 @@ static void findMainPage(EntryNav *rootNav)
indexName, root->brief+root->doc+root->inbodyDocs,title);
//setFileNameForSections(root->anchors,"index",Doxygen::mainPage);
Doxygen::mainPage->setFileName(indexName);
+ Doxygen::mainPage->setShowToc(root->stat);
addPageToContext(Doxygen::mainPage,rootNav);
// a page name is a label as well!
@@ -9274,7 +9278,7 @@ void dumpConfigAsXML()
static void usage(const char *name)
{
- msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2011\n\n",versionString);
+ msg("Doxygen version %s\nCopyright Dimitri van Heesch 1997-2012\n\n",versionString);
msg("You can use doxygen in a number of ways:\n\n");
msg("1) Use doxygen to generate a template configuration file:\n");
msg(" %s [-s] -g [configName]\n\n",name);
diff --git a/src/doxygen.css b/src/doxygen.css
index b146398..30b6261 100644
--- a/src/doxygen.css
+++ b/src/doxygen.css
@@ -802,7 +802,8 @@ dl
padding: 0 0 0 10px;
}
-dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
{
border-left:4px solid;
padding: 0 0 0 6px;
@@ -843,6 +844,11 @@ dl.bug
border-color: #C08050;
}
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
#projectlogo
{
text-align: center;
@@ -926,6 +932,55 @@ dl.citelist dd {
padding:5px 0;
}
+div.toc {
+ padding: 14px 25px;
+ background-color: ##F6;
+ border: 1px solid ##DD;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: ##60;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+
@media print
{
#top { display: none; }
diff --git a/src/doxygen.h b/src/doxygen.h
index b06d205..0e436ec 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in
index d3e6459..42ffaa0 100644
--- a/src/doxygen.pro.in
+++ b/src/doxygen.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
diff --git a/src/doxygen_css.h b/src/doxygen_css.h
index 15c68da..a3e3589 100644
--- a/src/doxygen_css.h
+++ b/src/doxygen_css.h
@@ -802,7 +802,8 @@
" padding: 0 0 0 10px;\n"
"}\n"
"\n"
-"dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug\n"
+"/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */\n"
+"dl.section\n"
"{\n"
" border-left:4px solid;\n"
" padding: 0 0 0 6px;\n"
@@ -843,6 +844,11 @@
" border-color: #C08050;\n"
"}\n"
"\n"
+"dl.section dd {\n"
+" margin-bottom: 6px;\n"
+"}\n"
+"\n"
+"\n"
"#projectlogo\n"
"{\n"
" text-align: center;\n"
@@ -926,6 +932,55 @@
" padding:5px 0;\n"
"}\n"
"\n"
+"div.toc {\n"
+" padding: 14px 25px;\n"
+" background-color: ##F6;\n"
+" border: 1px solid ##DD;\n"
+" border-radius: 7px 7px 7px 7px;\n"
+" float: right;\n"
+" height: auto;\n"
+" margin: 0 20px 10px 10px;\n"
+" width: 200px;\n"
+"}\n"
+"\n"
+"div.toc li {\n"
+" background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n"
+" font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n"
+" margin-top: 5px;\n"
+" padding-left: 10px;\n"
+" padding-top: 2px;\n"
+"}\n"
+"\n"
+"div.toc h3 {\n"
+" font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n"
+" color: ##60;\n"
+" border-bottom: 0 none;\n"
+" margin: 0;\n"
+"}\n"
+"\n"
+"div.toc ul {\n"
+" list-style: none outside none;\n"
+" border: medium none;\n"
+" padding: 0px;\n"
+"} \n"
+"\n"
+"div.toc li.level1 {\n"
+" margin-left: 0px;\n"
+"}\n"
+"\n"
+"div.toc li.level2 {\n"
+" margin-left: 15px;\n"
+"}\n"
+"\n"
+"div.toc li.level3 {\n"
+" margin-left: 30px;\n"
+"}\n"
+"\n"
+"div.toc li.level4 {\n"
+" margin-left: 45px;\n"
+"}\n"
+"\n"
+"\n"
"@media print\n"
"{\n"
" #top { display: none; }\n"
diff --git a/src/eclipsehelp.cpp b/src/eclipsehelp.cpp
index 9f708bc..ea05885 100644
--- a/src/eclipsehelp.cpp
+++ b/src/eclipsehelp.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/eclipsehelp.h b/src/eclipsehelp.h
index 7be3502..0629810 100644
--- a/src/eclipsehelp.h
+++ b/src/eclipsehelp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/entry.cpp b/src/entry.cpp
index 8741ec2..01c9742 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -23,6 +23,7 @@
#include "section.h"
#include "doxygen.h"
#include "filestorage.h"
+#include "arguments.h"
//------------------------------------------------------------------
@@ -30,23 +31,6 @@
//------------------------------------------------------------------
-/*! the argument list is documented if one of its
- * arguments is documented
- */
-bool ArgumentList::hasDocumentation() const
-{
- bool hasDocs=FALSE;
- ArgumentListIterator ali(*this);
- Argument *a;
- for (ali.toFirst();!hasDocs && (a=ali.current());++ali)
- {
- hasDocs = a->hasDocumentation();
- }
- return hasDocs;
-}
-
-//------------------------------------------------------------------
-
int Entry::num=0;
Entry::Entry()
diff --git a/src/entry.h b/src/entry.h
index b9a91df..63ddc5a 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -20,9 +20,9 @@
#include "qtbc.h"
#include <qlist.h>
+#include "types.h"
#include <qgstring.h>
-#include "util.h"
struct SectionInfo;
class QFile;
@@ -30,18 +30,8 @@ class EntryNav;
class FileDef;
class FileStorage;
class StorageIntf;
-
-enum Protection { Public, Protected, Private, Package } ;
-enum Specifier { Normal, Virtual, Pure } ;
-enum MethodTypes { Method, Signal, Slot, DCOP, Property, Event };
-enum RelatesType { Simple, Duplicate, MemberOf };
-enum Relationship { Member, Related, Foreign };
-
-struct ListItemInfo
-{
- QCString type;
- int itemId;
-};
+class ArgumentList;
+class ListItemInfo;
/*! \brief This class stores information about an inheritance relation
*/
@@ -55,83 +45,6 @@ struct BaseInfo
Specifier virt; //!< virtualness
};
-/*! \brief This class contains the information about the argument of a
- * function or template
- *
- */
-struct Argument
-{
- /*! Construct a new argument. */
- Argument() {}
- /*! Copy an argument (does a deep copy of all strings). */
- Argument(const Argument &a)
- {
- attrib=a.attrib.copy();
- type=a.type.copy();
- name=a.name.copy();
- defval=a.defval.copy();
- docs=a.docs.copy();
- array=a.array.copy();
- }
- /*! Assignment of an argument (does a deep copy of all strings). */
- Argument &operator=(const Argument &a)
- {
- if (this!=&a)
- {
- attrib=a.attrib.copy();
- type=a.type.copy();
- name=a.name.copy();
- defval=a.defval.copy();
- docs=a.docs.copy();
- array=a.array.copy();
- }
- return *this;
- }
- /*! return TRUE if this argument is documentation and the argument has a
- * non empty name.
- */
- bool hasDocumentation() const
- {
- return !name.isEmpty() && !docs.isEmpty();
- }
-
- QCString attrib; /*!< Argument's attribute (IDL only) */
- QCString type; /*!< Argument's type */
- QCString canType; /*!< Cached value of canonical type (after type resolution). Empty initially. */
- QCString name; /*!< Argument's name (may be empty) */
- QCString array; /*!< Argument's array specifier (may be empty) */
- QCString defval; /*!< Argument's default value (may be empty) */
- QCString docs; /*!< Argument's documentation (may be empty) */
-};
-
-/*! \brief This class represents an function or template argument list.
- *
- * This class also stores some information about member that is typically
- * put after the argument list, such as wether the member is const,
- * volatile or pure virtual.
- */
-class ArgumentList : public QList<Argument>
-{
- public:
- /*! Creates an empty argument list */
- ArgumentList() : QList<Argument>(),
- constSpecifier(FALSE),
- volatileSpecifier(FALSE),
- pureSpecifier(FALSE)
- { setAutoDelete(TRUE); }
- /*! Destroys the argument list */
- ~ArgumentList() {}
- bool hasDocumentation() const;
- /*! Does the member modify the state of the class? default: FALSE. */
- bool constSpecifier;
- /*! Is the member volatile? default: FALSE. */
- bool volatileSpecifier;
- /*! Is this a pure virtual member? default: FALSE */
- bool pureSpecifier;
-};
-
-typedef QListIterator<Argument> ArgumentListIterator;
-
/*! \brief This struct is used to capture the tag file information
* for an Entry.
*/
@@ -142,43 +55,6 @@ struct TagInfo
QCString anchor;
};
-struct Grouping
-{
- enum GroupPri_t
- {
- GROUPING_LOWEST,
- GROUPING_AUTO_WEAK =
- GROUPING_LOWEST, //!< membership in group was defined via \@weakgroup
- GROUPING_AUTO_ADD, //!< membership in group was defined via \@add[to]group
- GROUPING_AUTO_DEF, //!< membership in group was defined via \@defgroup
- GROUPING_AUTO_HIGHEST = GROUPING_AUTO_DEF,
- GROUPING_INGROUP, //!< membership in group was defined by \@ingroup
- GROUPING_HIGHEST = GROUPING_INGROUP
- };
-
- static const char *getGroupPriName( GroupPri_t priority )
- {
- switch( priority )
- {
- case GROUPING_AUTO_WEAK:
- return "@weakgroup";
- case GROUPING_AUTO_ADD:
- return "@addtogroup";
- case GROUPING_AUTO_DEF:
- return "@defgroup";
- case GROUPING_INGROUP:
- return "@ingroup";
- }
- return "???";
- }
-
- Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {}
- Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {}
- QCString groupname; //!< name of the group
- GroupPri_t pri; //!< priority of this definition
-
-};
-
/*! \brief Represents an unstructured piece of information, about an
* entity found in the sources.
*
diff --git a/src/example.h b/src/example.h
index 745045c..a780326 100644
--- a/src/example.h
+++ b/src/example.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 52c5f0c..e25e04f 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -36,6 +36,7 @@
#include "vhdldocgen.h"
#include "debug.h"
#include "layout.h"
+#include "entry.h"
//---------------------------------------------------------------------------
diff --git a/src/filedef.h b/src/filedef.h
index 34b6424..08b8480 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/filename.cpp b/src/filename.cpp
index 73ca911..dddeeca 100644
--- a/src/filename.cpp
+++ b/src/filename.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/filename.h b/src/filename.h
index f1a563d..29e90c0 100644
--- a/src/filename.h
+++ b/src/filename.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/filestorage.h b/src/filestorage.h
index 17d4498..ddffeda 100644
--- a/src/filestorage.h
+++ b/src/filestorage.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/footer.html b/src/footer.html
index d476078..c93cb56 100644
--- a/src/footer.html
+++ b/src/footer.html
@@ -13,4 +13,4 @@ $generatedby &#160;<a href="http://www.doxygen.org/index.html">
</small></address>
<!--END !GENERATE_TREEVIEW-->
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/src/footer_html.h b/src/footer_html.h
index adcf367..86a2e91 100644
--- a/src/footer_html.h
+++ b/src/footer_html.h
@@ -13,4 +13,4 @@
"</small></address>\n"
"<!--END !GENERATE_TREEVIEW-->\n"
"</body>\n"
-"</html>\n" \ No newline at end of file
+"</html>\n"
diff --git a/src/formula.cpp b/src/formula.cpp
index ff93951..adc1d42 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -1,7 +1,7 @@
/******************************************************************************
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/formula.h b/src/formula.h
index 79b9e7e..ca68e6e 100644
--- a/src/formula.h
+++ b/src/formula.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/fortrancode.h b/src/fortrancode.h
index d89d846..887fe65 100644
--- a/src/fortrancode.h
+++ b/src/fortrancode.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/fortranscanner.h b/src/fortranscanner.h
index 6557045..392a75d 100644
--- a/src/fortranscanner.h
+++ b/src/fortranscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/fortranscanner.l b/src/fortranscanner.l
index a512647..036769a 100644
--- a/src/fortranscanner.l
+++ b/src/fortranscanner.l
@@ -64,9 +64,12 @@
#include "commentscan.h"
#include "fortrancode.h"
#include "pre.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
+class Arguments;
+
enum ScanVar { V_IGNORE, V_VARIABLE, V_PARAMETER};
enum InterfaceType { IF_NONE, IF_SPECIFIC, IF_GENERIC, IF_ABSTRACT };
@@ -868,14 +871,16 @@ private {
<Variable>";".*"\n" { currentModifiers = SymbolModifiers();
yy_pop_state(); // end variable declaration list
docBlock.resize(0);
- inputStringSemi =(const char*)(yytext+1);
+ inputStringSemi =(const char*)(QCString(" \n") + QCString(yytext+1)).data();
+ yyLineNr--;
pushBuffer(inputStringSemi);
}
<*>";".*"\n" {
if (YY_START == Variable) REJECT; // Just be on the safe side
if (YY_START == String) REJECT; // ";" ignored in strings
if (YY_START == StrIgnore) REJECT; // ";" ignored in regular comments
- inputStringSemi =(const char*)(yytext+1);
+ inputStringSemi =(const char*)(QCString(" \n") + QCString(yytext+1)).data();
+ yyLineNr--;
pushBuffer(inputStringSemi);
}
diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp
index a8f9de3..4951b03 100644
--- a/src/ftvhelp.cpp
+++ b/src/ftvhelp.cpp
@@ -1,7 +1,7 @@
/******************************************************************************
* ftvhelp.cpp,v 1.0 2000/09/06 16:09:00
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/ftvhelp.h b/src/ftvhelp.h
index 78e8b7b..89e9e62 100644
--- a/src/ftvhelp.h
+++ b/src/ftvhelp.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 8452aa2..60f5104 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -36,6 +36,8 @@
#include "dot.h"
#include "vhdldocgen.h"
#include "layout.h"
+#include "arguments.h"
+#include "entry.h"
//---------------------------------------------------------------------------
diff --git a/src/groupdef.h b/src/groupdef.h
index 002b037..a55137f 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -40,6 +40,7 @@ class PageDef;
class DirDef;
class DirList;
class FTVHelp;
+class Entry;
class GroupDef : public Definition
{
diff --git a/src/htags.cpp b/src/htags.cpp
index 036dcc9..caa4535 100644
--- a/src/htags.cpp
+++ b/src/htags.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htags.h b/src/htags.h
index cb6d58f..458adec 100644
--- a/src/htags.h
+++ b/src/htags.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmlattrib.h b/src/htmlattrib.h
index b25489c..b391861 100644
--- a/src/htmlattrib.h
+++ b/src/htmlattrib.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 70fa3f8..4c76be3 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -954,7 +954,7 @@ void HtmlDocVisitor::visitPre(DocSimpleSect *s)
{
if (m_hide) return;
forceEndParagraph(s);
- m_t << "<dl class=\"" << s->typeString() << "\"><dt><b>";
+ m_t << "<dl class=\"section " << s->typeString() << "\"><dt>";
switch(s->type())
{
case DocSimpleSect::See:
@@ -995,7 +995,7 @@ void HtmlDocVisitor::visitPre(DocSimpleSect *s)
// special case 1: user defined title
if (s->type()!=DocSimpleSect::User && s->type()!=DocSimpleSect::Rcs)
{
- m_t << ":</b></dt><dd>";
+ m_t << ":</dt><dd>";
}
}
diff --git a/src/htmldocvisitor.h b/src/htmldocvisitor.h
index cf71e22..33d1177 100644
--- a/src/htmldocvisitor.h
+++ b/src/htmldocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index c3921af..eac4a20 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -615,6 +615,30 @@ static unsigned char open_a_png[81] =
0, 0, 0, 0,255, 0, 0, 0, 0
};
+static unsigned char bdwn_png[7*8] =
+{
+ 0, 0, 0,142, 0, 0, 0,
+ 0, 0, 0,142, 0, 0, 0,
+ 0, 0, 0,142, 0, 0, 0,
+ 142, 0, 0,142, 0, 0,142,
+ 142,142, 0,142, 0,142,142,
+ 142,142,142,142,142,142,142,
+ 0,142,142,142,142,142, 0,
+ 0, 0,142,142,142, 0, 0,
+};
+
+static unsigned char bdwn_a_png[7*8] =
+{
+ 0, 0, 0,255, 0, 0, 0,
+ 0, 0, 0,255, 0, 0, 0,
+ 0, 0, 0,255, 0, 0, 0,
+ 128, 0, 0,255, 0, 0,128,
+ 255,128, 0,255, 0,128,255,
+ 128,255,128,255,128,255,128,
+ 0,128,255,255,255,128, 0,
+ 0, 0,128,255,128, 0, 0,
+};
+
//------------------------------------------------------------------------
@@ -722,6 +746,7 @@ static ColoredImgDataItem colored_tab_data[] =
{ "doxygen.png", 104,31, doxygen_png, doxygen_a_png },
{ "closed.png", 9, 9, closed_png, closed_a_png },
{ "open.png", 9, 9, open_png, open_a_png },
+ { "bdwn.png", 7, 8, bdwn_png, bdwn_a_png },
{ 0, 0, 0, 0, 0 }
};
@@ -928,6 +953,18 @@ static QCString substituteHtmlKeywords(const QCString &s,const char *title,
{
cssFile = "doxygen.css";
}
+ else
+ {
+ QFileInfo cssfi(cssFile);
+ if (cssfi.exists())
+ {
+ cssFile = cssfi.fileName();
+ }
+ else
+ {
+ cssFile = "doxygen.css";
+ }
+ }
if (timeStamp) {
generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), Config_getString("PROJECT_NAME"));
diff --git a/src/htmlgen.h b/src/htmlgen.h
index b5d82da..dbbdc11 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmlhelp.cpp b/src/htmlhelp.cpp
index dd2311e..af06445 100644
--- a/src/htmlhelp.cpp
+++ b/src/htmlhelp.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/htmlhelp.h b/src/htmlhelp.h
index 8dafd15..ef5fb67 100644
--- a/src/htmlhelp.h
+++ b/src/htmlhelp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/image.cpp b/src/image.cpp
index 04d5247..20fa868 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/image.h b/src/image.h
index 1728485..a73be0d 100644
--- a/src/image.h
+++ b/src/image.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/index.cpp b/src/index.cpp
index 68725aa..8f725d5 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -2718,10 +2718,6 @@ static void writeSubPages(PageDef *pd)
LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Pages);
bool addToIndex = lne==0 || lne->visible();
//printf("Write subpages(%s #=%d)\n",pd->name().data(),pd->getSubPages() ? pd->getSubPages()->count() : 0 );
- if (addToIndex)
- {
- Doxygen::indexList.incContentsDepth();
- }
PageSDict *subPages = pd->getSubPages();
if (subPages)
{
@@ -2737,18 +2733,29 @@ static void writeSubPages(PageDef *pd)
pageTitle=subPage->title();
bool hasSubPages = subPage->hasSubPages();
+ bool hasSections = subPage->hasSections();
if (addToIndex)
{
- Doxygen::indexList.addContentsItem(hasSubPages,pageTitle,subPage->getReference(),subPage->getOutputFileBase(),0,hasSubPages,TRUE);
+ Doxygen::indexList.addContentsItem(hasSubPages,pageTitle,
+ subPage->getReference(),subPage->getOutputFileBase(),
+ 0,hasSubPages,TRUE);
+ if (hasSections || hasSubPages)
+ {
+ Doxygen::indexList.incContentsDepth();
+ }
+ if (hasSections)
+ {
+ subPage->addSectionsToIndex();
+ }
}
writeSubPages(subPage);
+ if (addToIndex && (hasSections || hasSubPages))
+ {
+ Doxygen::indexList.decContentsDepth();
+ }
}
}
- if (addToIndex)
- {
- Doxygen::indexList.decContentsDepth();
- }
}
static void writePageIndex(OutputList &ol)
@@ -2810,12 +2817,20 @@ static void writePageIndex(OutputList &ol)
0, // anchor
hasSubPages || hasSections, // separateIndex
TRUE); // addToNavIndex
+ if (hasSections || hasSubPages)
+ {
+ Doxygen::indexList.incContentsDepth();
+ }
if (hasSections)
{
pd->addSectionsToIndex();
}
}
writeSubPages(pd);
+ if (addToIndex && (hasSections || hasSubPages))
+ {
+ Doxygen::indexList.decContentsDepth();
+ }
ol.endIndexListItem();
}
}
@@ -2896,33 +2911,7 @@ void writeGraphInfo(OutputList &ol)
ol.popGeneratorState();
}
-static void writeGroupIndexItem(GroupDef *gd,MemberList *ml,const QCString &title)
-{
- if (ml && ml->count()>0)
- {
- bool first=TRUE;
- MemberDef *md=ml->first();
- while (md)
- {
- if (md->isDetailedSectionVisible(TRUE,FALSE))
- {
- if (first)
- {
- first=FALSE;
- Doxygen::indexList.addContentsItem(TRUE, convertToHtml(title,TRUE), gd->getReference(), gd->getOutputFileBase(), 0,TRUE,FALSE);
- Doxygen::indexList.incContentsDepth();
- }
- Doxygen::indexList.addContentsItem(FALSE,md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE,TRUE);
- }
- md=ml->next();
- }
- if (!first)
- {
- Doxygen::indexList.decContentsDepth();
- }
- }
-}
//----------------------------------------------------------------------------
/*!
@@ -2930,8 +2919,8 @@ static void writeGroupIndexItem(GroupDef *gd,MemberList *ml,const QCString &titl
*/
static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp* ftv, bool addToIndex)
{
- bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
- bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
+ //bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
+ //bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
if (level>20)
{
warn(gd->getDefFileName(),gd->getDefLine(),
@@ -2952,7 +2941,7 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
bool hasSubGroups = gd->getSubGroups()->count()>0;
bool hasSubPages = gd->getPages()->count()>0;
int numSubItems = 0;
- if ( Config_getBool("TOC_EXPAND"))
+ if (1 /*Config_getBool("TOC_EXPAND")*/)
{
QListIterator<MemberList> mli(gd->getMemberLists());
MemberList *ml;
@@ -2966,7 +2955,8 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
numSubItems += gd->getNamespaces()->count();
numSubItems += gd->getClasses()->count();
numSubItems += gd->getFiles()->count();
- numSubItems += gd->getExamples()->count();
+ numSubItems += gd->getDirs()->count();
+ numSubItems += gd->getPages()->count();
}
bool isDir = hasSubGroups || hasSubPages || numSubItems>0;
@@ -2978,7 +2968,7 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
}
if (ftv)
{
- ftv->addContentsItem(isDir,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0);
+ ftv->addContentsItem(hasSubGroups,gd->groupTitle(),gd->getReference(),gd->getOutputFileBase(),0);
ftv->incContentsDepth();
}
@@ -2997,133 +2987,128 @@ static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp*
ol.docify(" [external]");
ol.endTypewriter();
}
-
-
- // write pages
- if (addToIndex)
+
+ QListIterator<LayoutDocEntry> eli(LayoutDocManager::instance().docEntries(LayoutDocManager::Group));
+ LayoutDocEntry *lde;
+ for (eli.toFirst();(lde=eli.current());++eli)
{
- PageSDict::Iterator pli(*gd->getPages());
- PageDef *pd = 0;
- for (pli.toFirst();(pd=pli.current());++pli)
+ if (lde->kind()==LayoutDocEntry::MemberDef && addToIndex)
+ {
+ LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
+ MemberList *ml = gd->getMemberList(lmd->type);
+ if (ml)
+ {
+ MemberListIterator mi(*ml);
+ MemberDef *md;
+ for (mi.toFirst();(md=mi.current());++mi)
+ {
+ if (md->name().find('@')==-1)
+ {
+ Doxygen::indexList.addContentsItem(FALSE,
+ md->name(),md->getReference(),
+ md->getOutputFileBase(),md->anchor(),FALSE);
+ }
+ }
+ }
+ }
+ else if (lde->kind()==LayoutDocEntry::GroupClasses && addToIndex)
{
- SectionInfo *si=0;
- if (!pd->name().isEmpty()) si=Doxygen::sectionDict[pd->name()];
- Doxygen::indexList.addContentsItem(FALSE,
- convertToHtml(pd->title(),TRUE),
- gd->getReference(),
- gd->getOutputFileBase(),
- si ? si->label.data() : 0,
- FALSE,
- TRUE); // addToNavIndex
+ ClassSDict::Iterator it(*gd->getClasses());
+ ClassDef *cd;
+ for (;(cd=it.current());++it)
+ {
+ Doxygen::indexList.addContentsItem(FALSE,
+ cd->localName(),cd->getReference(),
+ cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE);
+ }
}
- }
-
- // write subgroups
- if (hasSubGroups)
- {
- startIndexHierarchy(ol,level+1);
- if (Config_getBool("SORT_GROUP_NAMES")) gd->sortSubGroups();
- QListIterator<GroupDef> gli(*gd->getSubGroups());
- GroupDef *subgd = 0;
- for (gli.toFirst();(subgd=gli.current());++gli)
+ else if (lde->kind()==LayoutDocEntry::GroupNamespaces && addToIndex)
{
- writeGroupTreeNode(ol,subgd,level+1,ftv,addToIndex);
+ NamespaceSDict::Iterator it(*gd->getNamespaces());
+ NamespaceDef *nd;
+ for (;(nd=it.current());++it)
+ {
+ Doxygen::indexList.addContentsItem(FALSE,
+ nd->localName(),nd->getReference(),
+ nd->getOutputFileBase(),0,FALSE,FALSE);
+ }
}
- endIndexHierarchy(ol,level+1);
- }
-
-
- if (Config_getBool("TOC_EXPAND") && addToIndex)
- {
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docDefineMembers),
- theTranslator->trDefines());
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docTypedefMembers),
- theTranslator->trTypedefs());
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docEnumMembers),
- theTranslator->trEnumerations());
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docFuncMembers),
- fortranOpt ? theTranslator->trSubprograms() :
- vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
- theTranslator->trFunctions()
- );
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docVarMembers),
- theTranslator->trVariables());
- writeGroupIndexItem(gd,gd->getMemberList(MemberList::docProtoMembers),
- theTranslator->trFuncProtos());
-
- // write namespaces
- NamespaceSDict *namespaceSDict=gd->getNamespaces();
- if (namespaceSDict->count()>0)
+ else if (lde->kind()==LayoutDocEntry::GroupFiles && addToIndex)
{
- Doxygen::indexList.addContentsItem(TRUE,convertToHtml(fortranOpt?theTranslator->trModules():theTranslator->trNamespaces(),TRUE),gd->getReference(), gd->getOutputFileBase(), 0);
- Doxygen::indexList.incContentsDepth();
-
- NamespaceSDict::Iterator ni(*namespaceSDict);
- NamespaceDef *nsd;
- for (ni.toFirst();(nsd=ni.current());++ni)
+ QListIterator<FileDef> it(*gd->getFiles());
+ FileDef *fd;
+ for (;(fd=it.current());++it)
{
- Doxygen::indexList.addContentsItem(FALSE, convertToHtml(nsd->name(),TRUE), nsd->getReference(), nsd->getOutputFileBase(), 0);
+ Doxygen::indexList.addContentsItem(FALSE,
+ fd->displayName(),fd->getReference(),
+ fd->getOutputFileBase(),0,FALSE,FALSE);
}
- Doxygen::indexList.decContentsDepth();
}
-
- // write classes
- if (gd->getClasses()->count()>0)
+ else if (lde->kind()==LayoutDocEntry::GroupDirs && addToIndex)
{
- Doxygen::indexList.addContentsItem(TRUE,convertToHtml(fortranOpt?theTranslator->trDataTypes():theTranslator->trClasses(),TRUE), gd->getReference(), gd->getOutputFileBase(), 0);
- Doxygen::indexList.incContentsDepth();
-
- ClassDef *cd;
- ClassSDict::Iterator cdi(*gd->getClasses());
- for (cdi.toFirst();(cd=cdi.current());++cdi)
+ static bool showDirs = Config_getBool("SHOW_DIRECTORIES");
+ if (showDirs)
{
- if (cd->isLinkable())
+ QListIterator<DirDef> it(*gd->getDirs());
+ DirDef *dd;
+ for (;(dd=it.current());++it)
{
- //printf("node: Has children %s\n",cd->name().data());
- Doxygen::indexList.addContentsItem(FALSE,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor());
+ Doxygen::indexList.addContentsItem(FALSE,
+ dd->shortName(),dd->getReference(),
+ dd->getOutputFileBase(),0,FALSE,FALSE);
}
}
-
- //writeClassTree(gd->classSDict,1);
- Doxygen::indexList.decContentsDepth();
}
-
- // write file list
- FileList *fileList=gd->getFiles();
- if (fileList->count()>0)
+ else if (lde->kind()==LayoutDocEntry::GroupPageDocs && addToIndex)
{
- Doxygen::indexList.addContentsItem(TRUE,
- theTranslator->trFile(TRUE,FALSE),
- gd->getReference(),
- gd->getOutputFileBase(), 0);
- Doxygen::indexList.incContentsDepth();
-
- FileDef *fd=fileList->first();
- while (fd)
+ SDict<PageDef>::Iterator it(*gd->getPages());
+ PageDef *pd;
+ for (;(pd=it.current());++it)
{
- Doxygen::indexList.addContentsItem(FALSE, convertToHtml(fd->name(),TRUE),fd->getReference(), fd->getOutputFileBase(), 0);
- fd=fileList->next();
+ SectionInfo *si=0;
+ if (!pd->name().isEmpty()) si=Doxygen::sectionDict[pd->name()];
+ bool hasSubPages = pd->hasSubPages();
+ bool hasSections = pd->hasSections();
+ Doxygen::indexList.addContentsItem(
+ hasSubPages || hasSections,
+ convertToHtml(pd->title(),TRUE),
+ gd->getReference(),
+ gd->getOutputFileBase(),
+ si ? si->label.data() : 0,
+ hasSubPages || hasSections,
+ TRUE); // addToNavIndex
+ if (hasSections || hasSubPages)
+ {
+ Doxygen::indexList.incContentsDepth();
+ }
+ if (hasSections)
+ {
+ pd->addSectionsToIndex();
+ }
+ writeSubPages(pd);
+ if (hasSections || hasSubPages)
+ {
+ Doxygen::indexList.decContentsDepth();
+ }
}
- Doxygen::indexList.decContentsDepth();
}
-
- // write examples
- if (gd->getExamples()->count()>0)
+ else if (lde->kind()==LayoutDocEntry::GroupNestedGroups)
{
- Doxygen::indexList.addContentsItem(TRUE, convertToHtml(theTranslator->trExamples(),TRUE),gd->getReference(), gd->getOutputFileBase(), 0);
- Doxygen::indexList.incContentsDepth();
-
- PageSDict::Iterator eli(*(gd->getExamples()));
- PageDef *pd=eli.toFirst();
- while (pd)
+ if (gd->getSubGroups()->count()>0)
{
- Doxygen::indexList.addContentsItem(FALSE,pd->name(),pd->getReference(),pd->getOutputFileBase(),0);
- pd=++eli;
+ startIndexHierarchy(ol,level+1);
+ if (Config_getBool("SORT_GROUP_NAMES")) gd->sortSubGroups();
+ QListIterator<GroupDef> gli(*gd->getSubGroups());
+ GroupDef *subgd = 0;
+ for (gli.toFirst();(subgd=gli.current());++gli)
+ {
+ writeGroupTreeNode(ol,subgd,level+1,ftv,addToIndex);
+ }
+ endIndexHierarchy(ol,level+1);
}
-
- Doxygen::indexList.decContentsDepth();
}
}
+
ol.endIndexListItem();
if (addToIndex)
@@ -3175,7 +3160,7 @@ static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp* ftv
return;
}
- static bool tocExpand = Config_getBool("TOC_EXPAND");
+ static bool tocExpand = TRUE; //Config_getBool("TOC_EXPAND");
bool isDir = dd->subDirs().count()>0 || // there are subdirs
(tocExpand && // or toc expand and
dd->getFiles() && dd->getFiles()->count()>0 // there are files
diff --git a/src/index.h b/src/index.h
index 9288f5d..54f7f35 100644
--- a/src/index.h
+++ b/src/index.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/jquery_fx.js b/src/jquery_fx.js
index 4fd051a..d373e6a 100644
--- a/src/jquery_fx.js
+++ b/src/jquery_fx.js
@@ -43,4 +43,4 @@ a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
*/
(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-; \ No newline at end of file
+;
diff --git a/src/language.cpp b/src/language.cpp
index e893c3f..3afa5b9 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/language.h b/src/language.h
index e134b20..17f5800 100644
--- a/src/language.h
+++ b/src/language.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 3dab3ce..e060da1 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -915,7 +915,7 @@ void LatexDocVisitor::visitPost(DocHtmlRow *)
it.data()--;
if (it.data () <= 0)
{
- m_rowspanIndices.remove (it);
+ m_rowspanIndices.remove(it);
}
else if (0 < it.data() - col)
{
@@ -940,7 +940,7 @@ void LatexDocVisitor::visitPre(DocHtmlCell *c)
m_currentColumn++;
//Skip columns that span from above.
QMap<int, int>::Iterator it = m_rowspanIndices.find(m_currentColumn);
- while (0 < it.data() && it != m_rowspanIndices.end())
+ while (it!=m_rowspanIndices.end() && 0<it.data())
{
m_t << "&";
m_currentColumn++;
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index fc0218e..b325b21 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -168,9 +168,9 @@ class LatexDocVisitor : public DocVisitor
bool m_insideTabbing;
QStack<bool> m_enabled;
QCString m_langExt;
- QMap<int, int> m_rowspanIndices;
- int m_currentColumn;
- bool m_inRowspan;
+ QMap<int, int> m_rowspanIndices;
+ int m_currentColumn;
+ bool m_inRowspan;
};
#endif
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 65ed16b..cb36b20 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -104,13 +104,7 @@ static void writeLatexMakefile()
<< "\tdvips -o refman.ps refman.dvi" << endl
<< endl;
t << "refman.pdf: refman.ps" << endl;
-#if defined(_MSC_VER)
- // ps2pdf.bat does not work properly from a makefile using GNU make!
- t << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
- "-sOutputFile=refman.pdf -c save pop -f refman.ps" << endl << endl;
-#else
t << "\tps2pdf refman.ps refman.pdf" << endl << endl;
-#endif
t << "refman.dvi: clean refman.tex doxygen.sty" << endl
<< "\techo \"Running latex...\"" << endl
<< "\t" << latex_command << " refman.tex" << endl
@@ -121,7 +115,7 @@ static void writeLatexMakefile()
t << "\techo \"Running bibtex...\"" << endl;
t << "\tbibtex refman" << endl;
t << "\techo \"Rerunning latex....\"" << endl;
- t << "\tpdflatex refman" << endl;
+ t << "\t" << latex_command << " refman.tex" << endl;
}
t << "\techo \"Rerunning latex....\"" << endl
<< "\t" << latex_command << " refman.tex" << endl
@@ -136,13 +130,7 @@ static void writeLatexMakefile()
<< "\tpsnup -2 refman.ps >refman_2on1.ps" << endl
<< endl
<< "refman_2on1.pdf: refman_2on1.ps" << endl
-#if defined(_MSC_VER)
- // ps2pdf.bat does not work properly from a makefile using GNU make!
- << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
- "-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl;
-#else
<< "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl;
-#endif
}
else // use pdflatex for higher quality output
{
@@ -168,38 +156,64 @@ static void writeLatexMakefile()
t << endl
<< "clean:" << endl
-#if defined(_MSC_VER)
- << "\tdel /s/y "
-#else
<< "\trm -f "
-#endif
<< "*.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf" << endl;
}
-static void writeMakePdfBat()
+static void writeMakeBat()
{
#if defined(_MSC_VER)
- if (Config_getBool("USE_PDFLATEX")) // use plain old latex
- {
- bool generateBib = !Doxygen::citeDict->isEmpty();
- QCString mkidx_command = Config_getString("MAKEINDEX_CMD_NAME");
- QCString dir=Config_getString("LATEX_OUTPUT");
- QCString fileName=dir+"/makepdf.bat";
- QFile file(fileName);
- if (!file.open(IO_WriteOnly))
+ QCString dir=Config_getString("LATEX_OUTPUT");
+ QCString fileName=dir+"/make.bat";
+ QCString latex_command = Config_getString("LATEX_CMD_NAME");
+ QCString mkidx_command = Config_getString("MAKEINDEX_CMD_NAME");
+ QFile file(fileName);
+ bool generateBib = !Doxygen::citeDict->isEmpty();
+ if (!file.open(IO_WriteOnly))
+ {
+ err("Could not open file %s for writing\n",fileName.data());
+ exit(1);
+ }
+ FTextStream t(&file);
+ t << "del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf\n\n";
+ if (!Config_getBool("USE_PDFLATEX")) // use plain old latex
+ {
+ t << latex_command << " refman.tex\n";
+ t << "echo ----\n";
+ t << mkidx_command << " refman.idx\n";
+ if (generateBib)
{
- err("Could not open file %s for writing\n",fileName.data());
- exit(1);
+ t << "bibtex refman\n";
+ t << "echo ----\n";
+ t << latex_command << " refman.tex\n";
}
- FTextStream t(&file);
- t << "del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf\n\n";
+ t << "setlocal enabledelayedexpansion\n";
+ t << "set count=5\n";
+ t << ":repeat\n";
+ t << "set content=X\n";
+ t << "for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun LaTeX\" refman.log' ) do set content=\"%%~T\"\n";
+ t << "if !content! == X for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun to get cross-references right\" refman.log' ) do set content=\"%%~T\"\n";
+ t << "if !content! == X goto :skip\n";
+ t << "set /a count-=1\n";
+ t << "if !count! EQU 0 goto :skip\n\n";
+ t << "echo ----\n";
+ t << latex_command << " refman.tex\n";
+ t << "goto :repeat\n";
+ t << ":skip\n";
+ t << "endlocal\n";
+ t << "dvips -o refman.ps refman.dvi\n";
+ t << "gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
+ "-sOutputFile=refman.pdf -c save pop -f refman.ps\n";
+ }
+ else // use pdflatex
+ {
t << "pdflatex refman\n";
t << "echo ----\n";
t << mkidx_command << " refman.idx\n";
if (generateBib)
{
- t << "\tbibtex refman" << endl;
- t << "\tpdflatex refman" << endl;
+ t << "bibtex refman" << endl;
+ t << "pdflatex refman" << endl;
}
t << "echo ----\n";
t << "pdflatex refman\n\n";
@@ -233,7 +247,7 @@ void LatexGenerator::init()
}
writeLatexMakefile();
- writeMakePdfBat();
+ writeMakeBat();
createSubDirs(d);
}
@@ -249,14 +263,16 @@ static void writeDefaultHeaderPart1(FTextStream &t)
paperName="a4";
else
paperName=paperType;
- t << "\\documentclass[" << paperName << "paper";
- //if (Config_getBool("PDF_HYPERLINKS")) t << ",ps2pdf";
- t << "]{";
+ t << "\\documentclass";
+ //"[" << paperName << "paper";
+ //t << "]";
+ t << "{";
if (Config_getBool("COMPACT_LATEX")) t << "article"; else t << "book";
t << "}\n";
// the next package is obsolete (see bug 563698)
//if (paperType=="a4wide") t << "\\usepackage{a4wide}\n";
t <<
+ "\\usepackage["<<paperName<<"paper,top=2.5cm,bottom=2.5cm,left=2.5cm,right=2.5cm]{geometry}\n"
"\\usepackage{makeidx}\n"
"\\usepackage{natbib}\n"
"\\usepackage{graphicx}\n"
@@ -958,12 +974,12 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen";
//t << " " << theTranslator->trWrittenBy() << " ";
- //t << "Dimitri van Heesch \\copyright~1997-2011";
+ //t << "Dimitri van Heesch \\copyright~1997-2012";
writeDefaultStyleSheetPart2(t);
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen";
//t << " << theTranslator->trWrittenBy() << " ";
- //t << "Dimitri van Heesch \\copyright~1997-2011";
+ //t << "Dimitri van Heesch \\copyright~1997-2012";
writeDefaultStyleSheetPart3(t);
}
@@ -2561,7 +2577,7 @@ void LatexGenerator::lineBreak(const char *)
}
else
{
- t << "\\*\n";
+ t << "\\\\*\n";
}
}
diff --git a/src/latexgen.h b/src/latexgen.h
index 91b4740..36246fd 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/layout.cpp b/src/layout.cpp
index 1fa6a41..b4a94f2 100644
--- a/src/layout.cpp
+++ b/src/layout.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/layout.h b/src/layout.h
index 0b26690..e0ea4ca 100644
--- a/src/layout.h
+++ b/src/layout.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/layout_default.h b/src/layout_default.h
index 7ed1629..6a1ff8f 100644
--- a/src/layout_default.h
+++ b/src/layout_default.h
@@ -134,11 +134,11 @@
" <briefdescription visible=\"yes\"/>\n"
" <groupgraph visible=\"$GROUP_GRAPHS\"/>\n"
" <memberdecl>\n"
-" <classes visible=\"yes\" title=\"\"/>\n"
-" <namespaces visible=\"yes\" title=\"\"/>\n"
-" <dirs visible=\"yes\" title=\"\"/>\n"
" <nestedgroups visible=\"yes\" title=\"\"/>\n"
+" <dirs visible=\"yes\" title=\"\"/>\n"
" <files visible=\"yes\" title=\"\"/>\n"
+" <namespaces visible=\"yes\" title=\"\"/>\n"
+" <classes visible=\"yes\" title=\"\"/>\n"
" <defines title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
diff --git a/src/layout_default.xml b/src/layout_default.xml
index 5b60278..7f62755 100644
--- a/src/layout_default.xml
+++ b/src/layout_default.xml
@@ -134,11 +134,11 @@
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
- <classes visible="yes" title=""/>
- <namespaces visible="yes" title=""/>
- <dirs visible="yes" title=""/>
<nestedgroups visible="yes" title=""/>
+ <dirs visible="yes" title=""/>
<files visible="yes" title=""/>
+ <namespaces visible="yes" title=""/>
+ <classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
diff --git a/src/libdoxycfg.pro.in b/src/libdoxycfg.pro.in
index 2adead6..800c373 100644
--- a/src/libdoxycfg.pro.in
+++ b/src/libdoxycfg.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
diff --git a/src/libdoxycfg.t b/src/libdoxycfg.t.in
index 6682956..29b1623 100644
--- a/src/libdoxycfg.t
+++ b/src/libdoxycfg.t.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
@@ -16,8 +16,8 @@
#!
#$ IncludeTemplate("lib.t");
-LEX = flex
-YACC = bison
+LEX = %%FLEX%%
+YACC = %%BISON%%
#${
sub GenerateDep {
diff --git a/src/libdoxygen.pro.in b/src/libdoxygen.pro.in
index 1446a17..b6c7dec 100644
--- a/src/libdoxygen.pro.in
+++ b/src/libdoxygen.pro.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
@@ -16,7 +16,8 @@
TEMPLATE = libdoxygen.t
CONFIG = console warn_on staticlib $extraopts
-HEADERS = bufstr.h \
+HEADERS = arguments.h \
+ bufstr.h \
cite.h \
classdef.h \
classlist.h \
@@ -158,6 +159,7 @@ HEADERS = bufstr.h \
translator_ua.h \
translator_vi.h \
translator_za.h \
+ types.h \
unistd.h \
util.h \
version.h \
@@ -167,7 +169,8 @@ HEADERS = bufstr.h \
xmldocvisitor.h \
xmlgen.h
-SOURCES = ce_lex.cpp \
+SOURCES = arguments.cpp \
+ ce_lex.cpp \
ce_parse.cpp \
cite.cpp \
classdef.cpp \
diff --git a/src/libdoxygen.t b/src/libdoxygen.t.in
index 200d39b..accf5cf 100644
--- a/src/libdoxygen.t
+++ b/src/libdoxygen.t.in
@@ -1,7 +1,7 @@
#
#
#
-# Copyright (C) 1997-2011 by Dimitri van Heesch.
+# Copyright (C) 1997-2012 by Dimitri van Heesch.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby
@@ -16,8 +16,8 @@
#!
#$ IncludeTemplate("lib.t");
-LEX = flex
-YACC = bison
+LEX = %%FLEX%%
+YACC = %%BISON%%
INCBUFSIZE = $(PERL) increasebuffer.pl
#${
diff --git a/src/lockingptr.h b/src/lockingptr.h
index b16e5ca..5fc328d 100644
--- a/src/lockingptr.h
+++ b/src/lockingptr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/logos.cpp b/src/logos.cpp
index 8f2dbd0..afc93cb 100644
--- a/src/logos.cpp
+++ b/src/logos.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/logos.h b/src/logos.h
index 438df13..3050819 100644
--- a/src/logos.h
+++ b/src/logos.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/main.cpp b/src/main.cpp
index 854eed7..dd1ea1e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 9a630b7..06fe9df 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/mandocvisitor.h b/src/mandocvisitor.h
index 14559d5..acd0663 100644
--- a/src/mandocvisitor.h
+++ b/src/mandocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/mangen.cpp b/src/mangen.cpp
index c44044b..fb2898c 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -436,7 +436,7 @@ void ManGenerator::startDoxyAnchor(const char *,const char *manName,
void ManGenerator::endMemberDoc(bool)
{
- t << "\"";
+ t << "\"\n";
}
void ManGenerator::startSubsection()
diff --git a/src/mangen.h b/src/mangen.h
index d7c58a5..5c8a863 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/markdown.cpp b/src/markdown.cpp
index 95cf3c1..16dbe6d 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -47,10 +47,24 @@
//-----------
+// is character at position i in data part of an identifier?
#define isIdChar(i) \
- ((data[(i)]>='a' && data[(i)]<='z') || \
- (data[(i)]>='A' && data[(i)]<='Z') || \
- (data[(i)]>='0' && data[(i)]<='9')) \
+ ((data[i]>='a' && data[i]<='z') || \
+ (data[i]>='A' && data[i]<='Z') || \
+ (data[i]>='0' && data[i]<='9')) \
+
+// is character at position i in data allowed before an emphasis section
+#define isOpenEmphChar(i) \
+ (data[i]=='\n' || data[i]==' ' || data[i]=='\'' || data[i]=='<' || \
+ data[i]=='{' || data[i]=='(' || data[i]=='[' || data[i]==',' || \
+ data[i]==':' || data[i]==';')
+
+// is character at position i in data an escape that prevents ending an emphasis section
+// so for example *bla (*.txt) is cool*
+#define ignoreCloseEmphChar(i) \
+ (data[i]=='(' || data[i]=='{' || data[i]=='[' || data[i]=='<' || \
+ data[i]=='=' || data[i]=='+' || data[i]=='-' || data[i]=='\\' || \
+ data[i]=='@')
//----------
@@ -199,7 +213,6 @@ static QCString isBlockCommand(const char *data,int offset,int size)
return QCString();
}
-
/** looks for the next emph char, skipping other constructs, and
* stopping when either it is found, or we are at the end of a paragraph.
*/
@@ -209,12 +222,19 @@ static int findEmphasisChar(const char *data, int size, char c)
while (i<size)
{
- while (i<size && data[i]!=c && data[i]!='`' &&
+ while (i<size && data[i]!=c && data[i]!='`' &&
data[i]!='\\' && data[i]!='@' &&
data[i]!='\n') i++;
//printf("findEmphasisChar: data=[%s] i=%d c=%c\n",data,i,data[i]);
- if (data[i] == c)
+ // not counting escaped chars or characters that are unlikely
+ // to appear as the end of the emphasis char
+ if (i>0 && ignoreCloseEmphChar(i-1))
+ {
+ i++;
+ continue;
+ }
+ else if (data[i] == c)
{
if (i<size-1 && isIdChar(i+1)) // to prevent touching some_underscore_identifier
{
@@ -224,12 +244,6 @@ static int findEmphasisChar(const char *data, int size, char c)
return i; // found it
}
- // not counting escaped chars
- if (i>0 && (data[i-1]=='\\' || data[i-1]=='@'))
- {
- i++;
- continue;
- }
// skipping a code span
if (data[i]=='`')
@@ -489,6 +503,14 @@ static int processHtmlTag(GrowBuf &out,const char *data,int offset,int size)
static int processEmphasis(GrowBuf &out,const char *data,int offset,int size)
{
+ if ((offset>0 && !isOpenEmphChar(-1)) || // invalid char before * or _
+ (size>1 && data[0]!=data[1] && !isIdChar(1)) || // invalid char after * or _
+ (size>2 && data[0]==data[1] && !isIdChar(2))) // invalid char after ** or __
+ {
+ return 0;
+ }
+
+#if 0
if (offset>0 && size>1 && (isIdChar(-1) || data[-1]==data[0]))
{
if (isIdChar(1) || data[-1]==data[0])
@@ -504,6 +526,7 @@ static int processEmphasis(GrowBuf &out,const char *data,int offset,int size)
return 0;
}
}
+#endif
char c = data[0];
int ret;
if (size>2 && data[1]!=c) // _bla or *bla
@@ -544,6 +567,7 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
QCString title;
int contentStart,contentEnd,linkStart,titleStart,titleEnd;
bool isImageLink = FALSE;
+ bool isToc = FALSE;
int i=1;
if (data[0]=='!')
{
@@ -704,6 +728,11 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
explicitTitle=TRUE;
i=contentEnd;
}
+ else if (content=="TOC")
+ {
+ isToc=TRUE;
+ i=contentEnd;
+ }
else
{
return 0;
@@ -715,7 +744,11 @@ static int processLink(GrowBuf &out,const char *data,int,int size)
return 0;
}
static QRegExp re("^[@\\]ref ");
- if (isImageLink)
+ if (isToc) // special case for [TOC]
+ {
+ if (g_current) g_current->stat=TRUE;
+ }
+ else if (isImageLink)
{
if (link.find("@ref ")!=-1 || link.find("\\ref ")!=-1)
// assume doxygen symbol link
@@ -893,11 +926,11 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int
i++;
}
}
- if (size>1)
+ if (size>1 && data[0]=='\\')
{
char c=data[1];
- if (c=='[' || c==']' || c=='*' || c=='_' || c=='+' || c=='-' ||
- c=='!' || c=='(' || c==')' || c=='.' || c=='`')
+ if (c=='[' || c==']' || c=='*' || c=='+' || c=='-' ||
+ c=='!' || c=='(' || c==')' || c=='.' || c=='`' || c=='_')
{
out.addStr(&data[1],1);
return 2;
@@ -1144,7 +1177,7 @@ static int isAtxHeader(const char *data,int size,
if (!id.isEmpty()) // strip #'s between title and id
{
i=header.length()-1;
- while (i>=0 && header.at(i)=='#' || header.at(i)==' ') i--;
+ while (i>=0 && (header.at(i)=='#' || header.at(i)==' ')) i--;
header=header.left(i+1);
}
@@ -1241,7 +1274,6 @@ static int computeIndentExcludingListMarkers(const char *data,int size)
static bool isFencedCodeBlock(const char *data,int size,int refIndent,
QCString &lang,int &start,int &end,int &offset)
{
- // TODO: implement me...
// rules: at least 3 ~~~, end of the block same amount of ~~~'s, otherwise
// return FALSE
int i=0;
@@ -1537,7 +1569,7 @@ static int writeTableBlock(GrowBuf &out,const char *data,int size)
out.addStr("</table>\n");
- delete columnAlignment;
+ delete[] columnAlignment;
return i;
}
@@ -1689,7 +1721,8 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
{
// find end of the line
int nb=0;
- for (end=i+1; end<size && data[end-1]!='\n'; end++)
+ end=i+1;
+ while (end<size && data[end-1]!='\n')
{
// while looking for the end of the line we might encounter a block
// that needs to be passed unprocessed.
@@ -1700,12 +1733,8 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
QCString endBlockName = isBlockCommand(data+end-1,end-1,size-(end-1));
if (!endBlockName.isEmpty())
{
- if (pi!=-1) // output previous line if available
- {
- out.addStr(data+pi,i-pi);
- }
int l = endBlockName.length();
- for (;end<size-l-1;end++) // search for end of block marker
+ for (;end<size-l;end++) // search for end of block marker
{
if ((data[end]=='\\' || data[end]=='@') &&
data[end-1]!='\\' && data[end-1]!='@'
@@ -1713,7 +1742,13 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
{
if (strncmp(&data[end+1],endBlockName,l)==0)
{
+ if (pi!=-1) // output previous line if available
+ {
+ //printf("feol out={%s}\n",QCString(data+pi).left(i-pi).data());
+ out.addStr(data+pi,i-pi);
+ }
// found end marker, skip over this block
+ //printf("feol.block out={%s}\n",QCString(data+i).left(end+l+1-i).data());
out.addStr(data+i,end+l+1-i);
pi=-1;
i=end+l+1; // continue after block
@@ -1723,6 +1758,10 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
}
}
}
+ else
+ {
+ end++;
+ }
}
else if (nb==0 && data[end-1]=='<' && end<size-6 &&
(end<=1 || (data[end-2]!='\\' && data[end-2]!='@'))
@@ -1743,6 +1782,10 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
end = i+1;
break;
}
+ else
+ {
+ end++;
+ }
}
else if (nb==0 && data[end-1]=='`')
{
@@ -1754,7 +1797,12 @@ static void findEndOfLine(GrowBuf &out,const char *data,int size,
while (end<size && data[end-1]=='`') end++,enb++;
if (enb==nb) nb=0;
}
+ else
+ {
+ end++;
+ }
}
+ //printf("findEndOfLine pi=%d i=%d end=%d {%s}\n",pi,i,end,QCString(data+i).left(end-i).data());
}
static QCString processQuotations(const QCString &s,int refIndent)
@@ -1779,6 +1827,7 @@ static QCString processQuotations(const QCString &s,int refIndent)
}
else
{
+ //printf("quote out={%s}\n",QCString(data+pi).left(i-pi).data());
out.addStr(data+pi,i-pi);
}
}
@@ -1837,6 +1886,8 @@ static QCString processBlocks(const QCString &s,int indent)
findEndOfLine(out,data,size,pi,i,end);
// line is now found at [i..end)
+ //printf("findEndOfLine: pi=%d i=%d end=%d\n",pi,i,end);
+
if (pi!=-1)
{
int blockStart,blockEnd,blockOffset;
@@ -1894,24 +1945,24 @@ static QCString processBlocks(const QCString &s,int indent)
{
//printf("Found FencedCodeBlock lang='%s' start=%d end=%d code={%s}\n",
// lang.data(),blockStart,blockEnd,QCString(data+pi+blockStart).left(blockEnd-blockStart).data());
- out.addStr("@code");
if (!lang.isEmpty() && lang.at(0)=='.') lang=lang.mid(1);
+ if (lang.isEmpty()) out.addStr("@verbatim"); else out.addStr("@code");
if (!lang.isEmpty())
{
out.addStr("{"+lang+"}");
}
out.addStr(data+pi+blockStart,blockEnd-blockStart);
- out.addStr("\n@endcode");
+ out.addStr("\n");
+ if (lang.isEmpty()) out.addStr("@endverbatim"); else out.addStr("@endcode");
i=pi+blockOffset;
pi=-1;
end=i+1;
continue;
}
else if (isCodeBlock(data+i,i,end-i,blockIndent))
- //if (isCodeBlock(data+pi,pi,end-pi,blockIndent))
{
// skip previous line (it is empty anyway)
- i=pi+writeCodeBlock(out,data+pi,size-pi,blockIndent);
+ i+=writeCodeBlock(out,data+i,size-i,blockIndent);
pi=-1;
end=i+1;
continue;
diff --git a/src/markdown.h b/src/markdown.h
index 885d659..bff1100 100644
--- a/src/markdown.h
+++ b/src/markdown.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/marshal.cpp b/src/marshal.cpp
index d366c57..3ef97b8 100644
--- a/src/marshal.cpp
+++ b/src/marshal.cpp
@@ -9,6 +9,7 @@
#include "definition.h"
#include "groupdef.h"
#include "example.h"
+#include "arguments.h"
#define HEADER ('D'<<24)+('O'<<16)+('X'<<8)+'!'
diff --git a/src/marshal.h b/src/marshal.h
index ad25b5d..0360dca 100644
--- a/src/marshal.h
+++ b/src/marshal.h
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 70e5bb9..39a71f8 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -41,6 +41,7 @@
#include "objcache.h"
#include "vhdlscanner.h"
#include "vhdldocgen.h"
+#include "arguments.h"
#define START_MARKER 0x4D454D5B // MEM[
#define END_MARKER 0x4D454D5D // MEM]
@@ -889,7 +890,6 @@ QCString MemberDef::anchor() const
void MemberDef::_computeLinkableInProject()
{
KEEP_RESIDENT_DURING_CALL;
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
static bool extractStatic = Config_getBool("EXTRACT_STATIC");
m_isLinkableCached = 2; // linkable
//printf("MemberDef::isLinkableInProject(name=%s)\n",name().data());
@@ -942,7 +942,7 @@ void MemberDef::_computeLinkableInProject()
m_isLinkableCached = 1; // in file (and not in namespace) but file not linkable
return;
}
- if (m_impl->prot==Private && !extractPrivate && m_impl->mtype!=Friend)
+ if (!protectionLevelVisible(m_impl->prot) && m_impl->mtype!=Friend)
{
//printf("private and invisible!\n");
m_isLinkableCached = 1; // hidden due to protection
@@ -1028,7 +1028,7 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *,NamespaceDef *,
SrcLangExt lang = getLanguage();
//static bool optimizeOutputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
static bool hideScopeNames = Config_getBool("HIDE_SCOPE_NAMES");
- QCString sep = getLanguageSpecificSeparator(lang);
+ QCString sep = getLanguageSpecificSeparator(lang,TRUE);
QCString n = name();
if (!hideScopeNames)
{
@@ -1139,7 +1139,6 @@ bool MemberDef::isBriefSectionVisible() const
static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS");
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
//printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
// name().data(),
@@ -1189,8 +1188,7 @@ bool MemberDef::isBriefSectionVisible() const
// only include members that are non-private unless EXTRACT_PRIVATE is
// set to YES or the member is part of a group
- bool visibleIfPrivate = (protection()!=Private ||
- extractPrivate ||
+ bool visibleIfPrivate = (protectionLevelVisible(protection()) ||
m_impl->mtype==Friend
);
@@ -1689,7 +1687,6 @@ bool MemberDef::isDetailedSectionLinkable() const
static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
static bool extractStatic = Config_getBool("EXTRACT_STATIC");
- static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
KEEP_RESIDENT_DURING_CALL;
@@ -1727,9 +1724,7 @@ bool MemberDef::isDetailedSectionLinkable() const
// only include members that are non-private unless EXTRACT_PRIVATE is
// set to YES or the member is part of a group
- bool privateFilter = (protection()!=Private || extractPrivate ||
- m_impl->mtype==Friend
- );
+ bool privateFilter = protectionLevelVisible(protection()) || m_impl->mtype==Friend;
// member is part of an anonymous scope that is the type of
// another member in the list.
@@ -1797,7 +1792,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
SrcLangExt lang = getLanguage();
//printf("member=%s lang=%d\n",name().data(),lang);
bool optVhdl = lang==SrcLangExt_VHDL;
- QCString sep = getLanguageSpecificSeparator(lang);
+ QCString sep = getLanguageSpecificSeparator(lang,TRUE);
QCString scopeName = scName;
QCString memAnchor = anchor();
@@ -2671,7 +2666,7 @@ void MemberDef::warnIfUndocumented()
if ((!hasUserDocumentation() && !extractAll) &&
!isFriendClass() &&
name().find('@')==-1 && d->name().find('@')==-1 &&
- (m_impl->prot!=Private || Config_getBool("EXTRACT_PRIVATE"))
+ protectionLevelVisible(m_impl->prot)
)
{
warn_undoc(getDefFileName(),getDefLine(),"warning: Member %s%s (%s) of %s %s is not documented.",
@@ -2947,7 +2942,7 @@ void MemberDef::addListReference(Definition *)
Definition *pd=getOuterScope();
QCString pdName = pd->definitionType()==Definition::TypeClass ?
((ClassDef*)pd)->displayName() : pd->name();
- QCString sep = getLanguageSpecificSeparator(lang);
+ QCString sep = getLanguageSpecificSeparator(lang,TRUE);
QCString memArgs;
if (!isRelated()
/* && commented out as a result of bug 597016
@@ -3304,6 +3299,7 @@ void MemberDef::enableCallerGraph(bool e)
if (e) Doxygen::parseSourcesNeeded = TRUE;
}
+#if 0
bool MemberDef::protectionVisible() const
{
makeResident();
@@ -3312,6 +3308,7 @@ bool MemberDef::protectionVisible() const
(m_impl->prot==Protected && Config_getBool("EXTRACT_PROTECTED")) ||
(m_impl->prot==Package && Config_getBool("EXTRACT_PACKAGE"));
}
+#endif
#if 0
void MemberDef::setInbodyDocumentation(const char *docs,
diff --git a/src/memberdef.h b/src/memberdef.h
index 5ec91b3..2e85d47 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -23,7 +23,7 @@
#include <qdict.h>
#include <qstack.h>
-#include "entry.h"
+#include "types.h"
#include "definition.h"
#include "sortdict.h"
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index 2f821f8..6f9cbe7 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/membergroup.h b/src/membergroup.h
index bf9ff97..12d1383 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index f3cfe54..8cfad19 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/memberlist.h b/src/memberlist.h
index 09ac656..e832ad5 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/membername.cpp b/src/membername.cpp
index 8c6b735..506313e 100644
--- a/src/membername.cpp
+++ b/src/membername.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/membername.h b/src/membername.h
index aeebf23..e5fbaa3 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/message.cpp b/src/message.cpp
index 7c0679c..5a452cc 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/message.h b/src/message.h
index 5325e81..46b736c 100644
--- a/src/message.h
+++ b/src/message.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/msc.cpp b/src/msc.cpp
index cce6178..51875ba 100644
--- a/src/msc.cpp
+++ b/src/msc.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/msc.h b/src/msc.h
index e26ed8b..f1fc78b 100644
--- a/src/msc.h
+++ b/src/msc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 18d2801..4d53a12 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/namespacedef.h b/src/namespacedef.h
index 67cffaf..f1db108 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/navtree.js b/src/navtree.js
index eb18215..505ca61 100644
--- a/src/navtree.js
+++ b/src/navtree.js
@@ -19,7 +19,9 @@ function getScript(scriptName,func,show)
script.onload = func;
script.src = scriptName+'.js';
script.onreadystatechange = function() {
- if (script.readyState == 'complete') { func(); if (show) showRoot(); }
+ if (script.readyState=='complete' || script.readyState=='loaded') {
+ func(); if (show) showRoot();
+ }
};
head.appendChild(script);
}
diff --git a/src/navtree_js.h b/src/navtree_js.h
index 63c104b..746b39d 100644
--- a/src/navtree_js.h
+++ b/src/navtree_js.h
@@ -19,7 +19,9 @@
" script.onload = func; \n"
" script.src = scriptName+'.js'; \n"
" script.onreadystatechange = function() {\n"
-" if (script.readyState == 'complete') { func(); if (show) showRoot(); }\n"
+" if (script.readyState=='complete' || script.readyState=='loaded') { \n"
+" func(); if (show) showRoot(); \n"
+" }\n"
" };\n"
" head.appendChild(script); \n"
"}\n"
diff --git a/src/objcache.cpp b/src/objcache.cpp
index 23c14ec..a08d649 100644
--- a/src/objcache.cpp
+++ b/src/objcache.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/objcache.h b/src/objcache.h
index c89ec2c..71e7178 100644
--- a/src/objcache.h
+++ b/src/objcache.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index fbe6b3e..74ba116 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/outputgen.h b/src/outputgen.h
index ba77605..58d1384 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/outputlist.cpp b/src/outputlist.cpp
index 738d540..cb1bba1 100644
--- a/src/outputlist.cpp
+++ b/src/outputlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/outputlist.h b/src/outputlist.h
index 2e863e3..1b5b8ec 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pagedef.cpp b/src/pagedef.cpp
index 63b24d8..f280c81 100644
--- a/src/pagedef.cpp
+++ b/src/pagedef.cpp
@@ -17,6 +17,7 @@ PageDef::PageDef(const char *f,int l,const char *n,
m_subPageDict = new PageSDict(7);
m_pageScope = 0;
m_nestingLevel = 0;
+ m_showToc = FALSE;
}
PageDef::~PageDef()
@@ -139,6 +140,11 @@ void PageDef::writeDocumentation(OutputList &ol)
ol.popGeneratorState();
//2.}
+ if (m_showToc && hasSections())
+ {
+ writeToc(ol);
+ }
+
writePageDocumentation(ol);
ol.popGeneratorState();
@@ -270,3 +276,8 @@ void PageDef::setNestingLevel(int l)
m_nestingLevel = l;
}
+void PageDef::setShowToc(bool b)
+{
+ m_showToc = b;
+}
+
diff --git a/src/pagedef.h b/src/pagedef.h
index 136a997..b4eded5 100644
--- a/src/pagedef.h
+++ b/src/pagedef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -26,6 +26,12 @@ class PageDef : public Definition
public:
PageDef(const char *f,int l,const char *n,const char *d,const char *t);
~PageDef();
+
+ // setters
+ void setFileName(const char *name) { m_fileName = name; }
+ void setShowToc(bool b);
+
+ // getters
DefType definitionType() const { return TypePage; }
bool isLinkableInProject() const
{
@@ -35,7 +41,6 @@ class PageDef : public Definition
{
return isLinkableInProject() || isReference();
}
- void writeDocumentation(OutputList &ol);
// functions to get a uniform interface with Definitions
QCString getOutputFileBase() const;
@@ -44,7 +49,6 @@ class PageDef : public Definition
QCString title() const { return m_title; }
GroupDef * getGroupDef() const;
PageSDict * getSubPages() const { return m_subPageDict; }
- void setFileName(const char *name) { m_fileName = name; }
void addInnerCompound(Definition *d);
bool visibleInIndex() const;
bool documentedPage() const;
@@ -54,6 +58,8 @@ class PageDef : public Definition
Definition *getPageScope() const { return m_pageScope; }
QCString displayName() const { return !m_title.isEmpty() ? m_title : Definition::name(); }
+ void writeDocumentation(OutputList &ol);
+
private:
void setNestingLevel(int l);
void writePageDocumentation(OutputList &ol);
@@ -63,6 +69,7 @@ class PageDef : public Definition
PageSDict *m_subPageDict; // list of pages in the group
Definition *m_pageScope;
int m_nestingLevel;
+ bool m_showToc;
};
class PageSDict : public SDict<PageDef>
diff --git a/src/parserintf.h b/src/parserintf.h
index 2e5397e..db22088 100644
--- a/src/parserintf.h
+++ b/src/parserintf.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 30e4788..78fa313 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
* Authors: Dimitri van Heesch, Miguel Lobo.
*
* Permission to use, copy, modify, and distribute this software and its
@@ -30,6 +30,7 @@
#include <qdict.h>
#include <qfile.h>
#include "ftextstream.h"
+#include "arguments.h"
#define PERLOUTPUT_MAX_INDENTATION 40
diff --git a/src/perlmodgen.h b/src/perlmodgen.h
index 2f13ec5..4307d9b 100644
--- a/src/perlmodgen.h
+++ b/src/perlmodgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pre.h b/src/pre.h
index cbb68ad..18c57c8 100644
--- a/src/pre.h
+++ b/src/pre.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pre.l b/src/pre.l
index fea32f8..217ed80 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -47,6 +47,8 @@
#include "bufstr.h"
#include "portable.h"
#include "bufstr.h"
+#include "arguments.h"
+#include "entry.h"
#define YY_NEVER_INTERACTIVE 1
@@ -1552,7 +1554,10 @@ static void readIncludeFile(const QCString &inc)
//printf("Found include file!\n");
if (Debug::isFlagSet(Debug::Preprocessor))
{
- for (i=0;i<g_includeStack.count();i++) msg(" ");
+ for (i=0;i<g_includeStack.count();i++)
+ {
+ Debug::print(Debug::Preprocessor,0," ");
+ }
//msg("#include %s: parsing...\n",incFileName.data());
}
if (oldFileDef)
@@ -1625,11 +1630,11 @@ static void readIncludeFile(const QCString &inc)
{
if (alreadyIncluded)
{
- msg("#include %s: already included! skipping...\n",incFileName.data());
+ Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",incFileName.data());
}
else
{
- msg("#include %s: not found! skipping...\n",incFileName.data());
+ Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",incFileName.data());
}
//printf("error: include file %s not found\n",yytext);
}
@@ -2990,25 +2995,32 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output)
{
char *orgPos=output.data()+orgOffset;
char *newPos=output.data()+output.curPos();
- msg("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
+ Debug::print(Debug::Preprocessor,0,"Preprocessor output (size: %d bytes):\n",newPos-orgPos);
int line=1;
- msg("---------\n00001 ");
+ Debug::print(Debug::Preprocessor,0,"---------\n00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
- if (*orgPos=='\n') printf("%05d ",++line);
+ if (*orgPos=='\n') Debug::print(Debug::Preprocessor,0,"%05d ",++line);
orgPos++;
}
- msg("\n---------\n");
- msg("Macros accessible in this file:\n");
- msg("---------\n");
- QDictIterator<Define> di(DefineManager::instance().defineContext());
- Define *def;
- for (di.toFirst();(def=di.current());++di)
+ Debug::print(Debug::Preprocessor,0,"\n---------\n");
+ if (DefineManager::instance().defineContext().count()>0)
+ {
+ Debug::print(Debug::Preprocessor,0,"Macros accessible in this file:\n");
+ Debug::print(Debug::Preprocessor,0,"---------\n");
+ QDictIterator<Define> di(DefineManager::instance().defineContext());
+ Define *def;
+ for (di.toFirst();(def=di.current());++di)
+ {
+ Debug::print(Debug::Preprocessor,0,"%s ",def->name.data());
+ }
+ Debug::print(Debug::Preprocessor,0,"\n---------\n");
+ }
+ else
{
- msg("%s ",def->name.data());
+ Debug::print(Debug::Preprocessor,0,"No macros accessible in this file.\n");
}
- msg("\n---------\n");
}
DefineManager::instance().endContext();
}
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 4a41647..7e96c61 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pycode.h b/src/pycode.h
index 230ba23..895c88e 100644
--- a/src/pycode.h
+++ b/src/pycode.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pycode.l b/src/pycode.l
index 1eb762d..6ddf2e0 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pyscanner.h b/src/pyscanner.h
index c02d47f..3bb4b21 100644
--- a/src/pyscanner.h
+++ b/src/pyscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/pyscanner.l b/src/pyscanner.l
index 1c29c57..7c571d6 100644
--- a/src/pyscanner.l
+++ b/src/pyscanner.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -50,6 +50,7 @@
#include "language.h"
#include "commentscan.h"
#include "pycode.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
diff --git a/src/qtbc.h b/src/qtbc.h
index 2baf251..5c3ceef 100644
--- a/src/qtbc.h
+++ b/src/qtbc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/reflist.cpp b/src/reflist.cpp
index cd19d53..8f103d7 100644
--- a/src/reflist.cpp
+++ b/src/reflist.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/reflist.h b/src/reflist.h
index 90c07e3..90c95c8 100644
--- a/src/reflist.h
+++ b/src/reflist.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index e49a8ed..ceedb2d 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -34,6 +34,24 @@
//#define DBG_RTF(x) m_t << x
#define DBG_RTF(x) do {} while(0)
+static QCString align(DocHtmlCell *cell)
+{
+ HtmlAttribList attrs = cell->attribs();
+ uint i;
+ for (i=0; i<attrs.count(); ++i)
+ {
+ if (attrs.at(i)->name.lower()=="align")
+ {
+ if (attrs.at(i)->value.lower()=="center")
+ return "\\qc ";
+ else if (attrs.at(i)->value.lower()=="right")
+ return "\\qr ";
+ else return "";
+ }
+ }
+ return "";
+}
+
RTFDocVisitor::RTFDocVisitor(FTextStream &t,CodeOutputInterface &ci,
const char *langExt)
: DocVisitor(DocVisitor_RTF), m_t(t), m_ci(ci), m_insidePre(FALSE),
@@ -931,7 +949,8 @@ void RTFDocVisitor::visitPost(DocHtmlTable *)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocHtmlTable)}\n");
- m_t << "\\pard" << endl;
+ m_t << "\\pard\\plain" << endl;
+ m_t << "\\par" << endl;
m_lastIsPara=TRUE;
}
@@ -959,6 +978,10 @@ void RTFDocVisitor::visitPre(DocHtmlRow *r)
"\\trbrdrv\\brdrs\\brdrw10 "<< endl;
for (i=0;i<r->numCells();i++)
{
+ if (r->isHeading())
+ {
+ m_t << "\\clcbpat16"; // set cell shading to light grey (color 16 in the clut)
+ }
m_t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10 "
"\\clbrdrl\\brdrs\\brdrw10 "
"\\clbrdrb\\brdrs\\brdrw10 "
@@ -980,11 +1003,11 @@ void RTFDocVisitor::visitPost(DocHtmlRow *)
m_lastIsPara=FALSE;
}
-void RTFDocVisitor::visitPre(DocHtmlCell *)
+void RTFDocVisitor::visitPre(DocHtmlCell *c)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocHtmlCell)}\n");
- m_t << "{";
+ m_t << "{" << align(c);
m_lastIsPara=FALSE;
}
diff --git a/src/rtfdocvisitor.h b/src/rtfdocvisitor.h
index db70b00..2e35b3b 100644
--- a/src/rtfdocvisitor.h
+++ b/src/rtfdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp
index 7f37f92..b00fb46 100644
--- a/src/rtfgen.cpp
+++ b/src/rtfgen.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Parker Waechter & Dimitri van Heesch.
*
* Style sheet additions by Alexander Bartolich
*
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 1970f12..c9dec0b 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Parker Waechter & Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Parker Waechter & Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/rtfstyle.cpp b/src/rtfstyle.cpp
index 9cc2064..716cf2a 100644
--- a/src/rtfstyle.cpp
+++ b/src/rtfstyle.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/rtfstyle.h b/src/rtfstyle.h
index 5d2b5ed..3dd4897 100644
--- a/src/rtfstyle.h
+++ b/src/rtfstyle.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/scanner.h b/src/scanner.h
index 62c1b09..70dad99 100644
--- a/src/scanner.h
+++ b/src/scanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/scanner.l b/src/scanner.l
index 63bfde0..e6cbd17 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -42,6 +42,7 @@
#include "language.h"
#include "commentscan.h"
#include "code.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
@@ -70,6 +71,7 @@ static int lastSkipVerbStringContext;
static int lastCommentInArgContext;
static int lastCSConstraint;
static int lastHereDocContext;
+static int lastDefineContext;
static Protection protection;
static Protection baseProt;
static int sharpCount = 0 ;
@@ -571,7 +573,7 @@ ID "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)(((~|!){BN}*)?{ID})
PHPSCOPENAME ({ID}"\\")+{ID}
-TSCOPE {ID}("<"[a-z_A-Z0-9 \t\*\&,]*">")?
+TSCOPE {ID}("<"[a-z_A-Z0-9 \t\*\&,:]*">")?
CSSCOPENAME (({ID}?{BN}*"."{BN}*)*)((~{BN}*)?{ID})
PRE [pP][rR][eE]
CODE [cC][oO][dD][eE]
@@ -1140,7 +1142,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
unput('{');
BEGIN( Function );
}
-<FindMembers>{BN}{1,80} {
+<FindMembers>{BN}{1,80} {
lineCount();
}
<FindMembers>"@"({ID}".")*{ID}{BN}*"(" {
@@ -1813,6 +1815,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current->name=n.left(n.length()-2);
}
<FindMembers>{SCOPENAME}{BN}*/"<" { // Note: this could be a return type!
+ roundCount=0;
sharpCount=0;
lineCount();
addType( current );
@@ -2080,6 +2083,10 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
{
current->protection = Protected;
}
+ else if (javaLike && strcmp(yytext,"internal")==0)
+ {
+ current->protection = Package;
+ }
else if (javaLike && strcmp(yytext,"private")==0)
{
current->protection = Private;
@@ -2190,6 +2197,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
if (insidePHP)
REJECT;
current->bodyLine = yyLineNr;
+ lastDefineContext = YY_START;
BEGIN( Define );
}
<FindMembers,ReadBody,ReadNSBody,ReadBodyIntf,SkipCurly,SkipCurlyCpp>{B}*"#"{B}+[0-9]+{B}+/"\"" { /* line control directive */
@@ -2274,7 +2282,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current_root->addSubEntry(current);
current = new Entry ;
initEntry();
- BEGIN(FindMembers);
+ BEGIN(lastDefineContext);
}
<DefinePHPEnd>";" {
//printf("End define\n");
@@ -3545,7 +3553,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
*/
<MemberSpecSkip>"," { BEGIN(MemberSpec); }
<MemberSpecSkip>";" { unput(';'); BEGIN(MemberSpec); }
-<ReadBody,ReadNSBody,ReadBodyIntf>{BN}+ { current->program += yytext ;
+<ReadBody,ReadNSBody,ReadBodyIntf>{BN}{1,80} { current->program += yytext ;
lineCount() ;
}
<ReadBodyIntf>"@end"/[^a-z_A-Z0-9] { // end of Objective C block
@@ -5011,6 +5019,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<BasesProt>"virtual"{BN}+ { lineCount(); baseVirt = Virtual; }
<BasesProt>"public"{BN}+ { lineCount(); baseProt = Public; }
<BasesProt>"protected"{BN}+ { lineCount(); baseProt = Protected; }
+<BasesProt>"internal"{BN}+ { lineCount(); baseProt = Package; }
<BasesProt>"private"{BN}+ { lineCount(); baseProt = Private; }
<BasesProt>{BN} { lineCount(); }
<BasesProt>. { unput(*yytext); BEGIN(Bases); }
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index ad9f8ba..c40791e 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/searchindex.h b/src/searchindex.h
index 2b94261..024e70a 100644
--- a/src/searchindex.h
+++ b/src/searchindex.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/section.h b/src/section.h
index 78516ae..556cad0 100644
--- a/src/section.h
+++ b/src/section.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/sortdict.h b/src/sortdict.h
index c2afa39..40f23f7 100644
--- a/src/sortdict.h
+++ b/src/sortdict.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/store.cpp b/src/store.cpp
index b075218..efa0718 100644
--- a/src/store.cpp
+++ b/src/store.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/store.h b/src/store.h
index 6d6eee8..816ce46 100644
--- a/src/store.h
+++ b/src/store.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/svgpan.js b/src/svgpan.js
index 663be79..a64c488 100644
--- a/src/svgpan.js
+++ b/src/svgpan.js
@@ -278,4 +278,42 @@ function handleZoom(evt,direction)
doZoom(g,p,factor);
}
+function serializeXmlNode(xmlNode)
+{
+ if (typeof window.XMLSerializer != "undefined") {
+ return (new window.XMLSerializer()).serializeToString(xmlNode);
+ } else if (typeof xmlNode.xml != "undefined") {
+ return xmlNode.xml;
+ }
+ return "";
+}
+
+/**
+ * Handler for print function
+ */
+function handlePrint(evt)
+{
+ evt.returnValue = false;
+ var g = svgDoc.getElementById("graph");
+ var xs = serializeXmlNode(g);
+ try {
+ var w = window.open('about:blank','_blank','width='+windowWidth+',height='+windowHeight+
+ ',toolbar=0,status=0,menubar=0,scrollbars=0,resizable=0,location=0,directories=0');
+ var d = w.document;
+ d.write('<html xmlns="http://www.w3.org/1999/xhtml" '+
+ 'xmlns:svg="http://www.w3.org/2000/svg" '+
+ 'xmlns:xlink="http://www.w3.org/1999/xlink">');
+ d.write('<head><title>Print SVG</title></head>');
+ d.write('<body style="margin: 0px; padding: 0px;" onload="window.print(); window.close();">');
+ d.write('<div id="svg" style="width:'+windowWidth+'px; height:'+windowHeight+'px;">'+xs+'</div>');
+ d.write('</body>');
+ d.write('</html>');
+ d.close();
+ } catch(e) {
+ alert('Print function not supported by this browser!');
+ }
+}
+
+
+
diff --git a/src/svgpan_js.h b/src/svgpan_js.h
index 260d4f7..9978f21 100644
--- a/src/svgpan_js.h
+++ b/src/svgpan_js.h
@@ -278,4 +278,42 @@
" doZoom(g,p,factor);\n"
"}\n"
"\n"
+"function serializeXmlNode(xmlNode) \n"
+"{\n"
+" if (typeof window.XMLSerializer != \"undefined\") {\n"
+" return (new window.XMLSerializer()).serializeToString(xmlNode);\n"
+" } else if (typeof xmlNode.xml != \"undefined\") {\n"
+" return xmlNode.xml;\n"
+" }\n"
+" return \"\";\n"
+"}\n"
+"\n"
+"/** \n"
+" * Handler for print function\n"
+" */\n"
+"function handlePrint(evt)\n"
+"{\n"
+" evt.returnValue = false;\n"
+" var g = svgDoc.getElementById(\"graph\");\n"
+" var xs = serializeXmlNode(g);\n"
+" try {\n"
+" var w = window.open('about:blank','_blank','width='+windowWidth+',height='+windowHeight+\n"
+" ',toolbar=0,status=0,menubar=0,scrollbars=0,resizable=0,location=0,directories=0');\n"
+" var d = w.document;\n"
+" d.write('<html xmlns=\"http://www.w3.org/1999/xhtml\" '+\n"
+" 'xmlns:svg=\"http://www.w3.org/2000/svg\" '+\n"
+" 'xmlns:xlink=\"http://www.w3.org/1999/xlink\">');\n"
+" d.write('<head><title>Print SVG</title></head>');\n"
+" d.write('<body style=\"margin: 0px; padding: 0px;\" onload=\"window.print(); window.close();\">');\n"
+" d.write('<div id=\"svg\" style=\"width:'+windowWidth+'px; height:'+windowHeight+'px;\">'+xs+'</div>');\n"
+" d.write('</body>');\n"
+" d.write('</html>');\n"
+" d.close();\n"
+" } catch(e) {\n"
+" alert('Print function not supported by this browser!');\n"
+" }\n"
+"}\n"
+"\n"
+"\n"
+"\n"
"\n"
diff --git a/src/tagreader.cpp b/src/tagreader.cpp
index 36119e2..226a726 100644
--- a/src/tagreader.cpp
+++ b/src/tagreader.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -35,6 +35,7 @@
#include "util.h"
#include "message.h"
#include "defargs.h"
+#include "arguments.h"
//#include "reflist.h"
/*! Information about an linkable anchor */
diff --git a/src/tagreader.h b/src/tagreader.h
index ef05d5c..8366cbb 100644
--- a/src/tagreader.h
+++ b/src/tagreader.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/tclscanner.h b/src/tclscanner.h
index b586450..8f9d280 100644
--- a/src/tclscanner.h
+++ b/src/tclscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
* Copyright (C) 2010-2011 by Rene Zaumseil
*
* Permission to use, copy, modify, and distribute this software and its
diff --git a/src/tclscanner.l b/src/tclscanner.l
index fec5dc7..67b8c6d 100644
--- a/src/tclscanner.l
+++ b/src/tclscanner.l
@@ -46,6 +46,7 @@
#include <qstringlist.h>
#include <qlist.h>
#include <qmap.h>
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
diff --git a/src/textdocvisitor.cpp b/src/textdocvisitor.cpp
index dd7e181..b0c3ec2 100644
--- a/src/textdocvisitor.cpp
+++ b/src/textdocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/textdocvisitor.h b/src/textdocvisitor.h
index 5646064..66ace1a 100644
--- a/src/textdocvisitor.h
+++ b/src/textdocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator.h b/src/translator.h
index 07c83ea..47a9417 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_am.h b/src/translator_am.h
index f935c5f..3eac0cc 100644
--- a/src/translator_am.h
+++ b/src/translator_am.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ar.h b/src/translator_ar.h
index b6f6e7c..6738537 100644
--- a/src/translator_ar.h
+++ b/src/translator_ar.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_br.h b/src/translator_br.h
index 39dc859..d36d466 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ca.h b/src/translator_ca.h
index 4104e34..595fe67 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_cn.h b/src/translator_cn.h
index 54bbcf4..a77e436 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 63ab495..3120e2f 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_de.h b/src/translator_de.h
index d825cc2..35a1dc3 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_dk.h b/src/translator_dk.h
index bca066f..71beda7 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_en.h b/src/translator_en.h
index 5d312a4..0dfde48 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_eo.h b/src/translator_eo.h
index 0deb979..c273791 100644
--- a/src/translator_eo.h
+++ b/src/translator_eo.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_es.h b/src/translator_es.h
index 7b57f3b..eebfddd 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_fa.h b/src/translator_fa.h
index e385d79..dbfafca 100644
--- a/src/translator_fa.h
+++ b/src/translator_fa.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_fi.h b/src/translator_fi.h
index d35d698..148b140 100644
--- a/src/translator_fi.h
+++ b/src/translator_fi.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 373c364..4b654ce 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_gr.h b/src/translator_gr.h
index 8d38cf3..bcf6b27 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_hr.h b/src/translator_hr.h
index e175aa5..f193304 100644
--- a/src/translator_hr.h
+++ b/src/translator_hr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_hu.h b/src/translator_hu.h
index 17ed254..70d7186 100644
--- a/src/translator_hu.h
+++ b/src/translator_hu.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_id.h b/src/translator_id.h
index f0d7afc..2206906 100644
--- a/src/translator_id.h
+++ b/src/translator_id.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2007 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_it.h b/src/translator_it.h
index f3f9245..037d408 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_je.h b/src/translator_je.h
index 1368e6f..09bb066 100644
--- a/src/translator_je.h
+++ b/src/translator_je.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_jp.h b/src/translator_jp.h
index fb01d2a..1ba24bc 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ke.h b/src/translator_ke.h
index ce5b26e..4874a5c 100644
--- a/src/translator_ke.h
+++ b/src/translator_ke.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_kr.h b/src/translator_kr.h
index 752d980..acaf8ee 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_lt.h b/src/translator_lt.h
index 96aec3e..3f1bcb6 100644
--- a/src/translator_lt.h
+++ b/src/translator_lt.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_mk.h b/src/translator_mk.h
index 3ec5b55..d656609 100644
--- a/src/translator_mk.h
+++ b/src/translator_mk.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_nl.h b/src/translator_nl.h
index 402112e..f0cc795 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_no.h b/src/translator_no.h
index c4ed2b5..29b2648 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_pl.h b/src/translator_pl.h
index db301be..038bd5e 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_pt.h b/src/translator_pt.h
index c3fd310..fa60916 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -1,5 +1,5 @@
/******************************************************************************
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ro.h b/src/translator_ro.h
index 3fbbbf1..22b769d 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 922845a..e7f7d95 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_sc.h b/src/translator_sc.h
index ffc2f31..6555cf5 100644
--- a/src/translator_sc.h
+++ b/src/translator_sc.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_si.h b/src/translator_si.h
index aa25943..5d0182a 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 1f29b2c..904b609 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_sr.h b/src/translator_sr.h
index d7af204..15d6700 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_sv.h b/src/translator_sv.h
index b95e05a..f262eda 100644
--- a/src/translator_sv.h
+++ b/src/translator_sv.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_tr.h b/src/translator_tr.h
index cf74639..5906364 100644
--- a/src/translator_tr.h
+++ b/src/translator_tr.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_tw.h b/src/translator_tw.h
index 19a873f..8777ae5 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 3ace830..022100d 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_vi.h b/src/translator_vi.h
index 8a294fd..971f12b 100644
--- a/src/translator_vi.h
+++ b/src/translator_vi.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translator_za.h b/src/translator_za.h
index 5c68163..46f5a05 100644
--- a/src/translator_za.h
+++ b/src/translator_za.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/translatordecoder.h b/src/translatordecoder.h
index 90f01fa..07716fb 100644
--- a/src/translatordecoder.h
+++ b/src/translatordecoder.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/types.h b/src/types.h
new file mode 100644
index 0000000..a8b2db6
--- /dev/null
+++ b/src/types.h
@@ -0,0 +1,92 @@
+/******************************************************************************
+ *
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+
+#ifndef TYPES_H
+#define TYPES_H
+
+#include "qtbc.h"
+
+/** @file
+ * @brief This file contains a number of basic enums and types.
+ */
+
+enum Protection { Public, Protected, Private, Package } ;
+enum Specifier { Normal, Virtual, Pure } ;
+enum MethodTypes { Method, Signal, Slot, DCOP, Property, Event };
+enum RelatesType { Simple, Duplicate, MemberOf };
+enum Relationship { Member, Related, Foreign };
+enum SrcLangExt
+{
+ SrcLangExt_Unknown = 0x00000,
+ SrcLangExt_IDL = 0x00008,
+ SrcLangExt_Java = 0x00010,
+ SrcLangExt_CSharp = 0x00020,
+ SrcLangExt_D = 0x00040,
+ SrcLangExt_PHP = 0x00080,
+ SrcLangExt_ObjC = 0x00100,
+ SrcLangExt_Cpp = 0x00200,
+ SrcLangExt_JS = 0x00400,
+ SrcLangExt_Python = 0x00800,
+ SrcLangExt_Fortran = 0x01000,
+ SrcLangExt_VHDL = 0x02000,
+ SrcLangExt_XML = 0x04000,
+ SrcLangExt_Tcl = 0x08000,
+ SrcLangExt_Markdown = 0x10000
+};
+
+struct Grouping
+{
+ enum GroupPri_t
+ {
+ GROUPING_LOWEST,
+ GROUPING_AUTO_WEAK = GROUPING_LOWEST, //!< membership in group was defined via \@weakgroup
+ GROUPING_AUTO_ADD, //!< membership in group was defined via \@add[to]group
+ GROUPING_AUTO_DEF, //!< membership in group was defined via \@defgroup
+ GROUPING_AUTO_HIGHEST = GROUPING_AUTO_DEF,
+ GROUPING_INGROUP, //!< membership in group was defined by \@ingroup
+ GROUPING_HIGHEST = GROUPING_INGROUP
+ };
+
+ static const char *getGroupPriName( GroupPri_t priority )
+ {
+ switch( priority )
+ {
+ case GROUPING_AUTO_WEAK:
+ return "@weakgroup";
+ case GROUPING_AUTO_ADD:
+ return "@addtogroup";
+ case GROUPING_AUTO_DEF:
+ return "@defgroup";
+ case GROUPING_INGROUP:
+ return "@ingroup";
+ }
+ return "???";
+ }
+
+ Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {}
+ Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {}
+ QCString groupname; //!< name of the group
+ GroupPri_t pri; //!< priority of this definition
+
+};
+
+struct ListItemInfo
+{
+ QCString type;
+ int itemId;
+};
+
+
+#endif
diff --git a/src/util.cpp b/src/util.cpp
index 3859c97..08cf0cf 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -53,6 +53,8 @@
#include "bufstr.h"
#include "image.h"
#include "growbuf.h"
+#include "entry.h"
+#include "arguments.h"
#define ENABLE_TRACINGSUPPORT 0
@@ -1737,7 +1739,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,
bool keepSpaces,int indentLevel)
{
//printf("linkify=`%s'\n",text);
- static QRegExp regExp("[a-z_A-Z\\x80-\\xFF][~!a-z_A-Z0-9.:\\x80-\\xFF]*");
+ static QRegExp regExp("[a-z_A-Z\\x80-\\xFF][~!a-z_A-Z0-9$\\\\.:\\x80-\\xFF]*");
static QRegExp regExpSplit("(?!:),");
QCString txtStr=text;
int strLen = txtStr.length();
@@ -1795,7 +1797,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,
}
// get word from string
QCString word=txtStr.mid(newIndex,matchLen);
- QCString matchWord = substitute(word,".","::");
+ QCString matchWord = substitute(substitute(word,"\\","::"),".","::");
//printf("linkifyText word=%s matchWord=%s scope=%s\n",
// word.data(),matchWord.data(),scope?scope->name().data():"<none>");
bool found=FALSE;
@@ -2273,6 +2275,8 @@ QCString fileToString(const char *name,bool filter,bool isSourceCode)
contents.at(totalSize-2)='\n'; // to help the scanner
contents.at(totalSize-1)='\0';
portable_pclose(f);
+ Debug::print(Debug::FilterOutput, 0, "Filter output\n");
+ Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",contents.data());
return transcodeCharacterStringToUTF8(contents);
}
}
@@ -6616,6 +6620,28 @@ static QCString replaceAliasArguments(const QCString &aliasValue,const QCString
return result;
}
+static QCString escapeCommas(const QCString &s)
+{
+ QGString result;
+ const char *p = s.data();
+ char c,pc=0;
+ while ((c=*p++))
+ {
+ if (c==',' && pc!='\\')
+ {
+ result+="\\,";
+ }
+ else
+ {
+ result+=c;
+ }
+ pc=c;
+ }
+ result+='\0';
+ //printf("escapeCommas: '%s'->'%s'\n",s.data(),result.data());
+ return result.data();
+}
+
static QCString expandAliasRec(const QCString s)
{
QCString result;
@@ -6627,18 +6653,28 @@ static QCString expandAliasRec(const QCString s)
result+=value.mid(p,i-p);
QCString args = extractAliasArgs(value,i+l);
bool hasArgs = !args.isEmpty(); // found directly after command
- QCString cmd;
+ int argsLen = args.length();
+ QCString cmd = value.mid(i+1,l-1);
+ QCString cmdNoArgs = cmd;
+ int numArgs=0;
if (hasArgs)
{
- int numArgs = countAliasArguments(args);
- cmd = value.mid(i+1,l-1)+QCString().sprintf("{%d}",numArgs); // alias name + {n}
- }
- else
- {
- cmd = value.mid(i+1,l-1);
+ numArgs = countAliasArguments(args);
+ cmd += QCString().sprintf("{%d}",numArgs); // alias name + {n}
}
QCString *aliasText=Doxygen::aliasDict.find(cmd);
- //printf("Found command '%s' args='%s' aliasText=%s\n",cmd.data(),args.data(),aliasText?aliasText->data():"<none>");
+ if (numArgs>1 && aliasText==0)
+ { // in case there is no command with numArgs parameters, but there is a command with 1 parameter,
+ // we also accept all text as the argument of that command (so you don't have to escape commas)
+ aliasText=Doxygen::aliasDict.find(cmdNoArgs+"{1}");
+ if (aliasText)
+ {
+ cmd = cmdNoArgs+"{1}";
+ args = escapeCommas(args); // escape , so that everything is seen as one argument
+ }
+ }
+ //printf("Found command s='%s' cmd='%s' numArgs=%d args='%s' aliasText=%s\n",
+ // s.data(),cmd.data(),numArgs,args.data(),aliasText?aliasText->data():"<none>");
if (aliasesProcessed.find(cmd)==0 && aliasText) // expand the alias
{
//printf("is an alias!\n");
@@ -6653,7 +6689,7 @@ static QCString expandAliasRec(const QCString s)
result+=expandAliasRec(val);
aliasesProcessed.remove(cmd);
p=i+l;
- if (hasArgs) p+=args.length()+2;
+ if (hasArgs) p+=argsLen+2;
}
else // command is not an alias
{
@@ -6871,6 +6907,9 @@ bool readInputFile(const char *fileName,BufStr &inBuf)
inBuf.addArray(buf,numRead),size+=numRead;
}
portable_pclose(f);
+ inBuf.at(inBuf.curPos()) ='\0';
+ Debug::print(Debug::FilterOutput, 0, "Filter output\n");
+ Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",inBuf.data());
}
int start=0;
@@ -7187,13 +7226,13 @@ QCString langToString(SrcLangExt lang)
}
/** Returns the scope separator to use given the programming language \a lang */
-QCString getLanguageSpecificSeparator(SrcLangExt lang)
+QCString getLanguageSpecificSeparator(SrcLangExt lang,bool classScope)
{
if (lang==SrcLangExt_Java || lang==SrcLangExt_CSharp || lang==SrcLangExt_VHDL || lang==SrcLangExt_Python)
{
return ".";
}
- else if (lang==SrcLangExt_PHP)
+ else if (lang==SrcLangExt_PHP && !classScope)
{
return "\\";
}
@@ -7219,3 +7258,14 @@ QCString correctURL(const QCString &url,const QCString &relPath)
}
//---------------------------------------------------------------------------
+
+bool protectionLevelVisible(Protection prot)
+{
+ static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
+ static bool extractPackage = Config_getBool("EXTRACT_PACKAGE");
+
+ return (prot!=Private && prot!=Package) ||
+ (prot==Private && extractPrivate) ||
+ (prot==Package && extractPackage);
+}
+
diff --git a/src/util.h b/src/util.h
index 9bc235c..f7aa91f 100644
--- a/src/util.h
+++ b/src/util.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -27,6 +27,7 @@
#include <qtextstream.h>
#include <ctype.h>
#include "sortdict.h"
+#include "types.h"
//--------------------------------------------------------------------
@@ -87,27 +88,8 @@ class TextGeneratorOLImpl : public TextGeneratorIntf
//--------------------------------------------------------------------
-enum SrcLangExt
-{
- SrcLangExt_Unknown = 0x00000,
- SrcLangExt_IDL = 0x00008,
- SrcLangExt_Java = 0x00010,
- SrcLangExt_CSharp = 0x00020,
- SrcLangExt_D = 0x00040,
- SrcLangExt_PHP = 0x00080,
- SrcLangExt_ObjC = 0x00100,
- SrcLangExt_Cpp = 0x00200,
- SrcLangExt_JS = 0x00400,
- SrcLangExt_Python = 0x00800,
- SrcLangExt_Fortran = 0x01000,
- SrcLangExt_VHDL = 0x02000,
- SrcLangExt_XML = 0x04000,
- SrcLangExt_Tcl = 0x08000,
- SrcLangExt_Markdown = 0x10000
-};
-
QCString langToString(SrcLangExt lang);
-QCString getLanguageSpecificSeparator(SrcLangExt lang);
+QCString getLanguageSpecificSeparator(SrcLangExt lang,bool classScope=FALSE);
//--------------------------------------------------------------------
@@ -419,5 +401,7 @@ QCString correctURL(const QCString &url,const QCString &relPath);
QCString processMarkup(const QCString &s);
+bool protectionLevelVisible(Protection prot);
+
#endif
diff --git a/src/version.h b/src/version.h
index 116ecdd..4752520 100644
--- a/src/version.h
+++ b/src/version.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index 9aaeb02..c48078d 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -40,6 +40,7 @@
#include "membername.h"
#include "searchindex.h"
#include "vhdldocgen.h"
+#include "arguments.h"
#define YY_NEVER_INTERACTIVE 1
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index 43f8054..5af938f 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2010 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -45,6 +45,7 @@
#include "parserintf.h"
#include "vhdlscanner.h"
#include "layout.h"
+#include "arguments.h"
#define theTranslator_vhdlType VhdlDocGen::trVhdlType
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index 8850d47..bb9a122 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2010 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -35,6 +35,7 @@ class FileStorage;
class EntryNav;
class ClassDef;
class MemberDef;
+class Argument;
// wrapper class for the vhdl parser
class MyParserVhdl
diff --git a/src/vhdlparser.y b/src/vhdlparser.y
index 1389f23..41c81aa 100644
--- a/src/vhdlparser.y
+++ b/src/vhdlparser.y
@@ -60,6 +60,7 @@ struct YYMM
#include "vhdlscanner.h"
#include "commentscan.h"
#include "entry.h"
+#include "arguments.h"
//-----------------------------variables ---------------------------------------------------------------------------
static MyParserVhdl* myconv=0;
diff --git a/src/vhdlscanner.h b/src/vhdlscanner.h
index 197de40..bca6460 100644
--- a/src/vhdlscanner.h
+++ b/src/vhdlscanner.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2010 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 1e135ef..81acba5 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/xmldocvisitor.h b/src/xmldocvisitor.h
index 531cd38..dbe4bd5 100644
--- a/src/xmldocvisitor.h
+++ b/src/xmldocvisitor.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index b398ac3..5f1532f 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
@@ -32,6 +32,7 @@
#include "docparser.h"
#include "language.h"
#include "parserintf.h"
+#include "arguments.h"
#include <qdir.h>
#include <qfile.h>
diff --git a/src/xmlgen.h b/src/xmlgen.h
index 39869ee..9193956 100644
--- a/src/xmlgen.h
+++ b/src/xmlgen.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2011 by Dimitri van Heesch.
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby