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
0b087b99
Commit
0b087b99
authored
May 06, 2007
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.5.2-20070506
parent
80f45b62
Changes
35
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
1023 additions
and
585 deletions
+1023
-585
INSTALL
INSTALL
+2
-2
README
README
+2
-2
doxyapp.cpp
addon/doxyapp/doxyapp.cpp
+0
-1
configure
configure
+1
-1
autolink.doc
doc/autolink.doc
+3
-3
commands.doc
doc/commands.doc
+9
-0
config.doc
doc/config.doc
+25
-2
docblocks.doc
doc/docblocks.doc
+4
-0
language.doc
doc/language.doc
+1
-1
translator.py
doc/translator.py
+25
-9
translator_report.txt
doc/translator_report.txt
+51
-9
classdef.cpp
src/classdef.cpp
+1
-0
commentcnv.l
src/commentcnv.l
+2
-2
commentscan.l
src/commentscan.l
+5
-5
config.l
src/config.l
+14
-5
docparser.cpp
src/docparser.cpp
+35
-6
docparser.h
src/docparser.h
+1
-1
dot.cpp
src/dot.cpp
+19
-1
doxygen.cpp
src/doxygen.cpp
+10
-8
doxygen.h
src/doxygen.h
+30
-0
doxygen.pro.in
src/doxygen.pro.in
+3
-3
entry.cpp
src/entry.cpp
+147
-139
entry.h
src/entry.h
+3
-0
language.cpp
src/language.cpp
+1
-1
marshal.cpp
src/marshal.cpp
+139
-1
marshal.h
src/marshal.h
+48
-0
memberdef.cpp
src/memberdef.cpp
+5
-2
msc.cpp
src/msc.cpp
+1
-1
perlmodgen.cpp
src/perlmodgen.cpp
+21
-12
portable.cpp
src/portable.cpp
+3
-3
pre.l
src/pre.l
+2
-1
pyscanner.l
src/pyscanner.l
+12
-1
scanner.l
src/scanner.l
+60
-15
translator_cz.h
src/translator_cz.h
+332
-344
util.cpp
src/util.cpp
+6
-4
No files found.
INSTALL
View file @
0b087b99
DOXYGEN Version 1.5.2
DOXYGEN Version 1.5.2
-20070506
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (0
4 April
2007)
Dimitri van Heesch (0
6 May
2007)
README
View file @
0b087b99
DOXYGEN Version 1.5.2
DOXYGEN Version 1.5.2
_20070506
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) (0
4 April
2007)
Dimitri van Heesch (dimitri@stack.nl) (0
6 May
2007)
addon/doxyapp/doxyapp.cpp
View file @
0b087b99
...
...
@@ -25,7 +25,6 @@
* show some information about it.
*/
#include </usr/include/unistd.h> // ugly hack to get the right unistd.h (doxygen has one too)
#include <stdlib.h>
#include "doxygen.h"
#include "outputgen.h"
...
...
configure
View file @
0b087b99
...
...
@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision
=
2
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn
=
NO
doxygen_version_mmn
=
20070506
bin_dirs
=
`
echo
$PATH
|
sed
-e
"s/:/ /g"
`
...
...
doc/autolink.doc
View file @
0b087b99
...
...
@@ -84,10 +84,10 @@
For non overloaded members the argument list may be omitted.
If a function is overloaded and no matching argument list is specified
(i.e. pattern 2 or
5
is used), a link will be created to the
(i.e. pattern 2 or
6
is used), a link will be created to the
documentation of one of the overloaded members.
For member functions the class scope (as used in patterns 4 to
6
) may
For member functions the class scope (as used in patterns 4 to
7
) may
be omitted, if:
<ol>
<li>The pattern points to a documented member that belongs to the same class
...
...
@@ -101,7 +101,7 @@
All of these entities can be linked to in the same way as described in the
previous section. For sake of clarity it is advised to only use
patterns 3 and
6
in this case.
patterns 3 and
7
in this case.
\par Example:
\verbinclude autolink.cpp
...
...
doc/commands.doc
View file @
0b087b99
...
...
@@ -58,6 +58,7 @@ documentation:
\refitem cmddef \\def
\refitem cmddefgroup \\defgroup
\refitem cmddeprecated \\deprecated
\refitem cmddetails \\details
\refitem cmddir \\dir
\refitem cmddontinclude \\dontinclude
\refitem cmddot \\dot
...
...
@@ -863,6 +864,14 @@ is empty, \c TEST, \c DEV, or \c DEV \c TEST.
a deprecated entity. Can be used to describe alternatives,
expected life span, etc.
<hr>
\section cmddetails \\details {detailed decription}
\addindex \\details
Just like \ref cmdbrief "\\brief" starts a brief description, \\details
starts the detailed description. You can also start a new paragraph (blank line)
then the \\details command is not needed.
<hr>
\section cmdelse \\else
...
...
doc/config.doc
View file @
0b087b99
...
...
@@ -85,6 +85,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_dot_path
DOT_PATH
\
refitem
cfg_dot_transparent
DOT_TRANSPARENT
\
refitem
cfg_dotfile_dirs
DOTFILE_DIRS
\
refitem
cfg_doxyfile_encoding
DOXYFILE_ENCODING
\
refitem
cfg_enable_preprocessing
ENABLE_PREPROCESSING
\
refitem
cfg_enum_values_per_line
ENUM_VALUES_PER_LINE
\
refitem
cfg_enabled_sections
ENABLED_SECTIONS
...
...
@@ -178,6 +179,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_predefined
PREDEFINED
\
refitem
cfg_project_name
PROJECT_NAME
\
refitem
cfg_project_number
PROJECT_NUMBER
\
refitem
cfg_qt_autobrief
QT_AUTOBRIEF
\
refitem
cfg_quiet
QUIET
\
refitem
cfg_recursive
RECURSIVE
\
refitem
cfg_referenced_by_relation
REFERENCED_BY_RELATION
...
...
@@ -226,9 +228,18 @@ followed by the descriptions of the tags grouped by category.
\
endsecreflist
\
section
config_project
Project
related
options
\
anchor
cfg_
project_name
\
anchor
cfg_
doxyfile_encoding
<
dl
>
<
dt
>\
c
DOXYFILE_ENCODING
<
dd
>
\
addindex
DOXYFILE_ENCODING
This
tag
specifies
the
encoding
used
for
all
characters
in
the
config
file
that
follow
.
The
default
is
UTF
-
8
which
is
also
the
encoding
used
for
all
text
before
the
first
occurrence
of
this
tag
.
Doxygen
uses
libiconv
(
or
the
iconv
built
into
libc
)
for
the
transcoding
.
See
http
://
www
.
gnu
.
org
/
software
/
libiconv
for
the
list
of
possible
encodings
.
\
anchor
cfg_project_name
<
dt
>\
c
PROJECT_NAME
<
dd
>
\
addindex
PROJECT_NAME
The
\
c
PROJECT_NAME
tag
is
a
single
word
(
or
a
sequence
of
words
...
...
@@ -382,7 +393,17 @@ followed by the descriptions of the tags grouped by category.
If the \c JAVADOC_AUTOBRIEF is set to \c YES then doxygen
will interpret the first line (until the first dot) of a JavaDoc-style
comment as the brief description. If set to NO (the default), the
Javadoc-style will behave just like the Qt-style comments.
Javadoc-style will behave just like regular Qt-style comments
(thus requiring an explicit \@brief command for a brief description.)
\anchor cfg_qt_autobrief
<dt>\c QT_AUTOBRIEF <dd>
\addindex QT_AUTOBRIEF
If the \c QT_AUTOBRIEF is set to \c YES then doxygen
will interpret the first line (until the first dot) of a Qt-style
comment as the brief description. If set to NO (the default), the
Qt-style will behave just like regular Qt-style comments (thus
requiring an explicit \\brief command for a brief description.)
\anchor cfg_builtin_stl_support
<dt>\c BUILTIN_STL_SUPPORT <dd>
...
...
@@ -753,6 +774,8 @@ function's detailed documentation block.
If this tag is empty the current directory is searched.
\anchor cfg_input_encoding
<dt>\c INPUT_ENCODING <dd>
\addindex INPUT_ENCODING
This tag can be used to specify the character encoding of the source files that
doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding.
...
...
doc/docblocks.doc
View file @
0b087b99
...
...
@@ -209,6 +209,10 @@ JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES:
for the corresponding HTML documentation that is generated by doxygen.
\endhtmlonly
Similarly, if one wishes the first sentence of a Qt style documentation
block to automatically be treated as a brief description, one may set
\ref cfg_qt_autobrief "QT_AUTOBRIEF" to YES in the configuration file.
Unlike most other documentation systems, doxygen also allows you to put
the documentation of members (including global functions) in front of
the \e definition. This way the documentation can be placed in the source
...
...
doc/language.doc
View file @
0b087b99
...
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
Currently (version 1.5.
1-20070219
), 33 languages
Currently (version 1.5.
2
), 33 languages
are supported (sorted alphabetically):
Afrikaans, Arabic, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...
...
doc/translator.py
View file @
0b087b99
...
...
@@ -48,6 +48,7 @@
2005/02/28 - Slight modification to generate "mailto.txt" auxiliary file.
2005/08/15 - Doxygen's root directory determined primarily from DOXYGEN
environment variable. When not found, then relatively to the script.
2007/03/20 - The "translate me!" searched in comments and reported if found.
"""
from
__future__
import
generators
...
...
@@ -156,17 +157,20 @@ class Transl:
# Initialize the other collected information.
self
.
classId
=
None
self
.
baseClassId
=
None
self
.
readableStatus
=
None
# 'up-to-date', '1.2.3', '1.3', etc.
self
.
status
=
None
# '', '1.2.03', '1.3.00', etc.
self
.
lang
=
None
# like 'Brasilian'
self
.
langReadable
=
None
# like 'Brasilian Portuguese'
self
.
note
=
None
# like 'should be cleaned up'
self
.
prototypeDic
=
{}
# uniPrototype -> prototype
self
.
obsoleteMethods
=
None
# list of prototypes to be removed
self
.
missingMethods
=
None
# list of prototypes to be implemented
self
.
readableStatus
=
None
# 'up-to-date', '1.2.3', '1.3', etc.
self
.
status
=
None
# '', '1.2.03', '1.3.00', etc.
self
.
lang
=
None
# like 'Brasilian'
self
.
langReadable
=
None
# like 'Brasilian Portuguese'
self
.
note
=
None
# like 'should be cleaned up'
self
.
prototypeDic
=
{}
# uniPrototype -> prototype
self
.
translateMeText
=
'translate me!'
self
.
translateMeFlag
=
False
# comments with "translate me!" found
self
.
obsoleteMethods
=
None
# list of prototypes to be removed
self
.
missingMethods
=
None
# list of prototypes to be implemented
self
.
implementedMethods
=
None
# list of implemented required methods
self
.
adaptMinClass
=
None
# The newest adapter class that can be used
self
.
adaptMinClass
=
None
# The newest adapter class that can be used
def
__tokenGenerator
(
self
):
"""Generator that reads the file and yields tokens as 4-tuples.
...
...
@@ -265,6 +269,12 @@ class Transl:
sys
.
stderr
.
write
(
msg
)
yield
(
tokenId
,
tokenStr
,
tokenLineNo
)
# If it is a comment that contains the self.translateMeText
# string, set the flag -- the situation will be reported.
if
tokenId
==
'comment'
and
tokenStr
.
find
(
self
.
translateMeText
)
>=
0
:
self
.
translateMeFlag
=
True
tokenId
=
None
tokenStr
=
''
tokenLineNo
=
0
...
...
@@ -1103,11 +1113,17 @@ class Transl:
self
.
adaptMinClass
=
adaptMinClass
self
.
readableStatus
=
adaptMinVersion
# simplified
# If everything seems OK, but the explicit mark self.translateMeText
# in comments was found, something must be translated.
if
not
self
.
note
and
self
.
status
==
''
and
self
.
translateMeFlag
:
self
.
note
=
'The "
%
s" found in a comment.'
%
self
.
translateMeText
# If everything seems OK, but there are obsolete methods, set
# the note to clean-up source. This note will be used only when
# the previous code did not set another note (priority).
if
not
self
.
note
and
self
.
status
==
''
and
self
.
obsoleteMethods
:
self
.
note
=
'Remove the obsolete methods (never used).'
def
report
(
self
,
fout
):
"""Returns the report part for the source as a multiline string.
...
...
doc/translator_report.txt
View file @
0b087b99
(1.5.
1-20070219
)
(1.5.
2
)
Doxygen supports the following 33 languages (sorted alphabetically):
...
...
@@ -17,20 +17,20 @@ alphabetically). This means that they derive from the Translator class
and they implement all 194 of the required methods. Anyway, there
still may be some details listed even for them:
TranslatorBrazilian
TranslatorBrazilian
-- The "translate me!" found in a comment.
TranslatorCatalan
TranslatorChinese
TranslatorCroatian
TranslatorChinese
-- The "translate me!" found in a comment.
TranslatorCroatian
-- The "translate me!" found in a comment.
TranslatorCzech
TranslatorDanish
TranslatorDanish
-- The "translate me!" found in a comment.
TranslatorDutch
TranslatorEnglish
TranslatorFrench
TranslatorGerman
TranslatorGreek --
Remove the obsolete methods (never used)
.
TranslatorItalian
TranslatorGerman
-- The "translate me!" found in a comment.
TranslatorGreek --
The "translate me!" found in a comment
.
TranslatorItalian
-- The "translate me!" found in a comment.
TranslatorJapanese -- Remove the obsolete methods (never used).
TranslatorRussian
TranslatorRussian
-- The "translate me!" found in a comment.
TranslatorSpanish
----------------------------------------------------------------------
...
...
@@ -105,6 +105,18 @@ TranslatorArabic (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable()
TranslatorBrazilian (Translator)
-------------------
Implements 194 of the required methods.
TranslatorChinese (Translator)
-----------------
Implements 194 of the required methods.
TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement
----------------------------
...
...
@@ -127,6 +139,18 @@ TranslatorChinesetraditional (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable()
TranslatorCroatian (Translator)
------------------
Implements 194 of the required methods.
TranslatorDanish (Translator)
----------------
Implements 194 of the required methods.
TranslatorFinnish (TranslatorEnglish) 96 methods to implement
-----------------
...
...
@@ -243,6 +267,12 @@ TranslatorFinnish (TranslatorEnglish) 96 methods to implement
QCString trNoDescriptionAvailable()
TranslatorGerman (Translator)
----------------
Implements 194 of the required methods.
TranslatorGreek (Translator)
---------------
...
...
@@ -294,6 +324,12 @@ TranslatorIndonesian (TranslatorAdapter_1_4_6) 1 method to implement
virtual QCString trNoDescriptionAvailable()
TranslatorItalian (Translator)
-----------------
Implements 194 of the required methods.
TranslatorJapanese (Translator)
------------------
...
...
@@ -485,6 +521,12 @@ TranslatorRomanian (TranslatorAdapter_1_4_1) 2 methods to implement
virtual QCString trNoDescriptionAvailable()
TranslatorRussian (Translator)
-----------------
Implements 194 of the required methods.
TranslatorSerbian (TranslatorAdapter_1_4_1) 2 methods to implement
-----------------
...
...
src/classdef.cpp
View file @
0b087b99
...
...
@@ -2849,6 +2849,7 @@ void ClassDef::addMembersToTemplateInstance(ClassDef *cd,const char *templSpec)
imd
->
setBriefDescription
(
md
->
briefDescription
(),
md
->
briefFile
(),
md
->
briefLine
());
imd
->
setInbodyDocumentation
(
md
->
inbodyDocumentation
(),
md
->
inbodyFile
(),
md
->
inbodyLine
());
imd
->
setMemberSpecifiers
(
md
->
getMemberSpecifiers
());
imd
->
setMemberGroupId
(
md
->
getMemberGroupId
());
insertMember
(
imd
);
//printf("Adding member=%s %s%s to class %s templSpec %s\n",
// imd->typeString(),imd->name().data(),imd->argsString(),
...
...
src/commentcnv.l
View file @
0b087b99
...
...
@@ -164,7 +164,7 @@ static void endCondSection()
}
}
/** remove and executes
\\cond and \\
endcond commands in \a s */
/** remove and executes
cond and
endcond commands in \a s */
static QCString handleCondCmdInAliases(const QCString &s)
{
QCString result;
...
...
@@ -566,7 +566,7 @@ void replaceComment(int offset)
* -# It converts multi-line C++ style comment blocks (that are aligned)
* to C style comment blocks (if MULTILINE_CPP_IS_BRIEF is set to NO).
* -# It replaces aliases with their definition (see ALIASES)
* -# It handles conditional sections (
\cond...\
endcond blocks)
* -# It handles conditional sections (
cond...
endcond blocks)
*/
void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName)
{
...
...
src/commentscan.l
View file @
0b087b99
...
...
@@ -2281,15 +2281,15 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
/* in */ const QCString &fileName,
/* in */ int lineNr,
/* in */ bool isBrief,
/* in */ bool is
JavaDocStyle
,
/* in */ bool is
AutoBriefOn
,
/* in */ bool isInbody,
/* in,out */ Protection &prot,
/* in,out */ int &position,
/* out */ bool &newEntryNeeded
)
{
//printf("parseCommentBlock() isBrief=%d is
JavaDocStyle
=%d lineNr=%d\n",
// isBrief,is
JavaDocStyle
,lineNr);
//printf("parseCommentBlock() isBrief=%d is
AutoBriefOn
=%d lineNr=%d\n",
// isBrief,is
AutoBriefOn
,lineNr);
initParser();
guards.setAutoDelete(TRUE);
...
...
@@ -2310,8 +2310,8 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
parseMore = FALSE;
inBody = isInbody;
outputXRef.resize(0);
setOutput( isBrief || is
JavaDocStyle
? OutputBrief : OutputDoc );
briefEndsAtDot = is
JavaDocStyle
;
setOutput( isBrief || is
AutoBriefOn
? OutputBrief : OutputDoc );
briefEndsAtDot = is
AutoBriefOn
;
if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
{
...
...
src/config.l
View file @
0b087b99
...
...
@@ -502,7 +502,6 @@ static void readIncludeFile(const char *incName)
<Start>[a-z_A-Z][a-z_A-Z0-9]*[ \t]*"=" { QCString cmd=yytext;
cmd=cmd.left(cmd.length()-1).stripWhiteSpace();
ConfigOption *option = config->get(cmd);
option->setEncoding(encoding);
if (option==0) // oops not known
{
config_err("Warning: ignoring unsupported tag `%s' at line %d, file %s\n",
...
...
@@ -511,6 +510,7 @@ static void readIncludeFile(const char *incName)
}
else // known tag
{
option->setEncoding(encoding);
switch(option->kind())
{
case ConfigOption::O_Info:
...
...
@@ -1574,8 +1574,17 @@ void Config::create()
"If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen \n"
"will interpret the first line (until the first dot) of a JavaDoc-style \n"
"comment as the brief description. If set to NO, the JavaDoc \n"
"comments will behave just like the Qt-style comments (thus requiring an \n"
"explicit @brief command for a brief description. \n",
"comments will behave just like regular Qt-style comments \n"
"(thus requiring an explicit @brief command for a brief description.) \n",
FALSE
);
cb = addBool(
"QT_AUTOBRIEF",
"If the QT_AUTOBRIEF tag is set to YES then Doxygen will \n"
"interpret the first line (until the first dot) of a Qt-style \n"
"comment as the brief description. If set to NO, the comments \n"
"will behave just like regular Qt-style comments (thus requiring \n"
"an explicit \\brief command for a brief description.) \n",
FALSE
);
cb = addBool(
...
...
@@ -2821,7 +2830,7 @@ void Config::create()
cb->addDependency("HAVE_DOT");
cb = addBool(
"CALL_GRAPH",
"If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will \n"
"If the CALL_GRAPH
, SOURCE_BROWSER
and HAVE_DOT tags are set to YES then doxygen will \n"
"generate a call dependency graph for every global function or class method. \n"
"Note that enabling this option will significantly increase the time of a run. \n"
"So in most cases it will be better to enable call graphs for selected \n"
...
...
@@ -2831,7 +2840,7 @@ void Config::create()
cb->addDependency("HAVE_DOT");
cb = addBool(
"CALLER_GRAPH",
"If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will \n"
"If the CALLER_GRAPH
, SOURCE_BROWSER
and HAVE_DOT tags are set to YES then doxygen will \n"
"generate a caller dependency graph for every global function or class method. \n"
"Note that enabling this option will significantly increase the time of a run. \n"
"So in most cases it will be better to enable caller graphs for selected \n"
...
...
src/docparser.cpp
View file @
0b087b99
...
...
@@ -1422,7 +1422,7 @@ static void readTextFileByName(const QString &file,QString &text)
FileDef
*
fd
;
if
((
fd
=
findFileDef
(
Doxygen
::
exampleNameDict
,
file
,
ambig
)))
{
text
=
fileToString
(
fd
->
absFilePath
(),
FALSE
);
text
=
fileToString
(
fd
->
absFilePath
(),
Config_getBool
(
"FILTER_SOURCE_FILES"
)
);
}
else
if
(
ambig
)
{
...
...
@@ -2092,6 +2092,8 @@ void DocRef::parse()
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unsupported symbol %s found"
,
g_token
->
name
.
data
());
break
;
case
TK_HTMLTAG
:
break
;
default
:
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unexpected token %s"
,
tokToString
(
tok
));
...
...
@@ -2111,7 +2113,7 @@ void DocRef::parse()
}
handlePendingStyleCommands
(
this
,
m_children
);
DBG
((
"DocRef::parse() end
\n
"
));
DocNode
*
n
=
g_nodeStack
.
pop
();
ASSERT
(
n
==
this
);
}
...
...
@@ -2155,7 +2157,7 @@ DocLink::DocLink(DocNode *parent,const QString &target) :
}
QString
DocLink
::
parse
(
bool
isJavaLink
)
QString
DocLink
::
parse
(
bool
isJavaLink
,
bool
isXmlLink
)
{
QString
result
;
g_nodeStack
.
push
(
this
);
...
...
@@ -2187,6 +2189,13 @@ QString DocLink::parse(bool isJavaLink)
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unsupported symbol %s found"
,
g_token
->
name
.
data
());
break
;
case
TK_HTMLTAG
:
if
(
g_token
->
name
!=
"see"
||
!
isXmlLink
)
{
warn_doc_error
(
g_fileName
,
doctokenizerYYlineno
,
"Warning: Unexpected xml/html command %s found"
,
g_token
->
name
.
data
());
}
goto
endlink
;
case
TK_LNKWORD
:
case
TK_WORD
:
if
(
isJavaLink
)
// special case to detect closing }
...
...
@@ -4847,11 +4856,31 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
// can we expect from Microsoft...)
{
QString
cref
;
//printf("XML_SEE: empty tag=%d\n",g_token->emptyTag);
if
(
findAttribute
(
tagHtmlAttribs
,
"cref"
,
&
cref
))
{
DocRef
*
ref
=
new
DocRef
(
this
,
cref
);
m_children
.
append
(
ref
);
ref
->
parse
();
if
(
g_token
->
emptyTag
)
// <see cref="..."/> style
{
bool
inSeeBlock
=
g_inSeeBlock
;
g_token
->
name
=
cref
;
g_inSeeBlock
=
TRUE
;
handleLinkedWord
(
this
,
m_children
);
g_inSeeBlock
=
inSeeBlock
;
}
else
// <see cref="...">...</see> style
{
//DocRef *ref = new DocRef(this,cref);
//m_children.append(ref);
//ref->parse();
doctokenizerYYsetStatePara
();
DocLink
*
lnk
=
new
DocLink
(
this
,
cref
);
m_children
.
append
(
lnk
);
QString
leftOver
=
lnk
->
parse
(
FALSE
,
TRUE
);
if
(
!
leftOver
.
isEmpty
())
{
m_children
.
append
(
new
DocWord
(
this
,
leftOver
));
}
}
}
else
{
...
...
src/docparser.h
View file @
0b087b99
...
...
@@ -639,7 +639,7 @@ class DocLink : public CompAccept<DocLink>, public DocNode
{
public
:
DocLink
(
DocNode
*
parent
,
const
QString
&
target
);
QString
parse
(
bool
);
QString
parse
(
bool
,
bool
isXmlLink
=
FALSE
);
Kind
kind
()
const
{
return
Kind_Link
;
}
QString
file
()
const
{
return
m_file
;
}
QString
relPath
()
const
{
return
m_relPath
;
}
...
...
src/dot.cpp
View file @
0b087b99
...
...
@@ -694,6 +694,24 @@ static QCString convertLabel(const QCString &l)
return
result
;
}
static
QCString
escapeTooltip
(
const
QCString
&
tooltip
)
{
QCString
result
;
const
char
*
p
=
tooltip
.
data
();
if
(
p
==
0
)
return
result
;
char
c
;
while
((
c
=*
p
++
))
{
switch
(
c
)
{
case
'\\'
:
result
+=
"
\\\\
"
;
break
;
case
'"'
:
result
+=
"
\\\"
"
;
break
;
default
:
result
+=
c
;
break
;
}
}
return
result
;
}
static
void
writeBoxMemberList
(
QTextStream
&
t
,
char
prot
,
MemberList
*
ml
,
ClassDef
*
scope
)
{
if
(
ml
)
...
...
@@ -812,7 +830,7 @@ void DotNode::writeBox(QTextStream &t,
}
if
(
!
m_tooltip
.
isEmpty
())
{
t
<<
",tooltip=
\"
"
<<
m_tooltip
<<
"
\"
"
;
t
<<
",tooltip=
\"
"
<<
escapeTooltip
(
m_tooltip
)
<<
"
\"
"
;
}
}
t
<<
"];"
<<
endl
;
...
...
src/doxygen.cpp
View file @
0b087b99
...
...
@@ -132,6 +132,7 @@ ObjCache *Doxygen::symbolCache = 0;
Store
*
Doxygen
::
symbolStorage
;
QCString
Doxygen
::
objDBFileName
;
QCString
Doxygen
::
entryDBFileName
;
bool
Doxygen
::
gatherDefines
=
TRUE
;
// locally accessible globals
static
QDict
<
EntryNav
>
classEntries
(
1009
);
...
...
@@ -4687,8 +4688,9 @@ static void addMemberDocs(EntryNav *rootNav,
{
//printf("setInitializer\n");
md
->
setInitializer
(
root
->
initializer
);
md
->
setMaxInitLines
(
root
->
initLines
);
}
md
->
setMaxInitLines
(
root
->
initLines
);
if
(
rfd
)
{
...
...
@@ -8178,7 +8180,7 @@ static int transcodeCharacterBuffer(BufStr &srcBuf,int size,
// reads a file into an array and filters out any 0x00 and 0x06 bytes,
// because these are special for the parser.
static
void
copyAndFilterFile
(
const
char
*
fileName
,
BufStr
&
dest
)
void
copyAndFilterFile
(
const
char
*
fileName
,
BufStr
&
dest
)
{
// try to open file
int
size
=
0
;
...
...
@@ -8349,7 +8351,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav)
// The directory is read iff the recusiveFlag is set.
// The contents of all files is append to the input string
static
int
readDir
(
QFileInfo
*
fi
,
int
readDir
(
QFileInfo
*
fi
,
FileNameList
*
fnList
,
FileNameDict
*
fnDict
,
StringDict
*
exclDict
,
...
...
@@ -8441,7 +8443,7 @@ static int readDir(QFileInfo *fi,
// read a file or all files in a directory and append their contents to the
// input string. The names of the files are appended to the `fiList' list.
static
int
readFileOrDirectory
(
const
char
*
s
,
int
readFileOrDirectory
(
const
char
*
s
,
FileNameList
*
fnList
,
FileNameDict
*
fnDict
,
StringDict
*
exclDict
,
...
...
@@ -8450,8 +8452,8 @@ static int readFileOrDirectory(const char *s,
StringList
*
resultList
,
StringDict
*
resultDict
,
bool
recursive
,
bool
errorIfNotExist
=
TRUE
,
QDict
<
void
>
*
killDict
=
0
bool
errorIfNotExist
,
QDict
<
void
>
*
killDict
)
{
//printf("killDict=%p count=%d\n",killDict,killDict->count());
...
...
@@ -8526,7 +8528,7 @@ static int readFileOrDirectory(const char *s,
//----------------------------------------------------------------------------
static
void
readFormulaRepository
()
void
readFormulaRepository
()
{
QFile
f
(
Config_getString
(
"HTML_OUTPUT"
)
+
"/formula.repository"
);
if
(
f
.
open
(
IO_ReadOnly
))
// open repository
...
...
@@ -8641,7 +8643,7 @@ static void escapeAliases()
//----------------------------------------------------------------------------
static
void
readAliases
()
void
readAliases
()
{
// add aliases to a dictionary
Doxygen
::
aliasDict
.
setAutoDelete
(
TRUE
);
...
...
src/doxygen.h
View file @
0b087b99
...
...
@@ -45,6 +45,8 @@ class DirDef;
class
ParserManager
;
class
ObjCache
;
class
Store
;
class
QFileInfo
;
class
BufStr
;
typedef
QList
<
QCString
>
StringList
;
typedef
QDict
<
FileDef
>
FileDict
;
...
...
@@ -123,6 +125,7 @@ class Doxygen
static
Store
*
symbolStorage
;
static
QCString
objDBFileName
;
static
QCString
entryDBFileName
;
static
bool
gatherDefines
;
};
void
initDoxygen
();
...
...
@@ -130,6 +133,33 @@ void readConfiguration(int argc, char **argv);
void
checkConfiguration
();
void
parseInput
();
void
generateOutput
();
void
readAliases
();
void
readFormulaRepository
();
int
readFileOrDirectory
(
const
char
*
s
,
FileNameList
*
fnList
,
FileNameDict
*
fnDict
,
StringDict
*
exclDict
,
QStrList
*
patList
,
QStrList
*
exclPatList
,
StringList
*
resultList
,
StringDict
*
resultDict
,
bool
recursive
,
bool
errorIfNotExist
=
TRUE
,
QDict
<
void
>
*
killDict
=
0
);
int
readDir
(
QFileInfo
*
fi
,
FileNameList
*
fnList
,
FileNameDict
*
fnDict
,
StringDict
*
exclDict
,
QStrList
*
patList
,
QStrList
*
exclPatList
,
StringList
*
resultList
,
StringDict
*
resultDict
,
bool
errorIfNotExist
,
bool
recursive
,
QDict
<
void
>
*
killDict
);
void
copyAndFilterFile
(
const
char
*
fileName
,
BufStr
&
dest
);
#define NEWMATCH
...
...
src/doxygen.pro.in
View file @
0b087b99
...
...
@@ -21,12 +21,12 @@ SOURCES = main.cpp
unix:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32-msvc:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
win32-msvc:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
iconv.lib
win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
win32-borland:LIBS += qtools.lib png.lib md5.lib doxygen.lib doxycfg.lib shell32.lib
iconv.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
win32-g++:LIBS = -L../lib -ldoxygen -ldoxycfg -lqtools -lpng -lmd5
-liconv
win32-g++:TMAKE_CXXFLAGS += -fno-exceptions -fno-rtti
INCLUDEPATH += ../qtools ../libpng ../libmd5 .
#win32-g++:INCLUDEPATH -= ../libpng
...
...
src/entry.cpp
View file @
0b087b99
This diff is collapsed.
Click to expand it.
src/entry.h
View file @
0b087b99
...
...
@@ -28,6 +28,7 @@ class QFile;
class
EntryNav
;
class
FileDef
;
class
FileStorage
;
class
StorageIntf
;
enum
Protection
{
Public
,
Protected
,
Private
,
Package
}
;
enum
Specifier
{
Normal
,
Virtual
,
Pure
}
;
...
...
@@ -302,6 +303,8 @@ class Entry
* at construction time.
*/
void
reset
();
void
marshall
(
StorageIntf
*
);
void
unmarshall
(
StorageIntf
*
);
public
:
...
...
src/language.cpp
View file @
0b087b99
...
...
@@ -166,7 +166,7 @@ bool setTranslator(const char *langName)
#ifdef LANG_CZ
else
if
(
L_EQUAL
(
"czech"
))
{
theTranslator
=
new
Translator
Decoder
(
new
TranslatorCzech
)
;
theTranslator
=
new
Translator
Czech
;
}
#endif
#ifdef LANG_FR
...
...
src/marshal.cpp
View file @
0b087b99
...
...
@@ -10,6 +10,7 @@
#include "groupdef.h"
#include "example.h"
#define HEADER ('D'<<24)+('O'<<16)+('X'<<8)+'!'
void
marshalInt
(
StorageIntf
*
s
,
int
v
)
{
...
...
@@ -349,6 +350,72 @@ void marshalMemberLists(StorageIntf *s,SDict<MemberList> *mls)
}
}
void
marshalEntry
(
StorageIntf
*
s
,
Entry
*
e
)
{
marshalUInt
(
s
,
HEADER
);
marshalQCString
(
s
,
e
->
name
);
marshalQCString
(
s
,
e
->
type
);
marshalInt
(
s
,
e
->
section
);
marshalInt
(
s
,(
int
)
e
->
protection
);
marshalInt
(
s
,(
int
)
e
->
mtype
);
marshalInt
(
s
,
e
->
spec
);
marshalInt
(
s
,
e
->
initLines
);
marshalBool
(
s
,
e
->
stat
);
marshalBool
(
s
,
e
->
explicitExternal
);
marshalBool
(
s
,
e
->
proto
);
marshalBool
(
s
,
e
->
subGrouping
);
marshalBool
(
s
,
e
->
callGraph
);
marshalBool
(
s
,
e
->
callerGraph
);
marshalInt
(
s
,(
int
)
e
->
virt
);
marshalQCString
(
s
,
e
->
args
);
marshalQCString
(
s
,
e
->
bitfields
);
marshalArgumentList
(
s
,
e
->
argList
);
marshalArgumentLists
(
s
,
e
->
tArgLists
);
marshalQGString
(
s
,
e
->
program
);
marshalQGString
(
s
,
e
->
initializer
);
marshalQCString
(
s
,
e
->
includeFile
);
marshalQCString
(
s
,
e
->
includeName
);
marshalQCString
(
s
,
e
->
doc
);
marshalInt
(
s
,
e
->
docLine
);
marshalQCString
(
s
,
e
->
docFile
);
marshalQCString
(
s
,
e
->
brief
);
marshalInt
(
s
,
e
->
briefLine
);
marshalQCString
(
s
,
e
->
briefFile
);
marshalQCString
(
s
,
e
->
inbodyDocs
);
marshalInt
(
s
,
e
->
inbodyLine
);
marshalQCString
(
s
,
e
->
inbodyFile
);
marshalQCString
(
s
,
e
->
relates
);
marshalBool
(
s
,
e
->
relatesDup
);
marshalQCString
(
s
,
e
->
read
);
marshalQCString
(
s
,
e
->
write
);
marshalQCString
(
s
,
e
->
inside
);
marshalQCString
(
s
,
e
->
exception
);
marshalInt
(
s
,
e
->
bodyLine
);
marshalInt
(
s
,
e
->
endBodyLine
);
marshalInt
(
s
,
e
->
mGrpId
);
marshalBaseInfoList
(
s
,
e
->
extends
);
marshalGroupingList
(
s
,
e
->
groups
);
marshalSectionInfoList
(
s
,
e
->
anchors
);
marshalQCString
(
s
,
e
->
fileName
);
marshalInt
(
s
,
e
->
startLine
);
marshalItemInfoList
(
s
,
e
->
sli
);
marshalBool
(
s
,
e
->
objc
);
marshalBool
(
s
,
e
->
hidden
);
marshalInt
(
s
,(
int
)
e
->
groupDocType
);
}
void
marshalEntryTree
(
StorageIntf
*
s
,
Entry
*
e
)
{
marshalEntry
(
s
,
e
);
marshalUInt
(
s
,
e
->
children
()
->
count
());
QListIterator
<
Entry
>
eli
(
*
e
->
children
());
Entry
*
child
;
for
(
eli
.
toFirst
();(
child
=
eli
.
current
());
++
eli
)
{
marshalEntryTree
(
s
,
child
);
}
}
//------------------------------------------------------------------
int
unmarshalInt
(
StorageIntf
*
s
)
...
...
@@ -664,4 +731,75 @@ SDict<MemberList> *unmarshalMemberLists(StorageIntf *s)
return
result
;
}
Entry
*
unmarshalEntry
(
StorageIntf
*
s
)
{
Entry
*
e
=
new
Entry
;
uint
header
=
unmarshalUInt
(
s
);
ASSERT
(
header
==
HEADER
);
e
->
name
=
unmarshalQCString
(
s
);
e
->
type
=
unmarshalQCString
(
s
);
e
->
section
=
unmarshalInt
(
s
);
e
->
protection
=
(
Protection
)
unmarshalInt
(
s
);
e
->
mtype
=
(
MethodTypes
)
unmarshalInt
(
s
);
e
->
spec
=
unmarshalInt
(
s
);
e
->
initLines
=
unmarshalInt
(
s
);
e
->
stat
=
unmarshalBool
(
s
);
e
->
explicitExternal
=
unmarshalBool
(
s
);
e
->
proto
=
unmarshalBool
(
s
);
e
->
subGrouping
=
unmarshalBool
(
s
);
e
->
callGraph
=
unmarshalBool
(
s
);
e
->
callerGraph
=
unmarshalBool
(
s
);
e
->
virt
=
(
Specifier
)
unmarshalInt
(
s
);
e
->
args
=
unmarshalQCString
(
s
);
e
->
bitfields
=
unmarshalQCString
(
s
);
delete
e
->
argList
;
e
->
argList
=
unmarshalArgumentList
(
s
);
e
->
tArgLists
=
unmarshalArgumentLists
(
s
);
e
->
program
=
unmarshalQGString
(
s
);
e
->
initializer
=
unmarshalQGString
(
s
);
e
->
includeFile
=
unmarshalQCString
(
s
);
e
->
includeName
=
unmarshalQCString
(
s
);
e
->
doc
=
unmarshalQCString
(
s
);
e
->
docLine
=
unmarshalInt
(
s
);
e
->
docFile
=
unmarshalQCString
(
s
);
e
->
brief
=
unmarshalQCString
(
s
);
e
->
briefLine
=
unmarshalInt
(
s
);
e
->
briefFile
=
unmarshalQCString
(
s
);
e
->
inbodyDocs
=
unmarshalQCString
(
s
);
e
->
inbodyLine
=
unmarshalInt
(
s
);
e
->
inbodyFile
=
unmarshalQCString
(
s
);
e
->
relates
=
unmarshalQCString
(
s
);
e
->
relatesDup
=
unmarshalBool
(
s
);
e
->
read
=
unmarshalQCString
(
s
);
e
->
write
=
unmarshalQCString
(
s
);
e
->
inside
=
unmarshalQCString
(
s
);
e
->
exception
=
unmarshalQCString
(
s
);
e
->
bodyLine
=
unmarshalInt
(
s
);
e
->
endBodyLine
=
unmarshalInt
(
s
);
e
->
mGrpId
=
unmarshalInt
(
s
);
delete
e
->
extends
;
e
->
extends
=
unmarshalBaseInfoList
(
s
);
delete
e
->
groups
;
e
->
groups
=
unmarshalGroupingList
(
s
);
delete
e
->
anchors
;
e
->
anchors
=
unmarshalSectionInfoList
(
s
);
e
->
fileName
=
unmarshalQCString
(
s
);
e
->
startLine
=
unmarshalInt
(
s
);
e
->
sli
=
unmarshalItemInfoList
(
s
);
e
->
objc
=
unmarshalBool
(
s
);
e
->
hidden
=
unmarshalBool
(
s
);
e
->
groupDocType
=
(
Entry
::
GroupDocType
)
unmarshalInt
(
s
);
return
e
;
}
Entry
*
unmarshalEntryTree
(
StorageIntf
*
s
)
{
Entry
*
e
=
unmarshalEntry
(
s
);
uint
count
=
unmarshalUInt
(
s
);
uint
i
;
for
(
i
=
0
;
i
<
count
;
i
++
)
{
e
->
addSubEntry
(
unmarshalEntryTree
(
s
));
}
return
e
;
}
src/marshal.h
View file @
0b087b99
...
...
@@ -21,6 +21,7 @@ struct DocInfo;
struct
BriefInfo
;
class
MemberList
;
class
ExampleSDict
;
class
Entry
;
#define NULL_LIST 0xffffffff
...
...
@@ -33,6 +34,49 @@ class FileStorage : public QFile, public StorageIntf
int
write
(
const
char
*
buf
,
uint
size
)
{
return
QFile
::
writeBlock
(
buf
,
size
);
}
};
class
StreamStorage
:
public
StorageIntf
{
public
:
StreamStorage
()
{
m_data
=
0
;
m_offset
=
0
;
m_len
=
0
;
}
~
StreamStorage
()
{
delete
m_data
;
}
StreamStorage
(
char
*
data
,
uint
len
)
{
m_data
=
data
;
m_offset
=
0
;
m_len
=
len
;
}
int
read
(
char
*
buf
,
uint
size
)
{
int
bytesLeft
=
QMIN
((
int
)
size
,
m_len
-
m_offset
);
if
(
bytesLeft
>
0
)
memcpy
(
buf
,
m_data
,
bytesLeft
);
m_offset
+=
bytesLeft
;
return
bytesLeft
;
}
int
write
(
const
char
*
buf
,
uint
size
)
{
m_data
=
(
char
*
)
realloc
(
m_data
,
m_offset
+
size
);
memcpy
(
m_data
+
m_offset
,
buf
,
size
);
m_offset
+=
size
;
m_len
+=
size
;
return
size
;
}
void
rewind
()
{
m_offset
=
0
;
}
char
*
data
()
const
{
return
m_data
;
}
int
size
()
{
return
m_len
;
}
private
:
char
*
m_data
;
int
m_offset
;
int
m_len
;
};
//----- marshaling function: datatype -> byte stream --------------------
void
marshalInt
(
StorageIntf
*
s
,
int
v
);
...
...
@@ -56,6 +100,8 @@ void marshalGroupList(StorageIntf *s,GroupList *groupList);
void
marshalMemberList
(
StorageIntf
*
s
,
MemberList
*
ml
);
void
marshalExampleSDict
(
StorageIntf
*
s
,
ExampleSDict
*
ed
);
void
marshalMemberLists
(
StorageIntf
*
s
,
SDict
<
MemberList
>
*
mls
);
void
marshalEntry
(
StorageIntf
*
s
,
Entry
*
e
);
void
marshalEntryTree
(
StorageIntf
*
s
,
Entry
*
e
);
//----- unmarshaling function: byte stream -> datatype ------------------
...
...
@@ -80,5 +126,7 @@ GroupList * unmarshalGroupList(StorageIntf *s);
MemberList
*
unmarshalMemberList
(
StorageIntf
*
s
);
ExampleSDict
*
unmarshalExampleSDict
(
StorageIntf
*
s
);
SDict
<
MemberList
>
*
unmarshalMemberLists
(
StorageIntf
*
s
);
Entry
*
unmarshalEntry
(
StorageIntf
*
s
);
Entry
*
unmarshalEntryTree
(
StorageIntf
*
s
);
#endif
src/memberdef.cpp
View file @
0b087b99
...
...
@@ -3436,8 +3436,11 @@ void MemberDef::setBitfields(const char *s)
void
MemberDef
::
setMaxInitLines
(
int
lines
)
{
makeResident
();
m_impl
->
userInitLines
=
lines
;
if
(
lines
!=-
1
)
{
makeResident
();
m_impl
->
userInitLines
=
lines
;
}
}
void
MemberDef
::
setExplicitExternal
(
bool
b
)
...
...
src/msc.cpp
View file @
0b087b99
...
...
@@ -98,7 +98,7 @@ void writeMscGraphFromFile(const char *inFile,const char *outDir,
// go to the html output directory (i.e. path)
QDir
::
setCurrent
(
outDir
);
//printf("Going to dir %s\n",QDir::currentDirPath().data());
QCString
mscExe
=
/*Config_getString("MSC_PATH")+*/
"mscgen"
;
QCString
mscExe
=
Config_getString
(
"MSC_PATH"
)
+
"mscgen"
+
portable_commandExtension
()
;
QCString
mscArgs
;
QCString
extension
;
if
(
format
==
MSC_BITMAP
)
...
...
src/perlmodgen.cpp
View file @
0b087b99
...
...
@@ -1692,10 +1692,13 @@ void PerlModGenerator::generatePerlModForClass(ClassDef *cd)
addTemplateList
(
cd
,
m_output
);
addListOfAllMembers
(
cd
);
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
cd
,
mg
->
members
(),
"user_defined"
,
mg
->
header
());
if
(
cd
->
getMemberGroupSDict
())
{
MemberGroupSDict
::
Iterator
mgli
(
*
cd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
cd
,
mg
->
members
(),
"user_defined"
,
mg
->
header
());
}
generatePerlModSection
(
cd
,
cd
->
getMemberList
(
MemberList
::
pubTypes
),
"public_typedefs"
);
generatePerlModSection
(
cd
,
cd
->
getMemberList
(
MemberList
::
pubMethods
),
"public_methods"
);
...
...
@@ -1795,10 +1798,13 @@ void PerlModGenerator::generatePerlModForNamespace(NamespaceDef *nd)
m_output
.
closeList
();
}
MemberGroupSDict
::
Iterator
mgli
(
*
nd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
nd
,
mg
->
members
(),
"user-defined"
,
mg
->
header
());
if
(
nd
->
getMemberGroupSDict
())
{
MemberGroupSDict
::
Iterator
mgli
(
*
nd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
nd
,
mg
->
members
(),
"user-defined"
,
mg
->
header
());
}
generatePerlModSection
(
nd
,
nd
->
getMemberList
(
MemberList
::
decDefineMembers
),
"defines"
);
generatePerlModSection
(
nd
,
nd
->
getMemberList
(
MemberList
::
decProtoMembers
),
"prototypes"
);
...
...
@@ -1967,10 +1973,13 @@ void PerlModGenerator::generatePerlModForGroup(GroupDef *gd)
m_output
.
closeList
();
}
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
gd
,
mg
->
members
(),
"user-defined"
,
mg
->
header
());
if
(
gd
->
getMemberGroupSDict
())
{
MemberGroupSDict
::
Iterator
mgli
(
*
gd
->
getMemberGroupSDict
());
MemberGroup
*
mg
;
for
(;(
mg
=
mgli
.
current
());
++
mgli
)
generatePerlModSection
(
gd
,
mg
->
members
(),
"user-defined"
,
mg
->
header
());
}
generatePerlModSection
(
gd
,
gd
->
getMemberList
(
MemberList
::
decDefineMembers
),
"defines"
);
generatePerlModSection
(
gd
,
gd
->
getMemberList
(
MemberList
::
decProtoMembers
),
"prototypes"
);
...
...
src/portable.cpp
View file @
0b087b99
...
...
@@ -373,16 +373,16 @@ void * portable_iconv_open(const char* tocode, const char* fromcode)
size_t
portable_iconv
(
void
*
cd
,
const
char
**
inbuf
,
size_t
*
inbytesleft
,
char
**
outbuf
,
size_t
*
outbytesleft
)
{
#if (
defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION==0x0109
))
#if (
(defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION>=0x0109)) || defined(_OS_SOLARIS_
))
#define CASTNEEDED(x) (x)
#else
#define CASTNEEDED(x) (char **)(x)
#endif
return
iconv
(
cd
,
CASTNEEDED
(
inbuf
),
inbytesleft
,
outbuf
,
outbytesleft
);
return
iconv
(
(
iconv_t
)
cd
,
CASTNEEDED
(
inbuf
),
inbytesleft
,
outbuf
,
outbytesleft
);
}
int
portable_iconv_close
(
void
*
cd
)
{
return
iconv_close
(
cd
);
return
iconv_close
(
(
iconv_t
)
cd
);
}
src/pre.l
View file @
0b087b99
...
...
@@ -1006,7 +1006,8 @@ Define *newDefine()
void addDefine()
{
if (g_skip) return; // do not add this define as it is inside a
// conditional section (@cond command) that is disabled.
// conditional section (cond command) that is disabled.
if (!Doxygen::gatherDefines) return;
//printf("addDefine %s %s\n",g_defName.data(),g_defArgsStr.data());
//ArgumentList *al = new ArgumentList;
...
...
src/pyscanner.l
View file @
0b087b99
...
...
@@ -829,6 +829,11 @@ STARTDOCSYMS ^{B}"##"/[^#]
current->name = current->name.stripWhiteSpace();
newFunction();
}
{B}":" { // function without arguments
g_specialBlock = TRUE; // expecting a docstring
bodyEntry = current;
BEGIN( FunctionBody );
}
{B}"(" {
BEGIN( FunctionParams );
...
...
@@ -1110,7 +1115,7 @@ STARTDOCSYMS ^{B}"##"/[^#]
g_stringContext=VariableEnd;
BEGIN(TripleString);
}
"(" { // t
y
ple
"(" { // t
u
ple
current->type = "tuple";
current->initializer+=*yytext;
g_atomStart='(';
...
...
@@ -1168,6 +1173,12 @@ STARTDOCSYMS ^{B}"##"/[^#]
BEGIN(VariableEnd);
}
}
"\"" {
g_stringContext=YY_START;
current->initializer+="\"";
g_copyString=¤t->initializer;
BEGIN( DoubleQuoteString );
}
{IDENTIFIER} {
current->initializer+=yytext;
}
...
...
src/scanner.l
View file @
0b087b99
...
...
@@ -160,7 +160,7 @@ static int docBlockContext;
static QCString docBlock;
static QCString docBlockName;
static bool docBlockInBody;
static bool docBlock
JavaStyle
;
static bool docBlock
AutoBrief
;
static char docBlockTerm;
static QCString idlAttr;
...
...
@@ -614,6 +614,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
%x SkipSharp
%x SkipRound
%x SkipSquare
%x SkipRemainder
%x TypedefName
%x TryFunctionBlock
%x TryFunctionBlockEnd
...
...
@@ -1992,7 +1993,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlock.resize(0);
docBlockTerm = ';';
if (yytext[yyleng-3]=='/')
...
...
@@ -2010,7 +2012,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
lineCount();
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlock.resize(0);
docBlockTerm = ',';
if (yytext[yyleng-3]=='/')
...
...
@@ -2032,7 +2035,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlock.resize(0);
docBlockTerm = 0;
if (yytext[yyleng-3]=='/')
...
...
@@ -2072,7 +2076,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
{
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlock
JavaStyle
= FALSE;
docBlock
AutoBrief
= FALSE;
docBlock.resize(0);
docBlockTerm = 0;
startCommentBlock(TRUE);
...
...
@@ -2091,7 +2095,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlock.resize(0);
docBlockJavaStyle = yytext[2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlockTerm = 0;
startCommentBlock(FALSE);
BEGIN(DocBlock);
...
...
@@ -2701,6 +2706,31 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
initBracketCount=0;
BEGIN(ReadInitializer);
}
<FindFields>";" {
if (insideJava) // last enum field in Java class
{
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->type = "@"; // enum marker
current->args = current->args.simplifyWhiteSpace();
current->name = current->name.stripWhiteSpace();
current->section = Entry::VARIABLE_SEC;
current_root->addSubEntry(current);
current = new Entry ;
initEntry();
// TODO: skip until the end of the scope
BEGIN( SkipRemainder );
}
else
{
REJECT;
}
}
<SkipRemainder>\n {
yyLineNr++;
}
<SkipRemainder>[^\n]*
<FindFields>"," {
//printf("adding `%s' `%s' `%s' to enum `%s' (mGrpId=%d)\n",
// current->type.data(), current->name.data(),
...
...
@@ -3884,7 +3914,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
docBlockContext = SkipCurlyEndDoc;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlock.resize(0);
docBlockTerm = '}';
if (yytext[yyleng-3]=='/')
...
...
@@ -3902,7 +3933,8 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
<SkipCurlyEndDoc>"}"{BN}*("/*!"|"/**"|"//!"|"///")"<" { // desc is followed by another one
docBlockContext = SkipCurlyEndDoc;
docBlockInBody = FALSE;
docBlockJavaStyle = yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF");
docBlockAutoBrief = ( yytext[yyleng-2]=='*' && Config_getBool("JAVADOC_AUTOBRIEF") ) ||
( yytext[yyleng-2]=='!' && Config_getBool("QT_AUTOBRIEF") );
docBlock.resize(0);
docBlockTerm = '}';
if (yytext[yyleng-3]=='/')
...
...
@@ -4493,8 +4525,21 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
docBlockContext = YY_START;
docBlockInBody = YY_START==SkipCurly;
docBlock
JavaStyle = FALSE
;
docBlock
AutoBrief = Config_getBool("QT_AUTOBRIEF")
;
docBlock.resize(0);
if (docBlockAutoBrief)
{
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
}
if (!docBlockInBody)
{
current->doc.resize(0);
if (docBlockAutoBrief)
{
current->brief.resize(0);
}
}
startCommentBlock(FALSE);
BEGIN( DocBlock );
}
...
...
@@ -4514,9 +4559,9 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
current->docFile = yyFileName;
docBlockContext = YY_START;
docBlockInBody = YY_START==SkipCurly;
docBlock
JavaStyle
= Config_getBool("JAVADOC_AUTOBRIEF");
docBlock
AutoBrief
= Config_getBool("JAVADOC_AUTOBRIEF");
docBlock.resize(0);
if (docBlock
JavaStyle
)
if (docBlock
AutoBrief
)
{
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
...
...
@@ -4524,7 +4569,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
if (!docBlockInBody)
{
current->doc.resize(0);
if (docBlock
JavaStyle
)
if (docBlock
AutoBrief
)
{
current->brief.resize(0);
}
...
...
@@ -4551,7 +4596,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
docBlockContext = YY_START;
docBlockInBody = YY_START==SkipCurly;
docBlock
JavaStyle
= FALSE;
docBlock
AutoBrief
= FALSE;
docBlock.resize(0);
startCommentBlock(TRUE);
BEGIN( DocLine );
...
...
@@ -4575,7 +4620,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
}
docBlockContext = YY_START;
docBlockInBody = YY_START==SkipCurly;
docBlock
JavaStyle
= FALSE;
docBlock
AutoBrief
= FALSE;
docBlock.resize(0);
startCommentBlock(TRUE);
BEGIN( DocLine );
...
...
@@ -4932,7 +4977,7 @@ static void handleCommentBlock(const QCString &doc,bool brief)
yyFileName, // file
brief ? current->briefLine : current->docLine, // line of block start
docBlockInBody ? FALSE : brief,
docBlockInBody ? FALSE : docBlock
JavaStyle
,
docBlockInBody ? FALSE : docBlock
AutoBrief
,
docBlockInBody,
protection,
position,
...
...
src/translator_cz.h
View file @
0b087b99
This diff is collapsed.
Click to expand it.
src/util.cpp
View file @
0b087b99
...
...
@@ -293,6 +293,7 @@ int guessSection(const char *name)
n
.
right
(
4
)
==
".hpp"
||
n
.
right
(
4
)
==
".h++"
||
n
.
right
(
4
)
==
".idl"
||
n
.
right
(
4
)
==
".ddl"
||
n
.
right
(
5
)
==
".pidl"
)
return
Entry
::
HEADER_SEC
;
return
0
;
...
...
@@ -1476,7 +1477,7 @@ nextChar:
result
+=
' '
;
result
+=
s
.
at
(
i
);
}
else
if
(
c
==
't'
&&
csp
==
5
&&
else
if
(
c
==
't'
&&
csp
==
5
&&
(
i
<
5
||
!
isId
(
s
.
at
(
i
-
5
)))
&&
!
(
isId
(
s
.
at
(
i
+
1
))
/*|| s.at(i+1)==' '*/
||
s
.
at
(
i
+
1
)
==
')'
||
s
.
at
(
i
+
1
)
==
','
||
s
.
at
(
i
+
1
)
==
'\0'
))
// prevent const ::A from being converted to const::A
...
...
@@ -1485,12 +1486,12 @@ nextChar:
if
(
s
.
at
(
i
+
1
)
==
' '
)
i
++
;
csp
=
0
;
}
else
if
(
c
==
':'
&&
csp
==
6
)
// replace const::A by const ::A
else
if
(
c
==
':'
&&
csp
==
6
&&
(
i
<
6
||
!
isId
(
s
.
at
(
i
-
6
)))
)
// replace const::A by const ::A
{
result
+=
" :"
;
csp
=
0
;
}
else
if
(
c
==
'l'
&&
vsp
==
7
&&
else
if
(
c
==
'l'
&&
vsp
==
7
&&
(
i
<
7
||
!
isId
(
s
.
at
(
i
-
7
)))
&&
!
(
isId
(
s
.
at
(
i
+
1
))
/*|| s.at(i+1)==' '*/
||
s
.
at
(
i
+
1
)
==
')'
||
s
.
at
(
i
+
1
)
==
','
||
s
.
at
(
i
+
1
)
==
'\0'
))
// prevent virtual ::A from being converted to virtual::A
...
...
@@ -1499,7 +1500,7 @@ nextChar:
if
(
s
.
at
(
i
+
1
)
==
' '
)
i
++
;
vsp
=
0
;
}
else
if
(
c
==
':'
&&
vsp
==
8
)
// replace virtual::A by virtual ::A
else
if
(
c
==
':'
&&
vsp
==
8
&&
(
i
<
8
||
!
isId
(
s
.
at
(
i
-
8
)))
)
// replace virtual::A by virtual ::A
{
result
+=
" :"
;
vsp
=
0
;
...
...
@@ -5949,6 +5950,7 @@ SrcLangExt getLanguageFromFileName(const QCString fileName)
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
(
".jsl"
,
new
int
(
SrcLangExt_Java
));
...
...
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