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
b37fae19
Commit
b37fae19
authored
Oct 12, 2008
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.5.7.1-20081012
parent
2b7214ab
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
443 additions
and
146 deletions
+443
-146
INSTALL
INSTALL
+2
-2
README
README
+2
-2
configure
configure
+1
-1
config.doc
doc/config.doc
+22
-0
features.doc
doc/features.doc
+2
-2
index.doc
doc/index.doc
+1
-1
install.doc
doc/install.doc
+4
-4
lists.doc
doc/lists.doc
+1
-1
code.l
src/code.l
+15
-1
commentscan.l
src/commentscan.l
+12
-5
config.l
src/config.l
+55
-12
definition.cpp
src/definition.cpp
+3
-0
diagram.cpp
src/diagram.cpp
+2
-2
docparser.cpp
src/docparser.cpp
+3
-1
docsets.h
src/docsets.h
+2
-0
dot.cpp
src/dot.cpp
+7
-0
doxygen.cpp
src/doxygen.cpp
+5
-0
doxygen.css
src/doxygen.css
+0
-4
doxygen_css.h
src/doxygen_css.h
+0
-4
ftvhelp.h
src/ftvhelp.h
+2
-0
htmlgen.cpp
src/htmlgen.cpp
+5
-4
htmlhelp.h
src/htmlhelp.h
+2
-0
index.h
src/index.h
+6
-0
namespacedef.cpp
src/namespacedef.cpp
+20
-0
namespacedef.h
src/namespacedef.h
+2
-1
qhp.cpp
src/qhp.cpp
+89
-56
qhp.h
src/qhp.h
+10
-8
rtfgen.cpp
src/rtfgen.cpp
+14
-4
scanner.l
src/scanner.l
+1
-1
util.cpp
src/util.cpp
+119
-26
util.h
src/util.h
+3
-1
vhdldocgen.cpp
src/vhdldocgen.cpp
+29
-1
vhdlscanner.l
src/vhdlscanner.l
+2
-2
No files found.
INSTALL
View file @
b37fae19
DOXYGEN Version 1.5.7.1
DOXYGEN Version 1.5.7.1
-20081012
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
04
October 2008)
Dimitri van Heesch (
12
October 2008)
README
View file @
b37fae19
DOXYGEN Version 1.5.7.1
DOXYGEN Version 1.5.7.1
_20081012
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) (
04
October 2008)
Dimitri van Heesch (dimitri@stack.nl) (
12
October 2008)
configure
View file @
b37fae19
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision
=
7.1
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
NO
doxygen_version_mmn
=
20081012
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/config.doc
View file @
b37fae19
...
...
@@ -195,6 +195,9 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_project_number
PROJECT_NUMBER
\
refitem
cfg_qhp_namespace
QHP_NAMESPACE
\
refitem
cfg_qhp_virtual_folder
QHP_VIRTUAL_FOLDER
\
refitem
cfg_qhp_custom_filter_name
QHP_CUSTOM_FILTER_NAME
\
refitem
cfg_qhp_cust_filter_attrs
QHP_CUST_FILTER_ATTRS
\
refitem
cfg_qhp_sect_filter_attrs
QHP_SECT_FILTER_ATTRS
\
refitem
cfg_qhg_location
QHG_LOCATION
\
refitem
cfg_qt_autobrief
QT_AUTOBRIEF
\
refitem
cfg_quiet
QUIET
...
...
@@ -1384,6 +1387,25 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn"
generating
Qt
Help
Project
output
.
For
more
information
please
see
<
a
href
=
"http://doc.trolltech.com/qthelpproject.html#virtual-folders"
>
Qt
Help
Project
/
Virtual
Folders
</
a
>.
\
anchor
cfg_qhp_custom_filter_name
<
dt
>\
c
QHP_CUSTOM_FILTER_NAME
<
dd
>
\
addindex
QHP_CUSTOM_FILTER_NAME
If
QHP_CUSTOM_FILTER_NAME
is
set
,
it
specifies
the
name
of
a
custom
filter
to
add
.
For
more
information
please
see
<
a
href
=
"http://doc.trolltech.com/qthelpproject.html#custom-filters"
>
Qt
Help
Project
/
Custom
Filters
</
a
>.
\
anchor
cfg_qhp_cust_filter_attrs
<
dt
>\
c
QHP_CUST_FILTER_ATTRS
<
dd
>
\
addindex
QHP_CUST_FILTER_ATTRS
The
QHP_CUST_FILTER_ATTRIBUTES
tag
specifies
the
list
of
the
attributes
of
the
custom
filter
to
add
.
For
more
information
please
see
<
a
href
=
"http://doc.trolltech.com/qthelpproject.html#custom-filters"
>
Qt
Help
Project
/
Custom
Filters
</
a
>.
\
anchor
cfg_qhp_sect_filter_attrs
<
dt
>\
c
QHP_SECT_FILTER_ATTRS
<
dd
>
\
addindex
QHP_SECT_FILTER_ATTRS
The
QHP_SECT_FILTER_ATTRS
tag
specifies
the
list
of
the
attributes
this
project
's filter section matches.
<a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
\anchor cfg_qhg_location
<dt>\c QHG_LOCATION <dd>
\addindex QHG_LOCATION
...
...
doc/features.doc
View file @
b37fae19
...
...
@@ -80,11 +80,11 @@
Although doxygen can now be used in any project written in a language that is
supported by doxygen, initially it was specifically designed to be used for projects
that make use of
Troll Tech
's
that make use of
Qt Software
's
<A HREF="http://www.trolltech.com/products/qt.html">Qt toolkit</A>. I have tried to
make doxygen `Qt-compatible'. That is: Doxygen can read the documentation contained in
the Qt source code and create a class browser that looks quite similar to the
one that is generated by
Troll Tech
. Doxygen understands the C++ extensions
one that is generated by
Qt Software
. Doxygen understands the C++ extensions
used by Qt such as signals and slots and many of the markup commands used in the Qt sources.
Doxygen can also automatically generate links to existing documentation
...
...
doc/index.doc
View file @
b37fae19
...
...
@@ -175,7 +175,7 @@ Thanks go to:
The first version of doxygen borrowed some code of an old version of DOC++.
Although I have rewritten practically all code since then, DOC++ has still
given me a good start in writing doxygen.
<li>All people at
Troll Tech
, for creating a beautiful GUI Toolkit
<li>All people at
Qt Software
, for creating a beautiful GUI Toolkit
(which is very useful as a Windows/Unix platform abstraction layer :-)
<li>Kevin McBride for maintaining the subversion reporsitory for doxygen.
<li>My brother Frank
...
...
doc/install.doc
View file @
b37fae19
...
...
@@ -55,7 +55,7 @@ To take full advantage of doxygen's features the following additional
tools should be installed.
<ul>
<li>
Troll Tech
's GUI toolkit
<li>
Qt Software
's GUI toolkit
<A HREF="http://www.trolltech.com/products/qt.html">Qt</A>
\latexonly(see {\tt http://www.trolltech.com/products/qt.html})\endlatexonly
\addindex Qt
...
...
@@ -505,7 +505,7 @@ Here is what is required:
For doxywizard, a complete Qt library is
still a requirement however. A commercial license to build
doxywizard with the latest Qt library was kindly donated to me
by the nice people at <a href="http://www.trolltech.com">
TrollTech
</a>.
by the nice people at <a href="http://www.trolltech.com">
Qt Software
</a>.
See doxygen download page for a link.
<li>If you used WinZip to extract the tar archive it will (apparently) not
...
...
@@ -589,7 +589,7 @@ You can download it from
If you want to produce Qt Compressed Help files (see \ref
cfg_qhg_location "QHG_LOCATION") in the config file, then
you need qhelpgenerator which is part of Qt.
You can download Qt from <a href="http://trolltech.com/downloads/">
Trolltech
Downloads</a>.
You can download Qt from <a href="http://trolltech.com/downloads/">
Qt Software
Downloads</a>.
In order to generate PDF output or use scientific formulas you will also need to
install <a href="http://en.wikipedia.org/wiki/LaTeX">LaTeX</a> and
...
...
@@ -662,7 +662,7 @@ features:
cfg_qhelgenerator_loc "QHG_LOCATION") in the config file,
then you need qhelpgenerator which is part of Qt.
You can download Qt from
<a href="http://trolltech.com/downloads/">
Trolltech
Downloads</a>.
<a href="http://trolltech.com/downloads/">
Qt Software
Downloads</a>.
<li><a href="http://www.graphviz.org/">
the Graph visualization toolkit version 1.8.10</a><br>
...
...
doc/lists.doc
View file @
b37fae19
...
...
@@ -103,7 +103,7 @@ Here is the above example with HTML commands:
<b>Using \\arg or \@li</b>
For compatibility with the
Troll Tech's internal documentation tool
and
For compatibility with the
Qt Software's internal documentation tool qdoc
and
with KDoc, doxygen has two commands that can be used to create simple
unnested lists.
...
...
src/code.l
View file @
b37fae19
...
...
@@ -687,7 +687,7 @@ static MemberDef *setCallContextForVar(const QCString &name)
QCString scope = name.left(scopeEnd);
QCString locName = name.right(name.length()-scopeEnd-2);
//printf("explicit scope: name=%s scope=%s\n",locName.data(),scope.data());
ClassDef *mcd = getClass(scope);
// TODO: check namespace as well
ClassDef *mcd = getClass(scope);
if (mcd && !locName.isEmpty())
{
MemberDef *md=mcd->getMemberByName(locName);
...
...
@@ -698,6 +698,20 @@ static MemberDef *setCallContextForVar(const QCString &name)
return md;
}
}
else // check namespace as well
{
NamespaceDef *mnd = getResolvedNamespace(scope);
if (mnd && !locName.isEmpty())
{
MemberDef *md=mnd->getMemberByName(locName);
if (md)
{
//printf("name=%s scope=%s\n",locName.data(),scope.data());
g_theCallContext.setClass(stripClassName(md->typeString()));
return md;
}
}
}
}
MemberName *mn;
...
...
src/commentscan.l
View file @
b37fae19
...
...
@@ -151,11 +151,11 @@ static DocCmdMap docCmdMap[] =
{ "example", &handleExample, FALSE },
{ "details", &handleDetails, TRUE },
{ "name", &handleName, FALSE },
{ "todo", &handleTodo,
TRUE },
{ "test", &handleTest,
TRUE },
{ "bug", &handleBug,
TRUE },
{ "deprecated", &handleDeprecated,
TRUE },
{ "xrefitem", &handleXRefItem,
TRUE },
{ "todo", &handleTodo,
FALSE }, // end brief will be done differently
{ "test", &handleTest,
FALSE }, // end brief will be done differently
{ "bug", &handleBug,
FALSE }, // end brief will be done differently
{ "deprecated", &handleDeprecated,
FALSE }, // end brief will be done differently
{ "xrefitem", &handleXRefItem,
FALSE }, // end brief will be done differently
{ "related", &handleRelated, TRUE },
{ "relates", &handleRelated, TRUE },
{ "relatedalso", &handleRelatedAlso, TRUE },
...
...
@@ -624,6 +624,13 @@ static inline void setOutput(OutputContext ctx)
newXRefKind==xrefKind && // of the same kind
(xrefKind!=XRef_Item ||
newXRefItemKey==xrefItemKey); // with the same key if \xrefitem
//printf("%d && %d && %d && (%d || %d)\n",
// inContext==OutputXRef,
// ctx==OutputXRef,
// newXRefKind==xrefKind,
// xrefKind!=XRef_Item,
// newXRefItemKey==xrefItemKey);
//printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
// xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
...
...
src/config.l
View file @
b37fae19
...
...
@@ -1270,19 +1270,28 @@ void Config::check()
// check QHP creation requirements
if (Config_getBool("GENERATE_QHP"))
{
bool quit = false;
if (!Config_getBool("GENERATE_HTML"))
{
config_err("Warning: GENERATE_QHP=YES requires GENERATE_HTML=YES.\n");
quit = true;
}
if (Config_getString("QHP_NAMESPACE").isEmpty())
{
config_err("Warning: GENERATE_QHP=YES requires QHP_NAMESPACE to be set.\n");
quit = true;
}
if (Config_getString("QHP_VIRTUAL_FOLDER").isEmpty())
{
config_err("Warning: GENERATE_QHP=YES requires QHP_VIRTUAL_FOLDER to be set.\n");
quit = true;
}
if (quit)
{
exit(1);
}
}
...
...
@@ -1751,6 +1760,16 @@ void Config::create()
"VHDL. \n",
FALSE
);
cl = addList( "EXTENSION_MAPPING",
"Doxygen selects the parser to use depending on the extension of the files it parses. \n"
"With this tag you can assign which parser to use for a given extension. \n"
"Doxygen has a built-in mapping, but you can override or extend it using this tag. \n"
"The format is ext=language, where ext is a file extension, and language is one of \n"
"the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, \n"
"Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat \n"
".inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), \n"
"use: inc=Fortran f=C\n"
);
cb = addBool(
"BUILTIN_STL_SUPPORT",
"If you use STL classes (i.e. std::string, std::vector, etc.) but do not want \n"
...
...
@@ -1774,15 +1793,15 @@ void Config::create()
"instead of private inheritance when no explicit protection keyword is present. \n",
FALSE
);
cb = addBool( "IDL_PROPERTY_SUPPORT",
"For Microsoft's IDL there are propget and propput attributes to indicate getter \n"
"and setter methods for a property. Setting this option to YES (the default) \n"
"will make doxygen to replace the get and set methods by a property in the \n"
"documentation. This will only work if the methods are indeed getting or \n"
"setting a simple type. If this is not the case, or you want to show the \n"
"methods anyway, you should set this option to NO. \n",
TRUE
);
cb = addBool(
"IDL_PROPERTY_SUPPORT",
"For Microsoft's IDL there are propget and propput attributes to indicate getter \n"
"and setter methods for a property. Setting this option to YES (the default) \n"
"will make doxygen to replace the get and set methods by a property in the \n"
"documentation. This will only work if the methods are indeed getting or \n"
"setting a simple type. If this is not the case, or you want to show the \n"
"methods anyway, you should set this option to NO. \n",
TRUE
);
cb = addBool(
"DISTRIBUTE_GROUP_DOC",
"If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"
...
...
@@ -2565,18 +2584,42 @@ void Config::create()
"QHP_NAMESPACE",
"The QHP_NAMESPACE tag specifies the namespace to use when generating \n"
"Qt Help Project output. For more information please see \n"
"
<a href=\"http://doc.trolltech.com/qthelpproject.html#namespace\">Qt Help Project / Namespace</a>.
\n"
"
http://doc.trolltech.com/qthelpproject.html#namespace
\n"
);
cs->setDefaultValue("org.doxygen.Project");
cs->addDependency("GENERATE_QHP");
cs = addString(
"QHP_VIRTUAL_FOLDER",
"The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating \n"
"Qt Help Project output. For more information please see \n"
"
<a href=\"http://doc.trolltech.com/qthelpproject.html#virtual-folders\">Qt Help Project / Virtual Folders</a>.
\n"
"
http://doc.trolltech.com/qthelpproject.html#virtual-folders
\n"
);
cs->setDefaultValue("doc");
cs->addDependency("GENERATE_QHP");
cs = addString(
"QHP_CUSTOM_FILTER_NAME",
"If QHP_CUSTOM_FILTER_NAME is set, it specifies the name of a custom filter to add. \n"
"For more information please see \n"
"http://doc.trolltech.com/qthelpproject.html#custom-filters \n"
);
cs->addDependency("GENERATE_QHP");
cs = addString(
"QHP_CUST_FILTER_ATTRS",
"The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add."
"For more information please see \n"
"<a href=\"http://doc.trolltech.com/qthelpproject.html#custom-filters\">Qt Help Project / Custom Filters</a>. \n"
);
cs->addDependency("GENERATE_QHP");
cs = addString(
"QHP_SECT_FILTER_ATTRS",
"The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's \n"
"filter section matches. \n"
"<a href=\"http://doc.trolltech.com/qthelpproject.html#filter-attributes\">Qt Help Project / Filter Attributes</a>. \n"
);
cs->addDependency("GENERATE_QHP");
cs = addString(
"QHG_LOCATION",
"If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can \n"
...
...
src/definition.cpp
View file @
b37fae19
...
...
@@ -1238,8 +1238,11 @@ QCString Definition::briefDescriptionAsTooltip() const
static
bool
reentering
=
FALSE
;
if
(
!
reentering
)
{
MemberDef
*
md
=
definitionType
()
==
TypeMember
?
(
MemberDef
*
)
this
:
0
;
const
Definition
*
scope
=
definitionType
()
==
TypeMember
?
getOuterScope
()
:
this
;
reentering
=
TRUE
;
// prevent requests for tooltips while parsing a tooltip
m_impl
->
brief
->
tooltip
=
parseCommentAsText
(
scope
,
md
,
m_impl
->
brief
->
doc
,
m_impl
->
brief
->
file
,
m_impl
->
brief
->
line
);
...
...
src/diagram.cpp
View file @
b37fae19
...
...
@@ -30,10 +30,9 @@
#include "config.h"
#include "message.h"
#include "util.h"
//#include "latexgen.h"
//#include "htmlgen.h"
#include "doxygen.h"
#include "portable.h"
#include "index.h"
//-----------------------------------------------------------------------------
...
...
@@ -1291,6 +1290,7 @@ void ClassDiagram::writeImage(QTextStream &t,const char *path,
super
->
drawConnectors
(
t
,
&
image
,
FALSE
,
TRUE
,
baseRows
,
superRows
,
cellWidth
,
cellHeight
);
image
.
save
((
QCString
)
path
+
"/"
+
fileName
+
".png"
);
Doxygen
::
indexList
.
addImageFile
(
QCString
(
fileName
)
+
".png"
);
if
(
generateMap
)
t
<<
"</map>"
<<
endl
;
}
...
...
src/docparser.cpp
View file @
b37fae19
...
...
@@ -2122,6 +2122,7 @@ DocRef::DocRef(DocNode *parent,const QString &target,const QString &context) :
{
Definition
*
compound
=
0
;
QCString
anchor
;
//printf("DocRef::DocRef(target=%s,context=%s\n",target.data(),context.data());
ASSERT
(
!
target
.
isEmpty
());
m_relPath
=
g_relPath
;
SectionInfo
*
sec
=
Doxygen
::
sectionDict
[
target
];
...
...
@@ -6086,6 +6087,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
{
g_context
=
""
;
}
//printf("g_context=%s\n",g_context.data());
if
(
indexWords
&&
md
&&
Config_getBool
(
"SEARCHENGINE"
))
{
...
...
@@ -6216,7 +6218,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
// restore original parser state
docParserPopContext
();
//printf("end validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>",
//printf("
>>>>>>
end validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>",
// md?md->name().data():"<none>");
return
root
;
...
...
src/docsets.h
View file @
b37fae19
...
...
@@ -50,6 +50,8 @@ class DocSets : public IndexIntf
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
private
:
void
writeToken
(
QTextStream
&
t
,
const
Definition
*
d
,
...
...
src/dot.cpp
View file @
b37fae19
...
...
@@ -1123,6 +1123,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) const
checkDotResult
(
imgName
);
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
dotName
);
}
Doxygen
::
indexList
.
addImageFile
(
imgName
);
// write image and map in a table row
QCString
mapLabel
=
convertNameToFile
(
n
->
m_label
);
out
<<
"<tr><td><img src=
\"
"
<<
imgName
<<
"
\"
border=
\"
0
\"
alt=
\"\"
usemap=
\"
#"
...
...
@@ -1908,6 +1909,7 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
}
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
baseName
+
".dot"
);
}
Doxygen
::
indexList
.
addImageFile
(
baseName
+
"."
+
imgExt
);
if
(
format
==
BITMAP
&&
generateImageMap
)
// produce HTML to include the image
{
...
...
@@ -2238,6 +2240,7 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
}
}
}
Doxygen
::
indexList
.
addImageFile
(
baseName
+
"."
+
imgExt
);
if
(
format
==
BITMAP
&&
generateImageMap
)
{
...
...
@@ -2531,6 +2534,7 @@ QCString DotCallGraph::writeGraph(QTextStream &out, GraphOutputFormat format,
}
}
}
Doxygen
::
indexList
.
addImageFile
(
baseName
+
"."
+
imgExt
);
if
(
format
==
BITMAP
&&
generateImageMap
)
{
...
...
@@ -2672,6 +2676,7 @@ QCString DotDirDeps::writeGraph(QTextStream &out,
}
}
}
Doxygen
::
indexList
.
addImageFile
(
baseName
+
"."
+
imgExt
);
if
(
format
==
BITMAP
&&
generateImageMap
)
{
...
...
@@ -2784,6 +2789,7 @@ void generateGraphLegend(const char *path)
return
;
}
checkDotResult
(
imgName
);
Doxygen
::
indexList
.
addImageFile
(
imgName
);
QDir
::
setCurrent
(
oldDir
);
}
...
...
@@ -2836,6 +2842,7 @@ void writeDotGraphFromFile(const char *inFile,const char *outDir,
}
if
(
format
==
BITMAP
)
checkDotResult
(
imgName
);
Doxygen
::
indexList
.
addImageFile
(
imgName
);
if
(
env
==
"."
)
{
...
...
src/doxygen.cpp
View file @
b37fae19
...
...
@@ -10050,6 +10050,11 @@ void generateOutput()
if
(
usingTreeIndex
())
Doxygen
::
indexList
.
addIndex
(
new
FTVHelp
);
if
(
Config_getBool
(
"GENERATE_DOCSET"
))
Doxygen
::
indexList
.
addIndex
(
new
DocSets
);
Doxygen
::
indexList
.
initialize
();
Doxygen
::
indexList
.
addImageFile
(
"tab_r.gif"
);
Doxygen
::
indexList
.
addImageFile
(
"tab_l.gif"
);
Doxygen
::
indexList
.
addImageFile
(
"tab_b.gif"
);
Doxygen
::
indexList
.
addStyleSheetFile
(
"tabs.css"
);
Doxygen
::
indexList
.
addImageFile
(
"doxygen.png"
);
if
(
Config_getBool
(
"HTML_DYNAMIC_SECTIONS"
))
HtmlGenerator
::
generateSectionImages
();
copyStyleSheet
();
}
...
...
src/doxygen.css
View file @
b37fae19
...
...
@@ -322,10 +322,6 @@ hr {
-moz-border-radius-bottomright
:
8px
;
}
.memdoc
p
,
.memdoc
dl
,
.memdoc
ul
{
margin
:
6px
0
;
}
.paramkey
{
text-align
:
right
;
}
...
...
src/doxygen_css.h
View file @
b37fae19
...
...
@@ -322,10 +322,6 @@
" -moz-border-radius-bottomright: 8px;
\n
"
"}
\n
"
"
\n
"
".memdoc p, .memdoc dl, .memdoc ul {
\n
"
" margin: 6px 0;
\n
"
"}
\n
"
"
\n
"
".paramkey {
\n
"
" text-align: right;
\n
"
"}
\n
"
...
...
src/ftvhelp.h
View file @
b37fae19
...
...
@@ -86,6 +86,8 @@ class FTVHelp : public IndexIntf
const
char
*
,
const
char
*
,
const
char
*
,
const
MemberDef
*
)
{}
void
addIndexFile
(
const
char
*
)
{}
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
void
generateTreeView
(
QString
*
=
NULL
);
private
:
void
generateTreeViewImages
();
...
...
src/htmlgen.cpp
View file @
b37fae19
...
...
@@ -547,10 +547,7 @@ void HtmlGenerator::init()
}
createSubDirs
(
d
);
//if (Config_getBool("HTML_FANCY_TABS"))
{
writeTabData
(
dname
);
}
writeTabData
(
dname
);
}
void
HtmlGenerator
::
writeStyleSheetFile
(
QFile
&
file
)
...
...
@@ -778,6 +775,7 @@ void HtmlGenerator::writeStyleInfo(int part)
t
<<
defaultStyleSheet
;
endPlainFile
();
Doxygen
::
indexList
.
addStyleSheetFile
(
"doxygen.css"
);
}
else
// write user defined style sheet
{
...
...
@@ -796,6 +794,7 @@ void HtmlGenerator::writeStyleInfo(int part)
t
<<
fileStr
;
endPlainFile
();
}
Doxygen
::
indexList
.
addStyleSheetFile
(
cssfi
.
fileName
());
}
}
}
...
...
@@ -2345,6 +2344,7 @@ void HtmlGenerator::generateSectionImages()
{
f
.
writeBlock
((
char
*
)
open_gif
,
open_gif_len
);
}
Doxygen
::
indexList
.
addImageFile
(
"open.gif"
);
}
{
QCString
fileName
=
Config_getString
(
"HTML_OUTPUT"
)
+
"/closed.gif"
;
...
...
@@ -2353,6 +2353,7 @@ void HtmlGenerator::generateSectionImages()
{
f
.
writeBlock
((
char
*
)
closed_gif
,
closed_gif_len
);
}
Doxygen
::
indexList
.
addImageFile
(
"closed.gif"
);
}
}
...
...
src/htmlhelp.h
View file @
b37fae19
...
...
@@ -78,6 +78,8 @@ class HtmlHelp : public IndexIntf
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
private
:
void
createProjectFile
();
...
...
src/index.h
View file @
b37fae19
...
...
@@ -39,6 +39,8 @@ class IndexIntf
virtual
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
)
=
0
;
virtual
void
addIndexFile
(
const
char
*
name
)
=
0
;
virtual
void
addImageFile
(
const
char
*
name
)
=
0
;
virtual
void
addStyleSheetFile
(
const
char
*
name
)
=
0
;
};
class
IndexList
:
public
IndexIntf
...
...
@@ -92,6 +94,10 @@ class IndexList : public IndexIntf
(
&
IndexIntf
::
addIndexItem
,
level1
,
level2
,
contRef
,
memRef
,
anchor
,
md
);
}
void
addIndexFile
(
const
char
*
name
)
{
foreach
<
const
char
*>
(
&
IndexIntf
::
addIndexFile
,
name
);
}
void
addImageFile
(
const
char
*
name
)
{
foreach
<
const
char
*>
(
&
IndexIntf
::
addImageFile
,
name
);
}
void
addStyleSheetFile
(
const
char
*
name
)
{
foreach
<
const
char
*>
(
&
IndexIntf
::
addStyleSheetFile
,
name
);
}
};
...
...
src/namespacedef.cpp
View file @
b37fae19
...
...
@@ -51,6 +51,7 @@ NamespaceDef::NamespaceDef(const char *df,int dl,
m_innerCompounds
=
new
SDict
<
Definition
>
(
17
);
usingDirList
=
0
;
usingDeclList
=
0
;
m_allMembersDict
=
0
;
setReference
(
lref
);
memberGroupSDict
=
new
MemberGroupSDict
;
memberGroupSDict
->
setAutoDelete
(
TRUE
);
...
...
@@ -183,6 +184,12 @@ void NamespaceDef::insertMember(MemberDef *md)
m_memberLists
.
append
(
allMemberList
);
}
allMemberList
->
append
(
md
);
if
(
m_allMembersDict
==
0
)
{
m_allMembersDict
=
new
MemberSDict
;
}
//printf("%s::m_allMembersDict->append(%s)\n",name().data(),md->localName().data());
m_allMembersDict
->
append
(
md
->
localName
(),
md
);
//::addNamespaceMemberNameToIndex(md);
//static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
switch
(
md
->
memberType
())
...
...
@@ -935,3 +942,16 @@ bool NamespaceDef::isLinkable() const
{
return
isLinkableInProject
()
||
isReference
();
}
MemberDef
*
NamespaceDef
::
getMemberByName
(
const
QCString
&
n
)
const
{
MemberDef
*
md
=
0
;
if
(
m_allMembersDict
&&
!
n
.
isEmpty
())
{
md
=
m_allMembersDict
->
find
(
n
);
//printf("%s::m_allMembersDict->find(%s)=%p\n",name().data(),n.data(),md);
}
return
md
;
}
src/namespacedef.h
View file @
b37fae19
...
...
@@ -74,6 +74,7 @@ class NamespaceDef : public Definition
MemberList
*
getMemberList
(
MemberList
::
ListType
lt
)
const
;
const
QList
<
MemberList
>
&
getMemberLists
()
const
{
return
m_memberLists
;
}
MemberDef
*
getMemberByName
(
const
QCString
&
)
const
;
/*! Returns the user defined member groups */
MemberGroupSDict
*
getMemberGroupSDict
()
const
{
return
memberGroupSDict
;
}
...
...
@@ -109,7 +110,7 @@ class NamespaceDef : public Definition
SDict
<
Definition
>
*
usingDeclList
;
SDict
<
Definition
>
*
m_innerCompounds
;
//MemberList *allMemberLis
t;
MemberSDict
*
m_allMembersDic
t
;
QList
<
MemberList
>
m_memberLists
;
MemberGroupSDict
*
memberGroupSDict
;
ClassSDict
*
classSDict
;
...
...
src/qhp.cpp
View file @
b37fae19
...
...
@@ -19,15 +19,16 @@
#include "message.h"
#include "config.h"
#include <qstringlist.h>
#include <string.h>
static
QCString
makeFileName
(
c
har
const
*
withoutExtension
)
static
QCString
makeFileName
(
c
onst
char
*
withoutExtension
)
{
if
(
!
withoutExtension
)
return
QCString
();
return
QCString
(
withoutExtension
)
+
".html"
;
}
static
QCString
makeRef
(
c
har
const
*
withoutExtension
,
char
const
*
anchor
)
static
QCString
makeRef
(
c
onst
char
*
withoutExtension
,
const
char
*
anchor
)
{
if
(
!
withoutExtension
)
return
QCString
();
QCString
result
=
makeFileName
(
withoutExtension
);
...
...
@@ -65,26 +66,57 @@ void Qhp::initialize()
*/
QCString
nameSpace
=
Config_getString
(
"QHP_NAMESPACE"
);
QCString
virtualFolder
=
Config_getString
(
"QHP_VIRTUAL_FOLDER"
);
QCString
projectTitle
=
getFullProjectName
();
QCString
filterIdent
=
projectTitle
;
QCString
filterAttribute
=
projectTitle
;
c
har
const
*
rootAttributes
[]
=
c
onst
char
*
rootAttributes
[]
=
{
"version"
,
"1.0"
,
0
};
char
const
*
customFilterAttributes
[]
=
{
"name"
,
filterIdent
,
0
};
m_doc
.
open
(
"QtHelpProject"
,
rootAttributes
);
m_doc
.
openCloseContent
(
"namespace"
,
nameSpace
);
m_doc
.
openCloseContent
(
"virtualFolder"
,
virtualFolder
);
m_doc
.
open
(
"customFilter"
,
customFilterAttributes
);
m_doc
.
openCloseContent
(
"filterAttribute"
,
filterAttribute
);
m_doc
.
close
(
"customFilter"
);
// Add custom filter
QCString
filterName
=
Config_getString
(
"QHP_CUSTOM_FILTER_NAME"
);
if
(
!
filterName
.
isEmpty
())
{
const
char
*
tagAttributes
[]
=
{
"name"
,
filterName
,
0
};
m_doc
.
open
(
"customFilter"
,
tagAttributes
);
QStringList
customFilterAttributes
=
QStringList
::
split
(
' '
,
Config_getString
(
"QHP_CUST_FILTER_ATTRS"
));
for
(
int
i
=
0
;
i
<
(
int
)
customFilterAttributes
.
count
();
i
++
)
{
m_doc
.
openCloseContent
(
"filterAttribute"
,
customFilterAttributes
[
i
]);
}
m_doc
.
close
(
"customFilter"
);
}
m_doc
.
open
(
"filterSection"
);
m_doc
.
openCloseContent
(
"filterAttribute"
,
filterAttribute
);
// Add section attributes
QStringList
sectionFilterAttributes
=
QStringList
::
split
(
' '
,
Config_getString
(
"QHP_SECT_FILTER_ATTRS"
));
if
(
!
sectionFilterAttributes
.
contains
(
QString
(
"doxygen"
)))
{
sectionFilterAttributes
<<
"doxygen"
;
}
for
(
int
i
=
0
;
i
<
(
int
)
sectionFilterAttributes
.
count
();
i
++
)
{
m_doc
.
openCloseContent
(
"filterAttribute"
,
sectionFilterAttributes
[
i
]);
}
m_toc
.
open
(
"toc"
);
// Add extra root node
QCString
fullProjectname
=
getFullProjectName
();
const
char
*
const
attributes
[]
=
{
"title"
,
fullProjectname
,
"ref"
,
"index.html"
,
NULL
};
m_toc
.
open
(
"section"
,
attributes
);
m_prevSectionLevel
=
1
;
m_sectionLevel
=
1
;
m_index
.
open
(
"keywords"
);
m_files
.
open
(
"files"
);
}
...
...
@@ -93,6 +125,10 @@ void Qhp::finalize()
{
// Finish TOC
handlePrevSection
();
for
(
int
i
=
m_prevSectionLevel
;
i
>
0
;
i
--
)
{
m_toc
.
close
(
"section"
);
}
m_toc
.
close
(
"toc"
);
m_doc
.
insert
(
m_toc
);
...
...
@@ -101,12 +137,6 @@ void Qhp::finalize()
m_doc
.
insert
(
m_index
);
// Finish files
addFile
(
"doxygen.css"
);
addFile
(
"doxygen.png"
);
addFile
(
"tab_b.gif"
);
addFile
(
"tab_l.gif"
);
addFile
(
"tab_r.gif"
);
addFile
(
"tabs.css"
);
m_files
.
close
(
"files"
);
m_doc
.
insert
(
m_files
);
...
...
@@ -137,9 +167,9 @@ void Qhp::decContentsDepth()
m_sectionLevel
--
;
}
void
Qhp
::
addContentsItem
(
bool
/*isDir*/
,
c
har
const
*
name
,
c
har
const
*
/*ref*/
,
char
const
*
file
,
c
har
const
*
/*anchor*/
)
void
Qhp
::
addContentsItem
(
bool
/*isDir*/
,
c
onst
char
*
name
,
c
onst
char
*
/*ref*/
,
const
char
*
file
,
c
onst
char
*
/*anchor*/
)
{
// Backup difference before modification
int
diff
=
m_prevSectionLevel
-
m_sectionLevel
;
...
...
@@ -154,9 +184,9 @@ void Qhp::addContentsItem(bool /*isDir*/, char const * name,
}
}
void
Qhp
::
addIndexItem
(
c
har
const
*
level1
,
char
const
*
level2
,
c
har
const
*
contRef
,
char
const
*
/*memRef*/
,
c
har
const
*
anchor
,
const
MemberDef
*
/*md*/
)
void
Qhp
::
addIndexItem
(
c
onst
char
*
level1
,
const
char
*
level2
,
c
onst
char
*
contRef
,
const
char
*
/*memRef*/
,
c
onst
char
*
anchor
,
const
MemberDef
*
/*md*/
)
{
/*
<keyword name="foo" id="MyApplication::foo" ref="doc.html#foo"/>
...
...
@@ -165,7 +195,7 @@ void Qhp::addIndexItem(char const * level1, char const * level2,
QCString
id
(
level1
);
id
+=
"::"
;
id
+=
level2
;
c
har
const
*
attributes
[]
=
c
onst
char
*
attributes
[]
=
{
"name"
,
level2
,
"id"
,
id
,
"ref"
,
ref
,
...
...
@@ -175,7 +205,7 @@ void Qhp::addIndexItem(char const * level1, char const * level2,
}
void
Qhp
::
addIndexFile
(
c
har
const
*
name
)
Qhp
::
addIndexFile
(
c
onst
char
*
name
)
{
addFile
(
name
);
}
...
...
@@ -183,7 +213,6 @@ Qhp::addIndexFile(char const * name)
/*static*/
QCString
Qhp
::
getQhpFileName
()
{
return
"index.qhp"
;
}
...
...
@@ -215,39 +244,33 @@ Qhp::handlePrevSection()
return
;
}
// Replace "Main Page" with <project_name> in TOC
QCString
finalTitle
;
if
(
m_prevSectionLevel
==
0
&&
m_prevSectionTitle
==
"Main Page"
)
// We skip "Main Page" as our extra root is pointing to that
if
(
!
((
m_prevSectionLevel
==
1
)
&&
(
m_prevSectionTitle
==
"Main Page"
)))
{
finalTitle
=
getFullProjectName
();
}
if
(
finalTitle
.
isEmpty
())
{
finalTitle
=
m_prevSectionTitle
;
}
QCString
finalRef
=
makeFileName
(
m_prevSectionRef
);
char
const
*
const
attributes
[]
=
{
"title"
,
finalTitle
,
"ref"
,
finalRef
,
NULL
};
if
(
m_prevSectionLevel
<
m_sectionLevel
)
{
// Section with children
m_toc
.
open
(
"section"
,
attributes
);
}
else
{
// Section without children
m_toc
.
openClose
(
"section"
,
attributes
);
QCString
finalRef
=
makeFileName
(
m_prevSectionRef
);
const
char
*
const
attributes
[]
=
{
"title"
,
m_prevSectionTitle
,
"ref"
,
finalRef
,
NULL
};
if
(
m_prevSectionLevel
<
m_sectionLevel
)
{
// Section with children
m_toc
.
open
(
"section"
,
attributes
);
}
else
{
// Section without children
m_toc
.
openClose
(
"section"
,
attributes
);
}
}
clearPrevSection
();
}
void
Qhp
::
setPrevSection
(
c
har
const
*
title
,
char
const
*
ref
,
int
level
)
void
Qhp
::
setPrevSection
(
c
onst
char
*
title
,
const
char
*
ref
,
int
level
)
{
m_prevSectionTitle
=
title
;
m_prevSectionRef
=
ref
;
...
...
@@ -258,10 +281,20 @@ void Qhp::clearPrevSection()
{
m_prevSectionTitle
.
resize
(
0
);
m_prevSectionRef
.
resize
(
0
);
m_prevSectionLevel
=
m_sectionLevel
;
}
void
Qhp
::
addFile
(
c
har
const
*
fileName
)
void
Qhp
::
addFile
(
c
onst
char
*
fileName
)
{
m_files
.
openCloseContent
(
"file"
,
fileName
);
}
void
Qhp
::
addImageFile
(
const
char
*
fileName
)
{
addFile
(
fileName
);
}
void
Qhp
::
addStyleSheetFile
(
const
char
*
fileName
)
{
addFile
(
fileName
);
}
src/qhp.h
View file @
b37fae19
...
...
@@ -31,12 +31,14 @@ class Qhp : public IndexIntf
void
finalize
();
void
incContentsDepth
();
void
decContentsDepth
();
void
addContentsItem
(
bool
isDir
,
char
const
*
name
,
char
const
*
ref
,
char
const
*
file
,
char
const
*
anchor
);
void
addIndexItem
(
char
const
*
level1
,
char
const
*
level2
,
char
const
*
contRef
,
char
const
*
memRef
,
char
const
*
anchor
,
const
MemberDef
*
md
);
void
addIndexFile
(
char
const
*
name
);
void
addContentsItem
(
bool
isDir
,
const
char
*
name
,
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
);
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
name
);
void
addStyleSheetFile
(
const
char
*
name
);
// END IndexIntf
static
QCString
getQhpFileName
();
...
...
@@ -44,8 +46,8 @@ class Qhp : public IndexIntf
private
:
void
handlePrevSection
();
void
clearPrevSection
();
void
setPrevSection
(
c
har
const
*
title
,
char
const
*
ref
,
int
level
);
void
addFile
(
c
har
const
*
fileName
);
void
setPrevSection
(
c
onst
char
*
title
,
const
char
*
ref
,
int
level
);
void
addFile
(
c
onst
char
*
fileName
);
static
QCString
getFullProjectName
();
...
...
src/rtfgen.cpp
View file @
b37fae19
...
...
@@ -922,10 +922,13 @@ void RTFGenerator::startIndexList()
void
RTFGenerator
::
endIndexList
()
{
DBG_RTF
(
t
<<
"{
\\
comment (endIndexList)}"
<<
endl
)
t
<<
"
\\
par"
;
if
(
!
m_omitParagraph
)
{
t
<<
"
\\
par"
;
m_omitParagraph
=
TRUE
;
}
t
<<
"}"
;
decrementIndentLevel
();
m_omitParagraph
=
TRUE
;
}
/*! start bullet list */
...
...
@@ -990,6 +993,12 @@ void RTFGenerator::writeListItem()
void
RTFGenerator
::
startIndexItem
(
const
char
*
,
const
char
*
)
{
DBG_RTF
(
t
<<
"{
\\
comment (startIndexItem)}"
<<
endl
)
if
(
!
m_omitParagraph
)
{
t
<<
"
\\
par"
<<
endl
;
m_omitParagraph
=
TRUE
;
}
}
void
RTFGenerator
::
endIndexItem
(
const
char
*
ref
,
const
char
*
fn
)
...
...
@@ -1006,7 +1015,6 @@ void RTFGenerator::endIndexItem(const char *ref,const char *fn)
t
<<
endl
;
}
m_omitParagraph
=
TRUE
;
newParagraph
();
}
//void RTFGenerator::writeIndexFileItem(const char *,const char *text)
...
...
@@ -2607,15 +2615,17 @@ void RTFGenerator::postProcess(QByteArray &a)
QByteArray
enc
(
a
.
size
()
*
4
);
// worst case
int
off
=
0
;
uint
i
;
bool
mbFlag
=
FALSE
;
for
(
i
=
0
;
i
<
a
.
size
();
i
++
)
{
unsigned
char
c
=
(
unsigned
char
)
a
.
at
(
i
);
if
(
c
>
0x80
)
if
(
c
>
0x80
||
mbFlag
)
{
char
s
[
10
];
sprintf
(
s
,
"
\\
'%X"
,
c
);
qstrcpy
(
enc
.
data
()
+
off
,
s
);
off
+=
qstrlen
(
s
);
mbFlag
=
c
>
0x80
;
}
else
{
...
...
src/scanner.l
View file @
b37fae19
...
...
@@ -5383,7 +5383,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
//printf("parseCommentBlock [%s]\n",doc.data());
while (parseCommentBlock(
g_thisParser,
docBlockInBody ? previous : current,
docBlockInBody
&& previous
? previous : current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
...
...
src/util.cpp
View file @
b37fae19
...
...
@@ -49,6 +49,18 @@
#include "textdocvisitor.h"
#include "portable.h"
#define ENABLE_TRACINGSUPPORT 0
#if defined(_OS_MAC_) && ENABLE_TRACINGSUPPORT
#define TRACINGSUPPORT
#endif
#ifdef TRACINGSUPPORT
#include <execinfo.h>
#include <unistd.h>
#endif
//------------------------------------------------------------------------
// selects one of the name to sub-dir mapping algorithms that is used
...
...
@@ -6355,35 +6367,85 @@ void stringToSearchIndex(const QCString &docBaseUrl,const QCString &title,
}
}
//--------------------------------------------------------------------------
static
QDict
<
int
>
g_extLookup
;
static
struct
Lang2ExtMap
{
const
char
*
langName
;
SrcLangExt
parserId
;
}
g_lang2extMap
[]
=
{
{
"idl"
,
SrcLangExt_IDL
},
{
"java"
,
SrcLangExt_Java
},
{
"javascript"
,
SrcLangExt_JS
},
{
"c#"
,
SrcLangExt_CSharp
},
{
"d"
,
SrcLangExt_D
},
{
"php"
,
SrcLangExt_PHP
},
{
"objective-c"
,
SrcLangExt_ObjC
},
{
"python"
,
SrcLangExt_Python
},
{
"fortran"
,
SrcLangExt_F90
},
{
"vhdl"
,
SrcLangExt_VHDL
},
{
"c"
,
SrcLangExt_Cpp
},
{
"c++"
,
SrcLangExt_Cpp
},
{
0
,
(
SrcLangExt
)
0
}
};
bool
updateLanguageMapping
(
const
QCString
&
extension
,
const
QCString
&
parser
)
{
getLanguageFromFileName
(
"dummy"
);
// force initializion of the g_extLookup map
const
Lang2ExtMap
*
p
=
g_lang2extMap
;
QCString
langName
=
parser
.
lower
();
while
(
p
->
langName
)
{
if
(
langName
==
p
->
langName
)
break
;
p
++
;
}
if
(
!
p
->
langName
)
return
FALSE
;
// found the parser
SrcLangExt
parserId
=
p
->
parserId
;
QCString
extName
=
extension
;
if
(
extName
.
isEmpty
())
return
FALSE
;
if
(
extName
.
at
(
0
)
!=
'.'
)
extName
.
prepend
(
"."
);
if
(
g_extLookup
.
find
(
extension
)
!=
0
)
// parser was already register for this ext
{
g_extLookup
.
remove
(
extension
);
}
g_extLookup
.
insert
(
extension
,
new
int
(
parserId
));
return
TRUE
;
}
SrcLangExt
getLanguageFromFileName
(
const
QCString
fileName
)
{
int
i
=
fileName
.
findRev
(
'.'
);
static
bool
init
=
FALSE
;
static
QDict
<
int
>
extLookup
;
extLookup
.
setAutoDelete
(
TRUE
);
g_extLookup
.
setAutoDelete
(
TRUE
);
if
(
!
init
)
// one time initialization
{
extLookup
.
insert
(
".idl"
,
new
int
(
SrcLangExt_IDL
));
extLookup
.
insert
(
".ddl"
,
new
int
(
SrcLangExt_IDL
));
extLookup
.
insert
(
".odl"
,
new
int
(
SrcLangExt_IDL
));
extLookup
.
insert
(
".java"
,
new
int
(
SrcLangExt_Java
));
extLookup
.
insert
(
".as"
,
new
int
(
SrcLangExt_JS
));
extLookup
.
insert
(
".js"
,
new
int
(
SrcLangExt_JS
));
extLookup
.
insert
(
".cs"
,
new
int
(
SrcLangExt_CSharp
));
extLookup
.
insert
(
".d"
,
new
int
(
SrcLangExt_D
));
extLookup
.
insert
(
".php"
,
new
int
(
SrcLangExt_PHP
));
extLookup
.
insert
(
".php4"
,
new
int
(
SrcLangExt_PHP
));
extLookup
.
insert
(
".php5"
,
new
int
(
SrcLangExt_PHP
));
extLookup
.
insert
(
".inc"
,
new
int
(
SrcLangExt_PHP
));
extLookup
.
insert
(
".phtml"
,
new
int
(
SrcLangExt_PHP
));
extLookup
.
insert
(
".m"
,
new
int
(
SrcLangExt_ObjC
));
extLookup
.
insert
(
".M"
,
new
int
(
SrcLangExt_ObjC
));
extLookup
.
insert
(
".mm"
,
new
int
(
SrcLangExt_ObjC
));
extLookup
.
insert
(
".py"
,
new
int
(
SrcLangExt_Python
));
extLookup
.
insert
(
".f"
,
new
int
(
SrcLangExt_F90
));
extLookup
.
insert
(
".f90"
,
new
int
(
SrcLangExt_F90
));
extLookup
.
insert
(
".vhd"
,
new
int
(
SrcLangExt_VHDL
));
extLookup
.
insert
(
".vhdl"
,
new
int
(
SrcLangExt_VHDL
));
g_
extLookup
.
insert
(
".idl"
,
new
int
(
SrcLangExt_IDL
));
g_
extLookup
.
insert
(
".ddl"
,
new
int
(
SrcLangExt_IDL
));
g_
extLookup
.
insert
(
".odl"
,
new
int
(
SrcLangExt_IDL
));
g_
extLookup
.
insert
(
".java"
,
new
int
(
SrcLangExt_Java
));
g_
extLookup
.
insert
(
".as"
,
new
int
(
SrcLangExt_JS
));
g_
extLookup
.
insert
(
".js"
,
new
int
(
SrcLangExt_JS
));
g_
extLookup
.
insert
(
".cs"
,
new
int
(
SrcLangExt_CSharp
));
g_
extLookup
.
insert
(
".d"
,
new
int
(
SrcLangExt_D
));
g_
extLookup
.
insert
(
".php"
,
new
int
(
SrcLangExt_PHP
));
g_
extLookup
.
insert
(
".php4"
,
new
int
(
SrcLangExt_PHP
));
g_
extLookup
.
insert
(
".php5"
,
new
int
(
SrcLangExt_PHP
));
g_
extLookup
.
insert
(
".inc"
,
new
int
(
SrcLangExt_PHP
));
g_
extLookup
.
insert
(
".phtml"
,
new
int
(
SrcLangExt_PHP
));
g_
extLookup
.
insert
(
".m"
,
new
int
(
SrcLangExt_ObjC
));
g_
extLookup
.
insert
(
".M"
,
new
int
(
SrcLangExt_ObjC
));
g_
extLookup
.
insert
(
".mm"
,
new
int
(
SrcLangExt_ObjC
));
g_
extLookup
.
insert
(
".py"
,
new
int
(
SrcLangExt_Python
));
g_
extLookup
.
insert
(
".f"
,
new
int
(
SrcLangExt_F90
));
g_
extLookup
.
insert
(
".f90"
,
new
int
(
SrcLangExt_F90
));
g_
extLookup
.
insert
(
".vhd"
,
new
int
(
SrcLangExt_VHDL
));
g_
extLookup
.
insert
(
".vhdl"
,
new
int
(
SrcLangExt_VHDL
));
init
=
TRUE
;
}
if
(
i
!=-
1
)
// name has an extension
...
...
@@ -6391,7 +6453,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
QCString
extStr
=
fileName
.
right
(
fileName
.
length
()
-
i
);
if
(
!
extStr
.
isEmpty
())
// non-empty extension
{
int
*
pVal
=
extLookup
.
find
(
extStr
);
int
*
pVal
=
g_
extLookup
.
find
(
extStr
);
if
(
pVal
)
// listed extension
{
return
(
SrcLangExt
)
*
pVal
;
// cast void* address to enum value
...
...
@@ -6401,6 +6463,8 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
return
SrcLangExt_Cpp
;
// not listed => assume C-ish language.
}
//--------------------------------------------------------------------------
/*! Returns true iff the given name string appears to be a typedef in scope. */
bool
checkIfTypedef
(
Definition
*
scope
,
FileDef
*
fileScope
,
const
char
*
n
)
{
...
...
@@ -6471,12 +6535,14 @@ bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n)
return
FALSE
;
}
QCString
parseCommentAsText
(
const
QString
&
doc
,
const
QCString
&
fileName
,
int
lineNr
)
QCString
parseCommentAsText
(
const
Definition
*
scope
,
const
MemberDef
*
md
,
const
QString
&
doc
,
const
QCString
&
fileName
,
int
lineNr
)
{
QString
result
;
if
(
doc
.
isEmpty
())
return
result
.
data
();
QTextStream
t
(
&
result
,
IO_WriteOnly
);
DocNode
*
root
=
validatingParseDoc
(
fileName
,
lineNr
,
Doxygen
::
globalScope
,
0
,
doc
,
FALSE
,
FALSE
);
DocNode
*
root
=
validatingParseDoc
(
fileName
,
lineNr
,
(
Definition
*
)
scope
,(
MemberDef
*
)
md
,
doc
,
FALSE
,
FALSE
);
TextDocVisitor
*
visitor
=
new
TextDocVisitor
(
t
);
root
->
accept
(
visitor
);
delete
visitor
;
...
...
@@ -6689,3 +6755,30 @@ bool usingTreeIndex()
return
TreeView
==
"FRAME"
||
TreeView
==
"ALL"
||
TreeView
==
"YES"
;
}
void
stackTrace
()
{
#ifdef TRACINGSUPPORT
void
*
backtraceFrames
[
128
];
int
frameCount
=
backtrace
(
backtraceFrames
,
128
);
static
char
cmd
[
40960
];
char
*
p
=
cmd
;
p
+=
sprintf
(
p
,
"/usr/bin/atos -p %d "
,
(
int
)
getpid
());
for
(
int
x
=
0
;
x
<
frameCount
;
x
++
)
{
p
+=
sprintf
(
p
,
"%p "
,
backtraceFrames
[
x
]);
}
fprintf
(
stderr
,
"========== STACKTRACE START ==============
\n
"
);
if
(
FILE
*
fp
=
popen
(
cmd
,
"r"
))
{
char
resBuf
[
512
];
while
(
size_t
len
=
fread
(
resBuf
,
1
,
sizeof
(
resBuf
),
fp
))
{
fwrite
(
resBuf
,
1
,
len
,
stderr
);
}
pclose
(
fp
);
}
fprintf
(
stderr
,
"============ STACKTRACE END ==============
\n
"
);
//fprintf(stderr,"%s\n", frameStrings[x]);
#endif
}
src/util.h
View file @
b37fae19
...
...
@@ -328,6 +328,7 @@ void stringToSearchIndex(const QCString &docUrlBase,const QCString &title,
const
QCString
&
str
,
bool
priority
=
FALSE
,
const
QCString
&
anchor
=
""
);
bool
updateLanguageMapping
(
const
QCString
&
extension
,
const
QCString
&
parser
);
SrcLangExt
getLanguageFromFileName
(
const
QCString
fileName
);
bool
checkIfTypedef
(
Definition
*
scope
,
FileDef
*
fileScope
,
const
char
*
n
);
...
...
@@ -337,7 +338,7 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md,
QCString
*
pResolvedType
=
0
,
ArgumentList
*
actTemplParams
=
0
);
QCString
parseCommentAsText
(
const
QString
&
doc
,
const
QCString
&
fileName
,
int
lineNr
);
QCString
parseCommentAsText
(
const
Definition
*
scope
,
const
MemberDef
*
member
,
const
QString
&
doc
,
const
QCString
&
fileName
,
int
lineNr
);
QCString
transcodeCharacterStringToUTF8
(
const
QCString
&
input
);
...
...
@@ -357,6 +358,7 @@ void writeTypeConstraints(OutputList &ol,Definition *d,ArgumentList *al);
QCString
convertCharEntitiesToUTF8
(
const
QCString
&
s
);
bool
usingTreeIndex
();
void
stackTrace
();
#endif
src/vhdldocgen.cpp
View file @
b37fae19
...
...
@@ -1209,7 +1209,7 @@ QCString VhdlDocGen::trTypeString(int type)
case
VhdlDocGen
:
:
SHAREDVARIABLE
:
return
"Shared Variable"
;
case
VhdlDocGen
:
:
GROUP
:
return
"Group"
;
case
VhdlDocGen
:
:
VFILE
:
return
"File"
;
case
VhdlDocGen
:
:
COMPONENT_INST
:
return
"Component Instanti
n
ation"
;
case
VhdlDocGen
:
:
COMPONENT_INST
:
return
"Component Instantiation"
;
case
VhdlDocGen
:
:
ALIAS
:
return
"Alias"
;
case
VhdlDocGen
:
:
CONFIG
:
return
"Configuration"
;
default
:
return
""
;
...
...
@@ -1926,6 +1926,34 @@ void VhdlDocGen::writeVHDLDeclaration(MemberDef* mdef,OutputList &ol,
VhdlDocGen
::
writeProcedureProto
(
ol
,
alp
.
pointer
(),
mdef
);
break
;
case
VhdlDocGen
:
:
USE
:
kl
=
VhdlDocGen
::
getClass
(
mdef
->
name
());
if
(
kl
&&
((
VhdlDocGen
::
VhdlClasses
)
kl
->
protection
()
==
VhdlDocGen
::
ENTITYCLASS
))
break
;
writeLink
(
mdef
,
ol
);
ol
.
insertMemberAlign
();
ol
.
docify
(
" "
);
if
(
kl
)
{
nn
=
kl
->
getOutputFileBase
();
ol
.
pushGeneratorState
();
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
ol
.
docify
(
" "
);
QCString
name
=
theTranslator_vhdlType
(
VhdlDocGen
::
PACKAGE
,
TRUE
);
ol
.
startBold
();
ol
.
docify
(
name
.
data
());
name
.
resize
(
0
);
ol
.
endBold
();
name
+=
" <"
+
mdef
->
name
()
+
">"
;
ol
.
startEmphasis
();
ol
.
writeObjectLink
(
kl
->
getReference
(),
kl
->
getOutputFileBase
(),
0
,
name
.
data
());
ol
.
popGeneratorState
();
}
break
;
case
VhdlDocGen
:
:
LIBRARY
:
writeLink
(
mdef
,
ol
);
ol
.
insertMemberAlign
();
break
;
case
VhdlDocGen
:
:
GENERIC
:
case
VhdlDocGen
:
:
PORT
:
writeLink
(
mdef
,
ol
);
...
...
src/vhdlscanner.l
View file @
b37fae19
...
...
@@ -809,9 +809,9 @@ ALLID [^;()\t ]
BEGIN(FindEntityName);
}
<Start>{MAPCOMPONENT}|{MAPCOMPONENT1} { // found
new mapped component aaa: bbb port map
<Start>{MAPCOMPONENT}|{MAPCOMPONENT1} { // found
component instantiation
lineCount();
//
lineCount();
QCString type;
QCString tt(yytext);
QRegExp regg("[ \n\t:.()-]");
...
...
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