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
0c751ba9
Commit
0c751ba9
authored
Oct 27, 2009
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.6.1-20091027
parent
1042ef3a
Changes
56
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
56 changed files
with
1050 additions
and
713 deletions
+1050
-713
INSTALL
INSTALL
+2
-2
README
README
+2
-2
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+14
-28
expert.cpp
addon/doxywizard/expert.cpp
+2
-1
inputstring.cpp
addon/doxywizard/inputstring.cpp
+7
-5
inputstring.h
addon/doxywizard/inputstring.h
+3
-1
inputstrlist.h
addon/doxywizard/inputstrlist.h
+6
-6
configure
configure
+1
-1
autolink.doc
doc/autolink.doc
+3
-2
commands.doc
doc/commands.doc
+14
-1
customize.doc
doc/customize.doc
+6
-0
language.doc
doc/language.doc
+2
-2
translator_report.txt
doc/translator_report.txt
+4
-29
Doxyfile
qtools/Doxyfile
+2
-2
qglobal.h
qtools/qglobal.h
+4
-1
classdef.cpp
src/classdef.cpp
+2
-0
cmdmapper.cpp
src/cmdmapper.cpp
+1
-0
cmdmapper.h
src/cmdmapper.h
+2
-1
code.l
src/code.l
+2
-1
commentscan.h
src/commentscan.h
+3
-2
commentscan.l
src/commentscan.l
+17
-9
config.l
src/config.l
+0
-12
config.xml
src/config.xml
+1
-1
dbusxmlscanner.cpp
src/dbusxmlscanner.cpp
+3
-1
definition.cpp
src/definition.cpp
+11
-6
docparser.cpp
src/docparser.cpp
+235
-214
docparser.h
src/docparser.h
+14
-9
docsets.cpp
src/docsets.cpp
+152
-104
docsets.h
src/docsets.h
+5
-3
doctokenizer.l
src/doctokenizer.l
+2
-2
dot.cpp
src/dot.cpp
+1
-1
doxygen.cpp
src/doxygen.cpp
+17
-29
fortrancode.l
src/fortrancode.l
+1
-1
fortranscanner.l
src/fortranscanner.l
+2
-1
ftvhelp.h
src/ftvhelp.h
+4
-3
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+42
-2
htmlhelp.cpp
src/htmlhelp.cpp
+36
-16
htmlhelp.h
src/htmlhelp.h
+5
-3
index.cpp
src/index.cpp
+18
-10
index.h
src/index.h
+26
-13
memberdef.cpp
src/memberdef.cpp
+20
-71
namespacedef.cpp
src/namespacedef.cpp
+2
-0
pagedef.cpp
src/pagedef.cpp
+2
-1
pre.l
src/pre.l
+2
-1
pycode.l
src/pycode.l
+1
-1
pyscanner.l
src/pyscanner.l
+2
-1
qhp.cpp
src/qhp.cpp
+63
-35
qhp.h
src/qhp.h
+7
-5
rtfgen.cpp
src/rtfgen.cpp
+2
-2
scanner.l
src/scanner.l
+7
-2
search.js
src/search.js
+18
-18
search_js.h
src/search_js.h
+18
-18
translator_fr.h
src/translator_fr.h
+209
-8
util.cpp
src/util.cpp
+19
-21
vhdlcode.l
src/vhdlcode.l
+2
-1
vhdlscanner.l
src/vhdlscanner.l
+2
-1
No files found.
INSTALL
View file @
0c751ba9
DOXYGEN Version 1.6.1-200910
04
DOXYGEN Version 1.6.1-200910
27
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
04
October 2009)
Dimitri van Heesch (
27
October 2009)
README
View file @
0c751ba9
DOXYGEN Version 1.6.1_200910
04
DOXYGEN Version 1.6.1_200910
27
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 2009)
Dimitri van Heesch (dimitri@stack.nl) (
27
October 2009)
addon/doxywizard/doxywizard.cpp
View file @
0c751ba9
...
...
@@ -85,10 +85,6 @@ MainWindow::MainWindow()
m_launchHtml
=
new
QPushButton
(
tr
(
"Show HTML output"
));
launchLayout
->
addWidget
(
m_launchHtml
);
#if 0
m_launchPdf = new QPushButton(tr("Show PDF output"));
launchLayout->addWidget(m_launchPdf);
#endif
launchLayout
->
addStretch
(
1
);
grid
->
addLayout
(
launchLayout
,
1
,
0
);
runTabLayout
->
addLayout
(
grid
);
...
...
@@ -300,24 +296,12 @@ void MainWindow::loadSettings()
{
QVariant
geometry
=
m_settings
.
value
(
QString
::
fromAscii
(
"main/geometry"
),
QVariant
::
Invalid
);
QVariant
state
=
m_settings
.
value
(
QString
::
fromAscii
(
"main/state"
),
QVariant
::
Invalid
);
//QVariant expState = m_settings.value(QString::fromAscii("expert/state"), QVariant::Invalid);
//QVariant expState2 = m_settings.value(QString::fromAscii("expert/state2"), QVariant::Invalid);
QVariant
wizState
=
m_settings
.
value
(
QString
::
fromAscii
(
"wizard/state"
),
QVariant
::
Invalid
);
QVariant
loadSettings
=
m_settings
.
value
(
QString
::
fromAscii
(
"wizard/loadsettings"
),
QVariant
::
Invalid
);
//QVariant workingDir = m_settings.value(QString::fromAscii("main/defdir"), QVariant::Invalid);
if
(
geometry
!=
QVariant
::
Invalid
)
restoreGeometry
(
geometry
.
toByteArray
());
if
(
state
!=
QVariant
::
Invalid
)
restoreState
(
state
.
toByteArray
());
//if (expState !=QVariant::Invalid) m_expert->restoreState(expState.toByteArray());
//if (expState2 !=QVariant::Invalid) m_expert->restoreInnerState(expState2.toByteArray());
if
(
wizState
!=
QVariant
::
Invalid
)
m_wizard
->
restoreState
(
wizState
.
toByteArray
());
//if (workingDir!=QVariant::Invalid)
//{
// QString dir = workingDir.toString();
// m_workingDir->setText(dir);
// QDir::setCurrent(dir);
// m_run->setEnabled(!dir.isEmpty());
//}
if
(
loadSettings
!=
QVariant
::
Invalid
&&
loadSettings
.
toBool
())
{
m_expert
->
loadSettings
(
&
m_settings
);
...
...
@@ -337,8 +321,6 @@ void MainWindow::saveSettings()
m_settings
.
setValue
(
QString
::
fromAscii
(
"main/geometry"
),
saveGeometry
());
m_settings
.
setValue
(
QString
::
fromAscii
(
"main/state"
),
saveState
());
//m_settings.setValue(QString::fromAscii("expert/state"), m_expert->saveState());
//m_settings.setValue(QString::fromAscii("expert/state2"), m_expert->saveInnerState());
m_settings
.
setValue
(
QString
::
fromAscii
(
"wizard/state"
),
m_wizard
->
saveState
());
}
...
...
@@ -387,15 +369,19 @@ void MainWindow::runDoxygen()
#if defined(Q_OS_MACX)
doxygenPath
=
qApp
->
applicationDirPath
()
+
QString
::
fromAscii
(
"/../Resources/"
);
qDebug
()
<<
tr
(
"Doxygen path: "
)
<<
doxygenPath
;
if
(
!
QFile
(
doxygenPath
+
QString
::
fromAscii
(
"doxygen"
)).
exists
()
)
{
// No doygen binary in the resources, if there is a system doxygen binary, use that instead
if
(
QFile
(
QString
::
fromAscii
(
"/usr/local/bin/doxygen"
)).
exists
()
)
doxygenPath
=
QString
::
fromAscii
(
"/usr/local/bin/"
);
else
{
qDebug
()
<<
tr
(
"Can't find the doxygen command, make sure it's in your $$PATH"
);
doxygenPath
=
QString
::
fromAscii
(
""
);
}
}
if
(
!
QFile
(
doxygenPath
+
QString
::
fromAscii
(
"doxygen"
)).
exists
()
)
{
// No doygen binary in the resources, if there is a system doxygen binary, use that instead
if
(
QFile
(
QString
::
fromAscii
(
"/usr/local/bin/doxygen"
)).
exists
()
)
{
doxygenPath
=
QString
::
fromAscii
(
"/usr/local/bin/"
);
}
else
{
qDebug
()
<<
tr
(
"Can't find the doxygen command, make sure it's in your $$PATH"
);
doxygenPath
=
QString
::
fromAscii
(
""
);
}
}
qDebug
()
<<
tr
(
"Getting doxygen from: "
)
<<
doxygenPath
;
#endif
...
...
@@ -423,7 +409,7 @@ void MainWindow::runDoxygen()
QTextStream
t
(
m_runProcess
);
m_expert
->
writeConfig
(
t
,
false
);
m_runProcess
->
closeWriteChannel
();
if
(
m_runProcess
->
state
()
==
QProcess
::
NotRunning
)
{
m_outputLog
->
append
(
QString
::
fromAscii
(
"*** Failed to run doxygen
\n
"
));
...
...
addon/doxywizard/expert.cpp
View file @
0c751ba9
...
...
@@ -158,7 +158,8 @@ QWidget *Expert::createTopicWidget(QDomElement &elem)
child
.
attribute
(
SA
(
"id"
)),
child
.
attribute
(
SA
(
"defval"
)),
mode
,
child
.
attribute
(
SA
(
"docs"
))
child
.
attribute
(
SA
(
"docs"
)),
child
.
attribute
(
SA
(
"abspath"
))
);
m_options
.
insert
(
child
.
attribute
(
SA
(
"id"
)),
...
...
addon/doxywizard/inputstring.cpp
View file @
0c751ba9
...
...
@@ -21,8 +21,10 @@
InputString
::
InputString
(
QGridLayout
*
layout
,
int
&
row
,
const
QString
&
id
,
const
QString
&
s
,
StringMode
m
,
const
QString
&
docs
)
:
m_default
(
s
),
m_sm
(
m
),
m_index
(
0
),
m_docs
(
docs
),
m_id
(
id
)
StringMode
m
,
const
QString
&
docs
,
const
QString
&
absPath
)
:
m_default
(
s
),
m_sm
(
m
),
m_index
(
0
),
m_docs
(
docs
),
m_id
(
id
),
m_absPath
(
absPath
==
QString
::
fromAscii
(
"1"
))
{
m_lab
=
new
HelpLabel
(
id
);
if
(
m
==
StringFixed
)
...
...
@@ -126,7 +128,7 @@ void InputString::browse()
QDir
dir
(
path
);
if
(
!
MainWindow
::
instance
().
configFileName
().
isEmpty
()
&&
dir
.
exists
())
{
fileName
=
dir
.
relativeFilePath
(
fileName
);
fileName
=
m_absPath
?
fileName
:
dir
.
relativeFilePath
(
fileName
);
}
setValue
(
fileName
);
}
...
...
@@ -140,10 +142,10 @@ void InputString::browse()
QDir
dir
(
path
);
if
(
!
MainWindow
::
instance
().
configFileName
().
isEmpty
()
&&
dir
.
exists
())
{
dirName
=
dir
.
relativeFilePath
(
dirName
);
dirName
=
m_absPath
?
dirName
:
dir
.
relativeFilePath
(
dirName
);
}
setValue
(
dirName
);
}
}
}
}
...
...
addon/doxywizard/inputstring.h
View file @
0c751ba9
...
...
@@ -41,7 +41,8 @@ class InputString : public QObject, public Input
InputString
(
QGridLayout
*
layout
,
int
&
row
,
const
QString
&
id
,
const
QString
&
s
,
StringMode
m
,
const
QString
&
docs
);
const
QString
&
docs
,
const
QString
&
absPath
=
QString
()
);
~
InputString
();
void
addValue
(
QString
s
);
void
setDefault
();
...
...
@@ -83,6 +84,7 @@ class InputString : public QObject, public Input
QVariant
m_value
;
QString
m_docs
;
QString
m_id
;
bool
m_absPath
;
};
#endif
addon/doxywizard/inputstrlist.h
View file @
0c751ba9
...
...
@@ -33,14 +33,14 @@ class InputStrList : public QObject, public Input
Q_OBJECT
public
:
enum
ListMode
{
ListString
=
0
,
ListFile
=
1
,
ListDir
=
2
,
ListFileDir
=
ListFile
|
ListDir
enum
ListMode
{
ListString
=
0
,
ListFile
=
1
,
ListDir
=
2
,
ListFileDir
=
ListFile
|
ListDir
};
InputStrList
(
QGridLayout
*
layout
,
int
&
row
,
const
QString
&
id
,
const
QStringList
&
sl
,
const
QString
&
id
,
const
QStringList
&
sl
,
ListMode
v
,
const
QString
&
docs
);
void
setValue
(
const
QStringList
&
sl
);
...
...
configure
View file @
0c751ba9
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=6
doxygen_version_revision
=
1
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
200910
04
doxygen_version_mmn
=
200910
27
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/autolink.doc
View file @
0c751ba9
...
...
@@ -38,11 +38,12 @@
\section linkclass Links to classes.
All words in the documentation that correspond to a documented class and
contain at least one
upper case character will automatically be replaced by
a link to the page containing the
contain at least one
non-lower case character will automatically be
replaced by
a link to the page containing the
documentation of the class. If you want to prevent that a word
that corresponds to a documented class is replaced by a link you
should put a \% in front of the word.
To link to an all lower case symbol, use \ref cmdref "\\ref".
\section linkfile Links to files.
...
...
doc/commands.doc
View file @
0c751ba9
...
...
@@ -176,6 +176,7 @@ documentation:
\refitem cmdgt \\\>
\refitem cmdhash \\\#
\refitem cmdperc \\\%
\refitem cmdquot \\\"
\endsecreflist
The following subsections provide a list of all commands that are recognized by
...
...
@@ -224,6 +225,7 @@ Structural indicators
\sa page \ref grouping "Grouping", sections \ref cmddefgroup "\\defgroup", \ref cmdingroup "\\ingroup" and
\ref cmdweakgroup "\\weakgroup".
<hr>
\section cmdcallgraph \\callgraph
\addindex \\callgraph
...
...
@@ -324,7 +326,6 @@ Structural indicators
stripped from the full path before it appears in the output.
<hr>
\section cmdenum \\enum <name>
\addindex \\enum
...
...
@@ -884,6 +885,7 @@ Section indicators
The \\attention command ends when a blank line or some other
sectioning command is encountered.
<hr>
\section cmdauthor \\author { list of authors }
\addindex \\author
...
...
@@ -1423,6 +1425,7 @@ void memcpy(void *dest, const void *src, size_t n);
sectioning command is encountered. See section \ref cmdauthor "\\author"
for an example.
<hr>
\section cmdxrefitem \\xrefitem <key> "(heading)" "(list title)" {text}
\addindex \\xrefitem
...
...
@@ -1465,6 +1468,7 @@ Commands to create links
</h2>
\htmlonly </center>\endhtmlonly
<hr>
\section cmdaddindex \\addindex (text)
\addindex \\addindex
...
...
@@ -1644,6 +1648,7 @@ Commands for displaying examples
</h2>
\htmlonly </center>\endhtmlonly
<hr>
\section cmddontinclude \\dontinclude <file-name>
\addindex \\dontinclude
...
...
@@ -2453,6 +2458,7 @@ class Receiver
This command writes the \> character to the output. This
character has to be escaped because it has a special meaning in HTML.
<hr>
\section cmdperc \\\%
\addindex \\\%
...
...
@@ -2461,7 +2467,14 @@ class Receiver
prevent auto-linking to word that is also a documented class or struct.
<hr>
\section cmdquot \\\"
\addindex \\\"
This command writes the \" character to the output. This
character has to be escaped in some cases, because it is used to
prevent auto-linking to word that is also a documented class or struct.
<hr>
\htmlonly <center> \endhtmlonly
<h2>
\htmlonly --- \endhtmlonly
...
...
doc/customize.doc
View file @
0c751ba9
...
...
@@ -87,6 +87,12 @@ doxygen -l
optionally the name of the layout file can be specified, if omitted
\c DoxygenLayout.xml will be used.
The next step is to mention the layout file in the config file
\verbatim
LAYOUT_FILE = DoxygenLayout.xml
\endverbatim
The change the layout all you need to do is edit the layout file.
The toplevel structure of the file looks as follows:
\verbatim
<doxygenlayout version="1.0">
...
...
doc/language.doc
View file @
0c751ba9
...
...
@@ -134,7 +134,7 @@ when the translator was updated.
<td>French</td>
<td>Xavier Outhier</td>
<td>xouthier at yahoo dot fr</td>
<td>
1.5.4
</td>
<td>
up-to-date
</td>
</tr>
<tr bgcolor="#ffffff">
<td>German</td>
...
...
@@ -336,7 +336,7 @@ when the translator was updated.
\hline
Finnish & Antti Laine & {\tt\tiny antti.a.laine@tut.fi} & 1.6.0 \\
\hline
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} &
1.5.4
\\
French & Xavier Outhier & {\tt\tiny xouthier@yahoo.fr} &
up-to-date
\\
\hline
German & Jens Seidel & {\tt\tiny jensseidel@users.sf.net} & 1.6.0 \\
\hline
...
...
doc/translator_report.txt
View file @
0c751ba9
...
...
@@ -10,7 +10,7 @@ Persian, Polish, Portuguese, Romanian, Russian, Serbian,
SerbianCyrilic, Slovak, Slovene, Spanish, Swedish, Turkish, Ukrainian,
and Vietnamese.
Of them,
5 translators are up-to-date, 33
translators are based on
Of them,
6 translators are up-to-date, 32
translators are based on
some adapter class, and 2 are English based.
----------------------------------------------------------------------
...
...
@@ -22,6 +22,7 @@ still may be some details listed even for them:
TranslatorCzech
TranslatorDutch
TranslatorEnglish
TranslatorFrench -- The MAX_DOT_GRAPH_HEIGHT found in trLegendDocs()
TranslatorKorean
TranslatorPolish -- Remove the obsolete methods (never used).
...
...
@@ -53,7 +54,6 @@ must be implemented to become up-to-date:
TranslatorBrazilian 1.6.0 5 methods to implement (2 %)
TranslatorAfrikaans 1.6.0 5 methods to implement (2 %)
TranslatorGreek 1.5.4 27 methods to implement (12 %)
TranslatorFrench 1.5.4 22 methods to implement (9 %)
TranslatorDanish 1.5.4 27 methods to implement (12 %)
TranslatorSlovene 1.4.6 29 methods to implement (13 %)
TranslatorNorwegian 1.4.6 28 methods to implement (12 %)
...
...
@@ -288,35 +288,10 @@ TranslatorFinnish (TranslatorAdapter_1_6_0) 5 methods to implement (2 %)
virtual QCString trDirRelation(const char * name)
TranslatorFrench (Translator
Adapter_1_5_4) 22 methods to implement (9 %
)
TranslatorFrench (Translator)
----------------
Implements 199 of the required methods (90 %).
Missing methods (should be implemented):
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)
virtual QCString trSubprograms()
virtual QCString trModulesListDescription(bool extractAll)
virtual QCString trModulesList()
virtual QCString trTypeConstraints()
virtual QCString trMemberFunctionDocumentationFortran()
virtual QCString trCompoundListDescriptionFortran()
virtual QCString trTypeDocumentation()
virtual QCString trModuleReference(const char * namespaceName)
virtual QCString trModulesMemberDescription(bool extractAll)
virtual QCString trModulesMembers()
virtual QCString trModulesIndex()
virtual QCString trCompoundListFortran()
virtual QCString trDataTypes()
virtual QCString trCompoundIndexFortran()
virtual QCString trSubprogram(bool first_capital, bool singular)
virtual QCString trCompoundReferenceFortran(const char * clName, ClassDef::CompoundType compType, bool isTemplate)
virtual QCString trType(bool first_capital, bool singular)
virtual QCString trModule(bool first_capital, bool singular)
virtual QCString trCompoundMembersFortran()
virtual QCString trSubprogramDocumentation()
Implements 221 of the required methods (100 %).
TranslatorGerman (TranslatorAdapter_1_6_0) 5 methods to implement (2 %)
...
...
qtools/Doxyfile
View file @
0c751ba9
...
...
@@ -139,9 +139,9 @@ GENERATE_CHI = NO
CHM_INDEX_ENCODING =
BINARY_TOC = NO
TOC_EXPAND = NO
GENERATE_QHP =
NO
GENERATE_QHP =
YES
QCH_FILE =
QHP_NAMESPACE =
QHP_NAMESPACE =
com.qtools
QHP_VIRTUAL_FOLDER = doc
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_ATTRS =
...
...
qtools/qglobal.h
View file @
0c751ba9
...
...
@@ -86,7 +86,10 @@
# if !defined(MAC_OS_X_VERSION_10_5)
# define MAC_OS_X_VERSION_10_5 MAC_OS_X_VERSION_10_4 + 1
# endif
# if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5)
# if !defined(MAC_OS_X_VERSION_10_6)
# define MAC_OS_X_VERSION_10_6 MAC_OS_X_VERSION_10_5 + 1
# endif
# if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_6)
# error "This version of Mac OS X is unsupported"
# endif
#elif defined(MSDOS) || defined(_MSDOS) || defined(__MSDOS__)
...
...
src/classdef.cpp
View file @
0c751ba9
...
...
@@ -1423,6 +1423,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol
.
popGeneratorState
();
}
Doxygen
::
indexList
.
addIndexItem
(
this
,
0
);
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
{
Doxygen
::
tagFile
<<
" <compound kind=
\"
"
<<
compoundTypeString
();
...
...
src/cmdmapper.cpp
View file @
0c751ba9
...
...
@@ -102,6 +102,7 @@ CommandMap cmdMap[] =
{
"$"
,
CMD_DOLLAR
},
{
"#"
,
CMD_HASH
},
{
"%"
,
CMD_PERCENT
},
{
"
\"
"
,
CMD_QUOTE
},
{
"_internalref"
,
CMD_INTERNALREF
},
{
"dot"
,
CMD_DOT
},
{
"msc"
,
CMD_MSC
},
...
...
src/cmdmapper.h
View file @
0c751ba9
...
...
@@ -112,7 +112,8 @@ enum CommandType
CMD_INHERITDOC
=
78
,
CMD_TPARAM
=
79
|
SIMPLESECT_BIT
,
CMD_COPYBRIEF
=
80
,
CMD_COPYDETAILS
=
81
CMD_COPYDETAILS
=
81
,
CMD_QUOTE
=
82
};
enum
HtmlTagType
...
...
src/code.l
View file @
0c751ba9
...
...
@@ -525,9 +525,10 @@ static void startCodeLine()
static void endFontClass();
static void endCodeLine()
{
if (g_currentFontClass) { g_code->endFontClass(); }
endFontClass();
g_code->endCodeLine();
}
...
...
src/commentscan.h
View file @
0c751ba9
...
...
@@ -37,7 +37,8 @@ class ParserInterface;
* Note that leading *'s are already stripped from the comment block.
* @param[in] fileName The name of the file in which the comment is found.
* Mainly used for producing warnings.
* @param[in] lineNr The line number at which the comment block was found.
* @param[in,out] lineNr The line number at which the comment block was found.
* When the function returns it will be set to the last line parsed.
* @param[in] isBrief TRUE iff this comment block represents a brief description.
* @param[in] isJavaDocStyle TRUE iff this comment block is in "JavaDoc" style.
* This means that it starts as a brief description until the end of
...
...
@@ -62,7 +63,7 @@ bool parseCommentBlock(ParserInterface *parser,
Entry
*
curEntry
,
const
QCString
&
comment
,
const
QCString
&
fileName
,
int
lineNr
,
int
&
lineNr
,
bool
isBrief
,
bool
isJavaDocStyle
,
bool
isInbody
,
...
...
src/commentscan.l
View file @
0c751ba9
...
...
@@ -451,12 +451,6 @@ static bool makeStructuralIndicator(Entry::Sections s)
{
if (!getDocSectionName(current->section).isEmpty())
{
//warn(yyFileName,yyLineNr,
// "Warning: found a structural command %s for a section already "
// "marked with structural command %s. Ignoring the latter command.",
// getDocSectionName(s).data(),
// getDocSectionName(current->section).data()
// );
return TRUE;
}
else
...
...
@@ -2005,7 +1999,10 @@ static bool handlePage(const QCString &)
static bool handleMainpage(const QCString &)
{
bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC);
if (!stop) current->name = "mainpage";
if (!stop)
{
current->name = "mainpage";
}
BEGIN( PageDocArg2 );
return stop;
}
...
...
@@ -2013,7 +2010,10 @@ static bool handleMainpage(const QCString &)
static bool handleFile(const QCString &)
{
bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC);
if (!stop) current->name = yyFileName;
if (!stop)
{
current->name = yyFileName;
}
BEGIN( FileDocArg1 );
return stop;
}
...
...
@@ -2372,7 +2372,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
/* in */ Entry *curEntry,
/* in */ const QCString &comment,
/* in */ const QCString &fileName,
/* in
*/ int
lineNr,
/* in
,out */ int &
lineNr,
/* in */ bool isBrief,
/* in */ bool isAutoBriefOn,
/* in */ bool isInbody,
...
...
@@ -2456,8 +2456,16 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
newEntryNeeded = needNewEntry;
// if we did not proceed during this call, it does not make
// sence to continue, since we get stuck. See bug 567346 for situations
// were this happens
if (parseMore && position==inputPosition) parseMore=FALSE;
if (parseMore) position=inputPosition; else position=0;
lineNr = yyLineNr;
//printf("position=%d parseMore=%d\n",position,parseMore);
return parseMore;
}
...
...
src/config.l
View file @
0c751ba9
...
...
@@ -1383,18 +1383,6 @@ void Config::check()
Config_getBool("GENERATE_QHP")=qhp;
}
// check QCH creation requirements
if (!Config_getString("QHG_LOCATION").isEmpty() &&
!Config_getBool("GENERATE_QHP"))
{
config_err("Warning: Specifying QHG_LOCATION requires GENERATE_QHP=YES.\n");
}
if (!Config_getString("QCH_FILE").isEmpty() &&
Config_getString("QHG_LOCATION").isEmpty())
{
config_err("Warning: Specifying QCH_FILE requires QHG_LOCATION to be set.\n");
}
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO"))
{
// don't show inline info for Java output, since Java has no inline
...
...
src/config.xml
View file @
0c751ba9
...
...
@@ -816,7 +816,7 @@ If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
be used to specify the location (absolute path including file name) of
the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
the HTML help compiler on the generated index.hhp.
'
defval=
''
depends=
'GENERATE_HTMLHELP'
/>
'
defval=
''
depends=
'GENERATE_HTMLHELP'
abspath=
'1'
/>
<option
type=
'bool'
id=
'GENERATE_CHI'
docs=
'
If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
controls if a separate .chi index file is generated (YES) or that
...
...
src/dbusxmlscanner.cpp
View file @
0c751ba9
...
...
@@ -478,10 +478,12 @@ public:
bool
needs_entry
(
false
);
bool
brief
(
false
);
Protection
prot
(
Public
);
int
lineNr
=
lineNumber
();
while
(
parseCommentBlock
(
m_parser
,
m_currentEntry
,
text
,
m_fileName
.
utf8
().
data
(),
lineNumber
(),
text
,
m_fileName
.
utf8
().
data
(),
lineNr
,
brief
,
m_currentComment
->
isJavaStyle
,
false
,
prot
,
...
...
src/definition.cpp
View file @
0c751ba9
...
...
@@ -198,7 +198,7 @@ static bool matchExcludedSymbols(const char *name)
void
Definition
::
addToMap
(
const
char
*
name
,
Definition
*
d
)
{
static
bool
vhdlOpt
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
bool
vhdlOpt
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
QCString
symbolName
=
name
;
int
index
=
computeQualifiedIndex
(
symbolName
);
if
(
!
vhdlOpt
&&
index
!=-
1
)
symbolName
=
symbolName
.
mid
(
index
+
2
);
...
...
@@ -383,8 +383,8 @@ bool Definition::_docsAlreadyAdded(const QCString &doc)
}
void
Definition
::
_setDocumentation
(
const
char
*
d
,
const
char
*
docFile
,
int
docLine
,
bool
stripWhiteSpace
,
bool
atTop
)
{
bool
stripWhiteSpace
,
bool
atTop
)
{
if
(
d
==
0
)
return
;
//printf("Definition::setDocumentation(%s,%s,%d,%d)\n",d,docFile,docLine,stripWhiteSpace);
QCString
doc
=
d
;
...
...
@@ -405,21 +405,26 @@ void Definition::_setDocumentation(const char *d,const char *docFile,int docLine
}
if
(
m_impl
->
details
->
doc
.
isEmpty
())
// fresh detailed description
{
m_impl
->
details
->
doc
=
doc
;
m_impl
->
details
->
doc
=
doc
;
}
else
if
(
atTop
)
// another detailed description, append it to the start
{
m_impl
->
details
->
doc
=
doc
+
"
\n\n
"
+
m_impl
->
details
->
doc
;
m_impl
->
details
->
doc
=
doc
+
"
\n\n
"
+
m_impl
->
details
->
doc
;
}
else
// another detailed description, append it to the end
{
m_impl
->
details
->
doc
+=
"
\n\n
"
+
doc
;
m_impl
->
details
->
doc
+=
"
\n\n
"
+
doc
;
}
if
(
docLine
!=-
1
)
// store location if valid
{
m_impl
->
details
->
file
=
docFile
;
m_impl
->
details
->
line
=
docLine
;
}
else
{
m_impl
->
details
->
file
=
docFile
;
m_impl
->
details
->
line
=
1
;
}
}
}
...
...
src/docparser.cpp
View file @
0c751ba9
This diff is collapsed.
Click to expand it.
src/docparser.h
View file @
0c751ba9
...
...
@@ -324,10 +324,10 @@ class DocStyleChange : public DocNode
class
DocSymbol
:
public
DocNode
{
public
:
enum
SymType
{
Unknown
=
0
,
BSlash
,
At
,
Less
,
Greater
,
Amp
,
Dollar
,
Hash
,
Percent
,
Copy
,
Tm
,
Reg
,
Apos
,
Quot
,
Uml
,
Acute
,
Grave
,
Circ
,
Tild
e
,
Szlig
,
Cedil
,
Ring
,
Nbsp
,
Slash
,
Lsquo
,
Rsquo
,
Ldquo
,
Rdquo
,
Ndash
,
Mdash
,
Aelig
,
AElig
enum
SymType
{
Unknown
=
0
,
BSlash
,
At
,
Less
,
Greater
,
Amp
,
Dollar
,
Hash
,
Percent
,
Copy
,
Tm
,
Reg
,
Apos
,
Quot
,
Uml
,
Acut
e
,
Grave
,
Circ
,
Tilde
,
Szlig
,
Cedil
,
Ring
,
Nbsp
,
Slash
,
Lsquo
,
Rsquo
,
Ldquo
,
Rdquo
,
Ndash
,
Mdash
,
Aelig
,
AElig
};
DocSymbol
(
DocNode
*
parent
,
SymType
s
,
char
letter
=
'\0'
)
:
m_parent
(
parent
),
m_symbol
(
s
),
m_letter
(
letter
)
{}
...
...
@@ -488,16 +488,21 @@ class DocFormula : public DocNode
class
DocIndexEntry
:
public
DocNode
{
public
:
DocIndexEntry
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{
}
DocIndexEntry
(
DocNode
*
parent
,
Definition
*
scope
,
MemberDef
*
md
)
:
m_parent
(
parent
),
m_scope
(
scope
),
m_member
(
md
)
{
}
Kind
kind
()
const
{
return
Kind_IndexEntry
;
}
int
parse
();
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
QString
entry
()
{
return
m_entry
;
}
Definition
*
scope
()
const
{
return
m_scope
;
}
MemberDef
*
member
()
const
{
return
m_member
;
}
QString
entry
()
const
{
return
m_entry
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
QString
m_entry
;
DocNode
*
m_parent
;
QString
m_entry
;
Definition
*
m_scope
;
MemberDef
*
m_member
;
};
//-----------------------------------------------------------------------
...
...
src/docsets.cpp
View file @
0c751ba9
...
...
@@ -61,7 +61,7 @@ void DocSets::initialize()
"DOCSET_CONTENTS=$(DOCSET_NAME)/Contents
\n
"
"DOCSET_RESOURCES=$(DOCSET_CONTENTS)/Resources
\n
"
"DOCSET_DOCUMENTS=$(DOCSET_RESOURCES)/Documents
\n
"
"D
OCSET_INSTALL
=~/Library/Developer/Shared/Documentation/DocSets
\n
"
"D
ESTDIR
=~/Library/Developer/Shared/Documentation/DocSets
\n
"
"XCODE_INSTALL=$(shell xcode-select -print-path)
\n
"
"
\n
"
"all: docset
\n
"
...
...
@@ -85,11 +85,11 @@ void DocSets::initialize()
"
\t
rm -f $(DOCSET_RESOURCES)/Tokens.xml
\n
"
"
\n
"
"install: docset
\n
"
"
\t
mkdir -p $(D
OCSET_INSTALL
)
\n
"
"
\t
cp -R $(DOCSET_NAME) $(D
OCSET_INSTALL
)
\n
"
"
\t
mkdir -p $(D
ESTDIR
)
\n
"
"
\t
cp -R $(DOCSET_NAME) $(D
ESTDIR
)
\n
"
"
\n
"
"uninstall:
\n
"
"
\t
rm -rf $(D
OCSET_INSTALL
)
\n
"
"
\t
rm -rf $(D
ESTDIR)/$(DOCSET_NAME
)
\n
"
"
\n
"
"always:
\n
"
;
}
...
...
@@ -227,15 +227,28 @@ void DocSets::addContentsItem(bool isDir,
}
}
void
DocSets
::
addIndexItem
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
MemberDef
*
md
)
void
DocSets
::
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
,
const
char
*
word
)
{
if
(
!
md
->
isLinkable
())
return
;
// internal symbol
(
void
)
anchor
;
(
void
)
word
;
if
(
md
==
0
||
context
==
0
)
return
;
// TODO: also index non members...
ClassDef
*
cd
=
md
->
getClassDef
();
NamespaceDef
*
nd
=
md
->
getNamespaceDef
();
FileDef
*
fd
=
md
->
getFileDef
();
FileDef
*
fd
=
0
;
ClassDef
*
cd
=
0
;
NamespaceDef
*
nd
=
0
;
if
(
md
)
{
fd
=
md
->
getFileDef
();
cd
=
md
->
getClassDef
();
nd
=
md
->
getNamespaceDef
();
if
(
!
md
->
isLinkable
())
return
;
// internal symbol
}
QCString
scope
;
QCString
type
;
QCString
decl
;
// determine language
QCString
lang
;
...
...
@@ -246,13 +259,13 @@ void DocSets::addIndexItem(const char *, const char *,
case
SrcLangExt_Cpp
:
case
SrcLangExt_ObjC
:
{
if
(
md
->
isObjCMethod
()
||
md
->
isObjCProperty
(
))
if
(
md
&&
(
md
->
isObjCMethod
()
||
md
->
isObjCProperty
()
))
lang
=
"occ"
;
// Objective C/C++
else
if
(
fd
&&
fd
->
name
().
right
(
2
).
lower
()
==
".c"
)
lang
=
"c"
;
// Plain C
else
if
(
cd
==
0
&&
nd
==
0
)
lang
=
"c"
;
// Plain C symbol outside any class or namespace
else
else
lang
=
"cpp"
;
// C++
}
break
;
...
...
@@ -268,107 +281,133 @@ void DocSets::addIndexItem(const char *, const char *,
case
SrcLangExt_XML
:
lang
=
"xml"
;
break
;
// DBUS XML
}
// determine scope
QCString
scope
;
QCString
type
;
QCString
decl
;
Definition
*
d
=
0
;
if
(
fd
&&
fd
->
isLinkable
()
&&
m_scopes
.
find
(
fd
->
getOutputFileBase
())
==
0
)
if
(
md
)
{
writeToken
(
m_tts
,
fd
,
"file"
,
lang
,
0
,
0
,
0
);
m_scopes
.
append
(
fd
->
getOutputFileBase
(),(
void
*
)
0x8
);
if
(
!
md
->
isLinkable
())
return
;
// internal symbol
if
(
context
==
0
)
{
if
(
md
->
getGroupDef
())
context
=
md
->
getGroupDef
();
else
if
(
md
->
getFileDef
())
context
=
md
->
getFileDef
();
if
(
context
==
0
)
return
;
// should not happen
switch
(
md
->
memberType
())
{
case
MemberDef
:
:
Define
:
type
=
"macro"
;
break
;
case
MemberDef
:
:
Function
:
if
(
cd
&&
(
cd
->
compoundType
()
==
ClassDef
::
Interface
||
cd
->
compoundType
()
==
ClassDef
::
Class
))
{
if
(
md
->
isStatic
())
type
=
"clm"
;
// class member
else
type
=
"instm"
;
// instance member
}
else
if
(
cd
&&
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
{
if
(
md
->
isStatic
())
type
=
"intfcm"
;
// interface class member
else
type
=
"intfm"
;
// interface member
}
else
type
=
"func"
;
break
;
case
MemberDef
:
:
Variable
:
type
=
"data"
;
break
;
case
MemberDef
:
:
Typedef
:
type
=
"tdef"
;
break
;
case
MemberDef
:
:
Enumeration
:
type
=
"enum"
;
break
;
case
MemberDef
:
:
EnumValue
:
type
=
"econst"
;
break
;
//case MemberDef::Prototype:
// type="prototype"; break;
case
MemberDef
:
:
Signal
:
type
=
"signal"
;
break
;
case
MemberDef
:
:
Slot
:
type
=
"slot"
;
break
;
case
MemberDef
:
:
Friend
:
type
=
"ffunc"
;
break
;
case
MemberDef
:
:
DCOP
:
type
=
"dcop"
;
break
;
case
MemberDef
:
:
Property
:
if
(
cd
&&
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
type
=
"intfp"
;
// interface property
else
type
=
"instp"
;
// instance property
break
;
case
MemberDef
:
:
Event
:
type
=
"event"
;
break
;
}
writeToken
(
m_tts
,
md
,
type
,
lang
,
scope
,
md
->
anchor
());
}
}
if
(
cd
)
else
if
(
context
&&
context
->
isLinkable
())
{
scope
=
cd
->
qualifiedName
();
if
(
cd
->
isTemplate
())
type
=
"tmplt"
;
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
if
(
fd
==
0
&&
context
->
definitionType
()
==
Definition
::
TypeFile
)
{
fd
=
(
FileDef
*
)
context
;
}
if
(
cd
==
0
&&
context
->
definitionType
()
==
Definition
::
TypeClass
)
{
cd
=
(
ClassDef
*
)
context
;
}
if
(
nd
==
0
&&
context
->
definitionType
()
==
Definition
::
TypeNamespace
)
{
type
=
"intf"
;
if
(
scope
.
right
(
2
)
==
"-p"
)
scope
=
scope
.
left
(
scope
.
length
()
-
2
);
nd
=
(
NamespaceDef
*
)
context
;
}
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Interface
)
type
=
"cl"
;
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Category
)
type
=
"cat"
;
else
type
=
"cl"
;
d
=
cd
;
IncludeInfo
*
ii
=
cd
->
includeInfo
();
if
(
ii
)
if
(
fd
)
{
decl
=
ii
->
includeName
;
if
(
decl
.
isEmpty
())
type
=
"file"
;
}
else
if
(
cd
)
{
scope
=
cd
->
qualifiedName
();
if
(
cd
->
isTemplate
())
{
decl
=
ii
->
local
;
type
=
"tmplt"
;
}
}
}
else
if
(
nd
)
{
scope
=
nd
->
name
();
type
=
"ns"
;
d
=
cd
;
}
if
(
d
&&
d
->
isLinkable
()
&&
m_scopes
.
find
(
d
->
getOutputFileBase
())
==
0
)
{
writeToken
(
m_tts
,
d
,
type
,
lang
,
0
,
0
,
decl
);
m_scopes
.
append
(
d
->
getOutputFileBase
(),(
void
*
)
0x8
);
}
switch
(
md
->
memberType
())
{
case
MemberDef
:
:
Define
:
type
=
"macro"
;
break
;
case
MemberDef
:
:
Function
:
if
(
cd
&&
(
cd
->
compoundType
()
==
ClassDef
::
Interface
||
cd
->
compoundType
()
==
ClassDef
::
Class
)
)
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
{
if
(
md
->
isStatic
())
type
=
"clm"
;
else
type
=
"instm"
;
type
=
"intf"
;
if
(
scope
.
right
(
2
)
==
"-p"
)
scope
=
scope
.
left
(
scope
.
length
()
-
2
);
}
else
if
(
cd
&&
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Interface
)
{
if
(
md
->
isStatic
())
type
=
"intfcm"
;
else
type
=
"intfm"
;
type
=
"cl"
;
}
else
if
(
cd
->
compoundType
()
==
ClassDef
::
Category
)
{
type
=
"cat"
;
}
else
type
=
"func"
;
break
;
case
MemberDef
:
:
Variable
:
type
=
"data"
;
break
;
case
MemberDef
:
:
Typedef
:
type
=
"tdef"
;
break
;
case
MemberDef
:
:
Enumeration
:
type
=
"enum"
;
break
;
case
MemberDef
:
:
EnumValue
:
type
=
"econst"
;
break
;
//case MemberDef::Prototype:
// type="prototype"; break;
case
MemberDef
:
:
Signal
:
type
=
"signal"
;
break
;
case
MemberDef
:
:
Slot
:
type
=
"slot"
;
break
;
case
MemberDef
:
:
Friend
:
type
=
"ffunc"
;
break
;
case
MemberDef
:
:
DCOP
:
type
=
"dcop"
;
break
;
case
MemberDef
:
:
Property
:
if
(
cd
&&
cd
->
compoundType
()
==
ClassDef
::
Protocol
)
type
=
"intfp"
;
else
type
=
"instp"
;
break
;
case
MemberDef
:
:
Event
:
type
=
"event"
;
break
;
{
type
=
"cl"
;
}
IncludeInfo
*
ii
=
cd
->
includeInfo
();
if
(
ii
)
{
decl
=
ii
->
includeName
;
if
(
decl
.
isEmpty
())
{
decl
=
ii
->
local
;
}
}
}
else
if
(
nd
)
{
scope
=
nd
->
name
();
type
=
"ns"
;
}
if
(
m_scopes
.
find
(
context
->
getOutputFileBase
())
==
0
)
{
writeToken
(
m_tts
,
context
,
type
,
lang
,
0
,
0
,
decl
);
m_scopes
.
append
(
context
->
getOutputFileBase
(),(
void
*
)
0x8
);
}
}
writeToken
(
m_tts
,
md
,
type
,
lang
,
scope
,
md
->
anchor
());
}
void
DocSets
::
writeToken
(
QTextStream
&
t
,
...
...
@@ -384,9 +423,18 @@ void DocSets::writeToken(QTextStream &t,
QString
name
=
d
->
name
();
if
(
name
.
right
(
2
)
==
"-p"
)
name
=
name
.
left
(
name
.
length
()
-
2
);
t
<<
" <Name>"
<<
convertToXML
(
name
)
<<
"</Name>"
<<
endl
;
t
<<
" <APILanguage>"
<<
lang
<<
"</APILanguage>"
<<
endl
;
t
<<
" <Type>"
<<
type
<<
"</Type>"
<<
endl
;
t
<<
" <Scope>"
<<
convertToXML
(
scope
)
<<
"</Scope>"
<<
endl
;
if
(
!
lang
.
isEmpty
())
{
t
<<
" <APILanguage>"
<<
lang
<<
"</APILanguage>"
<<
endl
;
}
if
(
!
type
.
isEmpty
())
{
t
<<
" <Type>"
<<
type
<<
"</Type>"
<<
endl
;
}
if
(
scope
)
{
t
<<
" <Scope>"
<<
convertToXML
(
scope
)
<<
"</Scope>"
<<
endl
;
}
t
<<
" </TokenIdentifier>"
<<
endl
;
t
<<
" <Path>"
<<
d
->
getOutputFileBase
()
<<
Doxygen
::
htmlFileExtension
<<
"</Path>"
<<
endl
;
...
...
@@ -397,7 +445,7 @@ void DocSets::writeToken(QTextStream &t,
QCString
tooltip
=
d
->
briefDescriptionAsTooltip
();
if
(
!
tooltip
.
isEmpty
())
{
t
<<
" <Abstract>"
<<
tooltip
<<
"</Abstract>"
<<
endl
;
t
<<
" <Abstract>"
<<
convertToXML
(
tooltip
)
<<
"</Abstract>"
<<
endl
;
}
if
(
decl
)
{
...
...
src/docsets.h
View file @
0c751ba9
...
...
@@ -46,9 +46,11 @@ class DocSets : public IndexIntf
const
char
*
file
=
0
,
const
char
*
anchor
=
0
);
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
);
//void addIndexItem(const char *level1, const char *level2,
// const char *contRef, const char *memRef,
// const char *anchor,const MemberDef *md);
void
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
,
const
char
*
word
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
...
...
src/doctokenizer.l
View file @
0c751ba9
...
...
@@ -305,7 +305,7 @@ FILEMASK ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|{HFILEMASK}
LINKMASK [^ \t\n\r\\@<&${}]+("("[^\n)]*")")?({BLANK}*("const"|"volatile"){BLANK}+)?
VERBATIM "verbatim"{BLANK}*
SPCMD1 {CMD}([a-z_A-Z0-9]+|{VERBATIM})
SPCMD2 {CMD}[\\@<>&$#%~]
SPCMD2 {CMD}[\\@<>&$#%~
"
]
SPCMD3 {CMD}form#[0-9]+
INOUT "in"|"out"|("in"{BLANK}*","{BLANK}*"out")|("out"{BLANK}*","{BLANK}*"in")
PARAMIO {CMD}param{BLANK}*"["{BLANK}*{INOUT}{BLANK}*"]"
...
...
@@ -924,7 +924,7 @@ REFWORD ("#"|"::")?({ID}{TEMPLPART}?("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCA
<*>\n {
warn(g_fileName,yylineno,"Error: Unexpected new line character");
}
<*>[\\@<>&$#%~
]
{ /* unescaped special character */
<*>[\\@<>&$#%~
"]
{ /* unescaped special character */
//warn(g_fileName,yylineno,"Warning: Unexpected character `%s', assuming command \\%s was meant.",yytext,yytext);
g_token->name = yytext;
return TK_COMMAND;
...
...
src/dot.cpp
View file @
0c751ba9
...
...
@@ -1173,7 +1173,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) const
checkDotResult
(
absImgName
);
if
(
Config_getBool
(
"DOT_CLEANUP"
))
d
.
remove
(
dotName
);
}
Doxygen
::
indexList
.
addImageFile
(
absI
mgName
);
Doxygen
::
indexList
.
addImageFile
(
i
mgName
);
// write image and map in a table row
QCString
mapLabel
=
escapeCharsInString
(
n
->
m_label
,
FALSE
);
out
<<
"<tr><td><img src=
\"
"
<<
imgName
<<
"
\"
border=
\"
0
\"
alt=
\"\"
usemap=
\"
#"
...
...
src/doxygen.cpp
View file @
0c751ba9
...
...
@@ -6926,17 +6926,17 @@ static void computeMemberRelations()
{
ClassDef
*
bmcd
=
bmd
->
getClassDef
();
//printf("Check relation between `%s'::`%s' (%p) and `%s'::`%s' (%p)\n",
//
mcd->name().data(),md->name().data(),md,
// mcd->name().data(),md->name().data(),md,
// bmcd->name().data(),bmd->name().data(),bmd
// );
if
(
md
!=
bmd
&&
bmcd
&&
mcd
&&
bmcd
!=
mcd
&&
mcd
->
isBaseClass
(
bmcd
,
TRUE
))
{
//printf(" Base argList=`%s'\n Super argList=`%s'\n",
// argListToString(bmd->argumentList()).data(),
// argListToString(md->argumentList()).data()
// );
LockingPtr
<
ArgumentList
>
bmdAl
=
bmd
->
argumentList
();
LockingPtr
<
ArgumentList
>
mdAl
=
md
->
argumentList
();
//printf(" Base argList=`%s'\n Super argList=`%s'\n",
// argListToString(bmdAl.pointer()).data(),
// argListToString(mdAl.pointer()).data()
// );
if
(
matchArguments2
(
bmd
->
getOuterScope
(),
bmd
->
getFileDef
(),
bmdAl
.
pointer
(),
md
->
getOuterScope
(),
md
->
getFileDef
(),
mdAl
.
pointer
(),
...
...
@@ -10167,13 +10167,17 @@ void generateOutput()
{
g_outputList
->
add
(
new
HtmlGenerator
);
HtmlGenerator
::
init
();
if
(
Config_getBool
(
"GENERATE_HTMLHELP"
))
Doxygen
::
indexList
.
addIndex
(
new
HtmlHelp
);
if
(
Config_getBool
(
"GENERATE_QHP"
))
Doxygen
::
indexList
.
addIndex
(
new
Qhp
);
#if 0
if (Config_getBool("GENERATE_INDEXLOG")) Doxygen::indexList.addIndex(new IndexLog);
#endif
if
(
Config_getBool
(
"GENERATE_TREEVIEW"
))
Doxygen
::
indexList
.
addIndex
(
new
FTVHelp
);
if
(
Config_getBool
(
"GENERATE_DOCSET"
))
Doxygen
::
indexList
.
addIndex
(
new
DocSets
);
bool
generateHtmlHelp
=
Config_getBool
(
"GENERATE_HTMLHELP"
);
bool
generateQhp
=
Config_getBool
(
"GENERATE_QHP"
);
bool
generateTreeView
=
Config_getBool
(
"GENERATE_TREEVIEW"
);
bool
generateDocSet
=
Config_getBool
(
"GENERATE_DOCSET"
);
if
(
generateHtmlHelp
)
Doxygen
::
indexList
.
addIndex
(
new
HtmlHelp
);
if
(
generateQhp
)
Doxygen
::
indexList
.
addIndex
(
new
Qhp
);
if
(
generateTreeView
)
Doxygen
::
indexList
.
addIndex
(
new
FTVHelp
);
if
(
generateDocSet
)
Doxygen
::
indexList
.
addIndex
(
new
DocSets
);
Doxygen
::
indexList
.
initialize
();
Doxygen
::
indexList
.
addImageFile
(
"tab_r.gif"
);
Doxygen
::
indexList
.
addImageFile
(
"tab_l.gif"
);
...
...
@@ -10258,6 +10262,10 @@ void generateOutput()
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
writeSearchIndex
();
Doxygen
::
indexList
.
addImageFile
(
"search/close.png"
);
Doxygen
::
indexList
.
addImageFile
(
"search/search.png"
);
Doxygen
::
indexList
.
addStyleSheetFile
(
"search/search.css"
);
Doxygen
::
indexList
.
addStyleSheetFile
(
"search/search.js"
);
}
//statistics();
...
...
@@ -10407,26 +10415,6 @@ void generateOutput()
}
QDir
::
setCurrent
(
oldDir
);
}
#if 0
if ( Config_getBool("GENERATE_HTMLHELP") &&
!Config_getString("DOXYGEN2QTHELP_LOC").isEmpty() &&
!Config_getString("QTHELP_CONFIG").isEmpty())
{
msg("Running doxygen2qthelp...\n");
const QCString qtHelpFile = Config_getString("QTHELP_FILE");
const QCString args = QCString().sprintf("--config=%s index.hhp%s%s",
Config_getString("QTHELP_CONFIG").data(),
(qtHelpFile.isEmpty() ? "" : " "), (qtHelpFile.isEmpty() ? "" : qtHelpFile.data()));
const QString oldDir = QDir::currentDirPath();
QDir::setCurrent(Config_getString("HTML_OUTPUT"));
if (portable_system(Config_getString("DOXYGEN2QTHELP_LOC"), args.data(), FALSE))
{
err("Error: failed to run doxygen2qthelp on index.hhp\n");
}
QDir::setCurrent(oldDir);
}
#endif
if
(
Config_getBool
(
"GENERATE_HTML"
)
&&
Config_getBool
(
"GENERATE_QHP"
)
&&
!
Config_getString
(
"QHG_LOCATION"
).
isEmpty
())
...
...
src/fortrancode.l
View file @
0c751ba9
...
...
@@ -263,7 +263,7 @@ static void startCodeLine()
static void endFontClass();
static void endCodeLine()
{
if (g_currentFontClass) { g_code->endFontClass(); }
endFontClass();
g_code->endCodeLine();
}
...
...
src/fortranscanner.l
View file @
0c751ba9
...
...
@@ -1602,12 +1602,13 @@ static void handleCommentBlock(const QCString &doc,bool brief)
int position=0;
if (docBlockInBody && hideInBodyDocs) return;
//fprintf(stderr,"call parseCommentBlock [%s]\n",doc.data());
int lineNr = brief ? current->briefLine : current->docLine;
while (parseCommentBlock(
g_thisParser,
docBlockInBody ? last_entry : current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
lineNr,
docBlockInBody ? FALSE : brief,
docBlockInBody ? FALSE : docBlockJavaStyle,
docBlockInBody,
...
...
src/ftvhelp.h
View file @
0c751ba9
...
...
@@ -82,9 +82,10 @@ class FTVHelp : public IndexIntf
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
);
void
addIndexItem
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
MemberDef
*
)
{}
//void addIndexItem(const char *, const char *,
// const char *, const char *,
// const char *, const MemberDef *) {}
void
addIndexItem
(
Definition
*
,
MemberDef
*
,
const
char
*
,
const
char
*
)
{}
void
addIndexFile
(
const
char
*
)
{}
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
...
...
src/htmldocvisitor.cpp
View file @
0c751ba9
...
...
@@ -34,6 +34,34 @@
static
const
int
NUM_HTML_LIST_TYPES
=
4
;
static
const
char
types
[][
NUM_HTML_LIST_TYPES
]
=
{
"1"
,
"a"
,
"i"
,
"A"
};
static
QCString
convertIndexWordToAnchor
(
const
QString
&
word
)
{
static
char
hex
[]
=
"0123456789abcdef"
;
uint
i
;
QCString
result
;
for
(
i
=
0
;
i
<
word
.
length
();
i
++
)
{
int
c
=
word
.
at
(
i
);
if
(
isId
(
c
))
{
result
+=
c
;
}
else
if
(
isspace
(
c
))
{
result
+=
"_"
;
}
else
{
char
cs
[
3
];
cs
[
0
]
=
hex
[
c
>>
4
];
cs
[
1
]
=
hex
[
c
&
0xf
];
cs
[
2
]
=
0
;
result
+=
cs
;
}
}
return
result
;
}
static
bool
mustBeOutsideParagraph
(
DocNode
*
n
)
{
switch
(
n
->
kind
())
...
...
@@ -293,7 +321,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
case
DocVerbatim
:
:
XmlOnly
:
/* nothing */
break
;
case
DocVerbatim
:
:
Dot
:
{
static
int
dotindex
=
1
;
...
...
@@ -470,8 +498,20 @@ void HtmlDocVisitor::visit(DocFormula *f)
}
}
void
HtmlDocVisitor
::
visit
(
DocIndexEntry
*
)
void
HtmlDocVisitor
::
visit
(
DocIndexEntry
*
e
)
{
QCString
anchor
=
convertIndexWordToAnchor
(
e
->
entry
());
if
(
e
->
member
())
{
anchor
.
prepend
(
e
->
member
()
->
anchor
()
+
"_"
);
}
m_t
<<
"<a name=
\"
"
<<
anchor
<<
"
\"
></a>"
;
//printf("*** DocIndexEntry: word='%s' scope='%s' member='%s'\n",
// e->entry().data(),
// e->scope() ? e->scope()->name().data() : "<null>",
// e->member() ? e->member()->name().data() : "<null>"
// );
Doxygen
::
indexList
.
addIndexItem
(
e
->
scope
(),
e
->
member
(),
anchor
,
e
->
entry
());
}
void
HtmlDocVisitor
::
visit
(
DocSimpleSectSep
*
)
...
...
src/htmlhelp.cpp
View file @
0c751ba9
...
...
@@ -302,8 +302,13 @@ static QDict<QCString> s_languageDict;
void
HtmlHelp
::
initialize
()
{
const
char
*
str
=
Config_getString
(
"CHM_INDEX_ENCODING"
);
if
(
!
str
)
str
=
"Windows-1250"
;
if
(
!
str
)
str
=
"CP1250"
;
// use safe and likely default
m_fromUtf8
=
portable_iconv_open
(
str
,
"UTF-8"
);
if
(
m_fromUtf8
==
(
void
*
)(
-
1
))
{
err
(
"Error: unsupported character conversion for CHM_INDEX_ENCODING: '%s'->'UTF-8'
\n
"
,
str
);
exit
(
1
);
}
/* open the contents file */
QCString
fName
=
Config_getString
(
"HTML_OUTPUT"
)
+
"/index.hhc"
;
...
...
@@ -639,21 +644,36 @@ void HtmlHelp::addContentsItem(bool isDir,
cts
<<
"</OBJECT>
\n
"
;
}
/*! Add an list item to the index file.
* \param level1 the main index of the item.
* \param level2 the sub index of the item.
* \param contRef the output file refering to the container.
* \param memRef the output file containing to the member documentation.
* \param anchor the anchor of the item.
* \param md the member definition corresponding to this item.
* \sa HtmlHelpIndex
*/
void
HtmlHelp
::
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
)
void
HtmlHelp
::
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anc
,
const
char
*
word
)
{
(
void
)
md
;
index
->
addItem
(
level1
,
level2
,
contRef
,
anchor
,
TRUE
,
FALSE
);
index
->
addItem
(
level2
,
level1
,
memRef
,
anchor
,
TRUE
,
TRUE
);
if
(
md
)
{
static
bool
separateMemberPages
=
Config_getBool
(
"SEPARATE_MEMBER_PAGES"
);
if
(
context
==
0
)
// global member
{
if
(
md
->
getGroupDef
())
context
=
md
->
getGroupDef
();
else
if
(
md
->
getFileDef
())
context
=
md
->
getFileDef
();
}
if
(
context
==
0
)
return
;
// should not happen
QCString
cfname
=
md
->
getOutputFileBase
();
QCString
cfiname
=
context
->
getOutputFileBase
();
QCString
level1
=
context
->
name
();
QCString
level2
=
md
->
name
();
QCString
contRef
=
separateMemberPages
?
cfname
:
cfiname
;
QCString
memRef
=
cfname
;
QCString
anchor
=
anc
;
index
->
addItem
(
level1
,
level2
,
contRef
,
anchor
,
TRUE
,
FALSE
);
index
->
addItem
(
level2
,
level1
,
memRef
,
anchor
,
TRUE
,
TRUE
);
}
else
if
(
context
)
{
QCString
level1
=
word
?
QCString
(
word
)
:
context
->
name
();
index
->
addItem
(
level1
,
0
,
context
->
getOutputFileBase
(),
anc
,
TRUE
,
FALSE
);
}
}
src/htmlhelp.h
View file @
0c751ba9
...
...
@@ -74,9 +74,11 @@ class HtmlHelp : public IndexIntf
const
char
*
ref
=
0
,
const
char
*
file
=
0
,
const
char
*
anchor
=
0
);
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
);
//void addIndexItem(const char *level1, const char *level2,
// const char *contRef, const char *memRef,
// const char *anchor,const MemberDef *md);
void
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
,
const
char
*
word
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
)
{}
void
addStyleSheetFile
(
const
char
*
)
{}
...
...
src/index.cpp
View file @
0c751ba9
...
...
@@ -131,7 +131,7 @@ class MemberIndexList : public QList<MemberDef>
}
};
#define MEMBER_INDEX_ENTRIES
128
#define MEMBER_INDEX_ENTRIES
256
static
MemberIndexList
g_memberIndexLetterUsed
[
CMHL_Total
][
MEMBER_INDEX_ENTRIES
];
static
MemberIndexList
g_fileIndexLetterUsed
[
FMHL_Total
][
MEMBER_INDEX_ENTRIES
];
...
...
@@ -1573,7 +1573,8 @@ void addClassMemberNameToIndex(MemberDef *md)
{
QCString
n
=
md
->
name
();
int
index
=
getPrefixIndex
(
n
);
int
letter
=
tolower
(
n
.
at
(
index
))
&
0x7f
;
int
charCode
=
n
.
at
(
index
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
!
n
.
isEmpty
())
{
bool
isFriendToHide
=
hideFriendCompounds
&&
...
...
@@ -1653,7 +1654,8 @@ void addNamespaceMemberNameToIndex(MemberDef *md)
{
QCString
n
=
md
->
name
();
int
index
=
getPrefixIndex
(
n
);
int
letter
=
tolower
(
n
.
at
(
index
));
int
charCode
=
n
.
at
(
index
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
!
n
.
isEmpty
())
{
g_namespaceIndexLetterUsed
[
NMHL_All
][
letter
].
append
(
md
);
...
...
@@ -1711,7 +1713,8 @@ void addFileMemberNameToIndex(MemberDef *md)
{
QCString
n
=
md
->
name
();
int
index
=
getPrefixIndex
(
n
);
int
letter
=
tolower
(
n
.
at
(
index
));
int
charCode
=
n
.
at
(
index
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
!
n
.
isEmpty
())
{
g_fileIndexLetterUsed
[
FMHL_All
][
letter
].
append
(
md
);
...
...
@@ -2237,7 +2240,8 @@ static void addMemberToSearchIndex(
cd
->
templateMaster
()
==
0
)
{
QCString
n
=
md
->
name
();
int
letter
=
tolower
(
n
.
at
(
0
))
&
0x7f
;
int
charCode
=
n
.
at
(
0
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
!
n
.
isEmpty
())
{
bool
isFriendToHide
=
hideFriendCompounds
&&
...
...
@@ -2299,7 +2303,8 @@ static void addMemberToSearchIndex(
)
{
QCString
n
=
md
->
name
();
int
letter
=
tolower
(
n
.
at
(
0
))
&
0x7f
;
int
charCode
=
n
.
at
(
0
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
!
n
.
isEmpty
())
{
symbols
[
SEARCH_INDEX_ALL
][
letter
].
append
(
md
);
...
...
@@ -2412,7 +2417,8 @@ void writeSearchIndex()
ClassDef
*
cd
;
for
(;(
cd
=
cli
.
current
());
++
cli
)
{
int
letter
=
tolower
(
cd
->
localName
().
at
(
0
));
int
charCode
=
cd
->
localName
().
at
(
0
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
cd
->
isLinkable
()
&&
isId
(
letter
))
{
g_searchIndexSymbols
[
SEARCH_INDEX_ALL
][
letter
].
append
(
cd
);
...
...
@@ -2425,7 +2431,8 @@ void writeSearchIndex()
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
());
++
nli
)
{
int
letter
=
tolower
(
nd
->
name
().
at
(
0
));
int
charCode
=
nd
->
name
().
at
(
0
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
nd
->
isLinkable
()
&&
isId
(
letter
))
{
g_searchIndexSymbols
[
SEARCH_INDEX_ALL
][
letter
].
append
(
nd
);
...
...
@@ -2442,7 +2449,8 @@ void writeSearchIndex()
FileDef
*
fd
;
for
(;(
fd
=
fni
.
current
());
++
fni
)
{
int
letter
=
tolower
(
fd
->
name
().
at
(
0
));
int
charCode
=
fd
->
name
().
at
(
0
);
int
letter
=
charCode
<
128
?
tolower
(
charCode
)
:
charCode
;
if
(
fd
->
isLinkable
()
&&
isId
(
letter
))
{
g_searchIndexSymbols
[
SEARCH_INDEX_ALL
][
letter
].
append
(
fd
);
...
...
@@ -2772,7 +2780,7 @@ void writeSearchIndex()
{
if
(
!
first
)
t
<<
","
<<
endl
;
t
<<
" "
<<
j
<<
":
\"
"
;
for
(
p
=
32
;
p
<
MEMBER_INDEX_ENTRIES
;
p
++
)
for
(
p
=
0
;
p
<
MEMBER_INDEX_ENTRIES
;
p
++
)
{
t
<<
(
g_searchIndexSymbols
[
i
][
p
].
count
()
>
0
?
"1"
:
"0"
);
}
...
...
src/index.h
View file @
0c751ba9
...
...
@@ -22,11 +22,12 @@
#include <qfile.h>
#include <qlist.h>
class
Definition
;
class
MemberDef
;
class
OutputList
;
class
QTextStream
;
/** \brief Abstract interface for index generators. */
class
IndexIntf
{
public
:
...
...
@@ -37,44 +38,56 @@ class IndexIntf
virtual
void
decContentsDepth
()
=
0
;
virtual
void
addContentsItem
(
bool
isDir
,
const
char
*
name
,
const
char
*
ref
=
0
,
const
char
*
file
=
0
,
const
char
*
anchor
=
0
)
=
0
;
virtual
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
m
d
)
=
0
;
virtual
void
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
,
const
char
*
wor
d
)
=
0
;
virtual
void
addIndexFile
(
const
char
*
name
)
=
0
;
virtual
void
addImageFile
(
const
char
*
name
)
=
0
;
virtual
void
addStyleSheetFile
(
const
char
*
name
)
=
0
;
};
/** \brief A list of index interfaces.
*
* This class itself implements all methods of IndexIntf and
* just forwards the calls to all items in the list.
*/
class
IndexList
:
public
IndexIntf
{
private
:
QList
<
IndexIntf
>
m_intfs
;
// --- foreach implementations for various number of arguments
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)())
{
QListIterator
<
IndexIntf
>
li
(
m_intfs
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)();
}
template
<
typename
A1
>
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)(
A1
),
A1
a1
)
{
QListIterator
<
IndexIntf
>
li
(
m_intfs
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)(
a1
);
}
template
<
typename
A1
,
typename
A2
,
typename
A3
,
typename
A4
,
typename
A5
>
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)(
A1
,
A2
,
A3
,
A4
,
A5
),
A1
a1
,
A2
a2
,
A3
a3
,
A4
a4
,
A5
a5
)
template
<
typename
A1
,
typename
A2
,
typename
A3
,
typename
A4
>
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)(
A1
,
A2
,
A3
,
A4
),
A1
a1
,
A2
a2
,
A3
a3
,
A4
a4
)
{
QListIterator
<
IndexIntf
>
li
(
m_intfs
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)(
a1
,
a2
,
a3
,
a4
,
a5
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)(
a1
,
a2
,
a3
,
a4
);
}
template
<
typename
A1
,
typename
A2
,
typename
A3
,
typename
A4
,
typename
A5
,
typename
A6
>
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)(
A1
,
A2
,
A3
,
A4
,
A5
,
A6
),
A1
a1
,
A2
a2
,
A3
a3
,
A4
a4
,
A5
a5
,
A6
a6
)
template
<
typename
A1
,
typename
A2
,
typename
A3
,
typename
A4
,
typename
A5
>
void
foreach
(
void
(
IndexIntf
::*
methodPtr
)(
A1
,
A2
,
A3
,
A4
,
A5
),
A1
a1
,
A2
a2
,
A3
a3
,
A4
a4
,
A5
a5
)
{
QListIterator
<
IndexIntf
>
li
(
m_intfs
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)(
a1
,
a2
,
a3
,
a4
,
a5
,
a6
);
for
(
li
.
toFirst
();
li
.
current
();
++
li
)
(
li
.
current
()
->*
methodPtr
)(
a1
,
a2
,
a3
,
a4
,
a5
);
}
public
:
/** Creates a list of indexes */
IndexList
()
{
m_intfs
.
setAutoDelete
(
TRUE
);
}
/** Add an index generator to the list */
void
addIndex
(
IndexIntf
*
intf
)
{
m_intfs
.
append
(
intf
);
}
...
...
@@ -91,10 +104,10 @@ class IndexList : public IndexIntf
const
char
*
file
=
0
,
const
char
*
anchor
=
0
)
{
foreach
<
bool
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*>
(
&
IndexIntf
::
addContentsItem
,
isDir
,
name
,
ref
,
file
,
anchor
);
}
void
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
memRef
,
const
char
*
anchor
,
const
MemberDef
*
md
)
{
foreach
<
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
MemberDef
*>
(
&
IndexIntf
::
addIndexItem
,
level1
,
level2
,
contRef
,
memRef
,
anchor
,
m
d
);
}
void
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
=
0
,
const
char
*
word
=
0
)
{
foreach
<
Definition
*
,
MemberDef
*>
(
&
IndexIntf
::
addIndexItem
,
context
,
md
,
anchor
,
wor
d
);
}
void
addIndexFile
(
const
char
*
name
)
{
foreach
<
const
char
*>
(
&
IndexIntf
::
addIndexFile
,
name
);
}
void
addImageFile
(
const
char
*
name
)
...
...
src/memberdef.cpp
View file @
0c751ba9
...
...
@@ -1402,16 +1402,17 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
else
// index member
{
static
bool
separateMemPages
=
Config_getBool
(
"SEPARATE_MEMBER_PAGES"
);
QCString
cfname
=
getOutputFileBase
();
QCString
cfiname
=
d
->
getOutputFileBase
();
Doxygen
::
indexList
.
addIndexItem
(
cname
,
// level1
name
(),
// level2
separateMemPages
?
cfname
:
cfiname
,
// contRef
cfname
,
// memRef
anchor
(),
// anchor
this
);
// memberdef
//static bool separateMemPages = Config_getBool("SEPARATE_MEMBER_PAGES");
//QCString cfname = getOutputFileBase();
//QCString cfiname = d->getOutputFileBase();
//Doxygen::indexList.addIndexItem(
// cname, // level1
// name(), // level2
// separateMemPages ? cfname : cfiname, // contRef
// cfname, // memRef
// anchor(), // anchor
// this); // memberdef
Doxygen
::
indexList
.
addIndexItem
(
d
,
this
);
}
// *** write arguments
...
...
@@ -1642,7 +1643,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
bool
hasParameterList
=
FALSE
;
bool
inFile
=
container
->
definitionType
()
==
Definition
::
TypeFile
;
bool
hasDocs
=
isDetailedSectionVisible
(
inGroup
,
inFile
);
static
bool
separateMemPages
=
Config_getBool
(
"SEPARATE_MEMBER_PAGES"
);
static
bool
optVhdl
=
Config_getBool
(
"OPTIMIZE_OUTPUT_VHDL"
);
//printf("MemberDef::writeDocumentation(): name=`%s' hasDocs=`%d' containerType=%d inGroup=%d\n",
// name().data(),hasDocs,container->definitionType(),inGroup);
...
...
@@ -1672,22 +1672,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
QCString
cfname
=
getOutputFileBase
();
QCString
cfiname
=
container
->
getOutputFileBase
();
// the next part is moved to declaration
//if (isEnumerate() && name().at(0)=='@')
//{
// // don't add to index
//}
//else
//{
// Doxygen::indexList.addIndexItem(
// ciname, // level1
// name(), // level2
// separateMemPages ? cfname : cfiname, // contRef
// cfname, // memRef
// memAnchor, // anchor
// this); // memberdef
//}
// get member name
QCString
doxyName
=
name
();
// prepend scope if there is any. TODO: make this optional for C only docs
...
...
@@ -2073,35 +2057,6 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
FALSE
// isExample
);
#if 0 // old, now obsolete way to add parameter documentation
//printf("***** argumentList is documented\n");
ol.startParamList(BaseOutputDocInterface::Param,theTranslator->trParameters()+": ");
ol.writeDescItem();
ol.startDescTable();
ArgumentListIterator ali(*docArgList);
Argument *a;
for (ali.toFirst();(a=ali.current());++ali)
{
if (a->hasDocumentation())
{
ol.startDescTableTitle();
ol.docify(a->name);
ol.endDescTableTitle();
QCString doc = a->docs+"\n";
ol.startDescTableData();
ol.parseDoc(docFile(),docLine(),
getOuterScope()?getOuterScope():container,
this, // memberDef
a->docs+"\n", // docStr
TRUE, // indexWords
FALSE // isExample
);
ol.endDescTableData();
}
}
ol.endDescTable();
ol.endParamList();
#endif
}
// For enum, we also write the documented enum values
...
...
@@ -2127,21 +2082,15 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol
.
addIndexItem
(
fmd
->
name
(),
cname
);
ol
.
addIndexItem
(
cname
,
fmd
->
name
());
//if (hasHtmlHelp)
//{
// htmlHelp->addIndexItem(ciname, // level1
// fmd->name(), // level2
// separateMemPages ? cfname : cfiname, // contRef
// cfname, // memRef
// fmd->anchor()); // anchor
//}
Doxygen
::
indexList
.
addIndexItem
(
ciname
,
// level1
fmd
->
name
(),
// level2
separateMemPages
?
cfname
:
cfiname
,
// contRef
cfname
,
// memRef
fmd
->
anchor
(),
// anchor
fmd
);
// memberdef
//Doxygen::indexList.addIndexItem(
// ciname, // level1
// fmd->name(), // level2
// separateMemPages ? cfname : cfiname, // contRef
// cfname, // memRef
// fmd->anchor(), // anchor
// fmd); // memberdef
Doxygen
::
indexList
.
addIndexItem
(
container
,
fmd
);
//ol.writeListItem();
ol
.
startDescTableTitle
();
// this enables emphasis!
ol
.
startDoxyAnchor
(
cfname
,
cname
,
fmd
->
anchor
(),
fmd
->
name
(),
fmd
->
argsString
());
...
...
src/namespacedef.cpp
View file @
0c751ba9
...
...
@@ -415,6 +415,8 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
Doxygen
::
tagFile
<<
" <filename>"
<<
convertToXML
(
getOutputFileBase
())
<<
Doxygen
::
htmlFileExtension
<<
"</filename>"
<<
endl
;
}
Doxygen
::
indexList
.
addIndexItem
(
this
,
0
);
//---------------------------------------- start flexible part -------------------------------
QListIterator
<
LayoutDocEntry
>
eli
(
...
...
src/pagedef.cpp
View file @
0c751ba9
...
...
@@ -160,7 +160,8 @@ void PageDef::writeDocumentation(OutputList &ol)
void
PageDef
::
writePageDocumentation
(
OutputList
&
ol
)
{
ol
.
startTextBlock
();
ol
.
parseDoc
(
docFile
(),
// fileName
ol
.
parseDoc
(
docFile
(),
// fileName
docLine
(),
// startLine
this
,
// context
0
,
// memberdef
...
...
src/pre.l
View file @
0c751ba9
...
...
@@ -512,7 +512,7 @@ static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int
len=0;
result.resize(0);
int cc;
while ((cc=getCurrentChar(expr,rest,j))!=EOF &&
cc==' '
)
while ((cc=getCurrentChar(expr,rest,j))!=EOF &&
isspace(cc)
)
{
len++;
getNextChar(expr,rest,j);
...
...
@@ -772,6 +772,7 @@ static int getNextId(const QCString &expr,int p,int *l)
c=expr.at(p);
p++;
}
if (p<(int)expr.length()) ++p; // skip closing quote
}
else if (c=='/') // skip C Comment
{
...
...
src/pycode.l
View file @
0c751ba9
...
...
@@ -402,7 +402,7 @@ static void codify(const char* text)
static void endCodeLine()
{
if (g_currentFontClass) { g_code->endFontClass(); }
endFontClass();
g_code->endCodeLine();
}
...
...
src/pyscanner.l
View file @
0c751ba9
...
...
@@ -304,12 +304,13 @@ static void handleCommentBlock(const QCString &doc,bool brief)
int position = 0;
bool needsEntry;
int lineNr = brief ? current->briefLine : current->docLine;
while (parseCommentBlock(
g_thisParser,
(docBlockInBody && previous) ? previous : current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
lineNr,
docBlockInBody ? FALSE : brief,
docBlockJavaStyle, // javadoc style // or FALSE,
docBlockInBody,
...
...
src/qhp.cpp
View file @
0c751ba9
...
...
@@ -18,6 +18,9 @@
#include "qhpxmlwriter.h"
#include "message.h"
#include "config.h"
#include "memberdef.h"
#include "groupdef.h"
#include "filedef.h"
#include <qstringlist.h>
#include <string.h>
...
...
@@ -132,7 +135,7 @@ void Qhp::finalize()
m_toc
.
close
(
"toc"
);
m_doc
.
insert
(
m_toc
);
// Finish index
// Finish index
m_index
.
close
(
"keywords"
);
m_doc
.
insert
(
m_index
);
...
...
@@ -184,65 +187,90 @@ void Qhp::addContentsItem(bool /*isDir*/, const char * name,
}
}
void
Qhp
::
addIndexItem
(
const
char
*
level1
,
const
char
*
level2
,
const
char
*
contRef
,
const
char
*
/*memRef*/
,
const
char
*
anchor
,
const
MemberDef
*
/*md*/
)
void
Qhp
::
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anc
,
const
char
*
word
)
{
QCString
ref
;
if
((
m_prevIdName
!=
level1
)
||
(
m_prevIdRef
!=
contRef
))
{
m_prevIdName
=
level1
;
m_prevIdRef
=
contRef
;
(
void
)
anc
;
(
void
)
word
;
ref
=
makeFileName
(
contRef
);
if
(
md
)
// member
{
static
bool
separateMemberPages
=
Config_getBool
(
"SEPARATE_MEMBER_PAGES"
);
if
(
context
==
0
)
// global member
{
if
(
md
->
getGroupDef
())
context
=
md
->
getGroupDef
();
else
if
(
md
->
getFileDef
())
context
=
md
->
getFileDef
();
}
if
(
context
==
0
)
return
;
// should not happen
QCString
cfname
=
md
->
getOutputFileBase
();
QCString
cfiname
=
context
->
getOutputFileBase
();
QCString
level1
=
context
->
name
();
QCString
level2
=
word
?
QCString
(
word
)
:
md
->
name
();
QCString
contRef
=
separateMemberPages
?
cfname
:
cfiname
;
QCString
anchor
=
anc
;
QCString
ref
;
// <keyword name="foo" id="MyApplication::foo" ref="doc.html#foo"/>
ref
=
makeRef
(
contRef
,
anchor
);
QCString
id
=
level1
+
"::"
+
level2
;
const
char
*
attributes
[]
=
{
"name"
,
level1
,
{
"name"
,
level2
,
"id"
,
id
,
"ref"
,
ref
,
0
};
m_index
.
openClose
(
"keyword"
,
attributes
);
}
else
if
(
context
)
// container
{
// <keyword name="Foo" id="Foo" ref="doc.html"/>
QCString
contRef
=
context
->
getOutputFileBase
();
QCString
level1
=
word
?
QCString
(
word
)
:
context
->
name
();
QCString
ref
;
if
(
anc
)
{
ref
=
makeRef
(
contRef
,
anc
);
}
else
{
ref
=
makeFileName
(
contRef
);
}
const
char
*
attributes
[]
=
{
"name"
,
level1
,
"id"
,
level1
,
"ref"
,
ref
,
0
};
m_index
.
openClose
(
"keyword"
,
attributes
);
}
/*
<keyword name="foo" id="MyApplication::foo" ref="doc.html#foo"/>
*/
ref
=
makeRef
(
contRef
,
anchor
);
QCString
id
(
level1
);
id
+=
"::"
;
id
+=
level2
;
const
char
*
attributes
[]
=
{
"name"
,
level2
,
"id"
,
id
,
"ref"
,
ref
,
0
};
m_index
.
openClose
(
"keyword"
,
attributes
);
}
void
Qhp
::
addIndexFile
(
const
char
*
name
)
void
Qhp
::
addIndexFile
(
const
char
*
name
)
{
addFile
(
name
);
}
/*static*/
QCString
Qhp
::
getQhpFileName
()
QCString
Qhp
::
getQhpFileName
()
{
return
"index.qhp"
;
}
/*static*/
QCString
Qhp
::
getFullProjectName
()
QCString
Qhp
::
getFullProjectName
()
{
QCString
const
projectName
=
Config_getString
(
"PROJECT_NAME"
);
QCString
const
versionText
=
Config_getString
(
"PROJECT_NUMBER"
);
QCString
projectName
=
Config_getString
(
"PROJECT_NAME"
);
QCString
versionText
=
Config_getString
(
"PROJECT_NUMBER"
);
if
(
projectName
.
isEmpty
())
projectName
=
"Root"
;
return
projectName
+
(
versionText
.
isEmpty
()
?
QCString
(
""
)
:
QCString
(
" "
)
+
versionText
);
}
void
Qhp
::
handlePrevSection
()
void
Qhp
::
handlePrevSection
()
{
/*
<toc>
...
...
src/qhp.h
View file @
0c751ba9
...
...
@@ -33,9 +33,11 @@ class Qhp : public IndexIntf
void
decContentsDepth
();
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 addIndexItem(const char * level1, const char * level2,
// const char * contRef, const char * memRef,
// const char * anchor, const MemberDef * md);
void
addIndexItem
(
Definition
*
context
,
MemberDef
*
md
,
const
char
*
anchor
,
const
char
*
word
);
void
addIndexFile
(
const
char
*
name
);
void
addImageFile
(
const
char
*
name
);
void
addStyleSheetFile
(
const
char
*
name
);
...
...
@@ -62,8 +64,8 @@ class Qhp : public IndexIntf
int
m_prevSectionLevel
;
int
m_sectionLevel
;
QCString
m_prevIdName
;
QCString
m_prevIdRef
;
//
QCString m_prevIdName;
//
QCString m_prevIdRef;
};
#endif // DOXYGEN_QHP_H
...
...
src/rtfgen.cpp
View file @
0c751ba9
...
...
@@ -39,8 +39,8 @@
#include "dirdef.h"
#include "vhdldocgen.h"
#define DBG_RTF(x) x;
//
#define DBG_RTF(x)
//
#define DBG_RTF(x) x;
#define DBG_RTF(x)
static
QCString
dateToRTFDateString
()
{
...
...
src/scanner.l
View file @
0c751ba9
...
...
@@ -772,6 +772,10 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<FindMembersPHP>"<?"("php"?) { // PHP code start
BEGIN( FindMembers );
}
<FindMembersPHP>"<script"{BN}+"language"{BN}*"="{BN}*['"]?"php"['"]?{BN}*">" { // PHP code start
lineCount() ;
BEGIN( FindMembers );
}
<FindMembersPHP>[^\n<]+ { // Non-PHP code text, ignore
}
<FindMembersPHP>\n { // Non-PHP code text, ignore
...
...
@@ -779,7 +783,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
<FindMembersPHP>. { // Non-PHP code text, ignore
}
<FindMembers>"?>"
{ // PHP code end
<FindMembers>"?>"
|"</script>"
{ // PHP code end
if (insidePHP)
BEGIN( FindMembersPHP );
else
...
...
@@ -5368,12 +5372,13 @@ static void handleCommentBlock(const QCString &doc,bool brief)
bool needsEntry=FALSE;
if (docBlockInBody && hideInBodyDocs) return;
//printf("parseCommentBlock [%s]\n",doc.data());
int lineNr = brief ? current->briefLine : current->docLine; // line of block start
while (parseCommentBlock(
g_thisParser,
docBlockInBody && previous ? previous : current,
doc, // text
yyFileName, // file
brief ? current->briefLine : current->docLine,
// line of block start
lineNr,
// line of block start
docBlockInBody ? FALSE : brief,
docBlockInBody ? FALSE : docBlockAutoBrief,
docBlockInBody,
...
...
src/search.js
View file @
0c751ba9
...
...
@@ -238,10 +238,10 @@ function SearchBox(name, resultsPath, inFrame, label)
if
(
child
.
className
==
'SelectItem'
)
{
var
node
=
child
.
firstChild
;
if
(
j
==
id
)
{
if
(
j
==
id
)
{
node
.
innerHTML
=
'•'
;
}
}
else
{
node
.
innerHTML
=
' '
;
...
...
@@ -324,7 +324,7 @@ function SearchBox(name, resultsPath, inFrame, label)
var
resultsPageWithSearch
;
var
hasResultsPage
;
if
(
indexSectionsWithContent
[
this
.
searchIndex
].
charAt
(
code
-
32
)
==
'1'
)
if
(
indexSectionsWithContent
[
this
.
searchIndex
].
charAt
(
code
)
==
'1'
)
{
resultsPage
=
this
.
resultsPath
+
'/'
+
indexSectionNames
[
this
.
searchIndex
]
+
'_'
+
hexCode
+
'.html'
;
resultsPageWithSearch
=
resultsPage
+
'?'
+
escape
(
searchValue
);
...
...
@@ -453,20 +453,20 @@ function SearchResults(name)
if
(
element
)
{
if
(
element
.
style
.
display
==
'block'
)
{
element
.
style
.
display
=
'none'
;
{
element
.
style
.
display
=
'none'
;
}
else
{
element
.
style
.
display
=
'block'
;
{
element
.
style
.
display
=
'block'
;
}
}
}
// Searches for the passed string. If there is no parameter,
// Searches for the passed string. If there is no parameter,
// it takes it from the URL query.
//
// Always returns true, since other documents may try to call it
// Always returns true, since other documents may try to call it
// and that may or may not be possible.
this
.
Search
=
function
(
search
)
{
...
...
@@ -501,20 +501,20 @@ function SearchResults(name)
matches
++
;
}
else
{
row
.
style
.
display
=
'none'
;
{
row
.
style
.
display
=
'none'
;
}
}
i
++
;
}
document
.
getElementById
(
"Searching"
).
style
.
display
=
'none'
;
if
(
matches
==
0
)
// no results
{
document
.
getElementById
(
"NoMatches"
).
style
.
display
=
'block'
;
{
document
.
getElementById
(
"NoMatches"
).
style
.
display
=
'block'
;
}
else
// at least one result
{
document
.
getElementById
(
"NoMatches"
).
style
.
display
=
'none'
;
{
document
.
getElementById
(
"NoMatches"
).
style
.
display
=
'none'
;
}
this
.
lastMatchCount
=
matches
;
return
true
;
...
...
@@ -606,9 +606,9 @@ function SearchResults(name)
while
(
1
)
// search for last child
{
tmpElem
=
document
.
getElementById
(
'Item'
+
newIndex
+
'_c'
+
n
);
if
(
tmpElem
)
if
(
tmpElem
)
{
focusItem
=
tmpElem
;
focusItem
=
tmpElem
;
}
else
// found it!
{
...
...
src/search_js.h
View file @
0c751ba9
...
...
@@ -238,10 +238,10 @@
" if (child.className=='SelectItem')
\n
"
" {
\n
"
" var node = child.firstChild;
\n
"
"
if (j==id)
\n
"
"
{
\n
"
"
if (j==id)
\n
"
"
{
\n
"
" node.innerHTML='•';
\n
"
" }
\n
"
" }
\n
"
" else
\n
"
" {
\n
"
" node.innerHTML=' ';
\n
"
...
...
@@ -324,7 +324,7 @@
" var resultsPageWithSearch;
\n
"
" var hasResultsPage;
\n
"
"
\n
"
" if (indexSectionsWithContent[this.searchIndex].charAt(code
-32
) == '1')
\n
"
" if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1')
\n
"
" {
\n
"
" resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
\n
"
" resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
\n
"
...
...
@@ -453,20 +453,20 @@
" if (element)
\n
"
" {
\n
"
" if (element.style.display == 'block')
\n
"
" {
\n
"
" element.style.display = 'none';
\n
"
" {
\n
"
" element.style.display = 'none';
\n
"
" }
\n
"
" else
\n
"
" {
\n
"
" element.style.display = 'block';
\n
"
" {
\n
"
" element.style.display = 'block';
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
"
\n
"
" // Searches for the passed string. If there is no parameter,
\n
"
" // Searches for the passed string. If there is no parameter,
\n
"
" // it takes it from the URL query.
\n
"
" //
\n
"
" // Always returns true, since other documents may try to call it
\n
"
" // Always returns true, since other documents may try to call it
\n
"
" // and that may or may not be possible.
\n
"
" this.Search = function(search)
\n
"
" {
\n
"
...
...
@@ -501,20 +501,20 @@
" matches++;
\n
"
" }
\n
"
" else
\n
"
" {
\n
"
" row.style.display = 'none';
\n
"
" {
\n
"
" row.style.display = 'none';
\n
"
" }
\n
"
" }
\n
"
" i++;
\n
"
" }
\n
"
" document.getElementById(
\"
Searching
\"
).style.display='none';
\n
"
" if (matches == 0) // no results
\n
"
" {
\n
"
" document.getElementById(
\"
NoMatches
\"
).style.display='block';
\n
"
" {
\n
"
" document.getElementById(
\"
NoMatches
\"
).style.display='block';
\n
"
" }
\n
"
" else // at least one result
\n
"
" {
\n
"
" document.getElementById(
\"
NoMatches
\"
).style.display='none';
\n
"
" {
\n
"
" document.getElementById(
\"
NoMatches
\"
).style.display='none';
\n
"
" }
\n
"
" this.lastMatchCount = matches;
\n
"
" return true;
\n
"
...
...
@@ -606,9 +606,9 @@
" while (1) // search for last child
\n
"
" {
\n
"
" tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
\n
"
" if (tmpElem)
\n
"
" if (tmpElem)
\n
"
" {
\n
"
" focusItem = tmpElem;
\n
"
" focusItem = tmpElem;
\n
"
" }
\n
"
" else // found it!
\n
"
" {
\n
"
...
...
src/translator_fr.h
View file @
0c751ba9
This diff is collapsed.
Click to expand it.
src/util.cpp
View file @
0c751ba9
...
...
@@ -3136,13 +3136,10 @@ static QCString getCanonicalTypeForIdentifier(
//printf(" mtype=%s\n",mType?mType->name().data():"<none>");
if
(
cd
&&
cd
==
d
)
{
if
(
tSpec
)
*
tSpec
=
""
;
return
""
;
}
else
if
(
cd
)
// resolves to a known class type
if
(
cd
)
// resolves to a known class type
{
if
(
cd
==
d
&&
tSpec
)
*
tSpec
=
""
;
if
(
mType
&&
mType
->
isTypedef
())
// but via a typedef
{
result
=
resolvedType
;
...
...
@@ -3248,7 +3245,8 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,QCString type)
{
canType
+=
ct
;
}
//printf(" word=%s templSpec=%s canType=%s\n",word.data(),templSpec.data(),canType.data());
//printf(" word=%s templSpec=%s canType=%s ct=%s\n",
// word.data(),templSpec.data(),canType.data(),ct.data());
if
(
!
templSpec
.
isEmpty
())
// if we didn't use up the templSpec already
// (i.e. type is not a template specialization)
// then resolve any identifiers inside.
...
...
@@ -4095,16 +4093,14 @@ static bool getScopeDefs(const char *docScope,const char *scope,
return
FALSE
;
}
//static bool isLowerCase(QCString &s)
//{
// char *p=s.data();
// if (p==0) return TRUE;
// int c;
// while ((c=*p++)) if (!islower(c)) return FALSE;
// return TRUE;
//}
static
bool
isLowerCase
(
QCString
&
s
)
{
char
*
p
=
s
.
data
();
if
(
p
==
0
)
return
TRUE
;
int
c
;
while
((
c
=*
p
++
))
if
(
!
islower
(
c
))
return
FALSE
;
return
TRUE
;
}
/*! Returns an object to reference to given its name and context
* @post return value TRUE implies *resContext!=0 or *resMember!=0
...
...
@@ -4136,10 +4132,12 @@ bool resolveRef(/* in */ const char *scName,
ClassDef
*
cd
=
0
;
NamespaceDef
*
nd
=
0
;
//if (!inSeeBlock && scopePos==-1 && isLowerCase(tsName))
//{ // link to lower case only name => do not try to autolink
// return FALSE;
//}
// the following if() was commented out for releases in the range
// 1.5.2 to 1.6.1, but has been restored as a result of bug report 594787.
if
(
!
inSeeBlock
&&
scopePos
==-
1
&&
isLowerCase
(
tsName
))
{
// link to lower case only name => do not try to autolink
return
FALSE
;
}
//printf("scName=%s fullName=%s\n",scName,fullName.data());
...
...
src/vhdlcode.l
View file @
0c751ba9
...
...
@@ -237,9 +237,10 @@ static void startCodeLine()
}
}
static void endFontClass();
static void endCodeLine()
{
if (g_currentFontClass) { g_code->endFontClass(); }
endFontClass();
g_code->endCodeLine();
}
...
...
src/vhdlscanner.l
View file @
0c751ba9
...
...
@@ -1704,6 +1704,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
int position=0;
bool needsEntry=FALSE;
Protection protection=Public;
int lineNr = iDocLine;
if (brief)
current->briefLine = iDocLine;
else
...
...
@@ -1715,7 +1716,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
current,
doc, // text
yyFileName, // file
iDocLine,
// line of block start
lineNr,
// line of block start
brief,
docBlockAutoBrief,
FALSE,
...
...
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