Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
bcf2f33d
Commit
bcf2f33d
authored
May 12, 2002
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.15-20020512
parent
758291b1
Changes
38
Show whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
1052 additions
and
768 deletions
+1052
-768
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
doxmlintf.h
addon/doxmlparser/include/doxmlintf.h
+141
-19
compoundhandler.cpp
addon/doxmlparser/src/compoundhandler.cpp
+51
-7
compoundhandler.h
addon/doxmlparser/src/compoundhandler.h
+13
-4
doxmlintf.h
addon/doxmlparser/src/doxmlintf.h
+141
-19
memberhandler.cpp
addon/doxmlparser/src/memberhandler.cpp
+24
-1
memberhandler.h
addon/doxmlparser/src/memberhandler.h
+8
-1
main.cpp
addon/doxmlparser/test/main.cpp
+33
-15
docblocks.doc
doc/docblocks.doc
+1
-1
language.doc
doc/language.doc
+1
-1
starting.doc
doc/starting.doc
+2
-2
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
Makefile.in
src/Makefile.in
+1
-1
classdef.cpp
src/classdef.cpp
+106
-92
classdef.h
src/classdef.h
+2
-1
config.l
src/config.l
+8
-0
dot.cpp
src/dot.cpp
+12
-0
doxygen.cpp
src/doxygen.cpp
+15
-14
doxygen.h
src/doxygen.h
+2
-2
filedef.cpp
src/filedef.cpp
+61
-57
filedef.h
src/filedef.h
+1
-0
groupdef.cpp
src/groupdef.cpp
+43
-34
groupdef.h
src/groupdef.h
+1
-0
index.cpp
src/index.cpp
+30
-30
index.h
src/index.h
+3
-3
latexgen.cpp
src/latexgen.cpp
+52
-44
memberdef.cpp
src/memberdef.cpp
+3
-3
namespacedef.cpp
src/namespacedef.cpp
+56
-39
namespacedef.h
src/namespacedef.h
+2
-0
pre.l
src/pre.l
+27
-6
rtfgen.cpp
src/rtfgen.cpp
+40
-40
tagreader.cpp
src/tagreader.cpp
+15
-8
translator_br.h
src/translator_br.h
+8
-5
translator_tw.h
src/translator_tw.h
+4
-4
util.cpp
src/util.cpp
+61
-262
xmlgen.cpp
src/xmlgen.cpp
+78
-47
No files found.
INSTALL
View file @
bcf2f33d
DOXYGEN Version 1.2.15-20020
430
DOXYGEN Version 1.2.15-20020
512
Please read the installation section of the manual for instructions.
Please read the installation section of the manual for instructions.
--------
--------
Dimitri van Heesch (
30 April
2002)
Dimitri van Heesch (
12 May
2002)
README
View file @
bcf2f33d
DOXYGEN Version 1.2.15_20020
430
DOXYGEN Version 1.2.15_20020
512
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
30 April
2002)
Dimitri van Heesch (dimitri@stack.nl) (
12 May
2002)
VERSION
View file @
bcf2f33d
1.2.15-20020
430
1.2.15-20020
512
addon/doxmlparser/include/doxmlintf.h
View file @
bcf2f33d
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2002 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.
*
*/
#ifndef _DOXMLINTF_H
#ifndef _DOXMLINTF_H
#define _DOXMLINTF_H
#define _DOXMLINTF_H
...
@@ -480,7 +495,8 @@ class IMember
...
@@ -480,7 +495,8 @@ class IMember
virtual
const
IString
*
name
()
const
=
0
;
virtual
const
IString
*
name
()
const
=
0
;
virtual
bool
isConst
()
const
=
0
;
virtual
bool
isConst
()
const
=
0
;
virtual
bool
isVolatile
()
const
=
0
;
virtual
bool
isVolatile
()
const
=
0
;
virtual
IParamIterator
*
params
()
const
=
0
;
virtual
IParamIterator
*
parameters
()
const
=
0
;
virtual
IParamIterator
*
templateParameters
()
const
=
0
;
virtual
ILinkedTextIterator
*
initializer
()
const
=
0
;
virtual
ILinkedTextIterator
*
initializer
()
const
=
0
;
virtual
ILinkedTextIterator
*
exceptions
()
const
=
0
;
virtual
ILinkedTextIterator
*
exceptions
()
const
=
0
;
virtual
IMemberReferenceIterator
*
references
()
const
=
0
;
virtual
IMemberReferenceIterator
*
references
()
const
=
0
;
...
@@ -507,27 +523,79 @@ class IMemberIterator
...
@@ -507,27 +523,79 @@ class IMemberIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a section in the object model.
*
* A compound can have a number of sections, where each
* section contains a set of members with the properties implied by
* the section kind. The kind() method returns the kind of the section.
* The members of the section can be accessed via members(). Apart
* from using kind(), some of the individual properties of the section can
* also be inspected via isStatic(), isPublic(), isProtected() and
* isPrivate().
*/
class
ISection
class
ISection
{
{
public
:
public
:
enum
SectionKind
{
Invalid
=
0
,
/*! Possible section types */
UserDefined
,
enum
SectionKind
PubTypes
,
PubFuncs
,
PubAttribs
,
PubSlots
,
{
Invalid
=
0
,
Signals
,
DCOPFuncs
,
Properties
,
UserDefined
,
//!< A user defined member group
PubStatFuncs
,
PubStatAttribs
,
PubTypes
,
//!< Public member typedefs
ProTypes
,
ProFuncs
,
ProAttribs
,
ProSlots
,
PubFuncs
,
//!< Public member functions
ProStatFuncs
,
ProStatAttribs
,
PubAttribs
,
//!< Public member attributes
PriTypes
,
PriFuncs
,
PriAttribs
,
PriSlots
,
PubSlots
,
//!< Public Qt Slots
PriStatFuncs
,
PriStatAttribs
,
Signals
,
//!< Qt Signals
Friend
,
Related
,
Defines
,
Prototypes
,
Typedefs
,
DCOPFuncs
,
//!< KDE-DCOP interface functions
Enums
,
Functions
,
Variables
Properties
,
//!< IDL properties
PubStatFuncs
,
//!< Public static member functions
PubStatAttribs
,
//!< Public static attributes
ProTypes
,
//!< Protected member typedefs
ProFuncs
,
//!< Protected member functions
ProAttribs
,
//!< Protected member attributes
ProSlots
,
//!< Protected slots
ProStatFuncs
,
//!< Protected static member functions
ProStatAttribs
,
//!< Protected static member attributes
PriTypes
,
//!< Private member typedefs
PriFuncs
,
//!< Private member functions
PriAttribs
,
//!< Private member attributes
PriSlots
,
//!< Private Qt slots
PriStatFuncs
,
//!< Private static member functions
PriStatAttribs
,
//!< Private static member attributes
Friend
,
//!< Friends
Related
,
//!< Function marked as related
Defines
,
//!< Preprocessor defines
Prototypes
,
//!< Global function prototypes
Typedefs
,
//!< Global typedefs
Enums
,
//!< Enumerations
Functions
,
//!< Global functions
Variables
//!< Global variables
};
};
/*! Returns a string representation of the value returned by kind() */
virtual
const
IString
*
kindString
()
const
=
0
;
virtual
const
IString
*
kindString
()
const
=
0
;
/*! Returns what kind of section this is */
virtual
SectionKind
kind
()
const
=
0
;
virtual
SectionKind
kind
()
const
=
0
;
/*! Returns an iterator for the members of this section */
virtual
IMemberIterator
*
members
()
const
=
0
;
virtual
IMemberIterator
*
members
()
const
=
0
;
/*! Returns \c true if this section contains statics */
virtual
bool
isStatic
()
const
=
0
;
virtual
bool
isStatic
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* public section of a class
*/
virtual
bool
isPublic
()
const
=
0
;
virtual
bool
isPublic
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* private section of a class
*/
virtual
bool
isPrivate
()
const
=
0
;
virtual
bool
isPrivate
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* protected section of a class
* */
virtual
bool
isProtected
()
const
=
0
;
virtual
bool
isProtected
()
const
=
0
;
};
};
...
@@ -542,6 +610,31 @@ class ISectionIterator
...
@@ -542,6 +610,31 @@ class ISectionIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a compound in the object model.
*
* A compound has a name which can be obtained via the name() method
* and a unique id, which is return via the id() method.
* A compound consists zero or more members which are grouped into sections.
* The sections() method can be used to access the individual sections.
* Alternatively, members can be obtained by name or id. There are
* different types of compounds. The kind() method returns what kind of
* compound this is. Depending on the return value one can dynamically
* cast an interface pointer to an more specialised interface that provides
* additional methods.
* Example:
* \code
* ICompound *comp=...;
* if (comp->kind()==ICompound::Class)
* {
* IClass *cls = dynamic_cast<IClass*>(comp);
* // use methods of IClass
* }
* \endcode
* The documentation that is provided by a compound is available via
* the briefDescription() and detailedDescription() methods.
* To avoid excessive memory usage, release() should be called (once) on each
* compound interface pointer that is no longer needed.
*/
class
ICompound
class
ICompound
{
{
public
:
public
:
...
@@ -634,14 +727,16 @@ class IRelatedCompoundIterator
...
@@ -634,14 +727,16 @@ class IRelatedCompoundIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a class in the object model.
*/
class
IClass
:
public
ICompound
class
IClass
:
public
ICompound
{
{
public
:
public
:
virtual
IGraph
*
inheritanceGraph
()
const
=
0
;
virtual
IGraph
*
inheritanceGraph
()
const
=
0
;
virtual
IGraph
*
collaborationGraph
()
const
=
0
;
virtual
IGraph
*
collaborationGraph
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseC
lasse
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseC
ompound
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedC
lasse
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedC
ompound
s
()
const
=
0
;
virtual
ICompoundIterator
*
nestedC
lasse
s
()
const
=
0
;
virtual
ICompoundIterator
*
nestedC
ompound
s
()
const
=
0
;
// TODO:
// TODO:
// class:
// class:
...
@@ -653,35 +748,56 @@ class IClass : public ICompound
...
@@ -653,35 +748,56 @@ class IClass : public ICompound
// locationBodyEndLine()
// locationBodyEndLine()
};
};
/*! \brief The interface to a struct in the object model.
*/
class
IStruct
:
public
ICompound
class
IStruct
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a union in the object model.
*/
class
IUnion
:
public
ICompound
class
IUnion
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a Java/IDL interface in the object model.
*/
class
IInterface
:
public
ICompound
class
IInterface
:
public
ICompound
{
{
public
:
virtual
IRelatedCompoundIterator
*
baseCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a Java/IDL exception in the object model.
*/
class
IException
:
public
ICompound
class
IException
:
public
ICompound
{
{
};
};
/*! \brief The interface to a namespace in the object model.
*/
class
INamespace
:
public
ICompound
class
INamespace
:
public
ICompound
{
{
// namespace:
public
:
// ICompound *innerNamespaces()
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// ICompoundIterator *innerClasses()
};
};
/*! \brief The interface to a file in the object model.
*/
class
IFile
:
public
ICompound
class
IFile
:
public
ICompound
{
{
public
:
public
:
virtual
IGraph
*
includeDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includeDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includedByDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includedByDependencyGraph
()
const
=
0
;
virtual
IDocProgramListing
*
source
()
const
=
0
;
virtual
IDocProgramListing
*
source
()
const
=
0
;
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// file:
// file:
// includes()
// includes()
...
@@ -690,14 +806,20 @@ class IFile : public ICompound
...
@@ -690,14 +806,20 @@ class IFile : public ICompound
// ICompoundIterator *innerClasses()
// ICompoundIterator *innerClasses()
};
};
/*! \brief The interface to a group in the object model.
*/
class
IGroup
:
public
ICompound
class
IGroup
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// group:
// group:
// Title()
// Title()
// innerFile()
// innerFile()
// innerPage()
// innerPage()
};
};
/*! \brief The interface to a page in the object model.
*/
class
IPage
:
public
ICompound
class
IPage
:
public
ICompound
{
{
};
};
...
...
addon/doxmlparser/src/compoundhandler.cpp
View file @
bcf2f33d
...
@@ -145,13 +145,15 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
...
@@ -145,13 +145,15 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
:
m_brief
(
0
),
m_detailed
(
0
),
m_programListing
(
0
),
:
m_brief
(
0
),
m_detailed
(
0
),
m_programListing
(
0
),
m_xmlDir
(
xmlDir
),
m_refCount
(
1
),
m_memberDict
(
257
),
m_memberNameDict
(
257
),
m_xmlDir
(
xmlDir
),
m_refCount
(
1
),
m_memberDict
(
257
),
m_memberNameDict
(
257
),
m_mainHandler
(
0
),
m_inheritanceGraph
(
0
),
m_collaborationGraph
(
0
),
m_mainHandler
(
0
),
m_inheritanceGraph
(
0
),
m_collaborationGraph
(
0
),
m_includeDependencyGraph
(
0
),
m_includedByDependencyGraph
(
0
)
m_includeDependencyGraph
(
0
),
m_includedByDependencyGraph
(
0
),
m_hasTemplateParams
(
FALSE
)
{
{
m_superClasses
.
setAutoDelete
(
TRUE
);
m_superClasses
.
setAutoDelete
(
TRUE
);
m_subClasses
.
setAutoDelete
(
TRUE
);
m_subClasses
.
setAutoDelete
(
TRUE
);
m_sections
.
setAutoDelete
(
TRUE
);
m_sections
.
setAutoDelete
(
TRUE
);
m_memberNameDict
.
setAutoDelete
(
TRUE
);
m_memberNameDict
.
setAutoDelete
(
TRUE
);
m_innerClasses
.
setAutoDelete
(
TRUE
);
m_innerCompounds
.
setAutoDelete
(
TRUE
);
m_templateParams
.
setAutoDelete
(
TRUE
);
addStartHandler
(
"doxygen"
);
addStartHandler
(
"doxygen"
);
addEndHandler
(
"doxygen"
);
addEndHandler
(
"doxygen"
);
...
@@ -190,6 +192,20 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
...
@@ -190,6 +192,20 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
addStartHandler
(
"innerclass"
,
this
,
&
CompoundHandler
::
startInnerClass
);
addStartHandler
(
"innerclass"
,
this
,
&
CompoundHandler
::
startInnerClass
);
addEndHandler
(
"innerclass"
);
addEndHandler
(
"innerclass"
);
addStartHandler
(
"innernamespace"
,
this
,
&
CompoundHandler
::
startInnerNamespace
);
addEndHandler
(
"innernamespace"
);
addStartHandler
(
"innerfile"
,
this
,
&
CompoundHandler
::
startInnerFile
);
addEndHandler
(
"innerfile"
);
addStartHandler
(
"innergroup"
,
this
,
&
CompoundHandler
::
startInnerGroup
);
addEndHandler
(
"innergroup"
);
addStartHandler
(
"templateparamlist"
);
addEndHandler
(
"templateparamlist"
);
addStartHandler
(
"param"
,
this
,
&
CompoundHandler
::
startParam
);
addEndHandler
(
"param"
);
}
}
CompoundHandler
::~
CompoundHandler
()
CompoundHandler
::~
CompoundHandler
()
...
@@ -259,7 +275,30 @@ void CompoundHandler::endCompoundName()
...
@@ -259,7 +275,30 @@ void CompoundHandler::endCompoundName()
void
CompoundHandler
::
startInnerClass
(
const
QXmlAttributes
&
attrib
)
void
CompoundHandler
::
startInnerClass
(
const
QXmlAttributes
&
attrib
)
{
{
m_innerClasses
.
append
(
new
QString
(
attrib
.
value
(
"refid"
)));
m_innerCompounds
.
append
(
new
QString
(
attrib
.
value
(
"refid"
)));
}
void
CompoundHandler
::
startInnerNamespace
(
const
QXmlAttributes
&
attrib
)
{
m_innerCompounds
.
append
(
new
QString
(
attrib
.
value
(
"refid"
)));
}
void
CompoundHandler
::
startInnerFile
(
const
QXmlAttributes
&
attrib
)
{
m_innerCompounds
.
append
(
new
QString
(
attrib
.
value
(
"refid"
)));
}
void
CompoundHandler
::
startInnerGroup
(
const
QXmlAttributes
&
attrib
)
{
m_innerCompounds
.
append
(
new
QString
(
attrib
.
value
(
"refid"
)));
}
void
CompoundHandler
::
startParam
(
const
QXmlAttributes
&
attrib
)
{
m_hasTemplateParams
=
TRUE
;
ParamHandler
*
ph
=
new
ParamHandler
(
this
);
ph
->
startParam
(
attrib
);
m_templateParams
.
append
(
ph
);
}
}
void
CompoundHandler
::
addSuperClass
(
const
QXmlAttributes
&
attrib
)
void
CompoundHandler
::
addSuperClass
(
const
QXmlAttributes
&
attrib
)
...
@@ -445,19 +484,19 @@ IGraph *CompoundHandler::includedByDependencyGraph() const
...
@@ -445,19 +484,19 @@ IGraph *CompoundHandler::includedByDependencyGraph() const
return
m_includedByDependencyGraph
;
return
m_includedByDependencyGraph
;
}
}
IRelatedCompoundIterator
*
CompoundHandler
::
baseC
lasse
s
()
const
IRelatedCompoundIterator
*
CompoundHandler
::
baseC
ompound
s
()
const
{
{
return
new
RelatedCompoundIterator
(
m_superClasses
);
return
new
RelatedCompoundIterator
(
m_superClasses
);
}
}
IRelatedCompoundIterator
*
CompoundHandler
::
derivedC
lasse
s
()
const
IRelatedCompoundIterator
*
CompoundHandler
::
derivedC
ompound
s
()
const
{
{
return
new
RelatedCompoundIterator
(
m_subClasses
);
return
new
RelatedCompoundIterator
(
m_subClasses
);
}
}
ICompoundIterator
*
CompoundHandler
::
nestedC
lasse
s
()
const
ICompoundIterator
*
CompoundHandler
::
nestedC
ompound
s
()
const
{
{
return
new
CompoundIdIterator
(
m_mainHandler
,
m_innerC
lasse
s
);
return
new
CompoundIdIterator
(
m_mainHandler
,
m_innerC
ompound
s
);
}
}
IDocProgramListing
*
CompoundHandler
::
source
()
const
IDocProgramListing
*
CompoundHandler
::
source
()
const
...
@@ -465,3 +504,8 @@ IDocProgramListing *CompoundHandler::source() const
...
@@ -465,3 +504,8 @@ IDocProgramListing *CompoundHandler::source() const
return
m_programListing
;
return
m_programListing
;
}
}
IParamIterator
*
CompoundHandler
::
templateParameters
()
const
{
return
m_hasTemplateParams
?
new
ParamIterator
(
m_templateParams
)
:
0
;
}
addon/doxmlparser/src/compoundhandler.h
View file @
bcf2f33d
...
@@ -31,6 +31,7 @@ class GraphHandler;
...
@@ -31,6 +31,7 @@ class GraphHandler;
class
MemberHandler
;
class
MemberHandler
;
class
CompoundHandler
;
class
CompoundHandler
;
class
SectionHandler
;
class
SectionHandler
;
class
ParamHandler
;
class
RelatedCompound
:
public
IRelatedCompound
class
RelatedCompound
:
public
IRelatedCompound
...
@@ -92,6 +93,10 @@ class CompoundHandler : public IClass,
...
@@ -92,6 +93,10 @@ class CompoundHandler : public IClass,
virtual
void
startIncludeDependencyGraph
(
const
QXmlAttributes
&
attrib
);
virtual
void
startIncludeDependencyGraph
(
const
QXmlAttributes
&
attrib
);
virtual
void
startIncludedByDependencyGraph
(
const
QXmlAttributes
&
attrib
);
virtual
void
startIncludedByDependencyGraph
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInnerClass
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInnerClass
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInnerNamespace
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInnerFile
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInnerGroup
(
const
QXmlAttributes
&
attrib
);
virtual
void
startParam
(
const
QXmlAttributes
&
attrib
);
virtual
void
addref
()
{
m_refCount
++
;
}
virtual
void
addref
()
{
m_refCount
++
;
}
CompoundHandler
(
const
QString
&
dirName
);
CompoundHandler
(
const
QString
&
dirName
);
...
@@ -111,14 +116,16 @@ class CompoundHandler : public IClass,
...
@@ -111,14 +116,16 @@ class CompoundHandler : public IClass,
IDocRoot
*
detailedDescription
()
const
;
IDocRoot
*
detailedDescription
()
const
;
IMember
*
memberById
(
const
char
*
id
)
const
;
IMember
*
memberById
(
const
char
*
id
)
const
;
IMemberIterator
*
memberByName
(
const
char
*
name
)
const
;
IMemberIterator
*
memberByName
(
const
char
*
name
)
const
;
IParamIterator
*
templateParameters
()
const
;
void
release
();
void
release
();
// IClass implementation
// IClass implementation
IGraph
*
inheritanceGraph
()
const
;
IGraph
*
inheritanceGraph
()
const
;
IGraph
*
collaborationGraph
()
const
;
IGraph
*
collaborationGraph
()
const
;
IRelatedCompoundIterator
*
baseClasses
()
const
;
IRelatedCompoundIterator
*
baseCompounds
()
const
;
IRelatedCompoundIterator
*
derivedClasses
()
const
;
IRelatedCompoundIterator
*
derivedCompounds
()
const
;
ICompoundIterator
*
nestedClasses
()
const
;
ICompoundIterator
*
nestedCompounds
()
const
;
ICompoundIterator
*
nestedGroup
()
const
;
// IFile implementation
// IFile implementation
IGraph
*
includeDependencyGraph
()
const
;
IGraph
*
includeDependencyGraph
()
const
;
...
@@ -129,6 +136,7 @@ class CompoundHandler : public IClass,
...
@@ -129,6 +136,7 @@ class CompoundHandler : public IClass,
QList
<
RelatedCompound
>
m_superClasses
;
QList
<
RelatedCompound
>
m_superClasses
;
QList
<
RelatedCompound
>
m_subClasses
;
QList
<
RelatedCompound
>
m_subClasses
;
QList
<
SectionHandler
>
m_sections
;
QList
<
SectionHandler
>
m_sections
;
QList
<
ParamHandler
>
m_templateParams
;
DocHandler
*
m_brief
;
DocHandler
*
m_brief
;
DocHandler
*
m_detailed
;
DocHandler
*
m_detailed
;
ProgramListingHandler
*
m_programListing
;
ProgramListingHandler
*
m_programListing
;
...
@@ -147,8 +155,9 @@ class CompoundHandler : public IClass,
...
@@ -147,8 +155,9 @@ class CompoundHandler : public IClass,
GraphHandler
*
m_collaborationGraph
;
GraphHandler
*
m_collaborationGraph
;
GraphHandler
*
m_includeDependencyGraph
;
GraphHandler
*
m_includeDependencyGraph
;
GraphHandler
*
m_includedByDependencyGraph
;
GraphHandler
*
m_includedByDependencyGraph
;
QList
<
QString
>
m_innerC
lasse
s
;
QList
<
QString
>
m_innerC
ompound
s
;
ProgramListingHandler
*
m_source
;
ProgramListingHandler
*
m_source
;
bool
m_hasTemplateParams
;
};
};
...
...
addon/doxmlparser/src/doxmlintf.h
View file @
bcf2f33d
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2002 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.
*
*/
#ifndef _DOXMLINTF_H
#ifndef _DOXMLINTF_H
#define _DOXMLINTF_H
#define _DOXMLINTF_H
...
@@ -480,7 +495,8 @@ class IMember
...
@@ -480,7 +495,8 @@ class IMember
virtual
const
IString
*
name
()
const
=
0
;
virtual
const
IString
*
name
()
const
=
0
;
virtual
bool
isConst
()
const
=
0
;
virtual
bool
isConst
()
const
=
0
;
virtual
bool
isVolatile
()
const
=
0
;
virtual
bool
isVolatile
()
const
=
0
;
virtual
IParamIterator
*
params
()
const
=
0
;
virtual
IParamIterator
*
parameters
()
const
=
0
;
virtual
IParamIterator
*
templateParameters
()
const
=
0
;
virtual
ILinkedTextIterator
*
initializer
()
const
=
0
;
virtual
ILinkedTextIterator
*
initializer
()
const
=
0
;
virtual
ILinkedTextIterator
*
exceptions
()
const
=
0
;
virtual
ILinkedTextIterator
*
exceptions
()
const
=
0
;
virtual
IMemberReferenceIterator
*
references
()
const
=
0
;
virtual
IMemberReferenceIterator
*
references
()
const
=
0
;
...
@@ -507,27 +523,79 @@ class IMemberIterator
...
@@ -507,27 +523,79 @@ class IMemberIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a section in the object model.
*
* A compound can have a number of sections, where each
* section contains a set of members with the properties implied by
* the section kind. The kind() method returns the kind of the section.
* The members of the section can be accessed via members(). Apart
* from using kind(), some of the individual properties of the section can
* also be inspected via isStatic(), isPublic(), isProtected() and
* isPrivate().
*/
class
ISection
class
ISection
{
{
public
:
public
:
enum
SectionKind
{
Invalid
=
0
,
/*! Possible section types */
UserDefined
,
enum
SectionKind
PubTypes
,
PubFuncs
,
PubAttribs
,
PubSlots
,
{
Invalid
=
0
,
Signals
,
DCOPFuncs
,
Properties
,
UserDefined
,
//!< A user defined member group
PubStatFuncs
,
PubStatAttribs
,
PubTypes
,
//!< Public member typedefs
ProTypes
,
ProFuncs
,
ProAttribs
,
ProSlots
,
PubFuncs
,
//!< Public member functions
ProStatFuncs
,
ProStatAttribs
,
PubAttribs
,
//!< Public member attributes
PriTypes
,
PriFuncs
,
PriAttribs
,
PriSlots
,
PubSlots
,
//!< Public Qt Slots
PriStatFuncs
,
PriStatAttribs
,
Signals
,
//!< Qt Signals
Friend
,
Related
,
Defines
,
Prototypes
,
Typedefs
,
DCOPFuncs
,
//!< KDE-DCOP interface functions
Enums
,
Functions
,
Variables
Properties
,
//!< IDL properties
PubStatFuncs
,
//!< Public static member functions
PubStatAttribs
,
//!< Public static attributes
ProTypes
,
//!< Protected member typedefs
ProFuncs
,
//!< Protected member functions
ProAttribs
,
//!< Protected member attributes
ProSlots
,
//!< Protected slots
ProStatFuncs
,
//!< Protected static member functions
ProStatAttribs
,
//!< Protected static member attributes
PriTypes
,
//!< Private member typedefs
PriFuncs
,
//!< Private member functions
PriAttribs
,
//!< Private member attributes
PriSlots
,
//!< Private Qt slots
PriStatFuncs
,
//!< Private static member functions
PriStatAttribs
,
//!< Private static member attributes
Friend
,
//!< Friends
Related
,
//!< Function marked as related
Defines
,
//!< Preprocessor defines
Prototypes
,
//!< Global function prototypes
Typedefs
,
//!< Global typedefs
Enums
,
//!< Enumerations
Functions
,
//!< Global functions
Variables
//!< Global variables
};
};
/*! Returns a string representation of the value returned by kind() */
virtual
const
IString
*
kindString
()
const
=
0
;
virtual
const
IString
*
kindString
()
const
=
0
;
/*! Returns what kind of section this is */
virtual
SectionKind
kind
()
const
=
0
;
virtual
SectionKind
kind
()
const
=
0
;
/*! Returns an iterator for the members of this section */
virtual
IMemberIterator
*
members
()
const
=
0
;
virtual
IMemberIterator
*
members
()
const
=
0
;
/*! Returns \c true if this section contains statics */
virtual
bool
isStatic
()
const
=
0
;
virtual
bool
isStatic
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* public section of a class
*/
virtual
bool
isPublic
()
const
=
0
;
virtual
bool
isPublic
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* private section of a class
*/
virtual
bool
isPrivate
()
const
=
0
;
virtual
bool
isPrivate
()
const
=
0
;
/*! Returns \c true if this section belongs to a
* protected section of a class
* */
virtual
bool
isProtected
()
const
=
0
;
virtual
bool
isProtected
()
const
=
0
;
};
};
...
@@ -542,6 +610,31 @@ class ISectionIterator
...
@@ -542,6 +610,31 @@ class ISectionIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a compound in the object model.
*
* A compound has a name which can be obtained via the name() method
* and a unique id, which is return via the id() method.
* A compound consists zero or more members which are grouped into sections.
* The sections() method can be used to access the individual sections.
* Alternatively, members can be obtained by name or id. There are
* different types of compounds. The kind() method returns what kind of
* compound this is. Depending on the return value one can dynamically
* cast an interface pointer to an more specialised interface that provides
* additional methods.
* Example:
* \code
* ICompound *comp=...;
* if (comp->kind()==ICompound::Class)
* {
* IClass *cls = dynamic_cast<IClass*>(comp);
* // use methods of IClass
* }
* \endcode
* The documentation that is provided by a compound is available via
* the briefDescription() and detailedDescription() methods.
* To avoid excessive memory usage, release() should be called (once) on each
* compound interface pointer that is no longer needed.
*/
class
ICompound
class
ICompound
{
{
public
:
public
:
...
@@ -634,14 +727,16 @@ class IRelatedCompoundIterator
...
@@ -634,14 +727,16 @@ class IRelatedCompoundIterator
virtual
void
release
()
=
0
;
virtual
void
release
()
=
0
;
};
};
/*! \brief The interface to a class in the object model.
*/
class
IClass
:
public
ICompound
class
IClass
:
public
ICompound
{
{
public
:
public
:
virtual
IGraph
*
inheritanceGraph
()
const
=
0
;
virtual
IGraph
*
inheritanceGraph
()
const
=
0
;
virtual
IGraph
*
collaborationGraph
()
const
=
0
;
virtual
IGraph
*
collaborationGraph
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseC
lasse
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseC
ompound
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedC
lasse
s
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedC
ompound
s
()
const
=
0
;
virtual
ICompoundIterator
*
nestedC
lasse
s
()
const
=
0
;
virtual
ICompoundIterator
*
nestedC
ompound
s
()
const
=
0
;
// TODO:
// TODO:
// class:
// class:
...
@@ -653,35 +748,56 @@ class IClass : public ICompound
...
@@ -653,35 +748,56 @@ class IClass : public ICompound
// locationBodyEndLine()
// locationBodyEndLine()
};
};
/*! \brief The interface to a struct in the object model.
*/
class
IStruct
:
public
ICompound
class
IStruct
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
baseCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a union in the object model.
*/
class
IUnion
:
public
ICompound
class
IUnion
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a Java/IDL interface in the object model.
*/
class
IInterface
:
public
ICompound
class
IInterface
:
public
ICompound
{
{
public
:
virtual
IRelatedCompoundIterator
*
baseCompounds
()
const
=
0
;
virtual
IRelatedCompoundIterator
*
derivedCompounds
()
const
=
0
;
};
};
/*! \brief The interface to a Java/IDL exception in the object model.
*/
class
IException
:
public
ICompound
class
IException
:
public
ICompound
{
{
};
};
/*! \brief The interface to a namespace in the object model.
*/
class
INamespace
:
public
ICompound
class
INamespace
:
public
ICompound
{
{
// namespace:
public
:
// ICompound *innerNamespaces()
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// ICompoundIterator *innerClasses()
};
};
/*! \brief The interface to a file in the object model.
*/
class
IFile
:
public
ICompound
class
IFile
:
public
ICompound
{
{
public
:
public
:
virtual
IGraph
*
includeDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includeDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includedByDependencyGraph
()
const
=
0
;
virtual
IGraph
*
includedByDependencyGraph
()
const
=
0
;
virtual
IDocProgramListing
*
source
()
const
=
0
;
virtual
IDocProgramListing
*
source
()
const
=
0
;
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// file:
// file:
// includes()
// includes()
...
@@ -690,14 +806,20 @@ class IFile : public ICompound
...
@@ -690,14 +806,20 @@ class IFile : public ICompound
// ICompoundIterator *innerClasses()
// ICompoundIterator *innerClasses()
};
};
/*! \brief The interface to a group in the object model.
*/
class
IGroup
:
public
ICompound
class
IGroup
:
public
ICompound
{
{
public
:
virtual
ICompoundIterator
*
nestedCompounds
()
const
=
0
;
// group:
// group:
// Title()
// Title()
// innerFile()
// innerFile()
// innerPage()
// innerPage()
};
};
/*! \brief The interface to a page in the object model.
*/
class
IPage
:
public
ICompound
class
IPage
:
public
ICompound
{
{
};
};
...
...
addon/doxmlparser/src/memberhandler.cpp
View file @
bcf2f33d
...
@@ -159,6 +159,9 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
...
@@ -159,6 +159,9 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
addStartHandler
(
"location"
,
this
,
&
MemberHandler
::
startLocation
);
addStartHandler
(
"location"
,
this
,
&
MemberHandler
::
startLocation
);
addEndHandler
(
"location"
);
addEndHandler
(
"location"
);
addStartHandler
(
"templateparamlist"
,
this
,
&
MemberHandler
::
startTemplateParamList
);
addEndHandler
(
"templateparamlist"
,
this
,
&
MemberHandler
::
endTemplateParamList
);
m_type
.
setAutoDelete
(
TRUE
);
m_type
.
setAutoDelete
(
TRUE
);
m_initializer
.
setAutoDelete
(
TRUE
);
m_initializer
.
setAutoDelete
(
TRUE
);
m_exception
.
setAutoDelete
(
TRUE
);
m_exception
.
setAutoDelete
(
TRUE
);
...
@@ -172,6 +175,8 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
...
@@ -172,6 +175,8 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
m_defLine
=
0
;
m_defLine
=
0
;
m_bodyStart
=
0
;
m_bodyStart
=
0
;
m_bodyEnd
=
0
;
m_bodyEnd
=
0
;
m_insideTemplateParamList
=
FALSE
;
m_hasTemplateParamList
=
FALSE
;
}
}
MemberHandler
::~
MemberHandler
()
MemberHandler
::~
MemberHandler
()
...
@@ -313,7 +318,14 @@ void MemberHandler::startParam(const QXmlAttributes& attrib)
...
@@ -313,7 +318,14 @@ void MemberHandler::startParam(const QXmlAttributes& attrib)
{
{
ParamHandler
*
paramHandler
=
new
ParamHandler
(
this
);
ParamHandler
*
paramHandler
=
new
ParamHandler
(
this
);
paramHandler
->
startParam
(
attrib
);
paramHandler
->
startParam
(
attrib
);
if
(
m_insideTemplateParamList
)
{
m_templateParams
.
append
(
paramHandler
);
}
else
{
m_params
.
append
(
paramHandler
);
m_params
.
append
(
paramHandler
);
}
}
}
void
MemberHandler
::
startEnumValue
(
const
QXmlAttributes
&
attrib
)
void
MemberHandler
::
startEnumValue
(
const
QXmlAttributes
&
attrib
)
...
@@ -323,6 +335,17 @@ void MemberHandler::startEnumValue(const QXmlAttributes& attrib)
...
@@ -323,6 +335,17 @@ void MemberHandler::startEnumValue(const QXmlAttributes& attrib)
m_enumValues
.
append
(
evh
);
m_enumValues
.
append
(
evh
);
}
}
void
MemberHandler
::
startTemplateParamList
(
const
QXmlAttributes
&
)
{
m_insideTemplateParamList
=
TRUE
;
m_hasTemplateParamList
=
TRUE
;
}
void
MemberHandler
::
endTemplateParamList
()
{
m_insideTemplateParamList
=
FALSE
;
}
void
MemberHandler
::
initialize
(
MainHandler
*
mh
)
void
MemberHandler
::
initialize
(
MainHandler
*
mh
)
{
{
{
{
...
...
addon/doxmlparser/src/memberhandler.h
View file @
bcf2f33d
...
@@ -106,6 +106,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
...
@@ -106,6 +106,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
virtual
void
startInitializer
(
const
QXmlAttributes
&
attrib
);
virtual
void
startInitializer
(
const
QXmlAttributes
&
attrib
);
virtual
void
startException
(
const
QXmlAttributes
&
attrib
);
virtual
void
startException
(
const
QXmlAttributes
&
attrib
);
virtual
void
startEnumValue
(
const
QXmlAttributes
&
attrib
);
virtual
void
startEnumValue
(
const
QXmlAttributes
&
attrib
);
virtual
void
startTemplateParamList
(
const
QXmlAttributes
&
attrib
);
virtual
void
endTemplateParamList
();
MemberHandler
(
IBaseHandler
*
parent
);
MemberHandler
(
IBaseHandler
*
parent
);
virtual
~
MemberHandler
();
virtual
~
MemberHandler
();
...
@@ -136,8 +138,10 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
...
@@ -136,8 +138,10 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
that
->
m_typeString
=
LinkedTextHandler
::
toString
(
m_type
);
that
->
m_typeString
=
LinkedTextHandler
::
toString
(
m_type
);
return
&
m_typeString
;
return
&
m_typeString
;
}
}
virtual
IParamIterator
*
params
()
const
virtual
IParamIterator
*
param
eter
s
()
const
{
return
new
ParamIterator
(
m_params
);
}
{
return
new
ParamIterator
(
m_params
);
}
virtual
IParamIterator
*
templateParameters
()
const
{
return
m_hasTemplateParamList
?
new
ParamIterator
(
m_templateParams
)
:
0
;
}
virtual
IMemberReferenceIterator
*
references
()
const
virtual
IMemberReferenceIterator
*
references
()
const
{
return
new
MemberReferenceIterator
(
m_references
);
}
{
return
new
MemberReferenceIterator
(
m_references
);
}
virtual
IMemberReferenceIterator
*
referencedBy
()
const
virtual
IMemberReferenceIterator
*
referencedBy
()
const
...
@@ -186,6 +190,7 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
...
@@ -186,6 +190,7 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
DocHandler
*
m_brief
;
DocHandler
*
m_brief
;
DocHandler
*
m_detailed
;
DocHandler
*
m_detailed
;
QList
<
ParamHandler
>
m_params
;
QList
<
ParamHandler
>
m_params
;
QList
<
ParamHandler
>
m_templateParams
;
QList
<
MemberReference
>
m_references
;
QList
<
MemberReference
>
m_references
;
QList
<
MemberReference
>
m_referencedBy
;
QList
<
MemberReference
>
m_referencedBy
;
MemberReference
*
m_reimplements
;
MemberReference
*
m_reimplements
;
...
@@ -198,6 +203,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
...
@@ -198,6 +203,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
bool
m_isVolatile
;
bool
m_isVolatile
;
LinkedTextHandler
*
m_linkedTextHandler
;
LinkedTextHandler
*
m_linkedTextHandler
;
QList
<
EnumValueHandler
>
m_enumValues
;
QList
<
EnumValueHandler
>
m_enumValues
;
bool
m_insideTemplateParamList
;
bool
m_hasTemplateParamList
;
};
};
class
MemberIterator
:
public
BaseIterator
<
IMemberIterator
,
IMember
,
MemberHandler
>
class
MemberIterator
:
public
BaseIterator
<
IMemberIterator
,
IMember
,
MemberHandler
>
...
...
addon/doxmlparser/test/main.cpp
View file @
bcf2f33d
...
@@ -432,6 +432,27 @@ void DumpGraph(IGraph *graph)
...
@@ -432,6 +432,27 @@ void DumpGraph(IGraph *graph)
}
}
void
DumpParamList
(
IParamIterator
*
pli
,
int
indent
)
{
QString
indentStr
;
indentStr
.
fill
(
' '
,
indent
);
IParam
*
par
;
for
(
pli
->
toFirst
();(
par
=
pli
->
current
());
pli
->
toNext
())
{
ILinkedTextIterator
*
lti
=
par
->
type
();
QString
parType
=
linkedTextToString
(
lti
);
lti
->
release
();
lti
=
par
->
defaultValue
();
QString
defVal
=
linkedTextToString
(
lti
);
lti
->
release
();
printf
(
"%sParam type=%s decl_name=%s def_name=%s defvalue=%s
\n
"
,
indentStr
.
data
(),
parType
.
latin1
(),
par
->
declarationName
()
->
latin1
(),
par
->
definitionName
()
->
latin1
(),
defVal
.
latin1
());
}
}
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
if
(
argc
!=
2
)
if
(
argc
!=
2
)
...
@@ -471,19 +492,8 @@ int main(int argc,char **argv)
...
@@ -471,19 +492,8 @@ int main(int argc,char **argv)
linkedTextToString
(
lti
).
latin1
(),
mem
->
name
()
->
latin1
());
linkedTextToString
(
lti
).
latin1
(),
mem
->
name
()
->
latin1
());
lti
->
release
();
lti
->
release
();
IParamIterator
*
pli
=
mem
->
params
();
IParamIterator
*
pli
=
mem
->
parameters
();
IParam
*
par
;
DumpParamList
(
pli
,
6
);
for
(
pli
->
toFirst
();(
par
=
pli
->
current
());
pli
->
toNext
())
{
lti
=
par
->
type
();
QString
parType
=
linkedTextToString
(
lti
);
lti
->
release
();
lti
=
par
->
defaultValue
();
QString
defVal
=
linkedTextToString
(
lti
);
lti
->
release
();
printf
(
" Param type=%s name=%s defvalue=%s
\n
"
,
parType
.
latin1
(),
par
->
definitionName
()
->
latin1
(),
defVal
.
latin1
());
}
pli
->
release
();
pli
->
release
();
IMemberReferenceIterator
*
mri
=
mem
->
references
();
IMemberReferenceIterator
*
mri
=
mem
->
references
();
IMemberReference
*
mr
;
IMemberReference
*
mr
;
...
@@ -513,6 +523,14 @@ int main(int argc,char **argv)
...
@@ -513,6 +523,14 @@ int main(int argc,char **argv)
}
}
evi
->
release
();
evi
->
release
();
pli
=
mem
->
templateParameters
();
if
(
pli
)
{
printf
(
" Template parameters
\n
"
);
DumpParamList
(
pli
,
8
);
pli
->
release
();
}
IDoc
*
doc
=
mem
->
briefDescription
();
IDoc
*
doc
=
mem
->
briefDescription
();
if
(
doc
)
if
(
doc
)
{
{
...
@@ -557,7 +575,7 @@ int main(int argc,char **argv)
...
@@ -557,7 +575,7 @@ int main(int argc,char **argv)
DumpGraph
(
cls
->
collaborationGraph
());
DumpGraph
(
cls
->
collaborationGraph
());
printf
(
"==== base classes ====
\n
"
);
printf
(
"==== base classes ====
\n
"
);
IRelatedCompoundIterator
*
bcli
=
cls
->
baseC
lasse
s
();
IRelatedCompoundIterator
*
bcli
=
cls
->
baseC
ompound
s
();
IRelatedCompound
*
bClass
;
IRelatedCompound
*
bClass
;
for
(
bcli
->
toFirst
();(
bClass
=
bcli
->
current
());
bcli
->
toNext
())
for
(
bcli
->
toFirst
();(
bClass
=
bcli
->
current
());
bcli
->
toNext
())
{
{
...
@@ -568,7 +586,7 @@ int main(int argc,char **argv)
...
@@ -568,7 +586,7 @@ int main(int argc,char **argv)
bcli
->
release
();
bcli
->
release
();
printf
(
"==== derived classes ====
\n
"
);
printf
(
"==== derived classes ====
\n
"
);
IRelatedCompoundIterator
*
dcli
=
cls
->
derivedC
lasse
s
();
IRelatedCompoundIterator
*
dcli
=
cls
->
derivedC
ompound
s
();
IRelatedCompound
*
dClass
;
IRelatedCompound
*
dClass
;
for
(
dcli
->
toFirst
();(
dClass
=
dcli
->
current
());
dcli
->
toNext
())
for
(
dcli
->
toFirst
();(
dClass
=
dcli
->
current
());
dcli
->
toNext
())
{
{
...
...
doc/docblocks.doc
View file @
bcf2f33d
...
@@ -120,7 +120,7 @@ Here is an example:
...
@@ -120,7 +120,7 @@ Here is an example:
<li>If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to YES in the configuration file,
<li>If \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is set to YES in the configuration file,
then using JavaDoc style comment
then using JavaDoc style comment
blocks will automatically start a brief description which ends at the
blocks will automatically start a brief description which ends at the
first dot. Here is an example:
first dot
followed by a space or new line
. Here is an example:
\verbatim
\verbatim
/** Brief description which ends at this dot. Details follow
/** Brief description which ends at this dot. Details follow
...
...
doc/language.doc
View file @
bcf2f33d
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
languages other than English (the default) at configuration time.
Currently (version 1.2.15-200204
21
), 26 languages
Currently (version 1.2.15-200204
30
), 26 languages
are supported (sorted alphabetically):
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Chinesetraditional, Croatian, Czech,
Brazilian Portuguese, Chinese, Chinesetraditional, Croatian, Czech,
Danish, Dutch, English, Finnish, French,
Danish, Dutch, English, Finnish, French,
...
...
doc/starting.doc
View file @
bcf2f33d
...
@@ -198,9 +198,9 @@ During parsing the following steps take place:
...
@@ -198,9 +198,9 @@ During parsing the following steps take place:
<ul>
<ul>
<li> The special commands inside the documentation are executed. See
<li> The special commands inside the documentation are executed. See
section \ref commands for an overview of all commands.
section \ref commands for an overview of all commands.
<li> If a line starts with some whitespace followed by one or more asteri
xe
s
<li> If a line starts with some whitespace followed by one or more asteri
sk
s
(<tt>*</tt>) and then optionally more whitespace,
(<tt>*</tt>) and then optionally more whitespace,
then all whitespace and asteri
xe
s are removed.
then all whitespace and asteri
sk
s are removed.
<li> All resulting blank lines are treated as a paragraph separators.
<li> All resulting blank lines are treated as a paragraph separators.
This saves you from placing new-paragraph commands yourself
This saves you from placing new-paragraph commands yourself
in order to make the generated documentation readable.
in order to make the generated documentation readable.
...
...
packages/rpm/doxygen.spec
View file @
bcf2f33d
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.2.15_20020
430
Version: 1.2.15_20020
512
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/Makefile.in
View file @
bcf2f33d
...
@@ -53,6 +53,6 @@ clean: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch
...
@@ -53,6 +53,6 @@ clean: Makefile.libdoxygen Makefile.doxygen Makefile.doxytag Makefile.doxysearch
distclean
:
clean
distclean
:
clean
-
$(RM)
scanner.cpp doc.cpp code.cpp config.cpp pre.cpp ce_lex.cpp
\
-
$(RM)
scanner.cpp doc.cpp code.cpp config.cpp pre.cpp ce_lex.cpp
\
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp
\
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp
\
declinfo.cpp defargs.cpp
declinfo.cpp defargs.cpp
commentcnv.cpp
FORCE
:
FORCE
:
src/classdef.cpp
View file @
bcf2f33d
...
@@ -596,22 +596,22 @@ void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local)
...
@@ -596,22 +596,22 @@ void ClassDef::setIncludeFile(FileDef *fd,const char *includeName,bool local)
}
}
// TODO: fix this: a nested template class can have multiple outer templates
// TODO: fix this: a nested template class can have multiple outer templates
ArgumentList
*
ClassDef
::
outerTemplateArguments
()
const
//
ArgumentList *ClassDef::outerTemplateArguments() const
{
//
{
int
ti
;
//
int ti;
ClassDef
*
pcd
=
0
;
//
ClassDef *pcd=0;
int
pi
=
0
;
//
int pi=0;
if
(
m_tempArgs
)
return
m_tempArgs
;
//
if (m_tempArgs) return m_tempArgs;
// find the outer most class scope
//
// find the outer most class scope
while
((
ti
=
name
().
find
(
"::"
,
pi
))
!=-
1
&&
//
while ((ti=name().find("::",pi))!=-1 &&
(
pcd
=
getClass
(
name
().
left
(
ti
)))
==
0
//
(pcd=getClass(name().left(ti)))==0
)
pi
=
ti
+
2
;
//
) pi=ti+2;
if
(
pcd
)
//
if (pcd)
{
//
{
return
pcd
->
templateArguments
();
//
return pcd->templateArguments();
}
//
}
return
0
;
//
return 0;
}
//
}
static
void
searchTemplateSpecs
(
/*in*/
Definition
*
d
,
static
void
searchTemplateSpecs
(
/*in*/
Definition
*
d
,
/*out*/
QList
<
ArgumentList
>
&
result
,
/*out*/
QList
<
ArgumentList
>
&
result
,
...
@@ -685,22 +685,83 @@ static void writeTemplateSpec(OutputList &ol,Definition *d,
...
@@ -685,22 +685,83 @@ static void writeTemplateSpec(OutputList &ol,Definition *d,
}
}
}
}
// write the detailed description for this class
void
ClassDef
::
writeDetailedDescription
(
OutputList
&
ol
,
OutputList
&
briefOutput
,
const
QCString
&
pageType
,
bool
exampleFlag
)
{
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
!
documentation
().
isEmpty
()
||
/*(Config_getBool("SOURCE_BROWSER") && startBodyLine!=-1 && bodyDef) ||*/
exampleFlag
)
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
ol
.
startTextBlock
();
writeTemplateSpec
(
ol
,
this
,
pageType
);
// repeat brief description
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
ol
+=
briefOutput
;
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
// write documentation
if
(
!
documentation
().
isEmpty
())
{
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
popGeneratorState
();
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
}
// write examples
if
(
exampleFlag
)
{
ol
.
startDescList
(
BaseOutputDocInterface
::
Examples
);
parseText
(
ol
,
theTranslator
->
trExamples
()
+
": "
);
ol
.
endDescTitle
();
ol
.
writeDescItem
();
ol
.
newParagraph
();
writeExample
(
ol
,
m_exampleSDict
);
//ol.endDescItem();
ol
.
endDescList
();
}
ol
.
newParagraph
();
writeSourceDef
(
ol
,
name
());
ol
.
endTextBlock
();
}
else
{
writeTemplateSpec
(
ol
,
this
,
pageType
);
}
}
// write all documentation for this class
// write all documentation for this class
void
ClassDef
::
writeDocumentation
(
OutputList
&
ol
)
void
ClassDef
::
writeDocumentation
(
OutputList
&
ol
)
{
{
// write title
// write title
QCString
pageTitle
=
name
().
copy
();
QCString
pageTitle
=
name
().
copy
();
QCString
pageType
;
QCString
pageType
;
ArgumentList
*
outerTempArgList
=
outerTemplateArguments
();
QCString
cType
=
compoundTypeString
();
QCString
cType
=
compoundTypeString
();
toupper
(
cType
.
at
(
0
));
toupper
(
cType
.
at
(
0
));
pageType
+=
" "
;
pageType
+=
" "
;
pageType
+=
cType
;
pageType
+=
cType
;
pageTitle
+=
pageType
+
" Reference"
;
pageTitle
+=
pageType
+
" Reference"
;
if
(
outerTempArgList
)
pageTitle
.
prepend
(
" Template"
);
if
(
m_tempArgs
)
pageTitle
.
prepend
(
" Template"
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startTitle
(
ol
,
getOutputFileBase
());
startTitle
(
ol
,
getOutputFileBase
());
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
displayName
(),
m_compType
,
outerTempArgList
!=
0
));
parseText
(
ol
,
theTranslator
->
trCompoundReference
(
displayName
(),
m_compType
,
m_tempArgs
!=
0
));
addGroupListToTitle
(
ol
,
this
);
addGroupListToTitle
(
ol
,
this
);
endTitle
(
ol
,
getOutputFileBase
(),
name
());
endTitle
(
ol
,
getOutputFileBase
(),
name
());
...
@@ -714,6 +775,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -714,6 +775,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
if
(
!
briefDescription
().
isEmpty
())
if
(
!
briefDescription
().
isEmpty
())
{
{
parseDoc
(
briefOutput
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
parseDoc
(
briefOutput
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
if
(
!
Config_getBool
(
"DETAILS_AT_TOP"
))
{
ol
+=
briefOutput
;
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
writeString
(
"
\n
"
);
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -733,6 +796,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -733,6 +796,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
newParagraph
();
ol
.
newParagraph
();
ol
.
enable
(
OutputGenerator
::
Man
);
ol
.
enable
(
OutputGenerator
::
Man
);
}
}
}
ol
.
writeSynopsis
();
ol
.
writeSynopsis
();
if
(
m_incInfo
&&
Config_getBool
(
"SHOW_INCLUDE_FILES"
))
if
(
m_incInfo
&&
Config_getBool
(
"SHOW_INCLUDE_FILES"
))
...
@@ -990,6 +1054,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -990,6 +1054,11 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
endTextBlock
();
ol
.
endTextBlock
();
// write detailed description if the user wants it near the top
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
{
writeDetailedDescription
(
ol
,
briefOutput
,
pageType
,
exampleFlag
);
}
// write member groups
// write member groups
ol
.
startMemberSections
();
ol
.
startMemberSections
();
...
@@ -1062,64 +1131,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -1062,64 +1131,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
endMemberSections
();
ol
.
endMemberSections
();
// write detailed description
// write detailed description
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
if
(
!
Config_getBool
(
"DETAILS_AT_TOP"
))
{
!
documentation
().
isEmpty
()
||
writeDetailedDescription
(
ol
,
briefOutput
,
pageType
,
exampleFlag
);
/*(Config_getBool("SOURCE_BROWSER") && startBodyLine!=-1 && bodyDef) ||*/
exampleFlag
)
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
ol
.
startTextBlock
();
writeTemplateSpec
(
ol
,
this
,
pageType
);
// repeat brief description
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
ol
+=
briefOutput
;
}
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
// write documentation
if
(
!
documentation
().
isEmpty
())
{
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
RTF
);
ol
.
newParagraph
();
ol
.
popGeneratorState
();
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
}
// write examples
if
(
exampleFlag
)
{
ol
.
startDescList
(
BaseOutputDocInterface
::
Examples
);
parseText
(
ol
,
theTranslator
->
trExamples
()
+
": "
);
ol
.
endDescTitle
();
ol
.
writeDescItem
();
ol
.
newParagraph
();
writeExample
(
ol
,
m_exampleSDict
);
//ol.endDescItem();
ol
.
endDescList
();
}
ol
.
newParagraph
();
writeSourceDef
(
ol
,
name
());
ol
.
endTextBlock
();
}
else
{
writeTemplateSpec
(
ol
,
this
,
pageType
);
}
typedefMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
typedefMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
...
...
src/classdef.h
View file @
bcf2f33d
...
@@ -102,6 +102,7 @@ class ClassDef : public Definition
...
@@ -102,6 +102,7 @@ class ClassDef : public Definition
void
writeDocumentationForInnerClasses
(
OutputList
&
ol
);
void
writeDocumentationForInnerClasses
(
OutputList
&
ol
);
void
writeMemberList
(
OutputList
&
ol
);
void
writeMemberList
(
OutputList
&
ol
);
void
writeDeclaration
(
OutputList
&
ol
,
MemberDef
*
md
,
bool
inGroup
);
void
writeDeclaration
(
OutputList
&
ol
,
MemberDef
*
md
,
bool
inGroup
);
void
writeDetailedDescription
(
OutputList
&
ol
,
OutputList
&
briefOutput
,
const
QCString
&
pageType
,
bool
exampleFlag
);
/*! Return the protection level (Public,Protected,Private) in which
/*! Return the protection level (Public,Protected,Private) in which
* this compound was found.
* this compound was found.
...
@@ -129,7 +130,7 @@ class ClassDef : public Definition
...
@@ -129,7 +130,7 @@ class ClassDef : public Definition
* from its outer class (doxygen assumes there is only one!).
* from its outer class (doxygen assumes there is only one!).
* Will return 0 if not applicable.
* Will return 0 if not applicable.
*/
*/
ArgumentList
*
outerTemplateArguments
()
const
;
//
ArgumentList *outerTemplateArguments() const;
/*! Returns the namespace this compound is in, or 0 if it has a global
/*! Returns the namespace this compound is in, or 0 if it has a global
* scope.
* scope.
...
...
src/config.l
View file @
bcf2f33d
...
@@ -1480,6 +1480,14 @@ void Config::create()
...
@@ -1480,6 +1480,14 @@ void Config::create()
"explict @brief command for a brief description. \n",
"explict @brief command for a brief description. \n",
FALSE
FALSE
);
);
cb = addBool(
"DETAILS_AT_TOP",
"If the DETAILS_AT_TOP tag is set to YES then Doxygen \n"
"will output the detailed description near the top, like JavaDoc.\n"
"If set to NO, the detailed description appears after the member \n"
"documentation. \n",
FALSE
);
cb = addBool(
cb = addBool(
"INHERIT_DOCS",
"INHERIT_DOCS",
"If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \n"
"If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \n"
...
...
src/dot.cpp
View file @
bcf2f33d
...
@@ -1753,6 +1753,18 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile,
...
@@ -1753,6 +1753,18 @@ void writeDotGraphFromFile(const char *inFile,const char *outFile,
{
{
err
(
"Problems running dot. Check your installation!
\n
"
);
err
(
"Problems running dot. Check your installation!
\n
"
);
}
}
// Added by Nils Strom
if
(
(
format
==
EPS
)
&&
(
Config_getBool
(
"USE_PDFLATEX"
))
)
{
QCString
epstopdfArgs
(
4096
);
epstopdfArgs
.
sprintf
(
"
\"
%s.eps
\"
--outfile=
\"
%s.pdf
\"
"
,
outFile
,
outFile
);
if
(
iSystem
(
"epstopdf"
,
epstopdfArgs
,
TRUE
)
!=
0
)
{
err
(
"Error: Problems running epstopdf. Check your TeX installation!
\n
"
);
}
}
if
(
format
==
BITMAP
)
checkDotResult
(
imgName
);
if
(
format
==
BITMAP
)
checkDotResult
(
imgName
);
}
}
src/doxygen.cpp
View file @
bcf2f33d
...
@@ -58,7 +58,7 @@
...
@@ -58,7 +58,7 @@
#include "defgen.h"
#include "defgen.h"
#include "reflist.h"
#include "reflist.h"
#include "page.h"
#include "page.h"
#include "packagedef.h"
//
#include "packagedef.h"
#include "bufstr.h"
#include "bufstr.h"
#include "commentcnv.h"
#include "commentcnv.h"
...
@@ -88,7 +88,7 @@ FormulaList Doxygen::formulaList; // all formulas
...
@@ -88,7 +88,7 @@ FormulaList Doxygen::formulaList; // all formulas
FormulaDict
Doxygen
::
formulaDict
(
1009
);
// all formulas
FormulaDict
Doxygen
::
formulaDict
(
1009
);
// all formulas
FormulaDict
Doxygen
::
formulaNameDict
(
1009
);
// the label name of all formulas
FormulaDict
Doxygen
::
formulaNameDict
(
1009
);
// the label name of all formulas
PackageSDict
Doxygen
::
packageDict
(
257
);
// java packages
//
PackageSDict Doxygen::packageDict(257); // java packages
PageSDict
*
Doxygen
::
pageSDict
=
new
PageSDict
(
1009
);
// all doc pages
PageSDict
*
Doxygen
::
pageSDict
=
new
PageSDict
(
1009
);
// all doc pages
PageSDict
*
Doxygen
::
exampleSDict
=
new
PageSDict
(
1009
);
// all examples
PageSDict
*
Doxygen
::
exampleSDict
=
new
PageSDict
(
1009
);
// all examples
...
@@ -889,6 +889,7 @@ static void buildNamespaceList(Entry *root)
...
@@ -889,6 +889,7 @@ static void buildNamespaceList(Entry *root)
// also add namespace to the correct structural context
// also add namespace to the correct structural context
Definition
*
d
=
findScopeFromQualifiedName
(
Doxygen
::
globalScope
,
fullName
);
Definition
*
d
=
findScopeFromQualifiedName
(
Doxygen
::
globalScope
,
fullName
);
//printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"none");
if
(
d
==
0
)
if
(
d
==
0
)
{
{
// TODO: Due to the order in which the tag file is written
// TODO: Due to the order in which the tag file is written
...
@@ -5646,16 +5647,16 @@ static void findMainPage(Entry *root)
...
@@ -5646,16 +5647,16 @@ static void findMainPage(Entry *root)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
/*! Add Java classes to their respective packages */
/*! Add Java classes to their respective packages */
static
void
addClassesToPackages
()
//
static void addClassesToPackages()
{
//
{
ClassDef
*
cd
;
//
ClassDef *cd;
ClassSDict
::
Iterator
cli
(
Doxygen
::
classSDict
);
//
ClassSDict::Iterator cli(Doxygen::classSDict);
for
(;(
cd
=
cli
.
current
());
++
cli
)
//
for (;(cd=cli.current());++cli)
{
//
{
PackageDef
*
pd
=
cd
->
packageDef
();
//
PackageDef *pd = cd->packageDef();
if
(
pd
)
pd
->
addClass
(
cd
);
//
if (pd) pd->addClass(cd);
}
//
}
}
//
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
...
@@ -7336,8 +7337,8 @@ void parseInput()
...
@@ -7336,8 +7337,8 @@ void parseInput()
msg
(
"Computing member relations...
\n
"
);
msg
(
"Computing member relations...
\n
"
);
computeMemberRelations
();
computeMemberRelations
();
msg
(
"Adding classes to their packages...
\n
"
);
//
msg("Adding classes to their packages...\n");
addClassesToPackages
();
//
addClassesToPackages();
msg
(
"Building full member lists recursively...
\n
"
);
msg
(
"Building full member lists recursively...
\n
"
);
buildCompleteMemberLists
();
buildCompleteMemberLists
();
...
...
src/doxygen.h
View file @
bcf2f33d
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
#include "formula.h"
#include "formula.h"
#include "section.h"
#include "section.h"
#include "membergroup.h"
#include "membergroup.h"
#include "packagedef.h"
//
#include "packagedef.h"
class
PageSList
;
class
PageSList
;
class
PageSDict
;
class
PageSDict
;
...
@@ -92,7 +92,7 @@ class Doxygen
...
@@ -92,7 +92,7 @@ class Doxygen
static
QIntDict
<
QCString
>
memberHeaderDict
;
// dictionary of the member groups heading
static
QIntDict
<
QCString
>
memberHeaderDict
;
// dictionary of the member groups heading
static
QIntDict
<
QCString
>
memberDocDict
;
// dictionary of the member groups heading
static
QIntDict
<
QCString
>
memberDocDict
;
// dictionary of the member groups heading
static
QDict
<
void
>
expandAsDefinedDict
;
static
QDict
<
void
>
expandAsDefinedDict
;
static
PackageSDict
packageDict
;
//
static PackageSDict packageDict;
static
NamespaceDef
*
globalScope
;
static
NamespaceDef
*
globalScope
;
};
};
...
...
src/filedef.cpp
View file @
bcf2f33d
...
@@ -98,6 +98,57 @@ void FileDef::distributeMemberGroupDocumentation()
...
@@ -98,6 +98,57 @@ void FileDef::distributeMemberGroupDocumentation()
}
}
}
}
void
FileDef
::
writeDetailedDocumentation
(
OutputList
&
ol
)
{
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
!
documentation
().
isEmpty
()
)
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
//bool latexOn = ol.isEnabled(OutputGenerator::Latex);
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
parseDoc
(
ol
,
filepath
,
1
,
0
,
0
,
briefDescription
());
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
if
(
!
documentation
().
isEmpty
())
{
//if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?')
// doc+='.';
parseDoc
(
ol
,
filepath
,
1
,
0
,
0
,
documentation
()
+
"
\n
"
);
}
//printf("Writing source ref for file %s\n",name().data());
if
(
Config_getBool
(
"SOURCE_BROWSER"
))
{
ol
.
newParagraph
();
QCString
refText
=
theTranslator
->
trDefinedInSourceFile
();
int
fileMarkerPos
=
refText
.
find
(
"@0"
);
if
(
fileMarkerPos
!=-
1
)
// should always pass this.
{
parseText
(
ol
,
refText
.
left
(
fileMarkerPos
));
//text left from marker 1
ol
.
writeObjectLink
(
0
,
getSourceFileBase
(),
0
,
name
());
parseText
(
ol
,
refText
.
right
(
refText
.
length
()
-
fileMarkerPos
-
2
));
// text right from marker 2
}
}
}
}
/*! Write the documentation page for this file to the file of output
/*! Write the documentation page for this file to the file of output
generators \a ol.
generators \a ol.
*/
*/
...
@@ -132,15 +183,13 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -132,15 +183,13 @@ void FileDef::writeDocumentation(OutputList &ol)
}
}
ol
.
startTextBlock
();
ol
.
startTextBlock
();
//brief=brief.stripWhiteSpace();
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
//int bl=brief.length();
{
OutputList
briefOutput
(
&
ol
);
writeDetailedDocumentation
(
ol
);
if
(
briefDescription
())
}
{
else
if
(
briefDescription
())
//if (brief.at(bl-1)!='.' && brief.at(bl-1)!='!' && brief.at(bl!='?'))
{
// brief+='.';
parseDoc
(
ol
,
filepath
,
1
,
0
,
0
,
briefDescription
());
parseDoc
(
briefOutput
,
filepath
,
1
,
0
,
0
,
briefDescription
());
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
writeString
(
"
\n
"
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
startTextLink
(
0
,
"_details"
);
ol
.
startTextLink
(
0
,
"_details"
);
...
@@ -198,6 +247,8 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -198,6 +247,8 @@ void FileDef::writeDocumentation(OutputList &ol)
const
char
*
locStr
=
(
ii
->
local
||
isIDLorJava
)
?
"yes"
:
"no"
;
const
char
*
locStr
=
(
ii
->
local
||
isIDLorJava
)
?
"yes"
:
"no"
;
Doxygen
::
tagFile
<<
" <includes id=
\"
"
Doxygen
::
tagFile
<<
" <includes id=
\"
"
<<
convertToXML
(
fd
->
getOutputFileBase
())
<<
convertToXML
(
fd
->
getOutputFileBase
())
<<
"
\"
name=
\"
"
<<
convertToXML
(
fd
->
name
())
<<
"
\"
local=
\"
"
<<
locStr
<<
"
\"
>"
<<
"
\"
local=
\"
"
<<
locStr
<<
"
\"
>"
<<
convertToXML
(
ii
->
includeName
)
<<
convertToXML
(
ii
->
includeName
)
<<
"</includes>"
<<
"</includes>"
...
@@ -347,56 +398,9 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -347,56 +398,9 @@ void FileDef::writeDocumentation(OutputList &ol)
decVarMembers
.
writeDeclarations
(
ol
,
0
,
0
,
this
,
0
,
theTranslator
->
trVariables
(),
0
);
decVarMembers
.
writeDeclarations
(
ol
,
0
,
0
,
this
,
0
,
theTranslator
->
trVariables
(),
0
);
ol
.
endMemberSections
();
ol
.
endMemberSections
();
//doc=doc.stripWhiteSpace();
if
(
!
Config_getBool
(
"DETAILS_AT_TOP"
))
//int bl=brief.length();
//int dl=doc.length();
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
!
documentation
().
isEmpty
()
/* || startBodyLine!=-1 */
)
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
//bool latexOn = ol.isEnabled(OutputGenerator::Latex);
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
ol
+=
briefOutput
;
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
if
(
!
documentation
().
isEmpty
())
{
//if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?')
// doc+='.';
parseDoc
(
ol
,
filepath
,
1
,
0
,
0
,
documentation
()
+
"
\n
"
);
}
//printf("Writing source ref for file %s\n",name().data());
if
(
Config_getBool
(
"SOURCE_BROWSER"
))
{
{
ol
.
newParagraph
();
writeDetailedDocumentation
(
ol
);
QCString
refText
=
theTranslator
->
trDefinedInSourceFile
();
int
fileMarkerPos
=
refText
.
find
(
"@0"
);
if
(
fileMarkerPos
!=-
1
)
// should always pass this.
{
parseText
(
ol
,
refText
.
left
(
fileMarkerPos
));
//text left from marker 1
ol
.
writeObjectLink
(
0
,
getSourceFileBase
(),
0
,
name
());
parseText
(
ol
,
refText
.
right
(
refText
.
length
()
-
fileMarkerPos
-
2
));
// text right from marker 2
}
}
}
}
docDefineMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
docDefineMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
...
...
src/filedef.h
View file @
bcf2f33d
...
@@ -119,6 +119,7 @@ class FileDef : public Definition
...
@@ -119,6 +119,7 @@ class FileDef : public Definition
}
}
bool
isIncluded
(
const
QCString
&
name
)
const
;
bool
isIncluded
(
const
QCString
&
name
)
const
;
void
writeDetailedDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
writeSource
(
OutputList
&
ol
);
void
writeSource
(
OutputList
&
ol
);
friend
void
generatedFileNames
();
friend
void
generatedFileNames
();
...
...
src/groupdef.cpp
View file @
bcf2f33d
...
@@ -336,6 +336,40 @@ void GroupDef::computeAnchors()
...
@@ -336,6 +336,40 @@ void GroupDef::computeAnchors()
setAnchors
(
0
,
'a'
,
allMemberList
);
setAnchors
(
0
,
'a'
,
allMemberList
);
}
}
void
GroupDef
::
writeDetailedDocumentation
(
OutputList
&
ol
)
{
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
{
if
(
pageDict
->
count
()
!=
countMembers
())
// classical layout
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
// repeat brief description
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
ol
.
newParagraph
();
}
}
// write documentation
if
(
!
documentation
().
isEmpty
())
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
}
}
}
void
GroupDef
::
writeDocumentation
(
OutputList
&
ol
)
void
GroupDef
::
writeDocumentation
(
OutputList
&
ol
)
{
{
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
...
@@ -346,13 +380,13 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -346,13 +380,13 @@ void GroupDef::writeDocumentation(OutputList &ol)
addGroupListToTitle
(
ol
,
this
);
addGroupListToTitle
(
ol
,
this
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
endTitle
(
ol
,
getOutputFileBase
(),
title
);
//brief=brief.stripWhiteSpace();
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
//int bl=brief.length();
{
OutputList
briefOutput
(
&
ol
);
writeDetailedDocumentation
(
ol
);
if
(
!
briefDescription
().
isEmpty
())
}
else
if
(
!
briefDescription
().
isEmpty
())
{
{
parseDoc
(
briefOutput
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
writeString
(
"
\n
"
);
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
Latex
);
...
@@ -490,36 +524,11 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -490,36 +524,11 @@ void GroupDef::writeDocumentation(OutputList &ol)
}
}
ol
.
endMemberSections
();
ol
.
endMemberSections
();
if
(
!
Config_getBool
(
"DETAILS_AT_TOP"
))
if
(
!
briefDescription
().
isEmpty
()
||
!
documentation
().
isEmpty
())
{
if
(
pageDict
->
count
()
!=
countMembers
())
// classical layout
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
disable
(
OutputGenerator
::
RTF
);
ol
.
writeAnchor
(
0
,
"_details"
);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
// repeat brief description
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
{
ol
+=
briefOutput
;
writeDetailedDocumentation
(
ol
);
ol
.
newParagraph
();
}
}
}
// write documentation
if
(
!
documentation
().
isEmpty
())
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
}
}
PageInfo
*
pi
=
0
;
PageInfo
*
pi
=
0
;
PageSDict
::
Iterator
pdi
(
*
pageDict
);
PageSDict
::
Iterator
pdi
(
*
pageDict
);
for
(
pdi
.
toFirst
();(
pi
=
pdi
.
current
());
++
pdi
)
for
(
pdi
.
toFirst
();(
pi
=
pdi
.
current
());
++
pdi
)
...
...
src/groupdef.h
View file @
bcf2f33d
...
@@ -58,6 +58,7 @@ class GroupDef : public Definition
...
@@ -58,6 +58,7 @@ class GroupDef : public Definition
void
insertMember
(
MemberDef
*
def
,
bool
docOnly
=
FALSE
);
void
insertMember
(
MemberDef
*
def
,
bool
docOnly
=
FALSE
);
void
removeMember
(
MemberDef
*
md
);
void
removeMember
(
MemberDef
*
md
);
bool
containsGroup
(
const
GroupDef
*
def
);
// true if def is already a subgroup
bool
containsGroup
(
const
GroupDef
*
def
);
// true if def is already a subgroup
void
writeDetailedDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
int
countMembers
()
const
;
int
countMembers
()
const
;
bool
isLinkableInProject
()
const
bool
isLinkableInProject
()
const
...
...
src/index.cpp
View file @
bcf2f33d
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
#include "ftvhelp.h"
#include "ftvhelp.h"
#include "dot.h"
#include "dot.h"
#include "page.h"
#include "page.h"
#include "packagedef.h"
//
#include "packagedef.h"
int
annotatedClasses
;
int
annotatedClasses
;
int
hierarchyClasses
;
int
hierarchyClasses
;
...
@@ -50,7 +50,7 @@ int documentedNamespaceMembers;
...
@@ -50,7 +50,7 @@ int documentedNamespaceMembers;
int
documentedIncludeFiles
;
int
documentedIncludeFiles
;
int
documentedPages
;
int
documentedPages
;
int
indexedPages
;
int
indexedPages
;
int
documentedPackages
;
//
int documentedPackages;
int
countClassHierarchy
();
int
countClassHierarchy
();
int
countClassMembers
();
int
countClassMembers
();
...
@@ -62,7 +62,7 @@ int countAnnotatedClasses();
...
@@ -62,7 +62,7 @@ int countAnnotatedClasses();
int
countNamespaceMembers
();
int
countNamespaceMembers
();
int
countIncludeFiles
();
int
countIncludeFiles
();
void
countRelatedPages
(
int
&
docPages
,
int
&
indexPages
);
void
countRelatedPages
(
int
&
docPages
,
int
&
indexPages
);
int
countPackages
();
//
int countPackages();
void
countDataStructures
()
void
countDataStructures
()
{
{
...
@@ -75,7 +75,7 @@ void countDataStructures()
...
@@ -75,7 +75,7 @@ void countDataStructures()
documentedGroups
=
countGroups
();
documentedGroups
=
countGroups
();
documentedNamespaces
=
countNamespaces
();
documentedNamespaces
=
countNamespaces
();
documentedNamespaceMembers
=
countNamespaceMembers
();
documentedNamespaceMembers
=
countNamespaceMembers
();
documentedPackages
=
countPackages
();
//
documentedPackages = countPackages();
}
}
static
void
startIndexHierarchy
(
OutputList
&
ol
,
int
level
)
static
void
startIndexHierarchy
(
OutputList
&
ol
,
int
level
)
...
@@ -2116,20 +2116,20 @@ void countRelatedPages(int &docPages,int &indexPages)
...
@@ -2116,20 +2116,20 @@ void countRelatedPages(int &docPages,int &indexPages)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
int
countPackages
()
//
int countPackages()
{
//
{
int
count
=
0
;
//
int count=0;
PackageSDict
::
Iterator
pdi
(
Doxygen
::
packageDict
);
//
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef
*
pd
=
0
;
//
PackageDef *pd=0;
for
(
pdi
.
toFirst
();(
pd
=
pdi
.
current
());
++
pdi
)
//
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
//
{
if
(
!
pd
->
isReference
())
//
if (!pd->isReference())
{
//
{
count
++
;
//
count++;
}
//
}
}
//
}
return
count
;
//
return count;
}
//
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
...
@@ -2808,12 +2808,12 @@ void writeIndex(OutputList &ol)
...
@@ -2808,12 +2808,12 @@ void writeIndex(OutputList &ol)
}
}
if
(
documentedPackages
>
0
)
//
if (documentedPackages>0)
{
//
{
ol
.
startIndexSection
(
isPackageIndex
);
//
ol.startIndexSection(isPackageIndex);
parseText
(
ol
,
projPrefix
+
theTranslator
->
trPackageList
());
//
parseText(ol,projPrefix+theTranslator->trPackageList());
ol
.
endIndexSection
(
isPackageIndex
);
//
ol.endIndexSection(isPackageIndex);
}
//
}
if
(
documentedGroups
>
0
)
if
(
documentedGroups
>
0
)
{
{
ol
.
startIndexSection
(
isModuleIndex
);
ol
.
startIndexSection
(
isModuleIndex
);
...
@@ -2851,12 +2851,12 @@ void writeIndex(OutputList &ol)
...
@@ -2851,12 +2851,12 @@ void writeIndex(OutputList &ol)
ol
.
endIndexSection
(
isPageIndex
);
ol
.
endIndexSection
(
isPageIndex
);
}
}
ol
.
lastIndexPage
();
ol
.
lastIndexPage
();
if
(
documentedPackages
>
0
)
//
if (documentedPackages>0)
{
//
{
ol
.
startIndexSection
(
isPackageDocumentation
);
//
ol.startIndexSection(isPackageDocumentation);
parseText
(
ol
,
projPrefix
+
theTranslator
->
trPackageDocumentation
());
//
parseText(ol,projPrefix+theTranslator->trPackageDocumentation());
ol
.
endIndexSection
(
isPackageDocumentation
);
//
ol.endIndexSection(isPackageDocumentation);
}
//
}
if
(
documentedGroups
>
0
)
if
(
documentedGroups
>
0
)
{
{
ol
.
startIndexSection
(
isModuleDocumentation
);
ol
.
startIndexSection
(
isModuleDocumentation
);
...
...
src/index.h
View file @
bcf2f33d
...
@@ -26,14 +26,14 @@ enum IndexSections
...
@@ -26,14 +26,14 @@ enum IndexSections
isTitlePageStart
,
isTitlePageStart
,
isTitlePageAuthor
,
isTitlePageAuthor
,
isMainPage
,
isMainPage
,
isPackageIndex
,
//
isPackageIndex,
isModuleIndex
,
isModuleIndex
,
isNamespaceIndex
,
isNamespaceIndex
,
isClassHierarchyIndex
,
isClassHierarchyIndex
,
isCompoundIndex
,
isCompoundIndex
,
isFileIndex
,
isFileIndex
,
isPageIndex
,
isPageIndex
,
isPackageDocumentation
,
//
isPackageDocumentation,
isModuleDocumentation
,
isModuleDocumentation
,
isNamespaceDocumentation
,
isNamespaceDocumentation
,
isClassDocumentation
,
isClassDocumentation
,
...
@@ -82,7 +82,7 @@ extern int documentedNamespaceMembers;
...
@@ -82,7 +82,7 @@ extern int documentedNamespaceMembers;
extern
int
documentedIncludeFiles
;
extern
int
documentedIncludeFiles
;
extern
int
documentedPages
;
extern
int
documentedPages
;
extern
int
indexedPages
;
extern
int
indexedPages
;
extern
int
documentedPackages
;
//
extern int documentedPackages;
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
);
void
startTitle
(
OutputList
&
ol
,
const
char
*
fileName
);
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
);
void
endTitle
(
OutputList
&
ol
,
const
char
*
fileName
,
const
char
*
name
);
...
...
src/latexgen.cpp
View file @
bcf2f33d
...
@@ -473,10 +473,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -473,10 +473,10 @@ void LatexGenerator::startIndexSection(IndexSections is)
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Introduction}\n"
t
<<
"{"
;
//Introduction}\n"
break
;
break
;
case
isPackageIndex
:
//
case isPackageIndex:
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
//
if (compactLatex) t << "\\section"; else t << "\\chapter";
t
<<
"{"
;
//Package Index}\n"
//
t << "{"; //Package Index}\n"
break
;
//
break;
case
isModuleIndex
:
case
isModuleIndex
:
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Module Index}\n"
t
<<
"{"
;
//Module Index}\n"
...
@@ -501,21 +501,21 @@ void LatexGenerator::startIndexSection(IndexSections is)
...
@@ -501,21 +501,21 @@ void LatexGenerator::startIndexSection(IndexSections is)
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
t
<<
"{"
;
//Annotated Page Index}\n"
t
<<
"{"
;
//Annotated Page Index}\n"
break
;
break
;
case
isPackageDocumentation
:
//
case isPackageDocumentation:
{
//
{
PackageSDict
::
Iterator
pdi
(
Doxygen
::
packageDict
);
//
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef
*
pd
=
pdi
.
toFirst
();
//
PackageDef *pd=pdi.toFirst();
bool
found
=
FALSE
;
//
bool found=FALSE;
while
(
pd
&&
!
found
)
//
while (pd && !found)
{
//
{
if
(
compactLatex
)
t
<<
"
\\
section"
;
else
t
<<
"
\\
chapter"
;
//
if (compactLatex) t << "\\section"; else t << "\\chapter";
t
<<
"{"
;
//
t << "{";
found
=
TRUE
;
//
found=TRUE;
++
pdi
;
//
++pdi;
pd
=
pdi
.
current
();
//
pd=pdi.current();
}
//
}
}
//
}
break
;
//
break;
case
isModuleDocumentation
:
case
isModuleDocumentation
:
{
{
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
...
@@ -629,9 +629,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
...
@@ -629,9 +629,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
t
<<
"
\\
input{"
<<
indexName
<<
"}
\n
"
;
t
<<
"
\\
input{"
<<
indexName
<<
"}
\n
"
;
}
}
break
;
break
;
case
isPackageIndex
:
//
case isPackageIndex:
t
<<
"}
\n\\
input{packages}
\n
"
;
//
t << "}\n\\input{packages}\n";
break
;
//
break;
case
isModuleIndex
:
case
isModuleIndex
:
t
<<
"}
\n\\
input{modules}
\n
"
;
t
<<
"}
\n\\
input{modules}
\n
"
;
break
;
break
;
...
@@ -650,27 +650,27 @@ void LatexGenerator::endIndexSection(IndexSections is)
...
@@ -650,27 +650,27 @@ void LatexGenerator::endIndexSection(IndexSections is)
case
isPageIndex
:
case
isPageIndex
:
t
<<
"}
\n\\
input{pages}
\n
"
;
t
<<
"}
\n\\
input{pages}
\n
"
;
break
;
break
;
case
isPackageDocumentation
:
//
case isPackageDocumentation:
{
//
{
PackageSDict
::
Iterator
pdi
(
Doxygen
::
packageDict
);
//
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef
*
pd
=
pdi
.
toFirst
();
//
PackageDef *pd=pdi.toFirst();
bool
found
=
FALSE
;
//
bool found=FALSE;
while
(
pd
&&
!
found
)
//
while (pd && !found)
{
//
{
t
<<
"}
\n\\
input{"
<<
pd
->
getOutputFileBase
()
<<
"}
\n
"
;
//
t << "}\n\\input{" << pd->getOutputFileBase() << "}\n";
found
=
TRUE
;
//
found=TRUE;
++
pdi
;
//
++pdi;
pd
=
pdi
.
current
();
//
pd=pdi.current();
}
//
}
while
(
pd
)
//
while (pd)
{
//
{
if
(
compactLatex
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
//
if (compactLatex) t << "\\input"; else t << "\\include";
t
<<
"{"
<<
pd
->
getOutputFileBase
()
<<
"}
\n
"
;
//
t << "{" << pd->getOutputFileBase() << "}\n";
++
pdi
;
//
++pdi;
pd
=
pdi
.
current
();
//
pd=pdi.current();
}
//
}
}
//
}
break
;
//
break;
case
isModuleDocumentation
:
case
isModuleDocumentation
:
{
{
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
...
@@ -1761,7 +1761,15 @@ void LatexGenerator::startDotFile(const char *name,bool hasCaption)
...
@@ -1761,7 +1761,15 @@ void LatexGenerator::startDotFile(const char *name,bool hasCaption)
else
else
t
<<
"
\\
mbox{"
;
t
<<
"
\\
mbox{"
;
t
<<
"
\\
includegraphics"
;
t
<<
"
\\
includegraphics"
;
if
(
Config_getBool
(
"USE_PDFLATEX"
)
)
{
t
<<
"{"
<<
baseName
<<
".pdf}"
;
}
else
{
t
<<
"{"
<<
baseName
<<
".eps}"
;
t
<<
"{"
<<
baseName
<<
".eps}"
;
}
if
(
hasCaption
)
if
(
hasCaption
)
t
<<
"
\\
caption{"
;
t
<<
"
\\
caption{"
;
else
else
...
...
src/memberdef.cpp
View file @
bcf2f33d
...
@@ -872,7 +872,6 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -872,7 +872,6 @@ void MemberDef::writeDeclaration(OutputList &ol,
{
{
ol
.
startTextLink
(
0
,
anchor
());
ol
.
startTextLink
(
0
,
anchor
());
}
}
parseText
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
endTextLink
();
ol
.
startEmphasis
();
ol
.
startEmphasis
();
ol
.
popGeneratorState
();
ol
.
popGeneratorState
();
...
@@ -1049,7 +1048,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -1049,7 +1048,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{
{
bool
first
=
TRUE
;
bool
first
=
TRUE
;
if
(
m_defTmpArgLists
)
if
(
m_defTmpArgLists
)
// definition has explic
ate
template parameter declarations
// definition has explic
it
template parameter declarations
{
{
QListIterator
<
ArgumentList
>
ali
(
*
m_defTmpArgLists
);
QListIterator
<
ArgumentList
>
ali
(
*
m_defTmpArgLists
);
ArgumentList
*
tal
;
ArgumentList
*
tal
;
...
@@ -1064,7 +1063,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
...
@@ -1064,7 +1063,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
}
}
}
}
}
else
else
// definition gets it template parameters from its class
// (since no definition was found)
{
{
if
(
cd
)
if
(
cd
)
{
{
...
...
src/namespacedef.cpp
View file @
bcf2f33d
...
@@ -72,6 +72,19 @@ void NamespaceDef::insertUsedFile(const char *f)
...
@@ -72,6 +72,19 @@ void NamespaceDef::insertUsedFile(const char *f)
}
}
}
}
void
NamespaceDef
::
addInnerCompound
(
Definition
*
d
)
{
m_innerCompounds
->
append
(
d
->
localName
(),
d
);
if
(
d
->
definitionType
()
==
Definition
::
TypeNamespace
)
{
insertNamespace
((
NamespaceDef
*
)
d
);
}
else
if
(
d
->
definitionType
()
==
Definition
::
TypeClass
)
{
insertClass
((
ClassDef
*
)
d
);
}
}
void
NamespaceDef
::
insertClass
(
ClassDef
*
cd
)
void
NamespaceDef
::
insertClass
(
ClassDef
*
cd
)
{
{
if
(
classSDict
->
find
(
cd
->
name
())
==
0
)
if
(
classSDict
->
find
(
cd
->
name
())
==
0
)
...
@@ -170,6 +183,41 @@ void NamespaceDef::computeAnchors()
...
@@ -170,6 +183,41 @@ void NamespaceDef::computeAnchors()
setAnchors
(
0
,
'a'
,
&
allMemberList
);
setAnchors
(
0
,
'a'
,
&
allMemberList
);
}
}
void
NamespaceDef
::
writeDetailedDocumentation
(
OutputList
&
ol
)
{
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
!
documentation
().
isEmpty
())
{
ol
.
writeRuler
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
//bool latexOn = ol.isEnabled(OutputGenerator::Latex);
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
ol
.
startTextBlock
();
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
if
(
!
documentation
().
isEmpty
())
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
ol
.
newParagraph
();
}
ol
.
endTextBlock
();
}
}
void
NamespaceDef
::
writeDocumentation
(
OutputList
&
ol
)
void
NamespaceDef
::
writeDocumentation
(
OutputList
&
ol
)
{
{
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
QCString
pageTitle
=
name
()
+
" Namespace Reference"
;
...
@@ -196,11 +244,13 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -196,11 +244,13 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol
.
startTextBlock
();
ol
.
startTextBlock
();
OutputList
briefOutput
(
&
ol
);
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
if
(
!
briefDescription
().
isEmpty
())
{
writeDetailedDocumentation
(
ol
);
}
else
if
(
!
briefDescription
().
isEmpty
())
{
{
parseDoc
(
briefOutput
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
briefDescription
());
ol
+=
briefOutput
;
ol
.
writeString
(
"
\n
"
);
ol
.
writeString
(
"
\n
"
);
ol
.
pushGeneratorState
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
...
@@ -227,7 +277,6 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -227,7 +277,6 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
mg
->
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
);
mg
->
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
);
}
}
//allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
//allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
decDefineMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trDefines
(),
0
);
decDefineMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trDefines
(),
0
);
decProtoMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trFuncProtos
(),
0
);
decProtoMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trFuncProtos
(),
0
);
...
@@ -237,36 +286,9 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -237,36 +286,9 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
decVarMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trVariables
(),
0
);
decVarMembers
.
writeDeclarations
(
ol
,
0
,
this
,
0
,
0
,
theTranslator
->
trVariables
(),
0
);
ol
.
endMemberSections
();
ol
.
endMemberSections
();
if
((
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
||
if
(
!
Config_getBool
(
"DETAILS_AT_TOP"
))
!
documentation
().
isEmpty
())
{
{
ol
.
writeRuler
();
writeDetailedDocumentation
(
ol
);
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
//bool latexOn = ol.isEnabled(OutputGenerator::Latex);
//if (latexOn) ol.disable(OutputGenerator::Latex);
ol
.
writeAnchor
(
0
,
"_details"
);
//if (latexOn) ol.enable(OutputGenerator::Latex);
ol
.
popGeneratorState
();
ol
.
startGroupHeader
();
parseText
(
ol
,
theTranslator
->
trDetailedDescription
());
ol
.
endGroupHeader
();
ol
.
startTextBlock
();
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
))
{
ol
+=
briefOutput
;
}
if
(
!
briefDescription
().
isEmpty
()
&&
Config_getBool
(
"REPEAT_BRIEF"
)
&&
!
documentation
().
isEmpty
())
{
ol
.
newParagraph
();
}
if
(
!
documentation
().
isEmpty
())
{
parseDoc
(
ol
,
m_defFileName
,
m_defLine
,
name
(),
0
,
documentation
()
+
"
\n
"
);
ol
.
newParagraph
();
}
ol
.
endTextBlock
();
}
}
docDefineMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
docDefineMembers
.
writeDocumentation
(
ol
,
name
(),
this
,
...
@@ -340,11 +362,6 @@ Definition *NamespaceDef::findInnerCompound(const char *n)
...
@@ -340,11 +362,6 @@ Definition *NamespaceDef::findInnerCompound(const char *n)
return
m_innerCompounds
->
find
(
n
);
return
m_innerCompounds
->
find
(
n
);
}
}
void
NamespaceDef
::
addInnerCompound
(
Definition
*
d
)
{
m_innerCompounds
->
append
(
d
->
localName
(),
d
);
}
void
NamespaceDef
::
addListReferences
()
void
NamespaceDef
::
addListReferences
()
{
{
addRefItem
(
todoId
(),
testId
(),
bugId
(),
addRefItem
(
todoId
(),
testId
(),
bugId
(),
...
...
src/namespacedef.h
View file @
bcf2f33d
...
@@ -43,6 +43,8 @@ class NamespaceDef : public Definition
...
@@ -43,6 +43,8 @@ class NamespaceDef : public Definition
DefType
definitionType
()
{
return
TypeNamespace
;
}
DefType
definitionType
()
{
return
TypeNamespace
;
}
QCString
getOutputFileBase
()
const
;
QCString
getOutputFileBase
()
const
;
void
insertUsedFile
(
const
char
*
fname
);
void
insertUsedFile
(
const
char
*
fname
);
void
writeDetailedDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
writeDocumentation
(
OutputList
&
ol
);
void
insertClass
(
ClassDef
*
cd
);
void
insertClass
(
ClassDef
*
cd
);
...
...
src/pre.l
View file @
bcf2f33d
...
@@ -167,6 +167,26 @@ static FILE *checkAndOpenFile(const QCString &absName)
...
@@ -167,6 +167,26 @@ static FILE *checkAndOpenFile(const QCString &absName)
QFileInfo fi(absName);
QFileInfo fi(absName);
if (fi.exists() && fi.isFile())
if (fi.exists() && fi.isFile())
{
{
// check include stack for absFileName
QStack<FileState> tmpStack;
g_includeStack.setAutoDelete(FALSE);
FileState *fs;
bool alreadyIncluded=FALSE;
while ((fs=g_includeStack.pop()))
{
if (fs->fileName==absName) alreadyIncluded=TRUE;
tmpStack.push(fs);
}
while ((fs=tmpStack.pop()))
{
g_includeStack.push(fs);
}
g_includeStack.setAutoDelete(TRUE);
if (alreadyIncluded) return 0;
if (!Config_getString("INPUT_FILTER").isEmpty())
if (!Config_getString("INPUT_FILTER").isEmpty())
{
{
QCString cmd = Config_getString("INPUT_FILTER")+" "+absName;
QCString cmd = Config_getString("INPUT_FILTER")+" "+absName;
...
@@ -934,6 +954,7 @@ static void readIncludeFile(const QCString &inc)
...
@@ -934,6 +954,7 @@ static void readIncludeFile(const QCString &inc)
// add included by dependency
// add included by dependency
if (g_yyFileDef)
if (g_yyFileDef)
{
{
//printf("Adding include dependency %s->%s\n",oldFileDef->name().data(),incFileName.data());
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
g_yyFileDef->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
}
}
}
}
...
@@ -952,6 +973,7 @@ static void readIncludeFile(const QCString &inc)
...
@@ -952,6 +973,7 @@ static void readIncludeFile(const QCString &inc)
//lineStr.sprintf("# 1 \"%s\" 1\n",g_yyFileName.data());
//lineStr.sprintf("# 1 \"%s\" 1\n",g_yyFileName.data());
//outputArray(lineStr.data(),lineStr.length());
//outputArray(lineStr.data(),lineStr.length());
//fprintf(stderr,"Switching to include file %s\n",incFileName.data());
preYYin=f;
preYYin=f;
yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE));
yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE));
}
}
...
@@ -966,12 +988,13 @@ static void readIncludeFile(const QCString &inc)
...
@@ -966,12 +988,13 @@ static void readIncludeFile(const QCString &inc)
// add included by dependency
// add included by dependency
if (fd)
if (fd)
{
{
//printf("Adding include dependency (2) %s->%s ambig=%d\n",oldFileDef->name().data(),fd->name().data(),ambig);
fd->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
fd->addIncludedByDependency(oldFileDef,oldFileDef->name(),localInclude);
}
}
}
}
if (Debug::isFlagSet(Debug::Preprocessor))
if (Debug::isFlagSet(Debug::Preprocessor))
{
{
msg("#include %s: not found! skipping...\n",incFileName.data());
msg("#include %s: not found
or already included
! skipping...\n",incFileName.data());
//printf("Error: include file %s not found\n",yytext);
//printf("Error: include file %s not found\n",yytext);
}
}
}
}
...
@@ -1751,11 +1774,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
...
@@ -1751,11 +1774,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipSingleQuote>. { g_defText += *yytext; g_defLitText+=yytext; }
<SkipSingleQuote>. { g_defText += *yytext; g_defLitText+=yytext; }
<DefineText>. { g_defText += *yytext; g_defLitText+=yytext; }
<DefineText>. { g_defText += *yytext; g_defLitText+=yytext; }
<<EOF>> {
<<EOF>> {
//
printf(
"End of include file\n");
//
fprintf(stderr,
"End of include file\n");
//printf("Include stack depth=%d\n",g_includeStack.count());
//printf("Include stack depth=%d\n",g_includeStack.count());
if (g_includeStack.isEmpty())
if (g_includeStack.isEmpty())
{
{
//
printf(
"Terminating scanner!\n");
//
fprintf(stderr,
"Terminating scanner!\n");
yyterminate();
yyterminate();
}
}
else
else
...
@@ -1771,7 +1794,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
...
@@ -1771,7 +1794,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yy_delete_buffer( oldBuf );
yy_delete_buffer( oldBuf );
g_yyLineNr=fs->lineNr;
g_yyLineNr=fs->lineNr;
setFileName(fs->fileName.copy());
setFileName(fs->fileName.copy());
//
printf(
"######## FileName %s\n",g_yyFileName.data());
//
fprintf(stderr,
"######## FileName %s\n",g_yyFileName.data());
// TODO: Enable this to deal with file changes due to
// TODO: Enable this to deal with file changes due to
// #include's within { .. } blocks
// #include's within { .. } blocks
...
@@ -1780,8 +1803,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
...
@@ -1780,8 +1803,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
//outputArray(lineStr.data(),lineStr.length());
//outputArray(lineStr.data(),lineStr.length());
delete fs; fs=0;
delete fs; fs=0;
}
}
}
}
<*>"/*" {
<*>"/*" {
...
...
src/rtfgen.cpp
View file @
bcf2f33d
...
@@ -926,10 +926,10 @@ void RTFGenerator::startIndexSection(IndexSections is)
...
@@ -926,10 +926,10 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Introduction
//Introduction
beginRTFChapter
();
beginRTFChapter
();
break
;
break
;
case
isPackageIndex
:
//
case isPackageIndex:
//Package Index
//
//Package Index
beginRTFChapter
();
//
beginRTFChapter();
break
;
//
break;
case
isModuleIndex
:
case
isModuleIndex
:
//Module Index
//Module Index
beginRTFChapter
();
beginRTFChapter
();
...
@@ -955,21 +955,21 @@ void RTFGenerator::startIndexSection(IndexSections is)
...
@@ -955,21 +955,21 @@ void RTFGenerator::startIndexSection(IndexSections is)
//Related Page Index
//Related Page Index
beginRTFChapter
();
beginRTFChapter
();
break
;
break
;
case
isPackageDocumentation
:
//
case isPackageDocumentation:
{
//
{
//Package Documentation
//
//Package Documentation
PackageSDict
::
Iterator
pdi
(
Doxygen
::
packageDict
);
//
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef
*
pd
=
pdi
.
toFirst
();
//
PackageDef *pd=pdi.toFirst();
bool
found
=
FALSE
;
//
bool found=FALSE;
while
(
pd
&&
!
found
)
//
while (pd && !found)
{
//
{
beginRTFChapter
();
//
beginRTFChapter();
found
=
TRUE
;
//
found=TRUE;
++
pdi
;
//
++pdi;
pd
=
pdi
.
current
();
//
pd=pdi.current();
}
//
}
}
//
}
break
;
//
break;
case
isModuleDocumentation
:
case
isModuleDocumentation
:
{
{
//Module Documentation
//Module Documentation
...
@@ -1136,11 +1136,11 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -1136,11 +1136,11 @@ void RTFGenerator::endIndexSection(IndexSections is)
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
t
<<
"main"
;
else
t
<<
"index"
;
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
t
<<
"main"
;
else
t
<<
"index"
;
t
<<
".rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
".rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isPackageIndex
:
//
case isPackageIndex:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
//
t << "\\par " << Rtf_Style_Reset << endl;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trPackageList
()
<<
"}"
<<
endl
;
//
t << "{\\tc \\v " << theTranslator->trPackageList() << "}"<< endl;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
packages.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
//
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"packages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break
;
//
break;
case
isModuleIndex
:
case
isModuleIndex
:
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trModuleIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trModuleIndex
()
<<
"}"
<<
endl
;
...
@@ -1171,22 +1171,22 @@ void RTFGenerator::endIndexSection(IndexSections is)
...
@@ -1171,22 +1171,22 @@ void RTFGenerator::endIndexSection(IndexSections is)
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trPageIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trPageIndex
()
<<
"}"
<<
endl
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
pages.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
pages.rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
break
;
break
;
case
isPackageDocumentation
:
//
case isPackageDocumentation:
{
//
{
PackageSDict
::
Iterator
pdi
(
Doxygen
::
packageDict
);
//
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef
*
pd
=
pdi
.
toFirst
();
//
PackageDef *pd=pdi.toFirst();
t
<<
"{
\\
tc
\\
v "
<<
theTranslator
->
trPackageDocumentation
()
<<
"}"
<<
endl
;
//
t << "{\\tc \\v " << theTranslator->trPackageDocumentation() << "}"<< endl;
while
(
pd
)
//
while (pd)
{
//
{
t
<<
"
\\
par "
<<
Rtf_Style_Reset
<<
endl
;
//
t << "\\par " << Rtf_Style_Reset << endl;
t
<<
"{
\\
field
\\
fldedit{
\\
*
\\
fldinst INCLUDETEXT
\"
"
;
//
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t
<<
pd
->
getOutputFileBase
();
//
t << pd->getOutputFileBase();
t
<<
".rtf
\"
\\\\
*MERGEFORMAT}{
\\
fldrslt includedstuff}}
\n
"
;
//
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
++
pdi
;
//
++pdi;
pd
=
pdi
.
current
();
//
pd=pdi.current();
}
//
}
}
//
}
break
;
//
break;
case
isModuleDocumentation
:
case
isModuleDocumentation
:
{
{
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
GroupSDict
::
Iterator
gli
(
Doxygen
::
groupSDict
);
...
...
src/tagreader.cpp
View file @
bcf2f33d
...
@@ -96,6 +96,7 @@ class TagIncludeInfo
...
@@ -96,6 +96,7 @@ class TagIncludeInfo
public
:
public
:
QString
id
;
QString
id
;
QString
name
;
QString
name
;
QString
text
;
bool
isLocal
;
bool
isLocal
;
};
};
...
@@ -446,6 +447,7 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -446,6 +447,7 @@ class TagFileParser : public QXmlDefaultHandler
{
{
m_curIncludes
=
new
TagIncludeInfo
;
m_curIncludes
=
new
TagIncludeInfo
;
m_curIncludes
->
id
=
attrib
.
value
(
"id"
);
m_curIncludes
->
id
=
attrib
.
value
(
"id"
);
m_curIncludes
->
name
=
attrib
.
value
(
"name"
);
m_curIncludes
->
isLocal
=
attrib
.
value
(
"local"
)
==
"yes"
?
TRUE
:
FALSE
;
m_curIncludes
->
isLocal
=
attrib
.
value
(
"local"
)
==
"yes"
?
TRUE
:
FALSE
;
m_curFile
->
includes
.
append
(
m_curIncludes
);
m_curFile
->
includes
.
append
(
m_curIncludes
);
}
}
...
@@ -457,7 +459,7 @@ class TagFileParser : public QXmlDefaultHandler
...
@@ -457,7 +459,7 @@ class TagFileParser : public QXmlDefaultHandler
}
}
void
endIncludes
()
void
endIncludes
()
{
{
m_curIncludes
->
name
=
m_curString
;
m_curIncludes
->
text
=
m_curString
;
}
}
void
endTemplateArg
()
void
endTemplateArg
()
{
{
...
@@ -1170,16 +1172,21 @@ void TagFileParser::addIncludes()
...
@@ -1170,16 +1172,21 @@ void TagFileParser::addIncludes()
TagIncludeInfo
*
ii
;
TagIncludeInfo
*
ii
;
for
(;(
ii
=
mii
.
current
());
++
mii
)
for
(;(
ii
=
mii
.
current
());
++
mii
)
{
{
//printf("ii->name=`%s'\n",ii->name.data());
FileName
*
ifn
=
Doxygen
::
inputNameDict
->
find
(
ii
->
name
);
FileName
*
ifn
=
Doxygen
::
inputNameDict
->
find
(
ii
->
name
);
ASSERT
(
ifn
!=
0
);
if
(
ifn
)
{
FileNameIterator
ifni
(
*
ifn
);
FileNameIterator
ifni
(
*
ifn
);
FileDef
*
ifd
;
FileDef
*
ifd
;
for
(;(
ifd
=
ifni
.
current
());
++
ifni
)
for
(;(
ifd
=
ifni
.
current
());
++
ifni
)
{
{
printf
(
"ifd->getOutputFileBase()=%s ii->id=%s
\n
"
,
//
printf("ifd->getOutputFileBase()=%s ii->id=%s\n",
ifd
->
getOutputFileBase
().
data
(),
ii
->
id
.
data
());
//
ifd->getOutputFileBase().data(),ii->id.data());
if
(
ifd
->
getOutputFileBase
()
==
QCString
(
ii
->
id
))
if
(
ifd
->
getOutputFileBase
()
==
QCString
(
ii
->
id
))
{
{
fd
->
addIncludeDependency
(
ifd
,
ii
->
name
,
ii
->
isLocal
);
fd
->
addIncludeDependency
(
ifd
,
ii
->
text
,
ii
->
isLocal
);
}
}
}
}
}
}
}
...
...
src/translator_br.h
View file @
bcf2f33d
...
@@ -13,7 +13,12 @@
...
@@ -13,7 +13,12 @@
* Brazilian Portuguese version by
* Brazilian Portuguese version by
* Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br>
* Fabio "FJTC" Jun Takada Chino <chino@icmc.sc.usp.br>
* http://www.icmc.sc.usp.br/~chino
* http://www.icmc.sc.usp.br/~chino
* Version: 1.2.13 (2002/01/24)
* Version: 1.2.13.2 (2002/05/10)
*
* History:
* 1.2.13.2 (2002/05/10):
* - Latex Babel package language name fixed.
* - "Estrura" bug identified and fixed (Thanks to Jorge Ramos).
*/
*/
#ifndef TRANSLATOR_BR_H
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
...
@@ -33,9 +38,7 @@ class TranslatorBrazilian: public Translator
...
@@ -33,9 +38,7 @@ class TranslatorBrazilian: public Translator
*/
*/
virtual
QCString
idLanguage
()
virtual
QCString
idLanguage
()
{
{
/* I'm not sure if it is correct. I did not found the documentation
return
"brazil"
;
of BabelPackage. If you know the right string, please contact me. */
return
"portuges"
;
}
}
/*! Used to get the command(s) for the language support. This method
/*! Used to get the command(s) for the language support. This method
...
@@ -737,7 +740,7 @@ class TranslatorBrazilian: public Translator
...
@@ -737,7 +740,7 @@ class TranslatorBrazilian: public Translator
switch
(
compType
)
switch
(
compType
)
{
{
case
ClassDef
:
:
Class
:
result
+=
"classe "
;
break
;
case
ClassDef
:
:
Class
:
result
+=
"classe "
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"estrura "
;
break
;
case
ClassDef
:
:
Struct
:
result
+=
"estru
tu
ra "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"união "
;
break
;
case
ClassDef
:
:
Union
:
result
+=
"união "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface "
;
break
;
case
ClassDef
:
:
Interface
:
result
+=
"interface "
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exceção "
;
break
;
case
ClassDef
:
:
Exception
:
result
+=
"exceção "
;
break
;
...
...
src/translator_tw.h
View file @
bcf2f33d
...
@@ -292,11 +292,11 @@ class TranslatorChinesetraditional : public Translator
...
@@ -292,11 +292,11 @@ class TranslatorChinesetraditional : public Translator
{
{
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_FOR_C"
))
{
{
result
+=
"這些結構/聯合型態
是屬於
:"
;
result
+=
"這些結構/聯合型態
所屬
:"
;
}
}
else
else
{
{
result
+=
"這些類別
是屬於
:"
;
result
+=
"這些類別
所屬
:"
;
}
}
}
}
return
result
;
return
result
;
...
@@ -647,7 +647,7 @@ class TranslatorChinesetraditional : public Translator
...
@@ -647,7 +647,7 @@ class TranslatorChinesetraditional : public Translator
case ClassDef::Exception: result+="
例外
"; break;
case ClassDef::Exception: result+="
例外
"; break;
}
}
if (isTemplate) result+="
樣版
";
if (isTemplate) result+="
樣版
";
result+="
參考
";
result+="
參考
文件
";
return result;
return result;
}
}
...
@@ -1192,7 +1192,7 @@ class TranslatorChinesetraditional : public Translator
...
@@ -1192,7 +1192,7 @@ class TranslatorChinesetraditional : public Translator
/*! Text shown before a multi-line define */
/*! Text shown before a multi-line define */
virtual
QCString
trDefineValue
()
virtual
QCString
trDefineValue
()
{
{
return
"
值
:"
;
return
"
巨集內容
:"
;
}
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
...
...
src/util.cpp
View file @
bcf2f33d
...
@@ -1301,10 +1301,17 @@ void stripIrrelevantConstVolatile(QCString &s)
...
@@ -1301,10 +1301,17 @@ void stripIrrelevantConstVolatile(QCString &s)
if
(
i
!=-
1
)
if
(
i
!=-
1
)
{
{
// no & or * after the const
// no & or * after the const
if
(
s
.
find
(
'*'
,
i
+
6
)
==-
1
&&
s
.
find
(
'&'
,
i
+
6
)
==-
1
)
int
i1
=
s
.
find
(
'*'
,
i
+
6
);
int
i2
=
s
.
find
(
'&'
,
i
+
6
);
if
(
i1
==-
1
&&
i2
==-
1
)
{
{
s
=
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
6
);
s
=
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
6
);
}
}
else
if
((
i1
!=-
1
&&
i
<
i1
)
||
(
i2
!=-
1
&&
i
<
i2
))
// const before * or &
{
// move const to front
s
=
(
QCString
)
"const "
+
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
6
);
}
}
}
// strip occurrences of volatile
// strip occurrences of volatile
...
@@ -1312,10 +1319,17 @@ void stripIrrelevantConstVolatile(QCString &s)
...
@@ -1312,10 +1319,17 @@ void stripIrrelevantConstVolatile(QCString &s)
if
(
i
!=-
1
)
if
(
i
!=-
1
)
{
{
// no & or * after the volatile
// no & or * after the volatile
if
(
s
.
find
(
'*'
,
i
+
9
)
==-
1
&&
s
.
find
(
'&'
,
i
+
9
)
==-
1
)
int
i1
=
s
.
find
(
'*'
,
i
+
9
);
int
i2
=
s
.
find
(
'&'
,
i
+
9
);
if
(
i1
==-
1
&&
i2
==-
1
)
{
{
s
=
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
9
);
s
=
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
9
);
}
}
else
if
((
i1
!=-
1
&&
i
<
i1
)
||
(
i2
!=-
1
&&
i
<
i2
))
// volatile before * or &
{
// move volatile to front
s
=
(
QCString
)
"volatile "
+
s
.
left
(
i
)
+
s
.
right
(
s
.
length
()
-
i
-
9
);
}
}
}
}
}
...
@@ -1442,6 +1456,9 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
...
@@ -1442,6 +1456,9 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
}
}
}
}
//printf("2. srcA=%s:%s dstA=%s:%s\n",srcAType.data(),srcA->name.data(),
// dstAType.data(),dstA->name.data());
if
(
!
srcA
->
name
.
isEmpty
()
&&
!
dstA
->
type
.
isEmpty
()
&&
if
(
!
srcA
->
name
.
isEmpty
()
&&
!
dstA
->
type
.
isEmpty
()
&&
(
srcAType
+
" "
+
srcA
->
name
)
==
dstAType
)
(
srcAType
+
" "
+
srcA
->
name
)
==
dstAType
)
{
{
...
@@ -1455,8 +1472,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
...
@@ -1455,8 +1472,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
return
TRUE
;
return
TRUE
;
}
}
//printf("2. srcA=%s:%s dstA=%s:%s\n",srcAType.data(),srcA->name.data(),
// dstAType.data(),dstA->name.data());
uint
srcPos
=
0
,
dstPos
=
0
;
uint
srcPos
=
0
,
dstPos
=
0
;
bool
equal
=
TRUE
;
bool
equal
=
TRUE
;
...
@@ -1567,242 +1582,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
...
@@ -1567,242 +1582,6 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
return
TRUE
;
return
TRUE
;
}
}
#if 0
static void mergeArgument(Argument *srcA,Argument *dstA,
const QCString &className,
const QCString &namespaceName,
NamespaceList *usingNamespaces,
ClassList *usingClasses)
{
//printf("merge argument start %s:%s <-> %s:%s\n",
// srcA->type.data(),srcA->name.data(),
// dstA->type.data(),dstA->name.data());
if ((srcA->type=="const" || srcA->type=="volatile") && !srcA->name.isEmpty())
{
srcA->type+=" ";
srcA->type+=srcA->name;
srcA->name.resize(0);
}
if ((dstA->type=="const" || dstA->type=="volatile") && !dstA->name.isEmpty())
{
dstA->type+=" ";
dstA->type+=dstA->name;
dstA->name.resize(0);
}
if (srcA->name=="const" || srcA->name=="volatile")
{
srcA->type+=" ";
srcA->type+=srcA->name;
srcA->type=removeRedundantWhiteSpace(srcA->type);
srcA->name.resize(0);
}
if (dstA->name=="const" || dstA->name=="volatile")
{
dstA->type+=" ";
dstA->type+=dstA->name;
dstA->type=removeRedundantWhiteSpace(dstA->type);
dstA->name.resize(0);
}
QCString srcAType=trimTemplateSpecifiers(namespaceName,className,srcA->type);
QCString dstAType=trimTemplateSpecifiers(namespaceName,className,dstA->type);
if (srcAType.left(6)=="class ") srcAType=srcAType.right(srcAType.length()-6);
if (dstAType.left(6)=="class ") dstAType=dstAType.right(dstAType.length()-6);
stripIrrelevantConstVolatile(srcAType);
stripIrrelevantConstVolatile(dstAType);
if (srcAType!=dstAType) // check if the argument only differs on name
{
//printf("scope=`%s': `%s' <=> `%s'\n",className.data(),srcAType.data(),dstAType.data());
// remove a namespace scope that is only in one type
// (assuming a using statement was used)
trimNamespaceScope(srcAType,dstAType,namespaceName);
//QCString srcScope;
//QCString dstScope;
// strip redundant scope specifiers
if (!className.isEmpty())
{
srcAType=trimScope(className,srcAType);
dstAType=trimScope(className,dstAType);
//printf("trimScope: `%s' <=> `%s'\n",srcAType.data(),dstAType.data());
ClassDef *cd;
if (!namespaceName.isEmpty())
cd=getClass(namespaceName+"::"+className);
else
cd=getClass(className);
if (cd && cd->baseClasses()->count()>0)
{
trimBaseClassScope(cd->baseClasses(),srcAType);
trimBaseClassScope(cd->baseClasses(),dstAType);
}
//printf("trimBaseClassScope: `%s' <=> `%s'\n",srcAType.data(),dstAType.data());
}
if (!namespaceName.isEmpty())
{
srcAType=trimScope(namespaceName,srcAType);
dstAType=trimScope(namespaceName,dstAType);
}
if (usingNamespaces && usingNamespaces->count()>0)
{
NamespaceListIterator nli(*usingNamespaces);
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
srcAType=trimScope(nd->name(),srcAType);
dstAType=trimScope(nd->name(),dstAType);
}
}
if (usingClasses && usingClasses->count()>0)
{
ClassListIterator cli(*usingClasses);
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
srcAType=trimScope(cd->name(),srcAType);
dstAType=trimScope(cd->name(),dstAType);
}
}
if (!srcA->name.isEmpty() && !dstA->type.isEmpty() &&
(srcAType+" "+srcA->name)==dstAType)
{
srcA->type=srcAType+" "+srcA->name;
srcA->name.resize(0);
goto done;
}
else if (!dstA->name.isEmpty() && !srcA->type.isEmpty() &&
(dstAType+" "+dstA->name)==srcAType)
{
dstA->type=dstAType+" "+dstA->name;
dstA->name.resize(0);
goto done;
}
//printf("srcA=%s::%s dstA=%s::%s\n",srcAType.data(),srcA->name.data(),
// dstAType.data(),dstA->name.data());
uint srcPos=0,dstPos=0;
bool equal=TRUE;
while (srcPos<srcAType.length() && dstPos<dstAType.length() && equal)
{
equal=srcAType.at(srcPos)==dstAType.at(dstPos);
if (equal) srcPos++,dstPos++;
}
if (srcPos<srcAType.length() && dstPos<dstAType.length())
{
// if nothing matches or the match ends in the middle or at the
// end of a string then there is no match
int srcStart=srcPos;
int dstStart=dstPos;
if (isId(srcAType.at(srcPos)) && isId(dstAType.at(dstPos)))
{
// find the start of the name
while (srcStart>=0 && isId(srcAType.at(srcStart))) srcStart--;
while (dstStart>=0 && isId(dstAType.at(dstStart))) dstStart--;
if (srcStart>0) // move the name from the type to the name field
{
srcA->name=srcAType.right(srcAType.length()-srcStart-1);
srcA->type=srcAType.left(srcStart+1).stripWhiteSpace();
}
if (dstStart>0) // move the name from the type to the name field
{
dstA->name=dstAType.right(dstAType.length()-dstStart-1);
dstA->type=dstAType.left(dstStart+1).stripWhiteSpace();
}
}
else
{
dstA->name=dstAType.right(dstAType.length()-dstStart);
dstA->type=dstAType.left(dstStart).stripWhiteSpace();
srcA->name=srcAType.right(dstAType.length()-srcStart);
srcA->type=srcAType.left(srcStart).stripWhiteSpace();
}
}
else if (dstPos<dstAType.length())
{
if (!isspace(dstAType.at(dstPos))) // maybe the names differ
{
int startPos=dstPos;
while (startPos>=0 && isId(dstAType.at(startPos))) startPos--;
if (startPos>0)
{
dstA->name=dstAType.right(dstAType.length()-startPos-1);
dstA->type=dstAType.left(startPos+1).stripWhiteSpace();
}
}
else // maybe dst has a name while src has not
{
dstPos++;
int startPos=dstPos;
dstA->name=dstAType.right(dstAType.length()-startPos);
dstA->type=dstAType.left(startPos).stripWhiteSpace();
}
}
else if (srcPos<srcAType.length())
{
if (!isspace(srcAType.at(srcPos))) // maybe the names differ
{
int startPos=srcPos;
while (startPos>=0 && isId(srcAType.at(startPos))) startPos--;
if (startPos>0)
{
srcA->name=srcAType.right(srcAType.length()-startPos-1);
srcA->type=srcAType.left(startPos+1).stripWhiteSpace();
}
}
else // maybe src has a name while dst has not
{
srcPos++;
int startPos=srcPos;
srcA->name=srcAType.right(srcAType.length()-startPos);
srcA->type=srcAType.left(startPos).stripWhiteSpace();
}
}
goto done;
}
//printf("match exactly\n");
if (srcA->name.isEmpty() && dstA->name.isEmpty())
// arguments match exactly but no name ->
// see if we can find the name
{
int i=srcAType.length()-1;
while (i>=0 && isId(srcAType.at(i))) i--;
if (i>0 && i<(int)srcAType.length()-1 && srcAType.at(i)!=':')
// there is (probably) a name
{
QCString srcAName=srcAType.right(srcAType.length()-i-1);
QCString dstAName=dstAType.right(dstAType.length()-i-1);
if (srcAName!="const" && srcAName!="volatile" &&
dstAName!="const" && dstAName!="volatile")
{
srcA->name=srcAName;
srcA->type=srcAType.left(i+1).stripWhiteSpace();
dstA->name=dstAName;
dstA->type=dstAType.left(i+1).stripWhiteSpace();
}
}
}
else if (!dstA->name.isEmpty())
{
srcA->name = dstA->name.copy();
}
else if (!srcA->name.isEmpty())
{
dstA->name = srcA->name.copy();
}
done:
//printf("merge argument result %s:%s <-> %s:%s\n",
// srcA->type.data(),srcA->name.data(),
// dstA->type.data(),dstA->name.data());
return;
}
#endif
/*!
/*!
* Matches the arguments list srcAl with the argument list dstAl
* Matches the arguments list srcAl with the argument list dstAl
...
@@ -1902,15 +1681,6 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
...
@@ -1902,15 +1681,6 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
return
FALSE
;
return
FALSE
;
}
}
}
}
// merge/correct argument type/names
for
(
srcAli
.
toFirst
(),
dstAli
.
toFirst
();
(
srcA
=
srcAli
.
current
(),
dstA
=
dstAli
.
current
());
++
srcAli
,
++
dstAli
)
{
//mergeArgument(srcA,dstA,className,namespaceName,
// usingNamespaces,usingClasses);
}
MATCH
MATCH
return
TRUE
;
// all arguments match
return
TRUE
;
// all arguments match
}
}
...
@@ -1962,6 +1732,28 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
...
@@ -1962,6 +1732,28 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
srcA
->
name
=
dstA
->
name
.
copy
();
srcA
->
name
=
dstA
->
name
.
copy
();
}
}
}
}
else
{
//printf("merging %s:%s <-> %s:%s\n",srcA->type.data(),srcA->name.data(),dstA->type.data(),dstA->name.data());
if
(
srcA
->
type
+
" "
+
srcA
->
name
==
dstA
->
type
)
// "unsigned long:int" <-> "unsigned long int:bla"
{
srcA
->
type
+=
" "
+
srcA
->
name
;
srcA
->
name
=
dstA
->
name
;
}
else
if
(
dstA
->
type
+
" "
+
dstA
->
name
==
srcA
->
type
)
// "unsigned long int bla" <-> "unsigned long int"
{
dstA
->
type
+=
" "
+
dstA
->
name
;
dstA
->
name
=
srcA
->
name
;
}
else
if
(
srcA
->
name
.
isEmpty
()
&&
!
dstA
->
name
.
isEmpty
())
{
srcA
->
name
=
dstA
->
name
;
}
else
if
(
dstA
->
name
.
isEmpty
()
&&
!
srcA
->
name
.
isEmpty
())
{
dstA
->
name
=
srcA
->
name
;
}
}
int
i1
=
srcA
->
type
.
find
(
"::"
),
int
i1
=
srcA
->
type
.
find
(
"::"
),
i2
=
dstA
->
type
.
find
(
"::"
),
i2
=
dstA
->
type
.
find
(
"::"
),
j1
=
srcA
->
type
.
length
()
-
i1
-
2
,
j1
=
srcA
->
type
.
length
()
-
i1
-
2
,
...
@@ -2248,7 +2040,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2248,7 +2040,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
{
QList
<
MemberDef
>
members
;
QList
<
MemberDef
>
members
;
//printf(" Function with global scope `%s'
args=`%s'\n",namespace
Name.data(),args);
//printf(" Function with global scope `%s'
name `%s' args=`%s'\n",namespaceName.data(),member
Name.data(),args);
MemberListIterator
mli
(
*
mn
);
MemberListIterator
mli
(
*
mn
);
for
(
mli
.
toFirst
();(
md
=
mli
.
current
());
++
mli
)
for
(
mli
.
toFirst
();(
md
=
mli
.
current
());
++
mli
)
{
{
...
@@ -2280,7 +2072,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2280,7 +2072,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
}
}
}
}
}
if
(
!
strcmp
(
args
,
"()"
))
if
(
members
.
count
()
!=
1
&&
!
strcmp
(
args
,
"()"
))
{
{
// no exact match found, but if args="()" an arbitrary
// no exact match found, but if args="()" an arbitrary
// member will do
// member will do
...
@@ -2288,8 +2080,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2288,8 +2080,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
while
(
md
)
while
(
md
)
{
{
//printf("Found member `%s'\n",md->name().data());
//printf("Found member `%s'\n",md->name().data());
if
(
1
/* md->isLinkable() */
)
{
//printf("member is linkable md->name()=`%s'\n",md->name().data());
//printf("member is linkable md->name()=`%s'\n",md->name().data());
fd
=
md
->
getFileDef
();
fd
=
md
->
getFileDef
();
gd
=
md
->
getGroupDef
();
gd
=
md
->
getGroupDef
();
...
@@ -2299,7 +2089,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2299,7 +2089,6 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
{
members
.
append
(
md
);
members
.
append
(
md
);
}
}
}
md
=
mn
->
prev
();
md
=
mn
->
prev
();
}
}
}
}
...
@@ -2309,9 +2098,15 @@ bool getDefs(const QCString &scName,const QCString &memberName,
...
@@ -2309,9 +2098,15 @@ bool getDefs(const QCString &scName,const QCString &memberName,
}
}
else
if
(
members
.
count
()
>
1
)
else
if
(
members
.
count
()
>
1
)
{
{
//printf("Found more than one matching member!\n");
// use some C scoping rules to determine the correct link
// use some C scoping rules to determine the correct link
// 1. member in current file
// 1. member in current file
// 2. non-static member in different file
// 2. non-static member in different file
if
(
currentFile
==
0
)
{
bool
ambig
;
currentFile
=
findFileDef
(
Doxygen
::
inputNameDict
,
namespaceName
,
ambig
);
}
MemberDef
*
bmd
=
0
;
MemberDef
*
bmd
=
0
;
for
(
md
=
members
.
first
();
md
;
md
=
members
.
next
())
for
(
md
=
members
.
first
();
md
;
md
=
members
.
next
())
{
{
...
@@ -2776,7 +2571,11 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
...
@@ -2776,7 +2571,11 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
{
{
if
(
fn
->
count
()
==
1
)
if
(
fn
->
count
()
==
1
)
{
{
return
fn
->
getFirst
();
FileDef
*
fd
=
fn
->
getFirst
();
if
(
path
.
isEmpty
()
||
fd
->
getPath
().
right
(
path
.
length
())
==
path
)
{
return
fd
;
}
}
}
else
// file name alone is ambigious
else
// file name alone is ambigious
{
{
...
...
src/xmlgen.cpp
View file @
bcf2f33d
...
@@ -76,6 +76,7 @@ QCString sectionTypeToString(BaseOutputDocInterface::SectionTypes t)
...
@@ -76,6 +76,7 @@ QCString sectionTypeToString(BaseOutputDocInterface::SectionTypes t)
return
"illegal"
;
return
"illegal"
;
}
}
inline
void
writeXMLString
(
QTextStream
&
t
,
const
char
*
s
)
inline
void
writeXMLString
(
QTextStream
&
t
,
const
char
*
s
)
{
{
t
<<
convertToXML
(
s
);
t
<<
convertToXML
(
s
);
...
@@ -707,14 +708,14 @@ class XMLGenerator : public OutputDocInterface
...
@@ -707,14 +708,14 @@ class XMLGenerator : public OutputDocInterface
{
{
XML_DB
((
"(writeAnchor)
\n
"
));
XML_DB
((
"(writeAnchor)
\n
"
));
startParMode
();
startParMode
();
m_t
<<
"<anchor id=
\"
"
<<
id
<<
"_"
<<
name
<<
"
\"
/>"
;
m_t
<<
"<anchor id=
\"
"
<<
id
<<
"_
1
"
<<
name
<<
"
\"
/>"
;
}
}
void
writeSectionRef
(
const
char
*
,
const
char
*
id
,
void
writeSectionRef
(
const
char
*
,
const
char
*
id
,
const
char
*
name
,
const
char
*
text
)
const
char
*
name
,
const
char
*
text
)
{
{
XML_DB
((
"(writeSectionRef)
\n
"
));
XML_DB
((
"(writeSectionRef)
\n
"
));
startParMode
();
startParMode
();
m_t
<<
"<link linkend=
\"
"
<<
id
<<
"_"
<<
name
<<
"
\"
>"
;
m_t
<<
"<link linkend=
\"
"
<<
id
<<
"_
1
"
<<
name
<<
"
\"
>"
;
docify
(
text
);
docify
(
text
);
m_t
<<
"</link>"
;
m_t
<<
"</link>"
;
}
}
...
@@ -773,7 +774,7 @@ class XMLGenerator : public OutputDocInterface
...
@@ -773,7 +774,7 @@ class XMLGenerator : public OutputDocInterface
void
endTextLink
()
void
endTextLink
()
{
{
XML_DB
((
"(endTextLink)
\n
"
));
XML_DB
((
"(endTextLink)
\n
"
));
m_t
<<
"<ulink>"
;
m_t
<<
"<
/
ulink>"
;
}
}
void
startPageRef
()
void
startPageRef
()
{
{
...
@@ -938,6 +939,56 @@ class XMLGenerator : public OutputDocInterface
...
@@ -938,6 +939,56 @@ class XMLGenerator : public OutputDocInterface
friend
void
writeXMLCodeBlock
(
QTextStream
&
t
,
FileDef
*
fd
);
friend
void
writeXMLCodeBlock
(
QTextStream
&
t
,
FileDef
*
fd
);
};
};
static
void
writeTemplateArgumentList
(
ArgumentList
*
al
,
QTextStream
&
t
,
const
char
*
name
,
int
indent
)
{
QCString
indentStr
;
indentStr
.
fill
(
' '
,
indent
);
if
(
al
)
{
t
<<
indentStr
<<
"<templateparamlist>"
<<
endl
;
ArgumentListIterator
ali
(
*
al
);
Argument
*
a
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
t
<<
indentStr
<<
" <param>"
<<
endl
;
if
(
!
a
->
type
.
isEmpty
())
{
t
<<
indentStr
<<
" <type>"
;
linkifyText
(
TextGeneratorXMLImpl
(
t
),
name
,
0
,
a
->
type
);
t
<<
"</type>"
<<
endl
;
}
if
(
!
a
->
name
.
isEmpty
())
{
t
<<
indentStr
<<
" <declname>"
<<
a
->
name
<<
"</declname>"
<<
endl
;
t
<<
indentStr
<<
" <defname>"
<<
a
->
name
<<
"</defname>"
<<
endl
;
}
if
(
!
a
->
defval
.
isEmpty
())
{
t
<<
indentStr
<<
" <defval>"
;
linkifyText
(
TextGeneratorXMLImpl
(
t
),
name
,
0
,
a
->
defval
);
t
<<
"</defval>"
<<
endl
;
}
t
<<
indentStr
<<
" </param>"
<<
endl
;
}
t
<<
indentStr
<<
"</templateparamlist>"
<<
endl
;
}
}
static
void
writeMemberTemplateLists
(
MemberDef
*
md
,
QTextStream
&
t
)
{
ClassDef
*
cd
=
md
->
getClassDef
();
const
char
*
cname
=
cd
?
cd
->
name
().
data
()
:
0
;
if
(
md
->
templateArguments
())
// function template prefix
{
writeTemplateArgumentList
(
md
->
templateArguments
(),
t
,
cname
,
8
);
}
}
static
void
writeTemplateList
(
ClassDef
*
cd
,
QTextStream
&
t
)
{
writeTemplateArgumentList
(
cd
->
templateArguments
(),
t
,
cd
->
name
(),
4
);
}
static
void
writeXMLDocBlock
(
QTextStream
&
t
,
static
void
writeXMLDocBlock
(
QTextStream
&
t
,
const
QCString
&
fileName
,
const
QCString
&
fileName
,
int
lineNr
,
int
lineNr
,
...
@@ -1021,7 +1072,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -1021,7 +1072,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
// + source references
// + source references
// + source referenced by
// + source referenced by
// - body code
// - body code
//
-
template arguments
//
+
template arguments
// (templateArguments(), definitionTemplateParameterLists())
// (templateArguments(), definitionTemplateParameterLists())
if
(
md
->
memberType
()
==
MemberDef
::
EnumValue
)
return
;
if
(
md
->
memberType
()
==
MemberDef
::
EnumValue
)
return
;
...
@@ -1091,6 +1142,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -1091,6 +1142,10 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
md
->
memberType
()
!=
MemberDef
::
Enumeration
md
->
memberType
()
!=
MemberDef
::
Enumeration
)
)
{
{
if
(
md
->
memberType
()
!=
MemberDef
::
Typedef
)
{
writeMemberTemplateLists
(
md
,
t
);
}
QCString
typeStr
=
md
->
typeString
();
//replaceAnonymousScopes(md->typeString());
QCString
typeStr
=
md
->
typeString
();
//replaceAnonymousScopes(md->typeString());
t
<<
" <type>"
;
t
<<
" <type>"
;
linkifyText
(
TextGeneratorXMLImpl
(
t
),
scopeName
,
md
->
name
(),
typeStr
);
linkifyText
(
TextGeneratorXMLImpl
(
t
),
scopeName
,
md
->
name
(),
typeStr
);
...
@@ -1278,44 +1333,6 @@ static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t,
...
@@ -1278,44 +1333,6 @@ static void generateXMLSection(Definition *d,QTextStream &ti,QTextStream &t,
t
<<
" </sectiondef>"
<<
endl
;
t
<<
" </sectiondef>"
<<
endl
;
}
}
static
void
writeTemplateLists
(
Definition
*
d
,
QTextStream
&
t
)
{
if
(
d
->
definitionType
()
==
Definition
::
TypeClass
)
{
if
(
d
->
getOuterScope
())
writeTemplateLists
(
d
->
getOuterScope
(),
t
);
ClassDef
*
cd
=
(
ClassDef
*
)
d
;
ArgumentList
*
al
=
cd
->
templateArguments
();
if
(
al
)
{
t
<<
" <templateparamlist>"
<<
endl
;
ArgumentListIterator
ali
(
*
al
);
Argument
*
a
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
t
<<
" <param>"
<<
endl
;
if
(
!
a
->
type
.
isEmpty
())
{
t
<<
" <type>"
;
linkifyText
(
TextGeneratorXMLImpl
(
t
),
d
->
name
(),
0
,
a
->
type
);
t
<<
"</type>"
<<
endl
;
}
if
(
!
a
->
name
.
isEmpty
())
{
t
<<
" <name>"
<<
a
->
name
<<
"</name>"
<<
endl
;
}
if
(
!
a
->
defval
.
isEmpty
())
{
t
<<
" <defval>"
;
linkifyText
(
TextGeneratorXMLImpl
(
t
),
d
->
name
(),
0
,
a
->
defval
);
t
<<
"</defval>"
<<
endl
;
}
t
<<
" </param>"
<<
endl
;
}
t
<<
" </templateparamlist>"
<<
endl
;
}
}
}
static
void
writeListOfAllMembers
(
ClassDef
*
cd
,
QTextStream
&
t
)
static
void
writeListOfAllMembers
(
ClassDef
*
cd
,
QTextStream
&
t
)
{
{
t
<<
" <listofallmembers>"
<<
endl
;
t
<<
" <listofallmembers>"
<<
endl
;
...
@@ -1333,7 +1350,7 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
...
@@ -1333,7 +1350,7 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
if
(
d
==
0
)
d
=
cd
;
if
(
d
==
0
)
d
=
cd
;
Protection
prot
=
mi
->
prot
;
Protection
prot
=
mi
->
prot
;
Specifier
virt
=
md
->
virtualness
();
Specifier
virt
=
md
->
virtualness
();
t
<<
" <member refid=
\"
"
<<
d
->
getOutputFileBase
()
<<
"_"
<<
t
<<
" <member refid=
\"
"
<<
d
->
getOutputFileBase
()
<<
"_
1
"
<<
md
->
anchor
()
<<
"
\"
prot=
\"
"
;
md
->
anchor
()
<<
"
\"
prot=
\"
"
;
switch
(
prot
)
switch
(
prot
)
{
{
...
@@ -1351,7 +1368,7 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
...
@@ -1351,7 +1368,7 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
t
<<
"
\"
"
;
t
<<
"
\"
"
;
if
(
!
mi
->
ambiguityResolutionScope
.
isEmpty
())
if
(
!
mi
->
ambiguityResolutionScope
.
isEmpty
())
{
{
t
<<
" ambiguityscope=
\"
"
<<
mi
->
ambiguityResolutionScope
<<
"
\"
"
;
t
<<
" ambiguityscope=
\"
"
<<
convertToXML
(
mi
->
ambiguityResolutionScope
)
<<
"
\"
"
;
}
}
t
<<
"><scope>"
<<
convertToXML
(
cd
->
name
())
<<
"</scope><name>"
<<
t
<<
"><scope>"
<<
convertToXML
(
cd
->
name
())
<<
"</scope><name>"
<<
convertToXML
(
md
->
name
())
<<
"</name></member>"
<<
endl
;
convertToXML
(
md
->
name
())
<<
"</name></member>"
<<
endl
;
...
@@ -1425,7 +1442,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1425,7 +1442,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
case
Virtual
:
t
<<
"virtual"
;
break
;
case
Virtual
:
t
<<
"virtual"
;
break
;
case
Pure
:
t
<<
"pure-virtual"
;
break
;
case
Pure
:
t
<<
"pure-virtual"
;
break
;
}
}
t
<<
"
\"
/>"
<<
endl
;
t
<<
"
\"
>"
<<
convertToXML
(
bcd
->
classDef
->
displayName
())
<<
"</basecompoundref>"
<<
endl
;
}
}
}
}
if
(
cd
->
subClasses
()
->
count
()
>
0
)
if
(
cd
->
subClasses
()
->
count
()
>
0
)
...
@@ -1450,7 +1468,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1450,7 +1468,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
case
Virtual
:
t
<<
"virtual"
;
break
;
case
Virtual
:
t
<<
"virtual"
;
break
;
case
Pure
:
t
<<
"pure-virtual"
;
break
;
case
Pure
:
t
<<
"pure-virtual"
;
break
;
}
}
t
<<
"
\"
/>"
<<
endl
;
t
<<
"
\"
>"
<<
convertToXML
(
bcd
->
classDef
->
displayName
())
<<
"</basecompoundref>"
<<
endl
;
}
}
}
}
...
@@ -1465,7 +1484,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1465,7 +1484,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
<<
"
\"
>"
<<
convertToXML
(
cd
->
name
())
<<
"</innerclass>"
<<
endl
;
}
}
}
}
writeTemplateList
s
(
cd
,
t
);
writeTemplateList
(
cd
,
t
);
writeListOfAllMembers
(
cd
,
t
);
writeListOfAllMembers
(
cd
,
t
);
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
memberGroupSDict
);
MemberGroup
*
mg
;
MemberGroup
*
mg
;
...
@@ -1834,6 +1853,18 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
...
@@ -1834,6 +1853,18 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
}
}
}
}
GroupList
*
gl
=
gd
->
getSubGroups
();
if
(
gl
)
{
GroupListIterator
gli
(
*
gl
);
GroupDef
*
sgd
;
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
{
t
<<
" <innergroup refid=
\"
"
<<
gd
->
getOutputFileBase
()
<<
"
\"
/>"
<<
convertToXML
(
sgd
->
groupTitle
())
<<
"</innergroup>"
<<
endl
;
}
}
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
memberGroupSDict
);
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
memberGroupSDict
);
MemberGroup
*
mg
;
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment