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
eed68005
Commit
eed68005
authored
Aug 12, 2001
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.9-20010812
parent
0c6e5ac9
Changes
42
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
592 additions
and
394 deletions
+592
-394
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
Doxyfile
addon/xmlparse/Doxyfile
+3
-3
basehandler.h
addon/xmlparse/basehandler.h
+1
-1
compoundhandler.cpp
addon/xmlparse/compoundhandler.cpp
+4
-0
dochandler.cpp
addon/xmlparse/dochandler.cpp
+75
-1
dochandler.h
addon/xmlparse/dochandler.h
+38
-4
main.cpp
addon/xmlparse/main.cpp
+11
-8
memberhandler.cpp
addon/xmlparse/memberhandler.cpp
+4
-0
commands.doc
doc/commands.doc
+10
-0
config.doc
doc/config.doc
+7
-0
index.doc
doc/index.doc
+3
-1
preprocessing.doc
doc/preprocessing.doc
+49
-18
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
qtools.pro.in
qtools/qtools.pro.in
+1
-1
classdef.cpp
src/classdef.cpp
+99
-24
classdef.h
src/classdef.h
+9
-18
config.l
src/config.l
+7
-0
definition.cpp
src/definition.cpp
+5
-1
definition.h
src/definition.h
+1
-1
doc.l
src/doc.l
+3
-3
dot.cpp
src/dot.cpp
+46
-186
dot.h
src/dot.h
+2
-2
doxygen.cpp
src/doxygen.cpp
+97
-64
entry.h
src/entry.h
+2
-1
htmlgen.cpp
src/htmlgen.cpp
+2
-2
htmlgen.h
src/htmlgen.h
+4
-3
index.cpp
src/index.cpp
+9
-9
latexgen.h
src/latexgen.h
+2
-1
mangen.h
src/mangen.h
+1
-1
memberdef.cpp
src/memberdef.cpp
+42
-10
memberdef.h
src/memberdef.h
+1
-1
outputgen.h
src/outputgen.h
+2
-1
outputlist.cpp
src/outputlist.cpp
+1
-0
outputlist.h
src/outputlist.h
+3
-2
rtfgen.h
src/rtfgen.h
+1
-1
scanner.l
src/scanner.l
+22
-11
util.cpp
src/util.cpp
+6
-3
util.h
src/util.h
+3
-1
xmlgen.cpp
src/xmlgen.cpp
+9
-4
generic.t
tmake/lib/unix/generic.t
+1
-1
No files found.
INSTALL
View file @
eed68005
DOXYGEN Version 1.2.9
.1
DOXYGEN Version 1.2.9
-20010812
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (
05
August 2001)
Dimitri van Heesch (
12
August 2001)
README
View file @
eed68005
DOXYGEN Version 1.2.9
.1
DOXYGEN Version 1.2.9
_20010812
Please read INSTALL for compilation instructions.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
05
August 2001)
Dimitri van Heesch (dimitri@stack.nl) (
12
August 2001)
VERSION
View file @
eed68005
1.2.9
.1
1.2.9
-20010812
addon/xmlparse/Doxyfile
View file @
eed68005
...
...
@@ -3,7 +3,7 @@
#---------------------------------------------------------------------------
# General configuration options
#---------------------------------------------------------------------------
PROJECT_NAME =
dox2html
PROJECT_NAME =
xmlparse
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doc
OUTPUT_LANGUAGE = English
...
...
@@ -145,8 +145,8 @@ INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DOT_PATH =
MAX_DOT_GRAPH_WIDTH =
3024
MAX_DOT_GRAPH_HEIGHT =
3
024
MAX_DOT_GRAPH_WIDTH =
1280
MAX_DOT_GRAPH_HEIGHT =
1
024
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
...
...
addon/xmlparse/basehandler.h
View file @
eed68005
...
...
@@ -115,7 +115,7 @@ template<class T> class BaseHandler : public IBaseHandler,
virtual
~
BaseHandler
()
{
delete
m_fallBackHandler
;
ASSERT
(
m_delegateHandler
==
0
)
;
}
virtual
bool
startDocument
()
...
...
addon/xmlparse/compoundhandler.cpp
View file @
eed68005
...
...
@@ -21,6 +21,8 @@ CompoundHandler::CompoundHandler(IBaseHandler *parent)
:
m_parent
(
parent
),
m_brief
(
0
),
m_detailed
(
0
)
{
m_superClasses
.
setAutoDelete
(
TRUE
);
m_subClasses
.
setAutoDelete
(
TRUE
);
m_sections
.
setAutoDelete
(
TRUE
);
addEndHandler
(
"compounddef"
,
this
,
&
CompoundHandler
::
endCompound
);
...
...
@@ -42,6 +44,8 @@ CompoundHandler::CompoundHandler(IBaseHandler *parent)
CompoundHandler
::~
CompoundHandler
()
{
delete
m_brief
;
delete
m_detailed
;
}
void
CompoundHandler
::
startSection
(
const
QXmlAttributes
&
attrib
)
...
...
addon/xmlparse/dochandler.cpp
View file @
eed68005
...
...
@@ -163,6 +163,8 @@ void MarkupHandler::endSuperscript()
ListItemHandler
::
ListItemHandler
(
IBaseHandler
*
parent
)
:
DocNode
(
ListItem
),
m_parent
(
parent
)
{
m_children
.
setAutoDelete
(
TRUE
);
addEndHandler
(
"listitem"
,
this
,
&
ListItemHandler
::
endListItem
);
addStartHandler
(
"para"
,
this
,
&
ListItemHandler
::
startParagraph
);
...
...
@@ -236,6 +238,48 @@ void ListHandler::startListItem(const QXmlAttributes& attrib)
// ParameterHandler
//----------------------------------------------------------------------
ParameterHandler
::
ParameterHandler
(
IBaseHandler
*
parent
)
:
DocNode
(
Parameter
),
m_parent
(
parent
),
m_description
(
0
)
{
addEndHandler
(
"parametername"
,
this
,
&
ParameterHandler
::
endParameterName
);
addEndHandler
(
"parameterdescription"
,
this
,
&
ParameterHandler
::
endParameterDescription
);
addStartHandler
(
"para"
,
this
,
&
ParameterHandler
::
startParagraph
);
}
ParameterHandler
::~
ParameterHandler
()
{
delete
m_description
;
}
void
ParameterHandler
::
startParameterName
(
const
QXmlAttributes
&
/*attrib*/
)
{
m_parent
->
setDelegate
(
this
);
}
void
ParameterHandler
::
endParameterName
()
{
m_name
=
m_curString
;
printf
(
"parameter %s
\n
"
,
m_name
.
data
());
m_curString
=
""
;
m_parent
->
setDelegate
(
0
);
}
void
ParameterHandler
::
startParameterDescription
(
const
QXmlAttributes
&
/*attrib*/
)
{
m_parent
->
setDelegate
(
this
);
}
void
ParameterHandler
::
endParameterDescription
()
{
m_parent
->
setDelegate
(
0
);
}
void
ParameterHandler
::
startParagraph
(
const
QXmlAttributes
&
attrib
)
{
ASSERT
(
m_description
==
0
);
m_description
=
new
ParagraphHandler
(
this
);
m_description
->
startParagraph
(
attrib
);
}
//----------------------------------------------------------------------
// ParameterListHandler
...
...
@@ -245,6 +289,10 @@ ParameterListHandler::ParameterListHandler(IBaseHandler *parent)
:
DocNode
(
ParameterList
),
m_parent
(
parent
)
{
addEndHandler
(
"parameterlist"
,
this
,
&
ParameterListHandler
::
endParameterList
);
addStartHandler
(
"parametername"
,
this
,
&
ParameterListHandler
::
startParameterName
);
addStartHandler
(
"parameterdescription"
,
this
,
&
ParameterListHandler
::
startParameterDescription
);
addStartHandler
(
"title"
);
addEndHandler
(
"title"
);
m_parameters
.
setAutoDelete
(
TRUE
);
m_curParam
=
0
;
}
...
...
@@ -253,8 +301,17 @@ ParameterListHandler::~ParameterListHandler()
{
}
void
ParameterListHandler
::
startParameterList
(
const
QXmlAttributes
&
/*attrib*/
)
void
ParameterListHandler
::
startParameterList
(
const
QXmlAttributes
&
attrib
)
{
QString
kind
=
attrib
.
value
(
"kind"
);
if
(
kind
==
"retval"
)
m_type
=
RetVal
;
else
if
(
kind
==
"exception"
)
m_type
=
Exception
;
else
if
(
kind
==
"param"
)
m_type
=
Param
;
else
{
printf
(
"Error: invalid parameterlist type: %s
\n
"
,
kind
.
data
());
}
printf
(
"parameterlist kind=%s
\n
"
,
kind
.
data
());
m_parent
->
setDelegate
(
this
);
}
...
...
@@ -263,6 +320,19 @@ void ParameterListHandler::endParameterList()
m_parent
->
setDelegate
(
0
);
}
void
ParameterListHandler
::
startParameterName
(
const
QXmlAttributes
&
attrib
)
{
m_curParam
=
new
ParameterHandler
(
this
);
m_parameters
.
append
(
m_curParam
);
m_curParam
->
startParameterName
(
attrib
);
}
void
ParameterListHandler
::
startParameterDescription
(
const
QXmlAttributes
&
attrib
)
{
ASSERT
(
m_curParam
!=
0
);
m_curParam
->
startParameterDescription
(
attrib
);
}
//----------------------------------------------------------------------
// ParagraphHandler
//----------------------------------------------------------------------
...
...
@@ -279,10 +349,12 @@ ParagraphHandler::ParagraphHandler(IBaseHandler *parent)
addStartHandler
(
"itemizedlist"
,
this
,
&
ParagraphHandler
::
startItemizedList
);
addStartHandler
(
"orderedlist"
,
this
,
&
ParagraphHandler
::
startOrderedList
);
addStartHandler
(
"parameterlist"
,
this
,
&
ParagraphHandler
::
startParameterList
);
}
ParagraphHandler
::~
ParagraphHandler
()
{
delete
m_markupHandler
;
}
void
ParagraphHandler
::
startParagraph
(
const
QXmlAttributes
&
/*attrib*/
)
...
...
@@ -339,6 +411,8 @@ void ParagraphHandler::addTextNode()
DocHandler
::
DocHandler
(
IBaseHandler
*
parent
)
:
m_parent
(
parent
)
{
m_children
.
setAutoDelete
(
TRUE
);
addEndHandler
(
"briefdescription"
,
this
,
&
DocHandler
::
endDoc
);
addEndHandler
(
"detaileddescription"
,
this
,
&
DocHandler
::
endDoc
);
...
...
addon/xmlparse/dochandler.h
View file @
eed68005
...
...
@@ -51,7 +51,8 @@ class DocNode
ItemizedList
,
OrderedList
,
ListItem
,
ParameterList
ParameterList
,
Parameter
};
DocNode
(
NodeKind
k
)
:
m_kind
(
k
)
{}
virtual
~
DocNode
()
{}
...
...
@@ -182,8 +183,11 @@ class ParameterHandler : public DocNode,
public
:
ParameterHandler
(
IBaseHandler
*
parent
);
virtual
~
ParameterHandler
();
virtual
void
startParameterList
(
const
QXmlAttributes
&
attrib
);
virtual
void
endParameterList
();
virtual
void
startParameterName
(
const
QXmlAttributes
&
attrib
);
virtual
void
endParameterName
();
virtual
void
startParameterDescription
(
const
QXmlAttributes
&
attrib
);
virtual
void
endParameterDescription
();
virtual
void
startParagraph
(
const
QXmlAttributes
&
attrib
);
private
:
IBaseHandler
*
m_parent
;
...
...
@@ -201,15 +205,45 @@ class ParameterListHandler : public DocNode,
public
BaseHandler
<
ParameterListHandler
>
{
public
:
enum
Types
{
Param
,
RetVal
,
Exception
};
ParameterListHandler
(
IBaseHandler
*
parent
);
virtual
~
ParameterListHandler
();
virtual
void
startParameterList
(
const
QXmlAttributes
&
attrib
);
virtual
void
endParameterList
();
virtual
void
startParameterName
(
const
QXmlAttributes
&
attrib
);
virtual
void
startParameterDescription
(
const
QXmlAttributes
&
attrib
);
private
:
IBaseHandler
*
m_parent
;
QList
<
ParameterHandler
>
m_parameters
;
ParameterHandler
*
m_curParam
;
Types
m_type
;
};
//-----------------------------------------------------------------------------
/* \brief Node representing a simple section with an unnumbered header.
*
*/
class
SimpleSectHandler
:
public
DocNode
,
public
BaseHandler
<
SimpleSectHandler
>
{
public
:
enum
Types
{
See
,
Return
,
Author
,
Version
,
Since
,
Date
,
Bug
,
Note
,
Warning
,
Par
,
Deprecated
,
Pre
,
Post
,
Invar
,
Remark
,
Attention
};
SimpleSectHandler
(
IBaseHandler
*
parent
);
virtual
~
SimpleSectHandler
();
virtual
void
startSimpleSect
(
const
QXmlAttributes
&
attrib
);
virtual
void
endSimpleSect
();
private
:
IBaseHandler
*
m_parent
;
ParameterHandler
*
m_curParam
;
Types
m_type
;
QString
m_title
;
};
//-----------------------------------------------------------------------------
...
...
@@ -252,7 +286,7 @@ class DocHandler : public BaseHandler<DocHandler>
virtual
~
DocHandler
();
private
:
IBaseHandler
*
m_parent
;
QList
<
DocNode
>
m_children
;
QList
<
ParagraphHandler
>
m_children
;
};
#endif
addon/xmlparse/main.cpp
View file @
eed68005
...
...
@@ -55,14 +55,17 @@ int main(int argc,char **argv)
exit
(
1
);
}
QFile
xmlFile
(
argv
[
1
]);
MainHandler
handler
;
ErrorHandler
errorHandler
;
QXmlInputSource
source
(
xmlFile
);
QXmlSimpleReader
reader
;
reader
.
setContentHandler
(
&
handler
);
reader
.
setErrorHandler
(
&
errorHandler
);
reader
.
parse
(
source
);
//for (;;)
//{
QFile
xmlFile
(
argv
[
1
]);
MainHandler
handler
;
ErrorHandler
errorHandler
;
QXmlInputSource
source
(
xmlFile
);
QXmlSimpleReader
reader
;
reader
.
setContentHandler
(
&
handler
);
reader
.
setErrorHandler
(
&
errorHandler
);
reader
.
parse
(
source
);
//}
return
0
;
}
...
...
addon/xmlparse/memberhandler.cpp
View file @
eed68005
...
...
@@ -33,11 +33,15 @@ MemberHandler::MemberHandler(IBaseHandler *parent)
addStartHandler
(
"briefdescription"
,
this
,
&
MemberHandler
::
startBriefDesc
);
addStartHandler
(
"detaileddescription"
,
this
,
&
MemberHandler
::
startDetailedDesc
);
m_params
.
setAutoDelete
(
TRUE
);
}
MemberHandler
::~
MemberHandler
()
{
delete
m_brief
;
delete
m_detailed
;
}
void
MemberHandler
::
startMember
(
const
QXmlAttributes
&
attrib
)
...
...
doc/commands.doc
View file @
eed68005
...
...
@@ -101,6 +101,7 @@ documentation:
<li> \refitem cmdnote \note
<li> \refitem cmdoverload \overload
<li> \refitem cmdp \p
<li> \refitem cmdpackage \package
<li> \refitem cmdpage \page
<li> \refitem cmdpar \par
<li> \refitem cmdparam \param
...
...
@@ -406,6 +407,8 @@ doxygen. Unrecognized commands are treated as normal text.
*/
\endverbatim
You can refer to the main page using \\ref index.
\sa section \ref cmdsection "\\section",
section \ref cmdsubsection "\\subsection" and
section \ref cmdpage "\\page".
...
...
@@ -467,6 +470,13 @@ Public/Protected/Private/... section.
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
<hr>
\subsection cmdpackage \package <name>
\addindex \package
Indicates that a comment block contains documentation for a
Java package with name \<name\>.
<hr>
\subsection cmdpage \page <name> (title)
...
...
doc/config.doc
View file @
eed68005
...
...
@@ -171,6 +171,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_strip_from_path
STRIP_FROM_PATH
<
li
>
\
refitem
cfg_tab_size
TAB_SIZE
<
li
>
\
refitem
cfg_tagfiles
TAGFILES
<
li
>
\
refitem
cfg_template_relations
TEMPLATE_RELATIONS
<
li
>
\
refitem
cfg_toc_expand
TOC_EXPAND
<
li
>
\
refitem
cfg_treeview_width
TREEVIEW_WIDTH
<
li
>
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
...
...
@@ -1149,6 +1150,12 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
indirect
implementation
dependencies
(
inheritance
,
containment
,
and
class
references
variables
)
of
the
class
with
other
documented
classes
.
\
anchor
cfg_template_relations
<
dt
>\
c
TEMPLATE_RELATIONS
<
dd
>
\
addindex
TEMPLATE_RELATIONS
If
the
\
c
TEMPLATE_RELATIONS
and
\
c
HAVE_DOT
tags
are
set
to
\
c
YES
then
doxygen
will
show
the
relations
between
templates
and
their
instances
.
\
anchor
cfg_include_graph
<
dt
>\
c
INCLUDE_GRAPH
<
dd
>
\
addindex
INCLUDE_GRAPH
...
...
doc/index.doc
View file @
eed68005
...
...
@@ -173,8 +173,10 @@ Thanks go to:
Boris Bralo, Nickolay Semyonov, Richard Kim, Földvári György,
Grzegorz Kowal, and Wang Weihan
for providing translations into various languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a> for
donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
me
an ultra cool <a href="http://www.psion.com/revoplus>Revo plus</a>
an ultra cool <a href="http://www.psion.com/revoplus>Revo plus</a>
organizer!
<li>The band <a href="http://www.porcupinetree.com">Porcupine Tree</a> for
providing hours of great music to listen to while coding.
...
...
doc/preprocessing.doc
View file @
eed68005
...
...
@@ -152,26 +152,57 @@ for class QList is to define:
PREDEFINED = QListT:=QList
\endverbatim
Here is example provided by Valter Minute that helps doxygen to
wade through the boilerplate code in Microsoft's ATL library:
Here is an example provided by Valter Minute & Reyes Ponce that helps
doxygen to wade through the boilerplate code in Microsoft's ATL & MFC
libraries:
\verbatim
PREDEFINED = DECLARE_REGISTRY_RESOURCEID=// \
DECLARE_PROTECT_FINAL_CONSTRUCT=// \
BEGIN_COM_MAP=/* \
END_COM_MAP=*/// \
BEGIN_PROP_MAP=/* \
END_PROP_MAP=*/// \
BEGIN_MSG_MAP=/* \
END_MSG_MAP=*/// \
DECLARE_VIEW_STATUS=// \
"STDMETHOD(a)=HRESULT a" \
"ATL_NO_VTABLE= "\
"__declspec(a)= "\
BEGIN_CONNECTION_POINT_MAP=/* \
END_CONNECTION_POINT_MAP=*/// \
"DECLARE_AGGREGATABLE(Class)= " \
"DECLARE_REGISTRY_RESOURCEID(id)= "
PREDEFINED = "DECLARE_INTERFACE(name)=class name" \
"STDMETHOD(result,name)=virtual result name" \
"PURE= = 0" \
THIS_= \
THIS= \
DECLARE_REGISTRY_RESOURCEID=// \
DECLARE_PROTECT_FINAL_CONSTRUCT=// \
"DECLARE_AGGREGATABLE(Class)= " \
"DECLARE_REGISTRY_RESOURCEID(Id)= " \
DECLARE_MESSAGE_MAP = \
BEGIN_MESSAGE_MAP=/* \
END_MESSAGE_MAP=*/// \
BEGIN_COM_MAP=/* \
END_COM_MAP=*/// \
BEGIN_PROP_MAP=/* \
END_PROP_MAP=*/// \
BEGIN_MSG_MAP=/* \
END_MSG_MAP=*/// \
BEGIN_PROPERTY_MAP=/* \
END_PROPERTY_MAP=*/// \
BEGIN_OBJECT_MAP=/* \
END_OBJECT_MAP()=*/// \
DECLARE_VIEW_STATUS=// \
"STDMETHOD(a)=HRESULT a" \
"ATL_NO_VTABLE= " \
"__declspec(a)= " \
BEGIN_CONNECTION_POINT_MAP=/* \
END_CONNECTION_POINT_MAP=*/// \
"DECLARE_DYNAMIC(class)= " \
"IMPLEMENT_DYNAMIC(class1, class2)= " \
"DECLARE_DYNCREATE(class)= " \
"IMPLEMENT_DYNCREATE(class1, class2)= " \
"IMPLEMENT_SERIAL(class1, class2, class3)= " \
"DECLARE_MESSAGE_MAP()= " \
TRY=try \
"CATCH_ALL(e)= catch(...)" \
END_CATCH_ALL= \
"THROW_LAST()= throw"\
"RUNTIME_CLASS(class)=class" \
"MAKEINTRESOURCE(nId)=nId" \
"IMPLEMENT_REGISTER(v, w, x, y, z)= " \
"ASSERT(x)=assert(x)" \
"ASSERT_VALID(x)=assert(x)" \
"TRACE0(x)=printf(x)" \
"OS_ERR(A,B)={ #A, B }" \
__cplusplus
\endverbatim
As you can see doxygen's preprocessor is quite powerful, but if you want
...
...
packages/rpm/doxygen.spec
View file @
eed68005
Name: doxygen
Version: 1.2.9
.1
Version: 1.2.9
_20010812
Summary: documentation system for C, C++ and IDL
Release: 4
Source: doxygen-%{version}.src.tar.gz
...
...
qtools/qtools.pro.in
View file @
eed68005
...
...
@@ -72,7 +72,7 @@ win32:SOURCES += qfile_win32.cpp \
qfileinfo_win32.cpp
INCLUDEPATH = .
TMAKE_CXXFLAGS = -DQT_NO_CODECS -DQT_LITE_UNICODE
TMAKE_CXXFLAGS
+
= -DQT_NO_CODECS -DQT_LITE_UNICODE
win32:TMAKE_CXXFLAGS += -DQT_NODLL
OBJECTS_DIR = ../objects
DESTDIR = ../lib
src/classdef.cpp
View file @
eed68005
...
...
@@ -98,7 +98,7 @@ ClassDef::ClassDef(
// m_scopelessName=name().right(name().length()-i-2);
//}
m_subGrouping
=
TRUE
;
m_isTemplBaseClass
=-
1
;
//
m_isTemplBaseClass=-1;
m_templateInstances
=
0
;
m_templateMaster
=
0
;
m_templBaseClassNames
=
0
;
...
...
@@ -1408,13 +1408,34 @@ void ClassDef::setTemplateArguments(ArgumentList *al)
}
}
/*! Returns \c TRUE iff this class or a class inheriting from this class
* is \e not defined in an external tag file.
*/
bool
ClassDef
::
hasNonReferenceSuperClass
()
{
bool
found
=!
isReference
();
bool
found
=!
isReference
();
if
(
found
)
return
TRUE
;
// we're done if this class is not a reference
BaseClassListIterator
bcli
(
*
m_inheritedBy
);
for
(
;
bcli
.
current
()
&&
!
found
;
++
bcli
)
found
=
found
||
bcli
.
current
()
->
classDef
->
hasNonReferenceSuperClass
();
for
(
;
bcli
.
current
()
&&
!
found
;
++
bcli
)
// for each super class
{
ClassDef
*
bcd
=
bcli
.
current
()
->
classDef
;
// recurse into the super class branch
found
=
found
||
bcd
->
hasNonReferenceSuperClass
();
if
(
!
found
)
{
// look for template instances that might have non-reference super classes
QDict
<
ClassDef
>
*
cil
=
bcd
->
getTemplateInstances
();
if
(
cil
)
{
QDictIterator
<
ClassDef
>
tidi
(
*
cil
);
for
(
;
tidi
.
current
()
&&
!
found
;
++
tidi
)
// for each template instance
{
// recurse into the template instance branch
found
=
found
||
tidi
.
current
()
->
hasNonReferenceSuperClass
();
}
}
}
}
return
found
;
}
...
...
@@ -1512,28 +1533,50 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
/*! a link to this class is possible within this project */
bool
ClassDef
::
isLinkableInProject
()
const
{
return
!
name
().
isEmpty
()
&&
/* no name */
m_isTemplBaseClass
==-
1
&&
/* template base class */
name
().
find
(
'@'
)
==-
1
&&
/* anonymous compound */
(
m_prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
&&
/* private */
hasDocumentation
()
&&
/* documented */
!
isReference
();
/* not an external reference */
if
(
m_templateMaster
)
{
return
m_templateMaster
->
isLinkableInProject
();
}
else
{
return
!
name
().
isEmpty
()
&&
/* no name */
//m_isTemplBaseClass==-1 && /* template base class */
name
().
find
(
'@'
)
==-
1
&&
/* anonymous compound */
(
m_prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
&&
/* private */
hasDocumentation
()
&&
/* documented */
!
isReference
();
/* not an external reference */
}
}
bool
ClassDef
::
isLinkable
()
const
{
if
(
m_templateMaster
)
{
return
m_templateMaster
->
isLinkable
();
}
else
{
return
isLinkableInProject
()
||
isReference
();
}
}
/*! the class is visible in a class diagram, or class hierarchy */
bool
ClassDef
::
isVisibleInHierarchy
()
{
return
// show all classes or a subclass is visible
(
Config_getBool
(
"ALLEXTERNALS"
)
||
hasNonReferenceSuperClass
())
&&
// and not an annonymous compound
name
().
find
(
'@'
)
==-
1
&&
// not an artifically introduced class
!
m_artificial
&&
// and not an inherited template argument
//m_isTemplBaseClass==-1 &&
// and not privately inherited
(
m_prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
&&
// documented or show anyway or documentation is external
(
hasDocumentation
()
||
!
Config_getBool
(
"HIDE_UNDOC_CLASSES"
)
||
isReference
());
{
return
// show all classes or a subclass is visible
(
Config_getBool
(
"ALLEXTERNALS"
)
||
hasNonReferenceSuperClass
())
&&
// and not an annonymous compound
name
().
find
(
'@'
)
==-
1
&&
// not an artifically introduced class
!
m_artificial
&&
// and not privately inherited
(
m_prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
&&
// documented or shown anyway or documentation is external
(
hasDocumentation
()
||
!
Config_getBool
(
"HIDE_UNDOC_CLASSES"
)
||
isReference
()
);
}
bool
ClassDef
::
hasDocumentation
()
const
...
...
@@ -1554,6 +1597,7 @@ bool ClassDef::isBaseClass(ClassDef *bcd)
for
(
;
bcli
.
current
()
&&
!
found
;
++
bcli
)
{
ClassDef
*
ccd
=
bcli
.
current
()
->
classDef
;
if
(
ccd
->
templateMaster
())
ccd
=
ccd
->
templateMaster
();
//printf("isBaseClass() baseclass %s\n",ccd->name().data());
if
(
ccd
==
bcd
)
found
=
TRUE
;
...
...
@@ -2212,6 +2256,18 @@ QCString ClassDef::getReference() const
}
}
bool
ClassDef
::
isReference
()
const
{
if
(
m_templateMaster
)
{
return
m_templateMaster
->
getReference
();
}
else
{
return
Definition
::
isReference
();
}
}
void
ClassDef
::
getTemplateParameterLists
(
QList
<
ArgumentList
>
&
lists
)
const
{
Definition
*
d
=
getOuterScope
();
...
...
@@ -2273,4 +2329,23 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
return
scName
;
}
QCString
ClassDef
::
className
()
const
{
if
(
!
m_className
.
isEmpty
())
{
return
m_className
;
}
else
{
ClassDef
*
that
=
(
ClassDef
*
)
this
;
// m_className is a cache value, so we fake that this function is "const".
that
->
m_className
=
m_localName
.
copy
();
Definition
*
p
=
getOuterScope
();
while
(
p
&&
p
->
definitionType
()
==
TypeClass
)
{
that
->
m_className
.
prepend
(
p
->
localName
()
+
"::"
);
p
=
p
->
getOuterScope
();
}
return
m_className
;
}
};
src/classdef.h
View file @
eed68005
...
...
@@ -72,6 +72,7 @@ class ClassDef : public Definition
QCString
getFileBase
()
const
;
QCString
getSourceFileBase
()
const
;
QCString
getReference
()
const
;
bool
isReference
()
const
;
bool
hasDocumentation
()
const
;
...
...
@@ -114,10 +115,7 @@ class ClassDef : public Definition
/*! return TRUE iff a link to this class is possible (either within
* this project, or as a cross-reference to another project).
*/
bool
isLinkable
()
const
{
return
isLinkableInProject
()
||
isReference
();
}
bool
isLinkable
()
const
;
/*! the class is visible in a class diagram, or class hierarchy */
bool
isVisibleInHierarchy
();
...
...
@@ -153,12 +151,6 @@ class ClassDef : public Definition
*/
bool
isBaseClass
(
ClassDef
*
bcd
);
/*! Is this an artificial class that is the template argument of
* a class. If so the argument number is returned, otherwise -1
* is returned.
*/
int
isTemplateBaseClass
()
const
{
return
m_isTemplBaseClass
;
}
/*! Returns a sorted dictionary with all template instances found for
* this template class. Returns 0 if not a template or no instances.
*/
...
...
@@ -200,6 +192,11 @@ class ClassDef : public Definition
*/
bool
isAbstract
()
const
{
return
m_isAbstract
;
}
/*! returns the name of the class including outer classes, but not
* including namespaces.
*/
QCString
className
()
const
;
/* member lists by protection */
MemberList
pubMembers
;
MemberList
proMembers
;
...
...
@@ -262,7 +259,6 @@ class ClassDef : public Definition
void
setProtection
(
Protection
p
)
{
m_prot
=
p
;
}
void
setGroupDefForAllMembers
(
GroupDef
*
g
,
Grouping
::
GroupPri_t
pri
,
const
QCString
&
fileName
,
int
startLine
,
bool
hasDocs
);
void
addInnerCompound
(
Definition
*
d
);
void
setIsTemplateBaseClass
(
int
num
)
{
m_isTemplBaseClass
=
num
;
}
void
addUsedClass
(
ClassDef
*
cd
,
const
char
*
accessName
);
//void initTemplateMapping();
//void setTemplateArgumentMapping(const char *formal,const char *actual);
...
...
@@ -384,13 +380,6 @@ class ClassDef : public Definition
UsesClassDict
*
m_usesImplClassDict
;
UsesClassDict
*
m_usesIntfClassDict
;
/*! Is this a class that exists because of template class that
* inherited one of it's template arguments. If so that this
* variable indicate the template argument number, otherwise
* this is -1
*/
int
m_isTemplBaseClass
;
/*! Template instances that exists of this class, the key in the
* dictionary is the template argument list.
*/
...
...
@@ -410,6 +399,8 @@ class ClassDef : public Definition
/*! Is this an abstact class? */
bool
m_isAbstract
;
QCString
m_className
;
};
/*! \brief Class that contains information about a usage relation.
...
...
src/config.l
View file @
eed68005
...
...
@@ -2037,6 +2037,13 @@ void Config::create()
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"TEMPLATE_RELATIONS",
"If set to YES, the inheritance and collaboration graphs will show the \n"
"relations between templates and their instances. \n",
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"INCLUDE_GRAPH",
"If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \n"
...
...
src/definition.cpp
View file @
eed68005
...
...
@@ -34,7 +34,11 @@ Definition::Definition(const char *df,int dl,
m_defFileName
=
df
;
m_defLine
=
dl
;
m_name
=
name
;
m_localName
=
stripScope
(
name
);
if
(
m_name
!=
"<globalScope>"
)
m_localName
=
stripScope
(
name
);
else
m_localName
=
name
;
//printf("m_localName=%s\n",m_localName.data());
m_brief
=
b
;
m_doc
=
d
;
m_sectionDict
=
0
,
...
...
src/definition.h
View file @
eed68005
...
...
@@ -80,7 +80,7 @@ class Definition
virtual
bool
isLinkable
()
const
=
0
;
virtual
QCString
getReference
()
const
{
return
m_ref
;
}
bool
isReference
()
const
{
return
!
m_ref
.
isEmpty
();
}
virtual
bool
isReference
()
const
{
return
!
m_ref
.
isEmpty
();
}
void
setReference
(
const
char
*
r
)
{
m_ref
=
r
;
}
/*! Add the list of anchors that mark the sections that are found in the
...
...
src/doc.l
View file @
eed68005
...
...
@@ -1504,7 +1504,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock();
inParamBlock=TRUE;
currentListIndent.push("D");
outDoc->startParamList();
outDoc->startParamList(
BaseOutputDocInterface::Param
);
scanString(theTranslator->trParameters()+": ");
outDoc->endDescTitle();
outDoc->writeDescItem();
...
...
@@ -1528,7 +1528,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock();
inRetValBlock=TRUE;
currentListIndent.push("D");
outDoc->startParamList();
outDoc->startParamList(
BaseOutputDocInterface::RetVal
);
scanString(theTranslator->trReturnValues()+": ");
outDoc->endDescTitle();
outDoc->writeDescItem();
...
...
@@ -1552,7 +1552,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock();
inExceptionBlock=TRUE;
currentListIndent.push("D");
outDoc->startParamList();
outDoc->startParamList(
BaseOutputDocInterface::Exception
);
scanString(theTranslator->trExceptions()+": ");
outDoc->endDescTitle();
outDoc->writeDescItem();
...
...
src/dot.cpp
View file @
eed68005
...
...
@@ -40,7 +40,8 @@ static const char *edgeColorMap[] =
"darkgreen"
,
// Protected
"firebrick4"
,
// Private
"darkorchid3"
,
// "use" relation
"grey75"
// Undocumented
"grey75"
,
// Undocumented
"orange"
// template relation
};
static
const
char
*
edgeStyleMap
[]
=
...
...
@@ -177,153 +178,6 @@ static bool isLeaf(ClassDef *cd)
return
TRUE
;
}
#if 0
/*! Builds a mapping from formal arguments of class \a tcd to the
* actual arguments stored in templSpec. To properly initialize
* the mapping with the default template values
* ClassDef::initTemplateMapping() is called once for each class graph
* (the ClassDef::visited flag is used for this).
*/
static void setTemplateInstance(QCString templSpec,ClassDef *tcd)
{
//printf("====== setTemplateInstance(templ=%s,class=%s)\n",templSpec.data(),tcd->name().data());
if (!templSpec.isEmpty())
{
//if (!tcd->visited)
//{
// tcd->visited=TRUE;
//}
ArgumentList *tempArgList = new ArgumentList;
stringToArgumentList(templSpec,tempArgList);
ArgumentListIterator ali(*tempArgList);
Argument *arg;
uint count=0;
for (ali.toFirst();(arg=ali.current());++ali,++count)
{
ArgumentList *formalArgList = tcd->templateArguments();
Argument *formalArg=0;
//printf("arg->type=%s count=%d formalArgList=%p\n",
// arg->type.data(),count,formalArgList);
if (formalArgList && formalArgList->count()>count &&
(formalArg=formalArgList->at(count)))
{
if (formalArg->name!=arg->type)
{
tcd->setTemplateArgumentMapping(formalArg->name,arg->type);
//printf("%s->setTemplateInstantation(%s,%s)\n",tcd->name().data(),
// formalArg->name.data(),arg->type.data());
}
}
}
delete tempArgList;
}
}
/*! Substitutes the formal template argument list \a templSpec
* of class \a cd with the actual template arguments.
* The mapping from formal to actual template is assumed to be stored
* in \a cd using setTemplateInstance().
*/
static QCString substituteTemplateSpec(ClassDef *cd,const QCString &templSpec)
{
QCString result;
if (!templSpec.isEmpty())
{
ArgumentList *tempArgList = new ArgumentList;
stringToArgumentList(templSpec,tempArgList);
ArgumentListIterator ali(*tempArgList);
Argument *arg;
bool first=TRUE;
for (ali.toFirst();(arg=ali.current());)
{
if (first) result="<",first=FALSE;
QCString actual = cd->getTemplateArgumentMapping(arg->type);
if (!actual.isEmpty())
{
result+=actual;
}
else
{
result+=arg->type;
}
++ali;
if (ali.current()) result+=","; else result+=">";
}
delete tempArgList;
}
//printf("substituteTemplateSpec(%s,%s)=`%s'\n",cd->name().data(),templSpec.data(),result.data());
return removeRedundantWhiteSpace(result);
}
/*! Determines the actual template instance of template class \a tcd that
* relates to class \a cd. The result is stored in \a tcd.
* \param cd A class
* \param tcd A template base class
* \param templSpec Actual template parameter list to be used for tcd
* \param result resulting instance class
* \param actualArg actual template instance name of the resulting class
*/
static void computeTemplateInstance(
ClassDef *cd,ClassDef *tcd,const QCString templSpec,
ClassDef *&result,QCString &actualArg
)
{
//printf("====== computeTemplateInstance(%s,base=%s,templ=%s)\n",
// cd->name().data(),tcd->name().data(),templSpec.data());
// store the specific instance inside the class
setTemplateInstance(templSpec,tcd);
int tArgNum = tcd->isTemplateBaseClass();
if (tArgNum!=-1)
{
//printf("tArgNum=%d\n",tArgNum);
ArgumentList *formalArgList = cd->templateArguments();
if (formalArgList)
{
//printf("formalArgList=%p\n",formalArgList);
Argument *formalArg=formalArgList->at(tArgNum);
if (formalArg)
{
//printf("formalArg=%s\n",formalArg->name.data());
actualArg = cd->getTemplateArgumentMapping(formalArg->name);
//printf("ActualArg=%s\n",actualArg.data());
int pos=0;
QCString name;
QCString templSpec;
while (extractClassNameFromType(actualArg,pos,name,templSpec))
{
Definition *scopeDef = cd->getOuterScope();
QCString scopeName;
if (scopeDef) scopeName = scopeDef->qualifiedName();
//printf("name=%s templSpec=%s\n",name.data(),templSpec.data());
ClassDef *acd=0;
// try with scope.
if (!scopeName.isEmpty())
acd = getResolvedClass(scopeName+"::"+name);
// try without scope.
// TODO: try intermediate scopes as well!
if (acd==0) acd = getResolvedClass(name);
if (acd && !templSpec.isEmpty())
{
// store specific template instance in the class
setTemplateInstance(templSpec,acd);
}
if (acd)
{
result = acd;
actualArg = acd->name()+templSpec;
return;
}
}
}
}
}
actualArg.resize(0);
result = 0;
}
#endif
//--------------------------------------------------------------------
class
DotNodeList
:
public
QList
<
DotNode
>
...
...
@@ -932,7 +786,7 @@ int DotClassGraph::m_curNodeNumber;
void
DotClassGraph
::
addClass
(
ClassDef
*
cd
,
DotNode
*
n
,
int
prot
,
const
char
*
label
,
int
distance
,
const
char
*
usedName
,
const
char
*
templSpec
,
bool
base
)
{
int
edgeStyle
=
label
?
EdgeInfo
::
Dashed
:
EdgeInfo
::
Solid
;
int
edgeStyle
=
(
label
||
prot
==
EdgeInfo
::
Orange
)
?
EdgeInfo
::
Dashed
:
EdgeInfo
::
Solid
;
QCString
className
;
if
(
usedName
)
// name is a typedef
{
...
...
@@ -997,34 +851,22 @@ void DotClassGraph::addClass(ClassDef *cd,DotNode *n,int prot,
void
DotClassGraph
::
buildGraph
(
ClassDef
*
cd
,
DotNode
*
n
,
int
distance
,
bool
base
)
{
// ---- Add inheritance relations
BaseClassListIterator
bcli
(
base
?
*
cd
->
baseClasses
()
:
*
cd
->
subClasses
());
BaseClassDef
*
bcd
;
for
(
;
(
bcd
=
bcli
.
current
())
;
++
bcli
)
{
//printf("-------- inheritance relation %s->%s templ=`%s'\n",
// cd->name().data(),bcd->classDef->name().data(),bcd->templSpecifiers.data());
//QCString templSpec;
//if (base) templSpec = substituteTemplateSpec(
// cd,bcd->templSpecifiers);
//ClassDef *acd=0;
//QCString actualArg;
//computeTemplateInstance(cd,bcd->classDef,templSpec,acd,actualArg);
//printf("acd=%p actualArg=%s\n",acd,actualArg.data());
//if (acd)
//{
// addClass(acd,n,bcd->prot,0,distance,actualArg,
// templSpec,base);
//}
//else
//{
// addClass(bcd->classDef,n,bcd->prot,0,distance,bcd->usedName,
// templSpec,base);
//}
addClass
(
bcd
->
classDef
,
n
,
bcd
->
prot
,
0
,
distance
,
bcd
->
usedName
,
bcd
->
templSpecifiers
,
base
);
}
if
(
m_graphType
!=
Inheritance
)
{
// ---- Add usage relations
UsesClassDict
*
dict
=
m_graphType
==
Implementation
?
cd
->
usedImplementationClasses
()
:
cd
->
usedInterfaceClasses
();
...
...
@@ -1050,30 +892,48 @@ void DotClassGraph::buildGraph(ClassDef *cd,DotNode *n,int distance,bool base)
label
+=
QCString
(
"
\\
n"
)
+
s
;
}
}
//QCString actualArg;
//ClassDef *acd=0;
//printf("-------- usage relation %s->%s templ=`%s'\n",
// cd->name().data(),ucd->classDef->name().data(),
// ucd->templSpecifiers.data());
//QCString templSpec = substituteTemplateSpec(
// cd,ucd->templSpecifiers);
//computeTemplateInstance(cd,ucd->classDef, templSpec, acd,actualArg);
//if (acd)
//{
// addClass(acd,n,EdgeInfo::Black,label,distance,actualArg,
// templSpec,base);
//}
//else
//{
// //printf("Found label=`%s'\n",label.data());
// addClass(ucd->classDef,n,EdgeInfo::Black,label,distance,0,
// templSpec,base);
//}
addClass
(
ucd
->
classDef
,
n
,
EdgeInfo
::
Black
,
label
,
distance
,
0
,
addClass
(
ucd
->
classDef
,
n
,
EdgeInfo
::
Purple
,
label
,
distance
,
0
,
ucd
->
templSpecifiers
,
base
);
}
}
}
// ---- Add template instantiation relations
if
(
Config_getBool
(
"TEMPLATE_RELATIONS"
))
{
if
(
base
)
// template relations for base classes
{
ClassDef
*
templMaster
=
cd
->
templateMaster
();
if
(
templMaster
)
{
QDictIterator
<
ClassDef
>
cli
(
*
templMaster
->
getTemplateInstances
());
ClassDef
*
templInstance
;
for
(;(
templInstance
=
cli
.
current
());
++
cli
)
{
if
(
templInstance
==
cd
)
{
addClass
(
templMaster
,
n
,
EdgeInfo
::
Orange
,
cli
.
currentKey
(),
distance
,
0
,
0
,
TRUE
);
}
}
}
}
else
// template relations for super classes
{
QDict
<
ClassDef
>
*
templInstances
=
cd
->
getTemplateInstances
();
if
(
templInstances
)
{
QDictIterator
<
ClassDef
>
cli
(
*
templInstances
);
ClassDef
*
templInstance
;
for
(;(
templInstance
=
cli
.
current
());
++
cli
)
{
addClass
(
templInstance
,
n
,
EdgeInfo
::
Orange
,
cli
.
currentKey
(),
distance
,
0
,
0
,
FALSE
);
}
}
}
}
}
DotClassGraph
::
DotClassGraph
(
ClassDef
*
cd
,
GraphType
t
,
int
maxRecursionDepth
)
...
...
src/dot.h
View file @
eed68005
...
...
@@ -30,7 +30,7 @@ enum GraphOutputFormat { GIF , EPS };
struct
EdgeInfo
{
enum
Colors
{
Blue
=
0
,
Green
=
1
,
Red
=
2
,
Black
=
3
,
Grey
=
4
};
enum
Colors
{
Blue
=
0
,
Green
=
1
,
Red
=
2
,
Purple
=
3
,
Grey
=
4
,
Orange
=
5
};
enum
Styles
{
Solid
=
0
,
Dashed
=
1
};
EdgeInfo
()
:
m_color
(
0
),
m_style
(
0
),
m_labColor
(
0
)
{}
~
EdgeInfo
()
{}
...
...
@@ -60,7 +60,7 @@ class DotNode
DotNode
(
int
n
,
const
char
*
lab
,
const
char
*
url
,
int
distance
=
0
,
bool
rootNode
=
FALSE
);
~
DotNode
();
void
addChild
(
DotNode
*
n
,
int
edgeColor
=
EdgeInfo
::
Black
,
int
edgeColor
=
EdgeInfo
::
Purple
,
int
edgeStyle
=
EdgeInfo
::
Solid
,
const
char
*
edgeLab
=
0
,
const
char
*
edgeURL
=
0
,
...
...
src/doxygen.cpp
View file @
eed68005
This diff is collapsed.
Click to expand it.
src/entry.h
View file @
eed68005
...
...
@@ -215,7 +215,8 @@ class Entry
MAINPAGEDOC_SEC
=
0x01200000
,
MEMBERGRP_SEC
=
0x01300000
,
USINGDECL_SEC
=
0x01400000
,
PACKAGE_SEC
=
0x01500000
PACKAGE_SEC
=
0x01500000
,
PACKAGEDOC_SEC
=
0x01600000
,
};
enum
MemberSpecifier
{
...
...
src/htmlgen.cpp
View file @
eed68005
...
...
@@ -899,7 +899,7 @@ void HtmlGenerator::endMemberDocName()
void
HtmlGenerator
::
startParameterList
()
{
DBG_HTML
(
t
<<
"<!-- startParameterList -->"
<<
endl
;)
t
<<
" <td class=
\"
md
\"
>( </td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
>( 
;
</td>"
<<
endl
;
}
void
HtmlGenerator
::
startParameterType
(
bool
first
)
...
...
@@ -948,7 +948,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList)
t
<<
" </tr>"
<<
endl
;
t
<<
" <tr>"
<<
endl
;
t
<<
" <td></td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
>) </td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
>) 
;
</td>"
<<
endl
;
t
<<
" <td class=
\"
md
\"
colspan=
\"
2
\"
>"
;
}
}
...
...
src/htmlgen.h
View file @
eed68005
...
...
@@ -176,11 +176,12 @@ class HtmlGenerator : public OutputGenerator
void
writeRing
(
char
c
)
{
t
<<
"&"
<<
c
<<
"ring;"
;
}
void
writeSharpS
()
{
t
<<
"ß"
;
}
void
writeCCedil
(
char
c
)
{
t
<<
"&"
<<
c
<<
"cedil;"
;
}
void
startDescList
()
{
t
<<
"<dl compact><dt>"
<<
endl
;
}
void
startDescList
()
{
t
<<
"<dl compact><dt>
<b>
"
<<
endl
;
}
void
endDescList
()
{
t
<<
"</dl>"
;
}
void
startParamList
()
{
startDescList
();
}
void
startParamList
(
ParamListTypes
)
{
startDescList
();
}
void
endParamList
()
{
endDescList
();
}
void
endDescTitle
()
{}
void
endDescTitle
()
{
t
<<
"</b>"
;
}
void
writeDescItem
()
{
t
<<
"<dd>"
<<
endl
;
}
void
startSection
(
const
char
*
,
const
char
*
,
bool
);
void
endSection
(
const
char
*
,
bool
);
...
...
src/index.cpp
View file @
eed68005
...
...
@@ -1194,10 +1194,10 @@ void writeAlphabeticalClassList(OutputList &ol)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
index
=
getPrefixIndex
(
cd
->
local
Name
());
if
(
toupper
(
cd
->
n
ame
().
at
(
index
))
!=
startLetter
)
// new begin letter => new header
int
index
=
getPrefixIndex
(
cd
->
class
Name
());
if
(
toupper
(
cd
->
classN
ame
().
at
(
index
))
!=
startLetter
)
// new begin letter => new header
{
startLetter
=
toupper
(
cd
->
n
ame
().
at
(
index
));
startLetter
=
toupper
(
cd
->
classN
ame
().
at
(
index
));
headerItems
++
;
}
}
...
...
@@ -1227,11 +1227,11 @@ void writeAlphabeticalClassList(OutputList &ol)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
index
=
getPrefixIndex
(
cd
->
local
Name
());
if
(
toupper
(
cd
->
n
ame
().
at
(
index
))
!=
startLetter
)
int
index
=
getPrefixIndex
(
cd
->
class
Name
());
if
(
toupper
(
cd
->
classN
ame
().
at
(
index
))
!=
startLetter
)
{
// insert a new header using a dummy class pointer.
startLetter
=
toupper
(
cd
->
n
ame
().
at
(
index
));
startLetter
=
toupper
(
cd
->
classN
ame
().
at
(
index
));
colList
[
col
].
append
((
ClassDef
*
)
8
);
// insert dummy for the header
row
++
;
if
(
row
>=
rows
+
((
col
<
itemsInLastRow
)
?
0
:
-
1
))
...
...
@@ -1275,8 +1275,8 @@ void writeAlphabeticalClassList(OutputList &ol)
if
(
cd
)
{
//printf("head ClassDef=%p %s\n",cd,cd ? cd->name().data() : "<none>");
int
index
=
getPrefixIndex
(
cd
->
local
Name
());
startLetter
=
toupper
(
cd
->
n
ame
().
at
(
index
));
int
index
=
getPrefixIndex
(
cd
->
class
Name
());
startLetter
=
toupper
(
cd
->
classN
ame
().
at
(
index
));
char
s
[
2
];
s
[
0
]
=
startLetter
;
s
[
1
]
=
0
;
ol
.
writeIndexHeading
(
s
);
}
...
...
@@ -1291,7 +1291,7 @@ void writeAlphabeticalClassList(OutputList &ol)
}
else
{
extractNamespaceName
(
cd
->
name
(),
cname
,
namesp
);
cname
=
cd
->
className
(
);
}
ol
.
writeObjectLink
(
cd
->
getReference
(),
...
...
src/latexgen.h
View file @
eed68005
...
...
@@ -185,7 +185,8 @@ class LatexGenerator : public OutputGenerator
void
endMemberDescription
()
{
t
<<
"
\\
item
\\
end{CompactList}"
;
}
void
startDescList
()
{
t
<<
"
\\
begin{Desc}
\n\\
item["
;
}
void
endDescList
()
{
t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
startParamList
()
{
startDescList
();
}
void
startParamList
(
ParamListTypes
)
{
startDescList
();
}
void
endParamList
()
{
endDescList
();
}
void
endDescTitle
()
{
t
<<
"]"
;
}
void
writeDescItem
()
{
t
<<
"
\\
par"
<<
endl
;
}
...
...
src/mangen.h
View file @
eed68005
...
...
@@ -172,7 +172,7 @@ class ManGenerator : public OutputGenerator
void
endMemberDescription
()
{
t
<<
"
\\
fP
\"
"
;
firstCol
=
FALSE
;
}
void
startDescList
();
void
endDescList
()
{}
void
startParamList
()
{
startDescList
();
}
void
startParamList
(
ParamListTypes
)
{
startDescList
();
}
void
endParamList
()
{
endDescList
();
}
void
endDescTitle
();
void
writeDescItem
();
...
...
src/memberdef.cpp
View file @
eed68005
...
...
@@ -359,10 +359,29 @@ MemberDef::~MemberDef()
delete
m_defTmpArgLists
;
}
void
MemberDef
::
setReimplements
(
MemberDef
*
md
)
{
if
(
m_templateMaster
)
{
m_templateMaster
->
setReimplements
(
md
);
}
else
{
redefines
=
md
;
}
}
void
MemberDef
::
insertReimplementedBy
(
MemberDef
*
md
)
{
if
(
redefinedBy
==
0
)
redefinedBy
=
new
MemberList
;
redefinedBy
->
inSort
(
md
);
if
(
m_templateMaster
)
{
m_templateMaster
->
insertReimplementedBy
(
md
);
}
else
{
if
(
redefinedBy
==
0
)
redefinedBy
=
new
MemberList
;
redefinedBy
->
inSort
(
md
);
}
}
void
MemberDef
::
insertEnumField
(
MemberDef
*
md
)
...
...
@@ -1472,18 +1491,31 @@ void MemberDef::warnIfUndocumented()
bool
MemberDef
::
isLinkableInProject
()
const
{
return
!
name
().
isEmpty
()
&&
name
().
at
(
0
)
!=
'@'
&&
((
hasDocumentation
()
&&
!
isReference
())
)
&&
(
prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
)
||
mtype
==
Friend
)
&&
// not a hidden member due to protection
(
classDef
!=
0
||
Config_getBool
(
"EXTRACT_STATIC"
)
||
!
isStatic
());
// not a static file/namespace member
if
(
m_templateMaster
)
{
return
m_templateMaster
->
isLinkableInProject
();
}
else
{
return
!
name
().
isEmpty
()
&&
name
().
at
(
0
)
!=
'@'
&&
(
hasDocumentation
()
&&
!
isReference
())
&&
(
prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
)
||
mtype
==
Friend
)
&&
// not a hidden member due to protection
(
classDef
!=
0
||
Config_getBool
(
"EXTRACT_STATIC"
)
||
!
isStatic
());
// not a static file/namespace member
}
}
bool
MemberDef
::
isLinkable
()
const
{
return
isLinkableInProject
()
||
isReference
();
if
(
m_templateMaster
)
{
return
m_templateMaster
->
isLinkable
();
}
else
{
return
isLinkableInProject
()
||
isReference
();
}
}
void
MemberDef
::
setEnumDecl
(
OutputList
&
ed
)
...
...
src/memberdef.h
View file @
eed68005
...
...
@@ -161,7 +161,7 @@ class MemberDef : public Definition
void
warnIfUndocumented
();
// relation to other members
void
setReimplements
(
MemberDef
*
md
)
{
redefines
=
md
;
}
void
setReimplements
(
MemberDef
*
md
)
;
void
insertReimplementedBy
(
MemberDef
*
md
);
MemberDef
*
reimplements
()
const
{
return
redefines
;
}
MemberList
*
reimplementedBy
()
const
{
return
redefinedBy
;
}
...
...
src/outputgen.h
View file @
eed68005
...
...
@@ -40,6 +40,7 @@ class DotGfxHierarchyTable;
class
BaseOutputDocInterface
{
public
:
enum
ParamListTypes
{
Param
,
RetVal
,
Exception
};
/*! Start of a bullet list: e.g. \c <ul> in html. writeListItem() is
* Used for the bullet items.
...
...
@@ -208,7 +209,7 @@ class BaseOutputDocInterface
virtual
void
writeCCedil
(
char
)
=
0
;
virtual
void
startDescList
()
=
0
;
virtual
void
endDescList
()
=
0
;
virtual
void
startParamList
()
=
0
;
virtual
void
startParamList
(
ParamListTypes
t
)
=
0
;
virtual
void
endParamList
()
=
0
;
virtual
void
endDescTitle
()
=
0
;
virtual
void
writeDescItem
()
=
0
;
...
...
src/outputlist.cpp
View file @
eed68005
...
...
@@ -261,6 +261,7 @@ FORALL1(int a1,a1)
FORALL1
(
DotClassGraph
&
a1
,
a1
)
FORALL1
(
DotInclDepGraph
&
a1
,
a1
)
FORALL1
(
DotGfxHierarchyTable
&
a1
,
a1
)
FORALL1
(
ParamListTypes
a1
,
a1
)
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALL1
(
bool
a1
,
a1
)
FORALL2
(
bool
a1
,
int
a2
,
a1
,
a2
)
...
...
src/outputlist.h
View file @
eed68005
...
...
@@ -310,8 +310,8 @@ class OutputList : public OutputDocInterface
{
forall
(
&
OutputGenerator
::
startDescList
);
}
void
endDescList
()
{
forall
(
&
OutputGenerator
::
endDescList
);
}
void
startParamList
()
{
forall
(
&
OutputGenerator
::
startParamList
);
}
void
startParamList
(
ParamListTypes
t
)
{
forall
(
&
OutputGenerator
::
startParamList
,
t
);
}
void
endParamList
()
{
forall
(
&
OutputGenerator
::
endParamList
);
}
void
endDescTitle
()
...
...
@@ -455,6 +455,7 @@ class OutputList : public OutputDocInterface
FORALLPROTO1
(
DotClassGraph
&
);
FORALLPROTO1
(
DotInclDepGraph
&
);
FORALLPROTO1
(
DotGfxHierarchyTable
&
);
FORALLPROTO1
(
ParamListTypes
);
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
FORALLPROTO1
(
bool
);
FORALLPROTO2
(
bool
,
int
);
...
...
src/rtfgen.h
View file @
eed68005
...
...
@@ -168,7 +168,7 @@ class RTFGenerator : public OutputGenerator
void
endMemberDescription
();
void
startDescList
();
void
endDescList
();
void
startParamList
()
{
startDescList
();
}
void
startParamList
(
ParamListTypes
)
{
startDescList
();
}
void
endParamList
()
{
endDescList
();
}
void
endDescTitle
();
void
writeDescItem
();
...
...
src/scanner.l
View file @
eed68005
...
...
@@ -419,7 +419,7 @@ static int yyread(char *buf,int max_size)
%}
CMD ("\\"|"@")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly"|"{"|"verbatim")
SECTIONCMD {CMD}("image"|"author"|"internal"|"version"|"date"|"deprecated"|"param"|"exception"|"return"[s]?|"retval"|"bug"|"warning"|"par"|"sa"|"see"|"pre"|"post"|"invariant"|"note"|"remark"[s]?|"todo"|"test"|"ingroup"|"latexonly"|"htmlonly"|"{"|"verbatim")
BN [ \t\n\r]
BL [ \t\r]*"\n"
B [ \t]
...
...
@@ -468,6 +468,7 @@ TITLE [tT][iI][tT][lL][eE]
%x Using
%x UsingDirective
%x NameSpaceDocArg1
%x PackageDocArg1
%x SkipCurly
%x SkipCurlyCpp
%x SkipCurlyEndDoc
...
...
@@ -1086,21 +1087,12 @@ TITLE [tT][iI][tT][lL][eE]
*currentTemplateSpec+=*yytext;
}
<FindMembers,FindMemberName>{SCOPENAME} {
// correct for misinterpreting return type as scope name: example: A<T> func()
//printf("YY_START=%d current->tArgList=%p current->mtArgList=%p\n",
// YY_START,current->tArgList,current->mtArgList);
//if (YY_START==FindMembers /*&& current->tArgList*/ && current->mtArgList==0)
//{
// current->mtArgList=current->tArgList;
// current->tArgList=0;
// current->scopeSpec.resize(0);
//}
lineCount();
if (insideIDL && yyleng==9 && strcmp(yytext,"cpp_quote")==0)
{
BEGIN(CppQuote);
}
else if (
insideIDL
&& yyleng==6 && strcmp(yytext,"import")==0)
else if (
(insideIDL || insideJava)
&& yyleng==6 && strcmp(yytext,"import")==0)
{
BEGIN(NextSemi);
}
...
...
@@ -2511,6 +2503,7 @@ TITLE [tT][iI][tT][lL][eE]
<Specialization>{BN}+ { lineCount(); *specName +=' '; }
<Specialization>"<<" { *specName += yytext; }
<Specialization>">>" { *specName += yytext; }
<Specialization>"typename"{BN}+ { lineCount(); }
<Specialization>. {
*specName += *yytext;
}
...
...
@@ -2766,6 +2759,12 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr;
BEGIN( NameSpaceDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"package"{B}+ {
current->section = Entry::PACKAGEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( PackageDocArg1 );
}
<Doc,JavaDoc>{B}*{CMD}"class"{B}+ {
current->section = Entry::CLASSDOC_SEC;
current->fileName = yyFileName;
...
...
@@ -2986,6 +2985,18 @@ TITLE [tT][iI][tT][lL][eE]
);
yyLineNr++;
}
<PackageDocArg1>{SCOPENAME} {
current->name = yytext;
newDocState();
}
<PackageDocArg1>"\\"{B}*"\n" { yyLineNr++; }
<PackageDocArg1>"\n" {
warn(yyFileName,yyLineNr,
"Warning: missing argument after "
"\\package."
);
yyLineNr++;
}
<ClassDocArg1>{SCOPENAME}/"<" {
current->name = yytext;
// prepend outer scope name
...
...
src/util.cpp
View file @
eed68005
...
...
@@ -2819,7 +2819,7 @@ QCString convertNameToFile(const char *name,bool allowDots)
}
else
{
num
=
(
int
)
value
;
num
=
*
(
int
*
)
&
value
;
}
QCString
result
;
result
.
sprintf
(
"a%05d"
,
num
);
...
...
@@ -3109,10 +3109,13 @@ bool extractClassNameFromType(const QCString &type,int &pos,QCString &name,QCStr
/*! Substitutes any occurrence of a formal argument from argument list
* \a formalArgs in \a name by the corresponding actual argument in
* argument list \a actualArgs. The result after substitution
* is returned as a string.
* is returned as a string. The argument \a className is used to
* prevent recursive substitution.
*/
QCString
substituteTemplateArgumentsInString
(
const
QCString
&
name
,
ArgumentList
*
formalArgs
,
ArgumentList
*
actualArgs
)
const
QCString
&
name
,
ArgumentList
*
formalArgs
,
ArgumentList
*
actualArgs
)
{
//printf("substituteTemplateArgumentsInString(name=%s formal=%s actualArg=%s)\n",
// name.data(),argListToString(formalArgs).data(),argListToString(actualArgs).data());
...
...
src/util.h
View file @
eed68005
...
...
@@ -153,7 +153,9 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupDict *memberGroupDict,
bool
extractClassNameFromType
(
const
QCString
&
type
,
int
&
pos
,
QCString
&
name
,
QCString
&
templSpec
);
QCString
substituteTemplateArgumentsInString
(
const
QCString
&
name
,
ArgumentList
*
formalArgs
,
ArgumentList
*
actualArgs
);
const
QCString
&
name
,
ArgumentList
*
formalArgs
,
ArgumentList
*
actualArgs
);
ArgumentList
*
copyArgumentList
(
const
ArgumentList
*
src
);
QList
<
ArgumentList
>
*
copyArgumentLists
(
const
QList
<
ArgumentList
>
*
srcLists
);
...
...
src/xmlgen.cpp
View file @
eed68005
...
...
@@ -329,11 +329,16 @@ class XMLGenerator : public OutputDocInterface
endNestedPar
();
m_t
<<
"</simplesect>"
;
}
void
startParamList
()
void
startParamList
(
ParamListTypes
t
)
{
m_t
<<
"<parameterlist><title>"
;
// non DocBook
// TODO: what kind of list
// param, retval, exception
QCString
kind
;
switch
(
t
)
{
case
Param
:
kind
=
"param"
;
break
;
case
RetVal
:
kind
=
"retval"
;
break
;
case
Exception
:
kind
=
"exception"
;
break
;
}
m_t
<<
"<parameterlist kind=
\"
"
<<
kind
<<
"
\"
><title>"
;
// non DocBook
m_inParamList
=
TRUE
;
}
void
endParamList
()
...
...
tmake/lib/unix/generic.t
View file @
eed68005
...
...
@@ -67,7 +67,7 @@
if
(
Config
(
"moc"
)
)
{
$moc_aware
=
1
;
}
Project
(
'TMAKE_LIBS
+= $$
LIBS'
);
Project
(
'TMAKE_LIBS
= $$LIBS $$TMAKE_
LIBS'
);
if
(
!
Project
(
"TMAKE_RUN_CC"
)
)
{
Project
(
'TMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src'
);
}
...
...
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