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
5ed55684
Commit
5ed55684
authored
Sep 27, 2002
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.18-20020927
parent
482b6bd4
Changes
39
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1731 additions
and
474 deletions
+1731
-474
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
doxywizard.cpp
addon/doxywizard/doxywizard.cpp
+8
-1
config.doc
doc/config.doc
+9
-0
index.doc
doc/index.doc
+2
-1
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
Doxyfile
qtools/Doxyfile
+44
-5
classdef.cpp
src/classdef.cpp
+0
-2
cmdmapper.cpp
src/cmdmapper.cpp
+1
-0
config.l
src/config.l
+7
-7
docparser.cpp
src/docparser.cpp
+105
-89
docparser.h
src/docparser.h
+222
-188
doctokenizer.h
src/doctokenizer.h
+9
-16
doctokenizer.l
src/doctokenizer.l
+48
-48
docvisitor.h
src/docvisitor.h
+9
-2
doxygen.cpp
src/doxygen.cpp
+3
-2
filedef.cpp
src/filedef.cpp
+1
-0
groupdef.cpp
src/groupdef.cpp
+1
-0
htmlattrib.h
src/htmlattrib.h
+53
-0
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+81
-29
htmldocvisitor.h
src/htmldocvisitor.h
+3
-3
htmlgen.cpp
src/htmlgen.cpp
+4
-1
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+11
-11
latexdocvisitor.h
src/latexdocvisitor.h
+4
-4
libdoxygen.pro.in
src/libdoxygen.pro.in
+3
-0
mandocvisitor.cpp
src/mandocvisitor.cpp
+854
-0
mandocvisitor.h
src/mandocvisitor.h
+144
-0
mangen.cpp
src/mangen.cpp
+5
-1
memberdef.cpp
src/memberdef.cpp
+11
-5
namespacedef.cpp
src/namespacedef.cpp
+1
-0
rtfdocvisitor.cpp
src/rtfdocvisitor.cpp
+14
-14
rtfdocvisitor.h
src/rtfdocvisitor.h
+5
-5
scanner.l
src/scanner.l
+24
-10
translator_fr.h
src/translator_fr.h
+13
-0
util.cpp
src/util.cpp
+4
-2
xmldocvisitor.cpp
src/xmldocvisitor.cpp
+5
-5
xmldocvisitor.h
src/xmldocvisitor.h
+4
-4
xmlgen.cpp
src/xmlgen.cpp
+13
-13
No files found.
INSTALL
View file @
5ed55684
DOXYGEN Version 1.2.18
DOXYGEN Version 1.2.18
-20020927
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (
18
September 2002)
Dimitri van Heesch (
27
September 2002)
README
View file @
5ed55684
DOXYGEN Version 1.2.18
DOXYGEN Version 1.2.18
_20020927
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) (
18
September 2002)
Dimitri van Heesch (dimitri@stack.nl) (
27
September 2002)
VERSION
View file @
5ed55684
1.2.18
1.2.18
-20020927
addon/doxywizard/doxywizard.cpp
View file @
5ed55684
...
...
@@ -266,11 +266,18 @@ void Wizard::saveAsFile()
void
Wizard
::
runDoxygen
()
{
saveFile
();
QString
s
=
"doxygen "
+
configFileName
;
QString
orgDir
=
QDir
::
currentDirPath
();
QFileInfo
fi
(
configFileName
);
// cd to the config dir
QDir
::
setCurrent
(
fi
.
dirPath
());
// run doxygen on the config file
QString
s
=
"doxygen
\"
"
+
fi
.
fileName
()
+
"
\"
"
;
// actually run the exe
system
((
const
char
*
)
s
);
statusBar
()
->
message
(
"doxygen completed: "
+
configFileName
,
messageTimeout
);
hasChanged
=
FALSE
;
refreshCaption
();
QDir
::
setCurrent
(
orgDir
);
}
...
...
doc/config.doc
View file @
5ed55684
...
...
@@ -103,6 +103,7 @@ followed by the descriptions of the tags grouped by category.
\
refitem
cfg_full_path_names
FULL_PATH_NAMES
\
refitem
cfg_generate_buglist
GENERATE_BUGLIST
\
refitem
cfg_generate_chi
GENERATE_CHI
\
refitem
cfg_generate_todolist
GENERATE_DEPRECIATELIST
\
refitem
cfg_generate_html
GENERATE_HTML
\
refitem
cfg_generate_htmlhelp
GENERATE_HTMLHELP
\
refitem
cfg_generate_latex
GENERATE_LATEX
...
...
@@ -459,6 +460,14 @@ followed by the descriptions of the tags grouped by category.
documentation sections, marked by \ref cmdif "\\if" \<section-label\> ...
\ref cmdendif "\\endif" blocks.
\anchor cfg_generate_deprecatedlist
<dt>\c GENERATE_DEPRECATEDLIST <dd>
\addindex GENERATE_DEPRECATEDLIST
The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
disable (NO) the deprecated list. This list is created by
putting \ref cmddeprecated "\\deprecated"
commands in the documentation.
\anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST
...
...
doc/index.doc
View file @
5ed55684
...
...
@@ -180,7 +180,8 @@ Thanks go to:
All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, and Karel Lindveld for donating money.
Dwight Browne, Andreas Fredriksson, Karel Lindveld, and Ivan Lee
for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer!
...
...
packages/rpm/doxygen.spec
View file @
5ed55684
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.18
Version: 1.2.18
_20020927
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
qtools/Doxyfile
View file @
5ed55684
# Doxyfile 1.2.
5-20010304
# Doxyfile 1.2.
18
#---------------------------------------------------------------------------
# General configuration options
...
...
@@ -10,35 +10,40 @@ OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = NO
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ENABLED_SECTIONS =
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
...
...
@@ -56,13 +61,23 @@ FILE_PATTERNS = *.h \
*.cpp \
*.doc
RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
...
...
@@ -73,11 +88,14 @@ IGNORE_PREFIX = Q
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
...
...
@@ -90,6 +108,8 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
...
...
@@ -105,12 +125,24 @@ RTF_OUTPUT =
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT =
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_SCHEMA =
XML_DTD =
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
...
...
@@ -122,23 +154,30 @@ INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE = ../qtools_docs/qtools.tag
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 2048
MAX_DOT_GRAPH_HEIGHT = 2048
GENERATE_LEGEND = YES
...
...
src/classdef.cpp
View file @
5ed55684
...
...
@@ -790,9 +790,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
ol
.
endTextLink
();
ol
.
popGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
ol
.
newParagraph
();
ol
.
enable
(
OutputGenerator
::
Man
);
}
}
ol
.
writeSynopsis
();
...
...
src/cmdmapper.cpp
View file @
5ed55684
...
...
@@ -175,6 +175,7 @@ CommandMap htmlTagMap[] =
{
"h1"
,
HTML_H1
},
{
"h2"
,
HTML_H2
},
{
"h3"
,
HTML_H3
},
{
0
,
0
}
};
//----------------------------------------------------------------------------
...
...
src/config.l
View file @
5ed55684
...
...
@@ -1458,13 +1458,6 @@ void Config::create()
"Set it to YES to include the internal documentation. \n",
FALSE
);
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool(
"CASE_SENSE_NAMES",
"If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
...
...
@@ -1784,6 +1777,13 @@ void Config::create()
"of functions and classes directly in the documentation. \n",
FALSE
);
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool( "REFERENCED_BY_RELATION",
"If the REFERENCED_BY_RELATION tag is set to YES (the default) \n"
"then for each documented function all documented \n"
...
...
src/docparser.cpp
View file @
5ed55684
...
...
@@ -48,29 +48,29 @@ static MemberDef * g_memberDef;
static
QDict
<
void
>
g_paramsFound
;
// include file state
static
Q
C
String
g_includeFileText
;
static
QString
g_includeFileText
;
static
uint
g_includeFileOffset
;
static
uint
g_includeFileLength
;
// parser state
static
Q
C
String
g_context
;
static
QString
g_context
;
static
bool
g_inSeeBlock
;
static
bool
g_insideHtmlLink
;
static
QStack
<
DocNode
>
g_nodeStack
;
static
QStack
<
DocStyleChange
>
g_styleStack
;
static
QList
<
Definition
>
g_copyStack
;
static
Q
C
String
g_fileName
;
static
QString
g_fileName
;
struct
DocParserContext
{
Q
C
String
context
;
QString
context
;
bool
inSeeBlock
;
bool
insideHtmlLink
;
QStack
<
DocNode
>
nodeStack
;
QStack
<
DocStyleChange
>
styleStack
;
QList
<
Definition
>
copyStack
;
MemberDef
*
memberDef
;
Q
C
String
fileName
;
QString
fileName
;
};
static
QStack
<
DocParserContext
>
g_parserStack
;
...
...
@@ -107,7 +107,7 @@ static void docParserPopContext()
//---------------------------------------------------------------------------
static
void
checkArgumentName
(
const
Q
C
String
&
name
,
bool
isParam
)
static
void
checkArgumentName
(
const
QString
&
name
,
bool
isParam
)
{
if
(
g_memberDef
==
0
)
return
;
// not a member
ArgumentList
*
al
=
g_memberDef
->
isDocsForDefinition
()
?
...
...
@@ -120,14 +120,14 @@ static void checkArgumentName(const QCString &name,bool isParam)
int
p
=
0
,
i
=
0
,
l
;
while
((
i
=
re
.
match
(
name
,
p
,
&
l
))
!=-
1
)
{
Q
C
String
aName
=
name
.
mid
(
i
,
l
);
QString
aName
=
name
.
mid
(
i
,
l
);
//printf("aName=%s\n",aName.data());
ArgumentListIterator
ali
(
*
al
);
Argument
*
a
;
bool
found
=
FALSE
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
Q
C
String
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
QString
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
if
(
argName
.
right
(
3
)
==
"..."
)
argName
=
argName
.
left
(
argName
.
length
()
-
3
);
if
(
aName
==
argName
)
{
...
...
@@ -140,7 +140,7 @@ static void checkArgumentName(const QCString &name,bool isParam)
if
(
!
found
&&
isParam
)
{
//printf("member type=%d\n",memberDef->memberType());
Q
C
String
scope
=
g_memberDef
->
getScopeString
();
QString
scope
=
g_memberDef
->
getScopeString
();
if
(
!
scope
.
isEmpty
())
scope
+=
"::"
;
else
scope
=
""
;
warn
(
g_memberDef
->
docFile
(),
g_memberDef
->
docLine
(),
"Warning: argument `%s' of command @param "
...
...
@@ -167,7 +167,7 @@ static void checkUndocumentedParams()
bool
found
=
FALSE
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
Q
C
String
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
QString
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
if
(
argName
.
right
(
3
)
==
"..."
)
argName
=
argName
.
left
(
argName
.
length
()
-
3
);
if
(
!
argName
.
isEmpty
()
&&
g_paramsFound
.
find
(
argName
)
==
0
)
{
...
...
@@ -177,7 +177,7 @@ static void checkUndocumentedParams()
}
if
(
found
)
{
Q
C
String
scope
=
g_memberDef
->
getScopeString
();
QString
scope
=
g_memberDef
->
getScopeString
();
if
(
!
scope
.
isEmpty
())
scope
+=
"::"
;
else
scope
=
""
;
warn
(
g_memberDef
->
docFile
(),
g_memberDef
->
docLine
(),
"Warning: The following parameters of "
...
...
@@ -186,7 +186,7 @@ static void checkUndocumentedParams()
argListToString
(
al
).
data
());
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
Q
C
String
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
QString
argName
=
g_memberDef
->
isDefine
()
?
a
->
type
:
a
->
name
;
if
(
!
argName
.
isEmpty
()
&&
g_paramsFound
.
find
(
argName
)
==
0
)
{
warn_cont
(
" parameter %s
\n
"
,
argName
.
data
());
...
...
@@ -199,15 +199,15 @@ static void checkUndocumentedParams()
//---------------------------------------------------------------------------
static
Q
C
String
stripKnownExtensions
(
const
char
*
text
)
static
QString
stripKnownExtensions
(
const
char
*
text
)
{
Q
C
String
result
=
text
;
QString
result
=
text
;
if
(
result
.
right
(
4
)
==
".tex"
)
{
result
=
result
.
left
(
result
.
length
()
-
4
);
}
else
if
(
result
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
==
Doxygen
::
htmlFileExtension
)
QString
(
Doxygen
::
htmlFileExtension
)
)
{
result
=
result
.
left
(
result
.
length
()
-
Doxygen
::
htmlFileExtension
.
length
());
}
...
...
@@ -293,12 +293,12 @@ static bool insideLang(DocNode *n)
* @retval FALSE if name was not found.
*/
static
bool
findDocsForMemberOrCompound
(
const
char
*
commandName
,
Q
C
String
*
pDoc
,
QString
*
pDoc
,
Definition
**
pDef
)
{
pDoc
->
resize
(
0
)
;
*
pDoc
=
""
;
*
pDef
=
0
;
Q
C
String
cmdArg
=
commandName
;
QString
cmdArg
=
commandName
;
int
l
=
cmdArg
.
length
();
if
(
l
==
0
)
return
FALSE
;
...
...
@@ -306,10 +306,10 @@ static bool findDocsForMemberOrCompound(const char *commandName,
if
(
funcStart
==-
1
)
funcStart
=
l
;
//int lastScopeStart=cmdArg.findRev("::",funcStart);
//int lastScopeEnd = lastScopeStart==-1 ? 0 : lastScopeStart+2;
//Q
C
String scope=cmdArg.left(QMAX(lastScopeStart,0));
//Q
C
String name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd);
Q
C
String
name
=
cmdArg
.
left
(
funcStart
);
Q
C
String
args
=
cmdArg
.
right
(
l
-
funcStart
);
//QString scope=cmdArg.left(QMAX(lastScopeStart,0));
//QString name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd);
QString
name
=
cmdArg
.
left
(
funcStart
);
QString
args
=
cmdArg
.
right
(
l
-
funcStart
);
// try if the link is to a member
MemberDef
*
md
=
0
;
...
...
@@ -318,7 +318,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
NamespaceDef
*
nd
=
0
;
GroupDef
*
gd
=
0
;
PageInfo
*
pi
=
0
;
bool
found
=
getDefs
(
g_context
,
name
,
args
,
md
,
cd
,
fd
,
nd
,
gd
,
FALSE
,
0
,
TRUE
);
bool
found
=
getDefs
(
g_context
.
latin1
(),
name
.
latin1
()
,
args
,
md
,
cd
,
fd
,
nd
,
gd
,
FALSE
,
0
,
TRUE
);
if
(
found
&&
md
)
{
*
pDoc
=
md
->
documentation
();
...
...
@@ -330,7 +330,7 @@ static bool findDocsForMemberOrCompound(const char *commandName,
int
scopeOffset
=
g_context
.
length
();
do
// for each scope
{
Q
C
String
fullName
=
cmdArg
;
QString
fullName
=
cmdArg
;
if
(
scopeOffset
>
0
)
{
fullName
.
prepend
(
g_context
.
left
(
scopeOffset
)
+
"::"
);
...
...
@@ -398,8 +398,9 @@ static bool defaultHandleToken(DocNode *parent,int tok,
static
int
handleStyleArgument
(
DocNode
*
parent
,
QList
<
DocNode
>
&
children
,
const
Q
C
String
&
cmdName
)
const
QString
&
cmdName
)
{
QString
tokenName
=
g_token
->
name
;
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
{
...
...
@@ -407,7 +408,9 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
cmdName
.
data
());
return
tok
;
}
while
((
tok
=
doctokenizerYYlex
())
&&
tok
!=
TK_WHITESPACE
&&
tok
!=
TK_NEWPARA
)
while
((
tok
=
doctokenizerYYlex
())
&&
tok
!=
TK_WHITESPACE
&&
tok
!=
TK_NEWPARA
&&
tok
!=
TK_LISTITEM
&&
tok
!=
TK_ENDLIST
)
{
if
(
!
defaultHandleToken
(
parent
,
tok
,
children
))
{
...
...
@@ -415,15 +418,15 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
{
case
TK_COMMAND
:
warn
(
g_fileName
,
doctokenizerYYlineno
,
"Error: Illegal command
\\
%s as the argument of a
\\
%s command"
,
g_token
->
n
ame
.
data
(),
cmdName
.
data
());
tokenN
ame
.
data
(),
cmdName
.
data
());
break
;
case
TK_SYMBOL
:
warn
(
g_fileName
,
doctokenizerYYlineno
,
"Error: Unsupported symbol %s found"
,
g_token
->
n
ame
.
data
());
tokenN
ame
.
data
());
break
;
default:
warn
(
g_fileName
,
doctokenizerYYlineno
,
"Error: Unexpected token %s"
,
g_token
->
n
ame
.
data
());
tokenN
ame
.
data
());
break
;
}
}
...
...
@@ -540,7 +543,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
DBG
((
" name=%s"
,
g_token
->
name
.
data
()));
}
DBG
((
"
\n
"
));
Q
C
String
tokenName
=
g_token
->
name
;
QString
tokenName
=
g_token
->
name
;
switch
(
tok
)
{
case
TK_COMMAND
:
...
...
@@ -803,7 +806,7 @@ handlepara:
//---------------------------------------------------------------------------
DocSymbol
::
SymType
DocSymbol
::
decodeSymbol
(
const
Q
C
String
&
symName
,
char
*
letter
)
DocSymbol
::
SymType
DocSymbol
::
decodeSymbol
(
const
QString
&
symName
,
char
*
letter
)
{
int
l
=
symName
.
length
();
DBG
((
"decodeSymbol(%s) l=%d
\n
"
,
symName
.
data
(),
l
));
...
...
@@ -856,7 +859,7 @@ DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName,char *letter)
//---------------------------------------------------------------------------
static
int
internalValidatingParseDoc
(
DocNode
*
parent
,
QList
<
DocNode
>
&
children
,
const
Q
C
String
&
doc
)
const
QString
&
doc
)
{
int
retval
=
RetVal_OK
;
...
...
@@ -887,7 +890,7 @@ static int internalValidatingParseDoc(DocNode *parent,QList<DocNode> &children,
//---------------------------------------------------------------------------
static
void
readTextFileByName
(
const
Q
CString
&
file
,
QC
String
&
text
)
static
void
readTextFileByName
(
const
Q
String
&
file
,
Q
String
&
text
)
{
bool
ambig
;
FileDef
*
fd
;
...
...
@@ -911,7 +914,7 @@ static void readTextFileByName(const QCString &file,QCString &text)
//---------------------------------------------------------------------------
DocAnchor
::
DocAnchor
(
DocNode
*
parent
,
const
Q
C
String
&
id
,
bool
newAnchor
)
DocAnchor
::
DocAnchor
(
DocNode
*
parent
,
const
QString
&
id
,
bool
newAnchor
)
:
m_parent
(
parent
)
{
if
(
id
.
isEmpty
())
...
...
@@ -1080,7 +1083,7 @@ void DocIncOperator::parse()
void
DocCopy
::
parse
()
{
Q
C
String
doc
;
QString
doc
;
Definition
*
def
;
if
(
findDocsForMemberOrCompound
(
m_link
,
&
doc
,
&
def
))
{
...
...
@@ -1114,7 +1117,7 @@ void DocCopy::parse()
void
DocXRefItem
::
parse
()
{
Q
C
String
listName
;
QString
listName
;
switch
(
m_type
)
{
case
Bug
:
listName
=
"bug"
;
break
;
...
...
@@ -1143,7 +1146,7 @@ void DocXRefItem::parse()
DocFormula
::
DocFormula
(
DocNode
*
parent
,
int
id
)
:
m_parent
(
parent
)
{
Q
C
String
formCmd
;
QString
formCmd
;
formCmd
.
sprintf
(
"
\\
form#%d"
,
id
);
Formula
*
formula
=
Doxygen
::
formulaNameDict
[
formCmd
];
if
(
formula
)
...
...
@@ -1306,7 +1309,7 @@ endsecreflist:
//---------------------------------------------------------------------------
DocInternalRef
::
DocInternalRef
(
DocNode
*
parent
,
const
Q
C
String
&
ref
)
DocInternalRef
::
DocInternalRef
(
DocNode
*
parent
,
const
QString
&
ref
)
:
m_parent
(
parent
)
{
int
i
=
ref
.
find
(
'#'
);
...
...
@@ -1357,11 +1360,12 @@ void DocInternalRef::parse()
//---------------------------------------------------------------------------
DocRef
::
DocRef
(
DocNode
*
parent
,
const
Q
C
String
&
target
)
:
DocRef
::
DocRef
(
DocNode
*
parent
,
const
QString
&
target
)
:
m_parent
(
parent
),
m_refToSection
(
FALSE
),
m_refToAnchor
(
FALSE
)
{
Definition
*
compound
=
0
;
MemberDef
*
member
=
0
;
PageInfo
*
pageInfo
=
0
;
QCString
anchor
;
ASSERT
(
!
target
.
isEmpty
());
SectionInfo
*
sec
=
Doxygen
::
sectionDict
[
target
];
if
(
sec
)
// ref to section or anchor
...
...
@@ -1375,16 +1379,25 @@ DocRef::DocRef(DocNode *parent,const QCString &target) :
m_refToAnchor
=
sec
->
type
==
SectionInfo
::
Anchor
;
m_refToSection
=
sec
->
type
!=
SectionInfo
::
Anchor
;
}
else
if
(
resolve
Ref
(
g_context
,
target
,
TRUE
,
&
compound
,
&
membe
r
))
else
if
(
resolve
Link
(
g_context
,
target
,
TRUE
,
&
compound
,
&
pageInfo
,
ancho
r
))
{
if
(
member
)
// ref to member
m_text
=
target
;
m_anchor
=
anchor
;
if
(
pageInfo
)
// ref to page
{
m_file
=
compound
->
getOutputFileBase
();
m_ref
=
compound
->
getReference
();
m_anchor
=
member
->
anchor
();
m_file
=
pageInfo
->
getOutputFileBase
();
m_ref
=
pageInfo
->
getReference
();
}
else
// ref to compound
else
if
(
compound
)
// ref to compound
{
if
(
anchor
.
isEmpty
()
&&
/* compound link */
compound
->
definitionType
()
==
Definition
::
TypeGroup
&&
/* is group */
((
GroupDef
*
)
compound
)
->
groupTitle
()
/* with title */
)
{
m_text
=
((
GroupDef
*
)
compound
)
->
groupTitle
();
// use group's title as l
}
m_file
=
compound
->
getOutputFileBase
();
m_ref
=
compound
->
getReference
();
}
...
...
@@ -1432,14 +1445,16 @@ void DocRef::parse()
//---------------------------------------------------------------------------
DocLink
::
DocLink
(
DocNode
*
parent
,
const
Q
C
String
&
target
)
:
DocLink
::
DocLink
(
DocNode
*
parent
,
const
QString
&
target
)
:
m_parent
(
parent
)
{
Definition
*
compound
;
PageInfo
*
page
;
QCString
anchor
;
if
(
resolveLink
(
g_context
,
stripKnownExtensions
(
target
),
g_inSeeBlock
,
&
compound
,
&
page
,
m_
anchor
))
&
compound
,
&
page
,
anchor
))
{
m_anchor
=
anchor
;
if
(
compound
)
{
m_file
=
compound
->
getOutputFileBase
();
...
...
@@ -1459,9 +1474,9 @@ DocLink::DocLink(DocNode *parent,const QCString &target) :
}
Q
C
String
DocLink
::
parse
(
bool
isJavaLink
)
QString
DocLink
::
parse
(
bool
isJavaLink
)
{
Q
C
String
result
;
QString
result
;
g_nodeStack
.
push
(
this
);
DBG
((
"DocLink::parse() start
\n
"
));
...
...
@@ -1495,7 +1510,7 @@ QCString DocLink::parse(bool isJavaLink)
case
TK_WORD
:
if
(
isJavaLink
)
// special case to detect closing }
{
Q
C
String
w
=
g_token
->
name
;
QString
w
=
g_token
->
name
;
uint
l
=
w
.
length
();
int
p
;
if
(
w
==
"}"
)
...
...
@@ -1882,7 +1897,7 @@ int DocIndexEntry::parse()
warn
(
g_fileName
,
doctokenizerYYlineno
,
"Error: expected whitespace after
\\
addindex command"
);
goto
endindexentry
;
}
m_entry
.
resize
(
0
)
;
m_entry
=
""
;
while
((
tok
=
doctokenizerYYlex
())
&&
tok
!=
TK_WHITESPACE
&&
tok
!=
TK_NEWPARA
)
{
switch
(
tok
)
...
...
@@ -2078,7 +2093,7 @@ int DocHtmlRow::parse()
// parse one or more cells
do
{
cell
=
new
DocHtmlCell
(
this
,
isHeading
);
cell
=
new
DocHtmlCell
(
this
,
g_token
->
attribs
,
isHeading
);
cell
->
markFirst
(
isFirst
);
isFirst
=
FALSE
;
m_children
.
append
(
cell
);
...
...
@@ -2125,7 +2140,7 @@ getrow:
}
else
{
m_caption
=
new
DocHtmlCaption
(
this
);
m_caption
=
new
DocHtmlCaption
(
this
,
g_token
->
attribs
);
retval
=
m_caption
->
parse
();
if
(
retval
==
RetVal_OK
)
// caption was parsed ok
...
...
@@ -2154,7 +2169,7 @@ getrow:
// parse one or more rows
while
(
retval
==
RetVal_TableRow
)
{
DocHtmlRow
*
tr
=
new
DocHtmlRow
(
this
);
DocHtmlRow
*
tr
=
new
DocHtmlRow
(
this
,
g_token
->
attribs
);
m_children
.
append
(
tr
);
retval
=
tr
->
parse
();
}
...
...
@@ -2231,6 +2246,7 @@ endtitle:
int
DocHtmlDescData
::
parse
()
{
m_attribs
=
g_token
->
attribs
;
int
retval
=
0
;
g_nodeStack
.
push
(
this
);
DBG
((
"DocHtmlDescData::parse() start
\n
"
));
...
...
@@ -2295,7 +2311,7 @@ int DocHtmlDescList::parse()
do
{
DocHtmlDescTitle
*
dt
=
new
DocHtmlDescTitle
(
this
);
DocHtmlDescTitle
*
dt
=
new
DocHtmlDescTitle
(
this
,
g_token
->
attribs
);
m_children
.
append
(
dt
);
DocHtmlDescData
*
dd
=
new
DocHtmlDescData
(
this
);
m_children
.
append
(
dd
);
...
...
@@ -2417,7 +2433,7 @@ int DocHtmlList::parse()
do
{
DocHtmlListItem
*
li
=
new
DocHtmlListItem
(
this
);
DocHtmlListItem
*
li
=
new
DocHtmlListItem
(
this
,
g_token
->
attribs
);
m_children
.
append
(
li
);
retval
=
li
->
parse
();
}
while
(
retval
==
RetVal_ListItem
);
...
...
@@ -2598,7 +2614,7 @@ int DocSimpleSect::parse(bool userTitle)
//--------------------------------------------------------------------------
int
DocParamList
::
parse
(
const
Q
C
String
&
cmdName
)
int
DocParamList
::
parse
(
const
QString
&
cmdName
)
{
int
retval
=
RetVal_OK
;
DBG
((
"DocParamList::parse() start
\n
"
));
...
...
@@ -2648,7 +2664,7 @@ int DocParamList::parse(const QCString &cmdName)
//--------------------------------------------------------------------------
int
DocParamSect
::
parse
(
const
Q
C
String
&
cmdName
)
int
DocParamSect
::
parse
(
const
QString
&
cmdName
)
{
int
retval
=
RetVal_OK
;
DBG
((
"DocParamSect::parse() start
\n
"
));
...
...
@@ -2686,7 +2702,7 @@ int DocPara::handleSimpleSection(DocSimpleSect::Type t)
return
(
rv
!=
TK_NEWPARA
)
?
rv
:
RetVal_OK
;
}
int
DocPara
::
handleParamSection
(
const
Q
C
String
&
cmdName
,
DocParamSect
::
Type
t
)
int
DocPara
::
handleParamSection
(
const
QString
&
cmdName
,
DocParamSect
::
Type
t
)
{
DocParamSect
*
ps
=
0
;
...
...
@@ -2722,7 +2738,7 @@ int DocPara::handleXRefItem(DocXRefItem::Type t)
return
retval
;
}
void
DocPara
::
handleIncludeOperator
(
const
Q
C
String
&
cmdName
,
DocIncOperator
::
Type
t
)
void
DocPara
::
handleIncludeOperator
(
const
QString
&
cmdName
,
DocIncOperator
::
Type
t
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2772,7 +2788,7 @@ void DocPara::handleIncludeOperator(const QCString &cmdName,DocIncOperator::Type
op
->
parse
();
}
void
DocPara
::
handleImage
(
const
Q
C
String
&
cmdName
)
void
DocPara
::
handleImage
(
const
QString
&
cmdName
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2796,7 +2812,7 @@ void DocPara::handleImage(const QCString &cmdName)
return
;
}
DocImage
::
Type
t
;
Q
C
String
imgType
=
g_token
->
name
.
lower
();
QString
imgType
=
g_token
->
name
.
lower
();
if
(
imgType
==
"html"
)
t
=
DocImage
::
Html
;
else
if
(
imgType
==
"latex"
)
t
=
DocImage
::
Latex
;
else
if
(
imgType
==
"rtf"
)
t
=
DocImage
::
Rtf
;
...
...
@@ -2821,7 +2837,7 @@ void DocPara::handleImage(const QCString &cmdName)
img
->
parse
();
}
void
DocPara
::
handleDotFile
(
const
Q
C
String
&
cmdName
)
void
DocPara
::
handleDotFile
(
const
QString
&
cmdName
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2844,7 +2860,7 @@ void DocPara::handleDotFile(const QCString &cmdName)
df
->
parse
();
}
void
DocPara
::
handleLink
(
const
Q
C
String
&
cmdName
,
bool
isJavaLink
)
void
DocPara
::
handleLink
(
const
QString
&
cmdName
,
bool
isJavaLink
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2864,14 +2880,14 @@ void DocPara::handleLink(const QCString &cmdName,bool isJavaLink)
doctokenizerYYsetStatePara
();
DocLink
*
lnk
=
new
DocLink
(
this
,
g_token
->
name
);
m_children
.
append
(
lnk
);
Q
C
String
leftOver
=
lnk
->
parse
(
isJavaLink
);
QString
leftOver
=
lnk
->
parse
(
isJavaLink
);
if
(
!
leftOver
.
isEmpty
())
{
m_children
.
append
(
new
DocWord
(
this
,
leftOver
));
}
}
void
DocPara
::
handleRef
(
const
Q
C
String
&
cmdName
)
void
DocPara
::
handleRef
(
const
QString
&
cmdName
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2941,7 +2957,7 @@ endlang:
return
retval
;
}
void
DocPara
::
handleInclude
(
const
Q
C
String
&
cmdName
,
DocInclude
::
Type
t
)
void
DocPara
::
handleInclude
(
const
QString
&
cmdName
,
DocInclude
::
Type
t
)
{
int
tok
=
doctokenizerYYlex
();
if
(
tok
!=
TK_WHITESPACE
)
...
...
@@ -2971,7 +2987,7 @@ void DocPara::handleInclude(const QCString &cmdName,DocInclude::Type t)
}
int
DocPara
::
handleCommand
(
const
Q
C
String
&
cmdName
)
int
DocPara
::
handleCommand
(
const
QString
&
cmdName
)
{
int
retval
=
RetVal_OK
;
switch
(
CmdMapper
::
map
(
cmdName
))
...
...
@@ -3310,23 +3326,23 @@ int DocPara::handleCommand(const QCString &cmdName)
}
int
DocPara
::
handleHtmlStartTag
(
const
Q
CString
&
tagName
,
const
QList
<
Option
>
&
tagOption
s
)
int
DocPara
::
handleHtmlStartTag
(
const
Q
String
&
tagName
,
const
HtmlAttribList
&
tagHtmlAttrib
s
)
{
DBG
((
"handleHtmlStartTag(%s,%d)
\n
"
,
tagName
.
data
(),
tag
Option
s
.
count
()));
DBG
((
"handleHtmlStartTag(%s,%d)
\n
"
,
tagName
.
data
(),
tag
HtmlAttrib
s
.
count
()));
int
retval
=
RetVal_OK
;
int
tagId
=
HtmlTagMapper
::
map
(
tagName
);
switch
(
tagId
)
{
case
HTML_UL
:
{
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
DocHtmlList
::
Unordered
);
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
tagHtmlAttribs
,
DocHtmlList
::
Unordered
);
m_children
.
append
(
list
);
retval
=
list
->
parse
();
}
break
;
case
HTML_OL
:
{
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
DocHtmlList
::
Ordered
);
DocHtmlList
*
list
=
new
DocHtmlList
(
this
,
tagHtmlAttribs
,
DocHtmlList
::
Ordered
);
m_children
.
append
(
list
);
retval
=
list
->
parse
();
}
...
...
@@ -3343,7 +3359,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
break
;
case
HTML_PRE
:
{
DocHtmlPre
*
pre
=
new
DocHtmlPre
(
this
);
DocHtmlPre
*
pre
=
new
DocHtmlPre
(
this
,
tagHtmlAttribs
);
m_children
.
append
(
pre
);
retval
=
pre
->
parse
();
}
...
...
@@ -3374,7 +3390,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
break
;
case
HTML_DL
:
{
DocHtmlDescList
*
list
=
new
DocHtmlDescList
(
this
);
DocHtmlDescList
*
list
=
new
DocHtmlDescList
(
this
,
tagHtmlAttribs
);
m_children
.
append
(
list
);
retval
=
list
->
parse
();
}
...
...
@@ -3387,7 +3403,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
break
;
case
HTML_TABLE
:
{
DocHtmlTable
*
table
=
new
DocHtmlTable
(
this
);
DocHtmlTable
*
table
=
new
DocHtmlTable
(
this
,
tagHtmlAttribs
);
m_children
.
append
(
table
);
retval
=
table
->
parse
();
}
...
...
@@ -3418,8 +3434,8 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
break
;
case
HTML_A
:
{
QListIterator
<
Option
>
li
(
tagOption
s
);
Option
*
opt
;
HtmlAttribListIterator
li
(
tagHtmlAttrib
s
);
HtmlAttrib
*
opt
;
for
(
li
.
toFirst
();(
opt
=
li
.
current
());
++
li
)
{
if
(
opt
->
name
==
"name"
)
// <a name=label> tag
...
...
@@ -3428,7 +3444,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
{
DocAnchor
*
anc
=
new
DocAnchor
(
this
,
opt
->
value
,
TRUE
);
m_children
.
append
(
anc
);
break
;
// stop looking for other tag
option
s
break
;
// stop looking for other tag
attrib
s
}
else
{
...
...
@@ -3452,29 +3468,29 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
break
;
case
HTML_H1
:
{
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
1
);
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
tagHtmlAttribs
,
1
);
m_children
.
append
(
header
);
retval
=
header
->
parse
();
}
break
;
case
HTML_H2
:
{
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
2
);
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
tagHtmlAttribs
,
2
);
m_children
.
append
(
header
);
retval
=
header
->
parse
();
}
break
;
case
HTML_H3
:
{
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
3
);
DocHtmlHeader
*
header
=
new
DocHtmlHeader
(
this
,
tagHtmlAttribs
,
3
);
m_children
.
append
(
header
);
retval
=
header
->
parse
();
}
break
;
case
HTML_IMG
:
{
QListIterator
<
Option
>
li
(
tagOption
s
);
Option
*
opt
;
HtmlAttribListIterator
li
(
tagHtmlAttrib
s
);
HtmlAttrib
*
opt
;
for
(
li
.
toFirst
();(
opt
=
li
.
current
());
++
li
)
{
if
(
opt
->
name
==
"src"
&&
!
opt
->
value
.
isEmpty
())
...
...
@@ -3496,7 +3512,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const QList<Option> &tag
return
retval
;
}
int
DocPara
::
handleHtmlEndTag
(
const
Q
C
String
&
tagName
)
int
DocPara
::
handleHtmlEndTag
(
const
QString
&
tagName
)
{
DBG
((
"handleHtmlEndTag(%s)
\n
"
,
tagName
.
data
()));
int
tagId
=
HtmlTagMapper
::
map
(
tagName
);
...
...
@@ -3817,7 +3833,7 @@ reparsetoken:
{
if
(
!
g_token
->
endTag
)
// found a start tag
{
retval
=
handleHtmlStartTag
(
g_token
->
name
,
g_token
->
option
s
);
retval
=
handleHtmlStartTag
(
g_token
->
name
,
g_token
->
attrib
s
);
}
else
// found an end tag
{
...
...
@@ -4023,9 +4039,9 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
const
char
*
context
,
MemberDef
*
md
,
const
char
*
input
)
{
//printf("---------------- input --------------------\n%s\n----------- end input -------------------\n",input);
//printf("========== validating %s at line %d\n",fileName,startLine);
printf
(
"========== validating %s at line %d
\n
"
,
fileName
,
startLine
);
printf
(
"---------------- input --------------------
\n
%s
\n
----------- end input -------------------
\n
"
,
input
);
g_token
=
new
TokenInfo
;
g_context
=
context
;
...
...
@@ -4035,7 +4051,7 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
g_styleStack
.
clear
();
g_inSeeBlock
=
FALSE
;
g_insideHtmlLink
=
FALSE
;
g_includeFileText
.
resize
(
0
)
;
g_includeFileText
=
""
;
g_includeFileOffset
=
0
;
g_includeFileLength
=
0
;
g_hasParamCommand
=
FALSE
;
...
...
src/docparser.h
View file @
5ed55684
...
...
@@ -19,12 +19,14 @@
#ifndef _DOCPARSER_H
#define _DOCPARSER_H
#include <stdio.h>
#include <qlist.h>
#include <qstrlist.h>
#include <
stdio
.h>
#include <
qstring
.h>
#include "docvisitor.h"
#include "
doctokenizer
.h"
#include "
htmlattrib
.h"
class
DocNode
;
class
MemberDef
;
...
...
@@ -138,16 +140,16 @@ template<class T> class CompAccept
class
DocWord
:
public
DocNode
{
public
:
DocWord
(
DocNode
*
parent
,
const
Q
C
String
&
word
)
:
DocWord
(
DocNode
*
parent
,
const
QString
&
word
)
:
m_parent
(
parent
),
m_word
(
word
)
{}
Q
C
String
word
()
const
{
return
m_word
;
}
QString
word
()
const
{
return
m_word
;
}
Kind
kind
()
const
{
return
Kind_Word
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_word
;
Q
String
m_word
;
};
/*! @brief Node representing a word that can be linked to something
...
...
@@ -155,41 +157,41 @@ class DocWord : public DocNode
class
DocLinkedWord
:
public
DocNode
{
public
:
DocLinkedWord
(
DocNode
*
parent
,
const
Q
C
String
&
word
,
const
Q
CString
&
ref
,
const
QC
String
&
file
,
const
Q
C
String
&
anchor
)
:
DocLinkedWord
(
DocNode
*
parent
,
const
QString
&
word
,
const
Q
String
&
ref
,
const
Q
String
&
file
,
const
QString
&
anchor
)
:
m_parent
(
parent
),
m_word
(
word
),
m_ref
(
ref
),
m_file
(
file
),
m_anchor
(
anchor
)
{}
Q
C
String
word
()
const
{
return
m_word
;
}
QString
word
()
const
{
return
m_word
;
}
Kind
kind
()
const
{
return
Kind_Word
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
ref
()
const
{
return
m_ref
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
QString
file
()
const
{
return
m_file
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_word
;
Q
CString
m_ref
;
Q
CString
m_file
;
Q
CString
m_anchor
;
Q
String
m_word
;
Q
String
m_ref
;
Q
String
m_file
;
Q
String
m_anchor
;
};
/*! @brief Node representing an URL (or email address) */
class
DocURL
:
public
DocNode
{
public
:
DocURL
(
DocNode
*
parent
,
const
Q
C
String
&
url
)
:
DocURL
(
DocNode
*
parent
,
const
QString
&
url
)
:
m_parent
(
parent
),
m_url
(
url
)
{}
Q
C
String
url
()
const
{
return
m_url
;
}
QString
url
()
const
{
return
m_url
;
}
Kind
kind
()
const
{
return
Kind_URL
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_url
;
Q
String
m_url
;
};
/*! @brief Node representing a line break */
...
...
@@ -224,17 +226,17 @@ class DocHorRuler : public DocNode
class
DocAnchor
:
public
DocNode
{
public
:
DocAnchor
(
DocNode
*
parent
,
const
Q
C
String
&
id
,
bool
newAnchor
);
DocAnchor
(
DocNode
*
parent
,
const
QString
&
id
,
bool
newAnchor
);
Kind
kind
()
const
{
return
Kind_Anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
file
()
const
{
return
m_file
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_anchor
;
Q
CString
m_file
;
Q
String
m_anchor
;
Q
String
m_file
;
};
/*! @brief Node representing a style change */
...
...
@@ -275,7 +277,7 @@ class DocSymbol : public DocNode
Kind
kind
()
const
{
return
Kind_Symbol
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
static
SymType
decodeSymbol
(
const
Q
C
String
&
symName
,
char
*
letter
);
static
SymType
decodeSymbol
(
const
QString
&
symName
,
char
*
letter
);
private
:
DocNode
*
m_parent
;
...
...
@@ -287,15 +289,15 @@ class DocSymbol : public DocNode
class
DocWhiteSpace
:
public
DocNode
{
public
:
DocWhiteSpace
(
DocNode
*
parent
,
const
Q
C
String
&
chars
)
:
DocWhiteSpace
(
DocNode
*
parent
,
const
QString
&
chars
)
:
m_parent
(
parent
),
m_chars
(
chars
)
{}
Kind
kind
()
const
{
return
Kind_WhiteSpace
;
}
Q
C
String
chars
()
const
{
return
m_chars
;
}
QString
chars
()
const
{
return
m_chars
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_chars
;
Q
String
m_chars
;
};
/*! @brief Node representing a verbatim, unparsed text fragment */
...
...
@@ -303,20 +305,20 @@ class DocVerbatim : public DocNode
{
public
:
enum
Type
{
Code
,
HtmlOnly
,
LatexOnly
,
Verbatim
};
DocVerbatim
(
DocNode
*
parent
,
const
Q
C
String
&
context
,
const
Q
C
String
&
text
,
Type
t
)
:
DocVerbatim
(
DocNode
*
parent
,
const
QString
&
context
,
const
QString
&
text
,
Type
t
)
:
m_parent
(
parent
),
m_context
(
context
),
m_text
(
text
),
m_type
(
t
)
{}
Kind
kind
()
const
{
return
Kind_Verbatim
;
}
Type
type
()
const
{
return
m_type
;
}
Q
C
String
text
()
const
{
return
m_text
;
}
Q
C
String
context
()
const
{
return
m_context
;
}
QString
text
()
const
{
return
m_text
;
}
QString
context
()
const
{
return
m_context
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_context
;
Q
CString
m_text
;
Q
String
m_context
;
Q
String
m_text
;
Type
m_type
;
};
...
...
@@ -325,23 +327,23 @@ class DocInclude : public DocNode
{
public
:
enum
Type
{
Include
,
DontInclude
,
VerbInclude
,
HtmlInclude
};
DocInclude
(
DocNode
*
parent
,
const
Q
C
String
&
file
,
const
Q
C
String
context
,
Type
t
)
:
DocInclude
(
DocNode
*
parent
,
const
QString
&
file
,
const
QString
context
,
Type
t
)
:
m_parent
(
parent
),
m_file
(
file
),
m_context
(
context
),
m_type
(
t
)
{}
Kind
kind
()
const
{
return
Kind_Include
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
QString
file
()
const
{
return
m_file
;
}
Type
type
()
const
{
return
m_type
;
}
Q
C
String
text
()
const
{
return
m_text
;
}
Q
C
String
context
()
const
{
return
m_context
;
}
QString
text
()
const
{
return
m_text
;
}
QString
context
()
const
{
return
m_context
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
void
parse
();
private
:
DocNode
*
m_parent
;
Q
CString
m_file
;
Q
CString
m_context
;
Q
CString
m_text
;
Q
String
m_file
;
Q
String
m_context
;
Q
String
m_text
;
Type
m_type
;
};
...
...
@@ -350,15 +352,15 @@ class DocIncOperator : public DocNode
{
public
:
enum
Type
{
Line
,
SkipLine
,
Skip
,
Until
};
DocIncOperator
(
DocNode
*
parent
,
Type
t
,
const
Q
C
String
&
pat
,
const
Q
C
String
&
context
)
:
DocIncOperator
(
DocNode
*
parent
,
Type
t
,
const
QString
&
pat
,
const
QString
&
context
)
:
m_parent
(
parent
),
m_type
(
t
),
m_pattern
(
pat
),
m_context
(
context
),
m_isFirst
(
FALSE
),
m_isLast
(
FALSE
)
{}
Kind
kind
()
const
{
return
Kind_IncOperator
;
}
Type
type
()
const
{
return
m_type
;
}
Q
C
String
text
()
const
{
return
m_text
;
}
Q
C
String
pattern
()
const
{
return
m_pattern
;
}
Q
C
String
context
()
const
{
return
m_context
;
}
QString
text
()
const
{
return
m_text
;
}
QString
pattern
()
const
{
return
m_pattern
;
}
QString
context
()
const
{
return
m_context
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
void
parse
();
...
...
@@ -370,9 +372,9 @@ class DocIncOperator : public DocNode
private
:
DocNode
*
m_parent
;
Type
m_type
;
Q
CString
m_text
;
Q
CString
m_pattern
;
Q
CString
m_context
;
Q
String
m_text
;
Q
String
m_pattern
;
Q
String
m_context
;
bool
m_isFirst
;
bool
m_isLast
;
};
...
...
@@ -383,16 +385,16 @@ class DocFormula : public DocNode
public
:
DocFormula
(
DocNode
*
parent
,
int
id
);
Kind
kind
()
const
{
return
Kind_Formula
;
}
Q
C
String
name
()
const
{
return
m_name
;
}
Q
C
String
text
()
const
{
return
m_text
;
}
QString
name
()
const
{
return
m_name
;
}
QString
text
()
const
{
return
m_text
;
}
int
id
()
const
{
return
m_id
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_name
;
Q
CString
m_text
;
Q
String
m_name
;
Q
String
m_text
;
int
m_id
;
};
...
...
@@ -405,11 +407,11 @@ class DocIndexEntry : public DocNode
int
parse
();
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
v
->
visit
(
this
);
}
Q
C
String
entry
()
{
return
m_entry
;
}
QString
entry
()
{
return
m_entry
;
}
private
:
DocNode
*
m_parent
;
Q
CString
m_entry
;
Q
String
m_entry
;
};
//-----------------------------------------------------------------------
...
...
@@ -418,17 +420,17 @@ class DocIndexEntry : public DocNode
class
DocCopy
:
public
CompAccept
<
DocCopy
>
,
public
DocNode
{
public
:
DocCopy
(
DocNode
*
parent
,
const
Q
C
String
&
link
)
DocCopy
(
DocNode
*
parent
,
const
QString
&
link
)
:
m_parent
(
parent
),
m_link
(
link
)
{
}
Kind
kind
()
const
{
return
Kind_IndexEntry
;
}
Q
C
String
link
()
const
{
return
m_link
;
}
QString
link
()
const
{
return
m_link
;
}
void
parse
();
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocCopy
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_link
;
Q
String
m_link
;
};
/*! @brief Node representing an auto List */
...
...
@@ -474,9 +476,9 @@ class DocXRefItem : public CompAccept<DocXRefItem>, public DocNode
m_parent
(
parent
),
m_id
(
id
),
m_type
(
t
)
{}
Kind
kind
()
const
{
return
Kind_XRefItem
;
}
Type
type
()
const
{
return
m_type
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
Q
C
String
title
()
const
{
return
m_title
;
}
QString
file
()
const
{
return
m_file
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
title
()
const
{
return
m_title
;
}
void
parse
();
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocXRefItem
>::
accept
(
this
,
v
);
}
...
...
@@ -485,9 +487,9 @@ class DocXRefItem : public CompAccept<DocXRefItem>, public DocNode
DocNode
*
m_parent
;
int
m_id
;
Type
m_type
;
Q
CString
m_file
;
Q
CString
m_anchor
;
Q
CString
m_title
;
Q
String
m_file
;
Q
String
m_anchor
;
Q
String
m_title
;
};
/*! @brief Node representing an image */
...
...
@@ -495,81 +497,81 @@ class DocImage : public CompAccept<DocImage>, public DocNode
{
public
:
enum
Type
{
Html
,
Latex
,
Rtf
};
DocImage
(
DocNode
*
parent
,
const
Q
C
String
&
name
,
Type
t
)
:
DocImage
(
DocNode
*
parent
,
const
QString
&
name
,
Type
t
)
:
m_parent
(
parent
),
m_name
(
name
),
m_type
(
t
)
{}
Kind
kind
()
const
{
return
Kind_Image
;
}
Type
type
()
const
{
return
m_type
;
}
Q
C
String
name
()
const
{
return
m_name
;
}
QString
name
()
const
{
return
m_name
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
bool
hasCaption
()
const
{
return
!
m_children
.
isEmpty
();
}
Q
C
String
width
()
const
{
return
m_width
;
}
Q
C
String
height
()
const
{
return
m_height
;
}
QString
width
()
const
{
return
m_width
;
}
QString
height
()
const
{
return
m_height
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocImage
>::
accept
(
this
,
v
);
}
void
parse
();
private
:
DocNode
*
m_parent
;
Q
C
String
m_name
;
QString
m_name
;
Type
m_type
;
Q
C
String
m_width
;
Q
C
String
m_height
;
QString
m_width
;
QString
m_height
;
};
/*! @brief Node representing a dot file */
class
DocDotFile
:
public
CompAccept
<
DocDotFile
>
,
public
DocNode
{
public
:
DocDotFile
(
DocNode
*
parent
,
const
Q
C
String
&
name
)
:
DocDotFile
(
DocNode
*
parent
,
const
QString
&
name
)
:
m_parent
(
parent
),
m_name
(
name
)
{
}
void
parse
();
Kind
kind
()
const
{
return
Kind_DotFile
;
}
Q
C
String
name
()
const
{
return
m_name
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
QString
name
()
const
{
return
m_name
;
}
QString
file
()
const
{
return
m_file
;
}
bool
hasCaption
()
const
{
return
!
m_children
.
isEmpty
();
}
Q
C
String
width
()
const
{
return
m_width
;
}
Q
C
String
height
()
const
{
return
m_height
;
}
QString
width
()
const
{
return
m_width
;
}
QString
height
()
const
{
return
m_height
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocDotFile
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
Q
C
String
m_name
;
Q
C
String
m_file
;
Q
C
String
m_width
;
Q
C
String
m_height
;
QString
m_name
;
QString
m_file
;
QString
m_width
;
QString
m_height
;
};
/*! @brief Node representing a link to some item */
class
DocLink
:
public
CompAccept
<
DocLink
>
,
public
DocNode
{
public
:
DocLink
(
DocNode
*
parent
,
const
Q
C
String
&
target
);
Q
C
String
parse
(
bool
);
DocLink
(
DocNode
*
parent
,
const
QString
&
target
);
QString
parse
(
bool
);
Kind
kind
()
const
{
return
Kind_Link
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
ref
()
const
{
return
m_ref
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
QString
file
()
const
{
return
m_file
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocLink
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
Q
C
String
m_file
;
Q
C
String
m_ref
;
Q
C
String
m_anchor
;
QString
m_file
;
QString
m_ref
;
QString
m_anchor
;
};
/*! @brief Node representing a reference to some item */
class
DocRef
:
public
CompAccept
<
DocRef
>
,
public
DocNode
{
public
:
DocRef
(
DocNode
*
parent
,
const
Q
C
String
&
target
);
DocRef
(
DocNode
*
parent
,
const
QString
&
target
);
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
ref
()
const
{
return
m_ref
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
Q
C
String
targetTitle
()
const
{
return
m_text
;
}
QString
file
()
const
{
return
m_file
;
}
QString
ref
()
const
{
return
m_ref
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
targetTitle
()
const
{
return
m_text
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
bool
hasLinkText
()
const
{
return
!
m_children
.
isEmpty
();
}
bool
refToAnchor
()
const
{
return
m_refToAnchor
;
}
...
...
@@ -580,37 +582,37 @@ class DocRef : public CompAccept<DocRef>, public DocNode
DocNode
*
m_parent
;
bool
m_refToSection
;
bool
m_refToAnchor
;
Q
CString
m_file
;
Q
CString
m_ref
;
Q
CString
m_anchor
;
Q
CString
m_text
;
Q
String
m_file
;
Q
String
m_ref
;
Q
String
m_anchor
;
Q
String
m_text
;
};
/*! @brief Node representing an internal reference to some item */
class
DocInternalRef
:
public
CompAccept
<
DocInternalRef
>
,
public
DocNode
{
public
:
DocInternalRef
(
DocNode
*
parent
,
const
Q
C
String
&
target
);
DocInternalRef
(
DocNode
*
parent
,
const
QString
&
target
);
void
parse
();
Kind
kind
()
const
{
return
Kind_Ref
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
QString
file
()
const
{
return
m_file
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocInternalRef
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_file
;
Q
CString
m_anchor
;
Q
String
m_file
;
Q
String
m_anchor
;
};
/*! @brief Node representing a Language specific section */
class
DocLanguage
:
public
CompAccept
<
DocLanguage
>
,
public
DocNode
{
public
:
DocLanguage
(
DocNode
*
parent
,
const
Q
C
String
&
id
)
:
DocLanguage
(
DocNode
*
parent
,
const
QString
&
id
)
:
m_parent
(
parent
),
m_id
(
id
)
{}
Q
C
String
id
()
const
{
return
m_id
;
}
QString
id
()
const
{
return
m_id
;
}
int
parse
();
Kind
kind
()
const
{
return
Kind_Language
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
...
...
@@ -618,83 +620,91 @@ class DocLanguage : public CompAccept<DocLanguage>, public DocNode
private
:
DocNode
*
m_parent
;
Q
CString
m_id
;
Q
String
m_id
;
};
/*! @brief Node representing a Hypertext reference */
class
DocHRef
:
public
CompAccept
<
DocHRef
>
,
public
DocNode
{
public
:
DocHRef
(
DocNode
*
parent
,
const
Q
C
String
&
url
)
:
DocHRef
(
DocNode
*
parent
,
const
QString
&
url
)
:
m_parent
(
parent
),
m_url
(
url
)
{}
int
parse
();
Q
C
String
url
()
const
{
return
m_url
;
}
QString
url
()
const
{
return
m_url
;
}
Kind
kind
()
const
{
return
Kind_HRef
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHRef
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
Q
CString
m_url
;
Q
String
m_url
;
};
/*! @brief Node Html heading */
class
DocHtmlHeader
:
public
CompAccept
<
DocHtmlHeader
>
,
public
DocNode
{
public
:
DocHtmlHeader
(
DocNode
*
parent
,
int
level
)
:
m_parent
(
parent
),
m_level
(
level
)
{}
DocHtmlHeader
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
,
int
level
)
:
m_parent
(
parent
),
m_level
(
level
)
,
m_attribs
(
attribs
)
{}
int
parse
();
int
level
()
const
{
return
m_level
;
}
Kind
kind
()
const
{
return
Kind_HtmlHeader
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlHeader
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
int
m_level
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html description item */
class
DocHtmlDescTitle
:
public
CompAccept
<
DocHtmlDescTitle
>
,
public
DocNode
{
public
:
DocHtmlDescTitle
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlDescTitle
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlDescTitle
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlDescTitle
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html description list */
class
DocHtmlDescList
:
public
CompAccept
<
DocHtmlDescList
>
,
public
DocNode
{
public
:
DocHtmlDescList
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlDescList
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlDescList
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlDescList
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a normal section */
class
DocSection
:
public
CompAccept
<
DocSection
>
,
public
DocNode
{
public
:
DocSection
(
DocNode
*
parent
,
int
level
,
const
Q
C
String
&
id
)
:
DocSection
(
DocNode
*
parent
,
int
level
,
const
QString
&
id
)
:
m_parent
(
parent
),
m_level
(
level
),
m_id
(
id
)
{}
Kind
kind
()
const
{
return
Kind_Section
;
}
int
level
()
const
{
return
m_level
;
}
Q
C
String
title
()
const
{
return
m_title
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
Q
C
String
id
()
const
{
return
m_id
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
QString
title
()
const
{
return
m_title
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
QString
id
()
const
{
return
m_id
;
}
QString
file
()
const
{
return
m_file
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocSection
>::
accept
(
this
,
v
);
}
int
parse
();
...
...
@@ -702,31 +712,31 @@ class DocSection : public CompAccept<DocSection>, public DocNode
private
:
DocNode
*
m_parent
;
int
m_level
;
Q
C
String
m_id
;
Q
C
String
m_title
;
Q
C
String
m_anchor
;
Q
C
String
m_file
;
QString
m_id
;
QString
m_title
;
QString
m_anchor
;
QString
m_file
;
};
/*! @brief Node representing a reference to a section */
class
DocSecRefItem
:
public
CompAccept
<
DocSecRefItem
>
,
public
DocNode
{
public
:
DocSecRefItem
(
DocNode
*
parent
,
const
Q
C
String
&
target
)
:
DocSecRefItem
(
DocNode
*
parent
,
const
QString
&
target
)
:
m_parent
(
parent
),
m_target
(
target
)
{}
Kind
kind
()
const
{
return
Kind_SecRefItem
;
}
Q
C
String
target
()
const
{
return
m_target
;
}
Q
C
String
file
()
const
{
return
m_file
;
}
Q
C
String
anchor
()
const
{
return
m_anchor
;
}
QString
target
()
const
{
return
m_target
;
}
QString
file
()
const
{
return
m_file
;
}
QString
anchor
()
const
{
return
m_anchor
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocSecRefItem
>::
accept
(
this
,
v
);
}
void
parse
();
private
:
DocNode
*
m_parent
;
Q
C
String
m_target
;
Q
C
String
m_file
;
Q
C
String
m_anchor
;
QString
m_target
;
QString
m_file
;
QString
m_anchor
;
};
/*! @brief Node representing a list of section references */
...
...
@@ -776,16 +786,19 @@ class DocHtmlList : public CompAccept<DocHtmlList>, public DocNode
{
public
:
enum
Type
{
Unordered
,
Ordered
};
DocHtmlList
(
DocNode
*
parent
,
Type
t
)
:
m_parent
(
parent
),
m_type
(
t
)
{}
DocHtmlList
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
,
Type
t
)
:
m_parent
(
parent
),
m_type
(
t
),
m_attribs
(
attribs
)
{}
Kind
kind
()
const
{
return
Kind_HtmlList
;
}
Type
type
()
const
{
return
m_type
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
int
parse
();
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlList
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
Type
m_type
;
HtmlAttribList
m_attribs
;
};
/*! Node representing a simple section */
...
...
@@ -820,7 +833,7 @@ class DocParamSect : public CompAccept<DocParamSect>, public DocNode
Unknown
,
Param
,
RetVal
,
Exception
};
DocParamSect
(
DocNode
*
parent
,
Type
t
)
:
m_parent
(
parent
),
m_type
(
t
)
{}
int
parse
(
const
Q
C
String
&
cmdName
);
int
parse
(
const
QString
&
cmdName
);
Kind
kind
()
const
{
return
Kind_ParamSect
;
}
Type
type
()
const
{
return
m_type
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
...
...
@@ -847,23 +860,23 @@ class DocPara : public CompAccept<DocPara>, public DocNode
bool
isFirst
()
const
{
return
m_isFirst
;
}
bool
isLast
()
const
{
return
m_isLast
;
}
int
handleCommand
(
const
Q
C
String
&
cmdName
);
int
handleHtmlStartTag
(
const
Q
CString
&
tagName
,
const
QList
<
Option
>
&
tagOption
s
);
int
handleHtmlEndTag
(
const
Q
C
String
&
tagName
);
int
handleCommand
(
const
QString
&
cmdName
);
int
handleHtmlStartTag
(
const
Q
String
&
tagName
,
const
HtmlAttribList
&
tagHtmlAttrib
s
);
int
handleHtmlEndTag
(
const
QString
&
tagName
);
int
handleSimpleSection
(
DocSimpleSect
::
Type
t
);
int
handleXRefItem
(
DocXRefItem
::
Type
t
);
int
handleParamSection
(
const
Q
C
String
&
cmdName
,
DocParamSect
::
Type
t
);
void
handleIncludeOperator
(
const
Q
C
String
&
cmdName
,
DocIncOperator
::
Type
t
);
void
handleImage
(
const
Q
C
String
&
cmdName
);
void
handleDotFile
(
const
Q
C
String
&
cmdName
);
void
handleInclude
(
const
Q
C
String
&
cmdName
,
DocInclude
::
Type
t
);
void
handleLink
(
const
Q
C
String
&
cmdName
,
bool
isJavaLink
);
void
handleRef
(
const
Q
C
String
&
cmdName
);
int
handleParamSection
(
const
QString
&
cmdName
,
DocParamSect
::
Type
t
);
void
handleIncludeOperator
(
const
QString
&
cmdName
,
DocIncOperator
::
Type
t
);
void
handleImage
(
const
QString
&
cmdName
);
void
handleDotFile
(
const
QString
&
cmdName
);
void
handleInclude
(
const
QString
&
cmdName
,
DocInclude
::
Type
t
);
void
handleLink
(
const
QString
&
cmdName
,
bool
isJavaLink
);
void
handleRef
(
const
QString
&
cmdName
);
int
handleLanguageSwitch
();
private
:
DocNode
*
m_parent
;
Q
CString
m_sectionId
;
Q
String
m_sectionId
;
bool
m_isFirst
;
bool
m_isLast
;
};
...
...
@@ -877,7 +890,7 @@ class DocParamList : public DocNode
{
m_paragraph
=
new
DocPara
(
this
);
}
virtual
~
DocParamList
()
{
delete
m_paragraph
;
}
int
parse
(
const
Q
C
String
&
cmdName
);
int
parse
(
const
QString
&
cmdName
);
Kind
kind
()
const
{
return
Kind_ParamList
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
const
QStrList
&
parameters
()
{
return
m_params
;
}
...
...
@@ -890,8 +903,8 @@ class DocParamList : public DocNode
}
private
:
DocNode
*
m_parent
;
DocPara
*
m_paragraph
;
DocNode
*
m_parent
;
DocPara
*
m_paragraph
;
QStrList
m_params
;
DocParamSect
::
Type
m_type
;
};
...
...
@@ -943,28 +956,34 @@ class DocSimpleListItem : public DocNode
class
DocHtmlListItem
:
public
CompAccept
<
DocHtmlListItem
>
,
public
DocNode
{
public
:
DocHtmlListItem
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlListItem
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlListItem
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlListItem
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html description data */
class
DocHtmlDescData
:
public
CompAccept
<
DocHtmlDescData
>
,
public
DocNode
{
public
:
DocHtmlDescData
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlDescData
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlDescData
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlDescData
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
...
...
@@ -972,28 +991,32 @@ class DocHtmlDescData : public CompAccept<DocHtmlDescData>, public DocNode
class
DocHtmlPre
:
public
CompAccept
<
DocHtmlPre
>
,
public
DocNode
{
public
:
DocHtmlPre
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlPre
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlPre
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlPre
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html table cell */
class
DocHtmlCell
:
public
CompAccept
<
DocHtmlCell
>
,
public
DocNode
{
public
:
DocHtmlCell
(
DocNode
*
parent
,
bool
isHeading
)
:
DocHtmlCell
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
,
bool
isHeading
)
:
m_parent
(
parent
),
m_isHeading
(
isHeading
),
m_isFirst
(
FALSE
),
m_isLast
(
FALSE
)
{}
m_isFirst
(
FALSE
),
m_isLast
(
FALSE
)
,
m_attribs
(
attribs
)
{}
int
parse
();
bool
isHeading
()
const
{
return
m_isHeading
;
}
bool
isFirst
()
const
{
return
m_isFirst
;
}
bool
isLast
()
const
{
return
m_isLast
;
}
Kind
kind
()
const
{
return
Kind_HtmlCell
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlCell
>::
accept
(
this
,
v
);
}
void
markFirst
(
bool
v
=
TRUE
)
{
m_isFirst
=
v
;
}
...
...
@@ -1004,47 +1027,57 @@ class DocHtmlCell : public CompAccept<DocHtmlCell>, public DocNode
bool
m_isHeading
;
bool
m_isFirst
;
bool
m_isLast
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html table caption */
class
DocHtmlCaption
:
public
CompAccept
<
DocHtmlCaption
>
,
public
DocNode
{
public
:
DocHtmlCaption
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlCaption
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlCaption
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlCaption
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html table row */
class
DocHtmlRow
:
public
CompAccept
<
DocHtmlRow
>
,
public
DocNode
{
public
:
DocHtmlRow
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{}
DocHtmlRow
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{}
int
parse
();
Kind
kind
()
const
{
return
Kind_HtmlRow
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
uint
numCells
()
const
{
return
m_children
.
count
();
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHtmlRow
>::
accept
(
this
,
v
);
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
};
/*! @brief Node representing a Html table */
class
DocHtmlTable
:
public
CompAccept
<
DocHtmlTable
>
,
public
DocNode
{
public
:
DocHtmlTable
(
DocNode
*
parent
)
:
m_parent
(
parent
)
{
m_caption
=
0
;
}
DocHtmlTable
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
)
:
m_parent
(
parent
),
m_attribs
(
attribs
)
{
m_caption
=
0
;
}
~
DocHtmlTable
()
{
delete
m_caption
;
}
Kind
kind
()
const
{
return
Kind_HtmlTable
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
uint
numRows
()
const
{
return
m_children
.
count
();
}
bool
hasCaption
()
{
return
m_caption
!=
0
;
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
int
parse
();
uint
numCols
()
const
{
...
...
@@ -1071,6 +1104,7 @@ class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
private
:
DocNode
*
m_parent
;
DocHtmlCaption
*
m_caption
;
HtmlAttribList
m_attribs
;
};
...
...
src/doctokenizer.h
View file @
5ed55684
...
...
@@ -19,8 +19,9 @@
#ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H
#include <q
c
string.h>
#include <qstring.h>
#include <qlist.h>
#include "htmlattrib.h"
enum
Tokens
{
...
...
@@ -53,24 +54,16 @@ enum Tokens
RetVal_SwitchLang
=
0x1000E
};
struct
Option
{
QCString
name
;
QCString
value
;
};
struct
TokenInfo
{
TokenInfo
()
{
options
.
setAutoDelete
(
TRUE
);
}
// unknown token
char
unknownChar
;
// command token
Q
C
String
name
;
QString
name
;
// command text (RCS tag)
Q
C
String
text
;
QString
text
;
// comment blocks
...
...
@@ -79,23 +72,23 @@ struct TokenInfo
int
indent
;
// sections
Q
C
String
sectionId
;
QString
sectionId
;
// simple section
Q
C
String
simpleSectName
;
QString
simpleSectName
;
// verbatim fragment
Q
C
String
verb
;
QString
verb
;
// xrefitem
int
id
;
// html tag
QList
<
Option
>
option
s
;
HtmlAttribList
attrib
s
;
bool
endTag
;
// whitespace
Q
C
String
chars
;
QString
chars
;
};
// globals
...
...
src/doctokenizer.l
View file @
5ed55684
...
...
@@ -19,7 +19,7 @@
%{
#include <qfile.h>
#include <q
c
string.h>
#include <qstring.h>
#include <qstack.h>
#include <qdict.h>
...
...
@@ -36,7 +36,7 @@ static int g_commentState;
TokenInfo *g_token = 0;
static int g_inputPos = 0;
static const char *g_inputString;
static Q
C
String g_fileName;
static QString g_fileName;
struct DocLexerContext
{
...
...
@@ -122,69 +122,68 @@ static int computeIndent(const char *str,int length)
return indent;
}
/*! converts input string \a opt into a list of
Option
s. Each
*
option is a name, value pair. The result is stored in g_token->option
s
/*! converts input string \a opt into a list of
Html Attribute
s. Each
*
attribute is a name, value pair. The result is stored in g_token->attrib
s
*/
static void parse
Options(const QCString &op
t)
static void parse
HtmlAttribs(const char *at
t)
{
//printf("parseOptions(%s)\n",opt.data());
QCString options=opt;
g_token->options.clear();
int len = options.length();
//printf("parseHtmlAttribs(%s)\n",opt.data());
QCString attribs=att;
int len = attribs.length();
char c;
int i=0,startName,endName,start
Option,endOption
;
int i=0,startName,endName,start
Attrib,endAttrib
;
while (i<len)
{
c=
option
s.at(i);
c=
attrib
s.at(i);
// skip spaces
while (i<len && c==' ') { c=
option
s.at(++i); }
while (i<len && c==' ') { c=
attrib
s.at(++i); }
startName=i;
// search for end of name
while (i<len && c!=' ' && c!='=') { c=
option
s.at(++i); }
while (i<len && c!=' ' && c!='=') { c=
attrib
s.at(++i); }
endName=i;
Option *opt = new Option
;
opt
->name = option
s.mid(startName,endName-startName).lower();
HtmlAttrib opt
;
opt
.name = attrib
s.mid(startName,endName-startName).lower();
// skip spaces
while (i<len && c==' ') { c=
option
s.at(++i); }
if (
option
s.at(i)=='=') // option has value
while (i<len && c==' ') { c=
attrib
s.at(++i); }
if (
attrib
s.at(i)=='=') // option has value
{
i++;
// skip spaces
while (i<len && c==' ') { c=
option
s.at(++i); }
if (
option
s.at(i)=='\'') // option '...'
while (i<len && c==' ') { c=
attrib
s.at(++i); }
if (
attrib
s.at(i)=='\'') // option '...'
{
i++;
start
Option
=i;
start
Attrib
=i;
// search for matching quote
while (i<len && c!='\'') { c=
option
s.at(++i); }
end
Option
=i;
while (i<len && c!='\'') { c=
attrib
s.at(++i); }
end
Attrib
=i;
i++;
}
else if (
option
s.at(i)=='"') // option "..."
else if (
attrib
s.at(i)=='"') // option "..."
{
i++;
start
Option
=i;
start
Attrib
=i;
// search for matching quote
while (i<len && c!='"') { c=
option
s.at(++i); }
end
Option
=i;
while (i<len && c!='"') { c=
attrib
s.at(++i); }
end
Attrib
=i;
i++;
}
else // value without any quotes
{
start
Option
=i;
start
Attrib
=i;
// search for separator
while (i<len && c!=' ') { c=
option
s.at(++i); }
end
Option
=i;
while (i<len && c!=' ') { c=
attrib
s.at(++i); }
end
Attrib
=i;
i++;
}
opt
->value = options.mid(startOption,endOption-startOption
);
opt
.value = attribs.mid(startAttrib,endAttrib-startAttrib
);
}
else // start next option
{
}
//printf("=====> Adding option name=<%s> value=<%s>\n",
// opt->name.data(),opt->value.data());
g_token->
options.append(
opt);
g_token->
attribs.append(&
opt);
}
}
...
...
@@ -241,7 +240,7 @@ WORD1 [^ \t\n\r\\@<>&$#,.]+
WORD2 "."|","
WORD1NQ [^ \t\n\r\\@<>&$#,."]+
WORD2NQ "."|","
HTMLTAG "<"(("/")?){ID}({
BLANK
}+{ATTRIB})*">"
HTMLTAG "<"(("/")?){ID}({
WS
}+{ATTRIB})*">"
%option noyywrap
%option yylineno
...
...
@@ -269,14 +268,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
%%
<St_Para>\r /* skip carriage return */
<St_Para>^{LISTITEM} { /* list item */
Q
C
String text=yytext;
QString text=yytext;
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
g_token->indent = computeIndent(yytext,dashPos);
return TK_LISTITEM;
}
<St_Para>{BLANK}*\n{LISTITEM} { /* list item on next line */
Q
C
String text=yytext;
QString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#';
...
...
@@ -284,12 +283,12 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_LISTITEM;
}
<St_Para>^{ENDLIST} { /* end list */
int dotPos = Q
C
String(yytext).findRev('.');
int dotPos = QString(yytext).findRev('.');
g_token->indent = computeIndent(yytext,dotPos);
return TK_ENDLIST;
}
<St_Para>{BLANK}*\n{ENDLIST} { /* end list on next line */
Q
C
String text=yytext;
QString text=yytext;
text=text.right(text.length()-text.find('\n')-1);
int dotPos = text.findRev('.');
g_token->indent = computeIndent(text,dotPos);
...
...
@@ -302,7 +301,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
<St_Para>{SPCMD3} {
g_token->name = "form";
bool ok;
g_token->id = Q
C
String(yytext).right(yyleng-6).toInt(&ok);
g_token->id = QString(yytext).right(yyleng-6).toInt(&ok);
ASSERT(ok);
return TK_COMMAND;
}
...
...
@@ -320,7 +319,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_URL;
}
<St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */
Q
C
String tagName(yytext+1);
QString tagName(yytext+1);
int i=tagName.find(':');
g_token->name = tagName.left(i);
g_token->text = tagName.mid(i+1,tagName.length()-i-2);
...
...
@@ -334,13 +333,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
}
<St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext;
g_token->attribs.clear();
int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++;
int
op
tSep = g_token->name.find(' ');
if (
op
tSep!=-1) // tag has one or more options
int
at
tSep = g_token->name.find(' ');
if (
at
tSep!=-1) // tag has one or more options
{
parse
Options(g_token->name.mid(optSep+1,g_token->name.length()-op
tSep-2));
g_token->name=g_token->name.mid(startNamePos,
op
tSep-1).lower();
parse
HtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-at
tSep-2));
g_token->name=g_token->name.mid(startNamePos,
at
tSep-1).lower();
}
else // tag without options, strip brackets
{
...
...
@@ -539,7 +539,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return 0;
}
<St_XRefItem>[0-9]+\n {
Q
C
String numStr=yytext;
QString numStr=yytext;
numStr=numStr.left(yyleng-1);
g_token->id=numStr.toInt();
return RetVal_OK;
...
...
@@ -567,7 +567,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_WORD;
}
<St_File>"\""[^\n\"]+"\"" {
Q
C
String text=yytext;
QString text=yytext;
g_token->name = text.mid(1,text.length()-2);
return TK_WORD;
}
...
...
@@ -615,25 +615,25 @@ void doctokenizerYYsetStateTitle()
void doctokenizerYYsetStateCode()
{
g_token->verb
.resize(0)
;
g_token->verb
=""
;
BEGIN(St_Code);
}
void doctokenizerYYsetStateHtmlOnly()
{
g_token->verb
.resize(0)
;
g_token->verb
=""
;
BEGIN(St_HtmlOnly);
}
void doctokenizerYYsetStateLatexOnly()
{
g_token->verb
.resize(0)
;
g_token->verb
=""
;
BEGIN(St_LatexOnly);
}
void doctokenizerYYsetStateVerbatim()
{
g_token->verb
.resize(0)
;
g_token->verb
=""
;
BEGIN(St_Verbatim);
}
...
...
src/docvisitor.h
View file @
5ed55684
...
...
@@ -19,6 +19,7 @@
#ifndef _DOCVISITOR_H
#define _DOCVISITOR_H
// forward declarations
class
DocWord
;
class
DocWhiteSpace
;
class
DocAutoList
;
...
...
@@ -73,7 +74,9 @@ class DocCopy;
class
DocVisitor
{
public
:
/*! @name Visitor functions for leaf nodes */
/*! @name Visitor functions for leaf nodes
* @{
*/
virtual
void
visit
(
DocWord
*
)
=
0
;
virtual
void
visit
(
DocWhiteSpace
*
)
=
0
;
virtual
void
visit
(
DocSymbol
*
)
=
0
;
...
...
@@ -88,8 +91,11 @@ class DocVisitor
virtual
void
visit
(
DocFormula
*
)
=
0
;
virtual
void
visit
(
DocLinkedWord
*
)
=
0
;
virtual
void
visit
(
DocIndexEntry
*
)
=
0
;
/*! @} */
/*! @name Visitor functions for internal nodes */
/*! @name Visitor functions for internal nodes
* @{
*/
virtual
void
visitPre
(
DocAutoList
*
)
=
0
;
virtual
void
visitPost
(
DocAutoList
*
)
=
0
;
virtual
void
visitPre
(
DocAutoListItem
*
)
=
0
;
...
...
@@ -158,6 +164,7 @@ class DocVisitor
virtual
void
visitPost
(
DocInternalRef
*
)
=
0
;
virtual
void
visitPre
(
DocCopy
*
)
=
0
;
virtual
void
visitPost
(
DocCopy
*
)
=
0
;
/*! @} */
};
#endif
src/doxygen.cpp
View file @
5ed55684
...
...
@@ -1899,7 +1899,7 @@ static void buildFunctionList(Entry *root)
{
Debug
::
print
(
Debug
::
Functions
,
0
,
"FUNCTION_SEC:
\n
"
" `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d
\n
"
,
" `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d
docFile=%s
\n
"
,
root
->
type
.
data
(),
root
->
parent
->
name
.
data
(),
root
->
name
.
data
(),
...
...
@@ -1913,7 +1913,8 @@ static void buildFunctionList(Entry *root)
//root->mtArgList ? (int)root->mtArgList->count() : -1,
root
->
mGrpId
,
root
->
memSpec
,
root
->
proto
root
->
proto
,
root
->
docFile
.
data
()
);
bool
isFriend
=
root
->
type
.
find
(
"friend "
)
!=-
1
;
...
...
src/filedef.cpp
View file @
5ed55684
...
...
@@ -186,6 +186,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
{
writeDetailedDocumentation
(
ol
);
ol
.
newParagraph
();
}
else
if
(
briefDescription
())
{
...
...
src/groupdef.cpp
View file @
5ed55684
...
...
@@ -392,6 +392,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
{
writeDetailedDocumentation
(
ol
);
ol
.
newParagraph
();
}
else
if
(
!
briefDescription
().
isEmpty
())
{
...
...
src/htmlattrib.h
0 → 100644
View file @
5ed55684
/******************************************************************************
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
*/
#ifndef _HTMLATTRIB_H
#define _HTMLATTRIB_H
/*! A Html option. A name, value pair */
struct
HtmlAttrib
{
QString
name
;
QString
value
;
};
/*! @brief A list of Html attributes.
*
* The Html attributes are deeply copied into the list.
*/
class
HtmlAttribList
:
public
QList
<
HtmlAttrib
>
{
public
:
HtmlAttribList
()
:
QList
<
HtmlAttrib
>
()
{
setAutoDelete
(
TRUE
);
}
~
HtmlAttribList
()
{
clear
();
}
HtmlAttribList
(
const
HtmlAttribList
&
l
)
:
QList
<
HtmlAttrib
>
()
{
operator
=
(
l
);
}
HtmlAttribList
&
operator
=
(
const
HtmlAttribList
&
l
)
{
clear
();
QList
<
HtmlAttrib
>::
operator
=
(
l
);
return
*
this
;
}
private
:
QCollection
::
Item
newItem
(
QCollection
::
Item
d
)
{
return
(
QCollection
::
Item
)
new
HtmlAttrib
(
*
(
HtmlAttrib
*
)
d
);
}
void
deleteItem
(
QCollection
::
Item
d
)
{
delete
(
HtmlAttrib
*
)
d
;
}
};
/*! @brief Html attribute list iterator */
class
HtmlAttribListIterator
:
public
QListIterator
<
HtmlAttrib
>
{
public
:
HtmlAttribListIterator
(
const
HtmlAttribList
&
l
)
:
QListIterator
<
HtmlAttrib
>
(
l
)
{}
};
#endif
src/htmldocvisitor.cpp
View file @
5ed55684
...
...
@@ -25,6 +25,24 @@
#include "dot.h"
#include "message.h"
static
QString
htmlAttribsToString
(
const
HtmlAttribList
&
attribs
)
{
QString
result
;
HtmlAttribListIterator
li
(
attribs
);
HtmlAttrib
*
att
;
for
(
li
.
toFirst
();(
att
=
li
.
current
());
++
li
)
{
printf
(
"Found attion name=`%s' value=`%s'
\n
"
,
att
->
name
.
data
(),
att
->
value
.
data
());
result
+=
" "
;
result
+=
att
->
name
;
if
(
!
att
->
value
.
isEmpty
())
result
+=
"=
\"
"
+
att
->
value
+
"
\"
"
;
}
return
result
;
}
//-------------------------------------------------------------------------
HtmlDocVisitor
::
HtmlDocVisitor
(
QTextStream
&
t
,
BaseCodeDocInterface
&
ci
)
:
m_t
(
t
),
m_ci
(
ci
),
m_insidePre
(
FALSE
),
m_hide
(
FALSE
)
{
...
...
@@ -147,7 +165,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
{
case
DocVerbatim
:
:
Code
:
// fall though
m_t
<<
"<div class=
\"
fragment
\"
><pre>"
;
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"</pre></div>"
;
break
;
case
DocVerbatim
:
:
Verbatim
:
...
...
@@ -177,7 +195,7 @@ void HtmlDocVisitor::visit(DocInclude *inc)
{
case
DocInclude
:
:
Include
:
m_t
<<
"<div class=
\"
fragment
\"
><pre>"
;
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"</pre></div>"
;
break
;
case
DocInclude
:
:
DontInclude
:
...
...
@@ -204,7 +222,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
}
if
(
op
->
type
()
!=
DocIncOperator
::
Skip
)
{
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
()
.
latin1
()
,
FALSE
,
0
);
}
if
(
op
->
isLast
())
{
...
...
@@ -395,9 +413,9 @@ void HtmlDocVisitor::visitPost(DocSection *)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlList
*
s
)
{
if
(
s
->
type
()
==
DocHtmlList
::
Ordered
)
m_t
<<
"<ol>
\n
"
;
m_t
<<
"<ol
"
<<
htmlAttribsToString
(
s
->
attribs
())
<<
"
>
\n
"
;
else
m_t
<<
"<ul>
\n
"
;
m_t
<<
"<ul
"
<<
htmlAttribsToString
(
s
->
attribs
())
<<
"
>
\n
"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlList
*
s
)
...
...
@@ -408,9 +426,9 @@ void HtmlDocVisitor::visitPost(DocHtmlList *s)
m_t
<<
"</ul>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlListItem
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlListItem
*
i
)
{
m_t
<<
"<li>
\n
"
;
m_t
<<
"<li
"
<<
htmlAttribsToString
(
i
->
attribs
())
<<
"
>
\n
"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlListItem
*
)
...
...
@@ -418,9 +436,9 @@ void HtmlDocVisitor::visitPost(DocHtmlListItem *)
m_t
<<
"</li>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlPre
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlPre
*
p
)
{
m_t
<<
"<pre>
\n
"
;
m_t
<<
"<pre
"
<<
htmlAttribsToString
(
p
->
attribs
())
<<
"
>
\n
"
;
m_insidePre
=
TRUE
;
}
...
...
@@ -430,9 +448,9 @@ void HtmlDocVisitor::visitPost(DocHtmlPre *)
m_t
<<
"</pre>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescList
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescList
*
dl
)
{
m_t
<<
"<dl>
\n
"
;
m_t
<<
"<dl
"
<<
htmlAttribsToString
(
dl
->
attribs
())
<<
"
>
\n
"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlDescList
*
)
...
...
@@ -440,9 +458,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescList *)
m_t
<<
"</dl>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescTitle
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescTitle
*
dt
)
{
m_t
<<
"<dt>"
;
m_t
<<
"<dt
"
<<
htmlAttribsToString
(
dt
->
attribs
())
<<
"
>"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlDescTitle
*
)
...
...
@@ -450,9 +468,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescTitle *)
m_t
<<
"</dt>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescData
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlDescData
*
dd
)
{
m_t
<<
"<dd>"
;
m_t
<<
"<dd
"
<<
htmlAttribsToString
(
dd
->
attribs
())
<<
"
>"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlDescData
*
)
...
...
@@ -460,9 +478,25 @@ void HtmlDocVisitor::visitPost(DocHtmlDescData *)
m_t
<<
"</dd>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlTable
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlTable
*
t
)
{
m_t
<<
"<table border=
\"
1
\"
cellspacing=
\"
3
\"
cellpadding=
\"
3
\"
>
\n
"
;
bool
hasBorder
=
FALSE
;
bool
hasCellSpacing
=
FALSE
;
bool
hasCellPadding
=
FALSE
;
HtmlAttribListIterator
li
(
t
->
attribs
());
HtmlAttrib
*
att
;
for
(
li
.
toFirst
();(
att
=
li
.
current
());
++
li
)
{
if
(
att
->
name
==
"border"
)
hasBorder
=
TRUE
;
else
if
(
att
->
name
==
"cellspacing"
)
hasCellSpacing
=
TRUE
;
else
if
(
att
->
name
==
"cellpadding"
)
hasCellPadding
=
TRUE
;
}
m_t
<<
"<table"
<<
htmlAttribsToString
(
t
->
attribs
());
if
(
!
hasBorder
)
m_t
<<
" border=
\"
1
\"
"
;
if
(
!
hasCellSpacing
)
m_t
<<
" cellspacing=
\"
3
\"
"
;
if
(
!
hasCellPadding
)
m_t
<<
" cellpadding=
\"
3
\"
"
;
m_t
<<
">
\n
"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlTable
*
)
...
...
@@ -470,9 +504,9 @@ void HtmlDocVisitor::visitPost(DocHtmlTable *)
m_t
<<
"</table>
\n
"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlRow
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlRow
*
tr
)
{
m_t
<<
"<tr>
\n
"
;
m_t
<<
"<tr
"
<<
htmlAttribsToString
(
tr
->
attribs
())
<<
"
>
\n
"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlRow
*
)
...
...
@@ -482,7 +516,14 @@ void HtmlDocVisitor::visitPost(DocHtmlRow *)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlCell
*
c
)
{
if
(
c
->
isHeading
())
m_t
<<
"<th>"
;
else
m_t
<<
"<td>"
;
if
(
c
->
isHeading
())
{
m_t
<<
"<th"
<<
htmlAttribsToString
(
c
->
attribs
())
<<
">"
;
}
else
{
m_t
<<
"<td"
<<
htmlAttribsToString
(
c
->
attribs
())
<<
">"
;
}
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlCell
*
c
)
...
...
@@ -490,9 +531,18 @@ void HtmlDocVisitor::visitPost(DocHtmlCell *c)
if
(
c
->
isHeading
())
m_t
<<
"</th>"
;
else
m_t
<<
"</td>"
;
}
void
HtmlDocVisitor
::
visitPre
(
DocHtmlCaption
*
)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlCaption
*
c
)
{
m_t
<<
"<caption align=
\"
bottom
\"
>"
;
bool
hasAlign
=
FALSE
;
HtmlAttribListIterator
li
(
c
->
attribs
());
HtmlAttrib
*
att
;
for
(
li
.
toFirst
();(
att
=
li
.
current
());
++
li
)
{
if
(
att
->
name
==
"align"
)
hasAlign
=
TRUE
;
}
m_t
<<
"<caption"
<<
htmlAttribsToString
(
c
->
attribs
());
if
(
!
hasAlign
)
m_t
<<
" align=
\"
bottom
\"
"
;
m_t
<<
">"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlCaption
*
)
...
...
@@ -523,7 +573,8 @@ void HtmlDocVisitor::visitPost(DocHRef *)
void
HtmlDocVisitor
::
visitPre
(
DocHtmlHeader
*
header
)
{
m_t
<<
"<h"
<<
header
->
level
()
<<
">"
;
m_t
<<
"<h"
<<
header
->
level
()
<<
htmlAttribsToString
(
header
->
attribs
())
<<
">"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHtmlHeader
*
header
)
...
...
@@ -535,7 +586,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
{
if
(
img
->
type
()
==
DocImage
::
Html
)
{
Q
C
String
baseName
=
img
->
name
();
QString
baseName
=
img
->
name
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
||
(
i
=
baseName
.
findRev
(
'\\'
))
!=-
1
)
{
...
...
@@ -573,13 +624,13 @@ void HtmlDocVisitor::visitPost(DocImage *img)
void
HtmlDocVisitor
::
visitPre
(
DocDotFile
*
df
)
{
Q
C
String
baseName
=
df
->
file
();
QString
baseName
=
df
->
file
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
)
{
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
-
1
);
}
Q
C
String
outDir
=
Config_getString
(
"HTML_OUTPUT"
);
QString
outDir
=
Config_getString
(
"HTML_OUTPUT"
);
writeDotGraphFromFile
(
df
->
file
(),
outDir
,
baseName
,
BITMAP
);
m_t
<<
"<div align=
\"
center
\"
>"
<<
endl
;
m_t
<<
"<img src=
\"
"
<<
baseName
<<
"."
...
...
@@ -624,8 +675,9 @@ void HtmlDocVisitor::visitPost(DocRef *)
void
HtmlDocVisitor
::
visitPre
(
DocSecRefItem
*
ref
)
{
QCString
refName
=
ref
->
file
();
if
(
refName
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
!=
Doxygen
::
htmlFileExtension
)
QString
refName
=
ref
->
file
();
if
(
refName
.
right
(
Doxygen
::
htmlFileExtension
.
length
())
!=
QString
(
Doxygen
::
htmlFileExtension
))
{
refName
+=
Doxygen
::
htmlFileExtension
;
}
...
...
@@ -752,7 +804,7 @@ void HtmlDocVisitor::filter(const char *str)
}
}
void
HtmlDocVisitor
::
startLink
(
const
Q
CString
&
ref
,
const
QCString
&
file
,
const
QC
String
&
anchor
)
void
HtmlDocVisitor
::
startLink
(
const
Q
String
&
ref
,
const
QString
&
file
,
const
Q
String
&
anchor
)
{
QCString
*
dest
;
if
(
!
ref
.
isEmpty
())
// link to entity imported via tag file
...
...
src/htmldocvisitor.h
View file @
5ed55684
...
...
@@ -23,7 +23,7 @@
class
QTextStream
;
class
BaseCodeDocInterface
;
class
Q
C
String
;
class
QString
;
/*! @brief Concrete visitor implementation for HTML output. */
class
HtmlDocVisitor
:
public
DocVisitor
...
...
@@ -130,8 +130,8 @@ class HtmlDocVisitor : public DocVisitor
//--------------------------------------
void
filter
(
const
char
*
str
);
void
startLink
(
const
Q
CString
&
ref
,
const
QC
String
&
file
,
const
Q
C
String
&
anchor
);
void
startLink
(
const
Q
String
&
ref
,
const
Q
String
&
file
,
const
QString
&
anchor
);
void
endLink
();
//--------------------------------------
...
...
src/htmlgen.cpp
View file @
5ed55684
...
...
@@ -336,8 +336,11 @@ void HtmlGenerator::writeStyleInfo(int part)
}
else
{
// convert style sheet to string
QCString
fileStr
=
fileToString
(
cssname
);
// write the string into the output dir
startPlainFile
(
cssfi
.
fileName
());
t
<<
file
ToString
(
cssname
)
;
t
<<
file
Str
;
endPlainFile
();
}
}
...
...
src/latexdocvisitor.cpp
View file @
5ed55684
...
...
@@ -26,9 +26,9 @@
#include "util.h"
#include "message.h"
static
Q
C
String
escapeLabelName
(
const
char
*
s
)
static
QString
escapeLabelName
(
const
char
*
s
)
{
Q
C
String
result
;
QString
result
;
const
char
*
p
=
s
;
char
c
;
while
((
c
=*
p
++
))
...
...
@@ -44,9 +44,9 @@ static QCString escapeLabelName(const char *s)
return
result
;
}
Q
C
String
LatexDocVisitor
::
escapeMakeIndexChars
(
const
char
*
s
)
QString
LatexDocVisitor
::
escapeMakeIndexChars
(
const
char
*
s
)
{
Q
C
String
result
;
QString
result
;
const
char
*
p
=
s
;
char
str
[
2
];
str
[
1
]
=
0
;
char
c
;
...
...
@@ -211,7 +211,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
{
case
DocVerbatim
:
:
Code
:
// fall though
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocVerbatim
:
:
Verbatim
:
...
...
@@ -246,7 +246,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
{
case
DocInclude
:
:
Include
:
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocInclude
:
:
DontInclude
:
...
...
@@ -272,7 +272,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
}
if
(
op
->
type
()
!=
DocIncOperator
::
Skip
)
{
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
()
.
latin1
()
,
FALSE
,
0
);
}
if
(
op
->
isLast
())
{
...
...
@@ -648,7 +648,7 @@ void LatexDocVisitor::visitPre(DocImage *img)
{
m_t
<<
"
\\
mbox{"
;
}
Q
C
String
gfxName
=
img
->
name
();
QString
gfxName
=
img
->
name
();
if
(
gfxName
.
right
(
4
)
==
".eps"
||
gfxName
.
right
(
4
)
==
".pdf"
)
{
gfxName
=
gfxName
.
left
(
gfxName
.
length
()
-
4
);
...
...
@@ -693,7 +693,7 @@ void LatexDocVisitor::visitPost(DocImage *img)
void
LatexDocVisitor
::
visitPre
(
DocDotFile
*
df
)
{
Q
C
String
baseName
=
df
->
file
();
QString
baseName
=
df
->
file
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
)
{
...
...
@@ -703,7 +703,7 @@ void LatexDocVisitor::visitPre(DocDotFile *df)
{
baseName
=
baseName
.
left
(
baseName
.
length
()
-
4
);
}
Q
C
String
outDir
=
Config_getString
(
"LATEX_OUTPUT"
);
QString
outDir
=
Config_getString
(
"LATEX_OUTPUT"
);
writeDotGraphFromFile
(
df
->
file
(),
outDir
,
baseName
,
EPS
);
if
(
df
->
hasCaption
())
{
...
...
@@ -883,7 +883,7 @@ void LatexDocVisitor::filter(const char *str)
filterLatexString
(
m_t
,
str
,
FALSE
,
m_insidePre
);
}
void
LatexDocVisitor
::
startLink
(
const
Q
CString
&
ref
,
const
QCString
&
file
,
const
QC
String
&
anchor
)
void
LatexDocVisitor
::
startLink
(
const
Q
String
&
ref
,
const
QString
&
file
,
const
Q
String
&
anchor
)
{
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
...
...
src/latexdocvisitor.h
View file @
5ed55684
...
...
@@ -23,7 +23,7 @@
class
QTextStream
;
class
BaseCodeDocInterface
;
class
Q
C
String
;
class
QString
;
/*! @brief Concrete visitor implementation for LaTeX output. */
class
LatexDocVisitor
:
public
DocVisitor
...
...
@@ -130,10 +130,10 @@ class LatexDocVisitor : public DocVisitor
//--------------------------------------
void
filter
(
const
char
*
str
);
void
startLink
(
const
Q
CString
&
ref
,
const
QC
String
&
file
,
const
Q
C
String
&
anchor
);
void
startLink
(
const
Q
String
&
ref
,
const
Q
String
&
file
,
const
QString
&
anchor
);
void
endLink
();
Q
C
String
escapeMakeIndexChars
(
const
char
*
s
);
QString
escapeMakeIndexChars
(
const
char
*
s
);
//--------------------------------------
// state variables
...
...
src/libdoxygen.pro.in
View file @
5ed55684
...
...
@@ -45,6 +45,7 @@ HEADERS = bufstr.h \
formula.h \
ftvhelp.h \
groupdef.h \
htmlattrib.h \
htmldocvisitor.h \
htmlgen.h \
htmlhelp.h \
...
...
@@ -55,6 +56,7 @@ HEADERS = bufstr.h \
latexdocvisitor.h \
latexgen.h \
logos.h \
mandocvisitor.h \
mangen.h \
memberdef.h \
membergroup.h \
...
...
@@ -152,6 +154,7 @@ SOURCES = ce_lex.cpp \
latexdocvisitor.cpp \
latexgen.cpp \
logos.cpp \
mandocvisitor.cpp \
mangen.cpp \
memberdef.cpp \
membergroup.cpp \
...
...
src/mandocvisitor.cpp
0 → 100644
View file @
5ed55684
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include "mandocvisitor.h"
#include "docparser.h"
#include "language.h"
#include "doxygen.h"
#include "outputgen.h"
#include "code.h"
#include "dot.h"
#include "util.h"
#include "message.h"
ManDocVisitor
::
ManDocVisitor
(
QTextStream
&
t
,
BaseCodeDocInterface
&
ci
)
:
m_t
(
t
),
m_ci
(
ci
),
m_insidePre
(
FALSE
),
m_hide
(
FALSE
)
{
}
//--------------------------------------
// visitor functions for leaf nodes
//--------------------------------------
void
ManDocVisitor
::
visit
(
DocWord
*
w
)
{
if
(
m_hide
)
return
;
filter
(
w
->
word
());
}
void
ManDocVisitor
::
visit
(
DocLinkedWord
*
w
)
{
if
(
m_hide
)
return
;
m_t
<<
"
\\
fB"
;
filter
(
w
->
word
());
m_t
<<
"
\\
fP"
;
}
void
ManDocVisitor
::
visit
(
DocWhiteSpace
*
w
)
{
if
(
m_hide
)
return
;
if
(
m_insidePre
)
{
m_t
<<
w
->
chars
();
}
else
{
m_t
<<
" "
;
}
}
void
ManDocVisitor
::
visit
(
DocSymbol
*
s
)
{
if
(
m_hide
)
return
;
switch
(
s
->
symbol
())
{
case
DocSymbol
:
:
BSlash
:
m_t
<<
"$
\\
backslash$"
;
break
;
case
DocSymbol
:
:
At
:
m_t
<<
"@"
;
break
;
case
DocSymbol
:
:
Less
:
m_t
<<
"$<$"
;
break
;
case
DocSymbol
:
:
Greater
:
m_t
<<
"$>$"
;
break
;
case
DocSymbol
:
:
Amp
:
m_t
<<
"
\\
&"
;
break
;
case
DocSymbol
:
:
Dollar
:
m_t
<<
"
\\
$"
;
break
;
case
DocSymbol
:
:
Hash
:
m_t
<<
"
\\
#"
;
break
;
case
DocSymbol
:
:
Percent
:
m_t
<<
"
\\
%"
;
break
;
case
DocSymbol
:
:
Copy
:
m_t
<<
"
\\
copyright"
;
break
;
case
DocSymbol
:
:
Apos
:
m_t
<<
"'"
;
break
;
case
DocSymbol
:
:
Quot
:
m_t
<<
"''"
;
break
;
case
DocSymbol
:
:
Uml
:
if
(
s
->
letter
()
==
'i'
)
m_t
<<
"
\\\"
{
\\
i}"
;
else
m_t
<<
"
\\\"
{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Acute
:
if
(
s
->
letter
()
==
'i'
)
m_t
<<
"
\\
'{
\\
i}"
;
else
m_t
<<
"
\\
'{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Grave
:
if
(
s
->
letter
()
==
'i'
)
m_t
<<
"
\\
`{
\\
i}"
;
else
m_t
<<
"
\\
`{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Circ
:
if
(
s
->
letter
()
==
'i'
)
m_t
<<
"
\\
^{
\\
i}"
;
else
m_t
<<
"
\\
^{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Tilde
:
m_t
<<
"
\\
~{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Szlig
:
m_t
<<
"
\"
s"
;
break
;
case
DocSymbol
:
:
Cedil
:
m_t
<<
"
\\
c{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Ring
:
m_t
<<
"
\\
"
<<
s
->
letter
()
<<
s
->
letter
();
break
;
case
DocSymbol
:
:
Nbsp
:
m_t
<<
"
\\
"
;
break
;
default
:
err
(
"Error: unknown symbol found
\n
"
);
}
}
void
ManDocVisitor
::
visit
(
DocURL
*
u
)
{
if
(
m_hide
)
return
;
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
href{"
<<
u
->
url
()
<<
"}"
;
}
m_t
<<
"{
\\
tt "
<<
u
->
url
()
<<
"}"
;
}
void
ManDocVisitor
::
visit
(
DocLineBreak
*
)
{
if
(
m_hide
)
return
;
m_t
<<
"
\\
par
\n
"
;
}
void
ManDocVisitor
::
visit
(
DocHorRuler
*
)
{
if
(
m_hide
)
return
;
m_t
<<
"
\n\n
"
;
}
void
ManDocVisitor
::
visit
(
DocStyleChange
*
s
)
{
if
(
m_hide
)
return
;
switch
(
s
->
style
())
{
case
DocStyleChange
:
:
Bold
:
if
(
s
->
enable
())
m_t
<<
"{
\\
bf "
;
else
m_t
<<
"} "
;
break
;
case
DocStyleChange
:
:
Italic
:
if
(
s
->
enable
())
m_t
<<
"{
\\
em "
;
else
m_t
<<
"} "
;
break
;
case
DocStyleChange
:
:
Code
:
if
(
s
->
enable
())
m_t
<<
"{
\\
tt "
;
else
m_t
<<
"} "
;
break
;
case
DocStyleChange
:
:
Subscript
:
if
(
s
->
enable
())
m_t
<<
"$_{
\\
mbox{"
;
else
m_t
<<
"}}$ "
;
break
;
case
DocStyleChange
:
:
Superscript
:
if
(
s
->
enable
())
m_t
<<
"$^{
\\
mbox{"
;
else
m_t
<<
"}}$ "
;
break
;
case
DocStyleChange
:
:
Center
:
if
(
s
->
enable
())
m_t
<<
"
\\
begin{center}"
;
else
m_t
<<
"
\\
end{center} "
;
break
;
case
DocStyleChange
:
:
Small
:
if
(
s
->
enable
())
m_t
<<
"
\\
footnotesize "
;
else
m_t
<<
"
\\
normalsize "
;
break
;
}
}
void
ManDocVisitor
::
visit
(
DocVerbatim
*
s
)
{
if
(
m_hide
)
return
;
switch
(
s
->
type
())
{
case
DocVerbatim
:
:
Code
:
// fall though
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
().
latin1
(),
FALSE
,
0
);
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocVerbatim
:
:
Verbatim
:
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
m_t
<<
s
->
text
();
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocVerbatim
:
:
HtmlOnly
:
/* nothing */
break
;
case
DocVerbatim
:
:
LatexOnly
:
/* nothing */
break
;
}
}
void
ManDocVisitor
::
visit
(
DocAnchor
*
anc
)
{
if
(
m_hide
)
return
;
m_t
<<
"
\\
label{"
<<
anc
->
anchor
()
<<
"}"
<<
endl
;
if
(
!
anc
->
file
().
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
hypertarget{"
<<
anc
->
file
()
<<
"_"
<<
anc
->
anchor
()
<<
"}{}"
<<
endl
;
}
}
void
ManDocVisitor
::
visit
(
DocInclude
*
inc
)
{
if
(
m_hide
)
return
;
switch
(
inc
->
type
())
{
case
DocInclude
:
:
Include
:
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
().
latin1
(),
FALSE
,
0
);
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
case
DocInclude
:
:
DontInclude
:
break
;
case
DocInclude
:
:
HtmlInclude
:
break
;
case
DocInclude
:
:
VerbInclude
:
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
m_t
<<
inc
->
text
();
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
break
;
}
}
void
ManDocVisitor
::
visit
(
DocIncOperator
*
op
)
{
//printf("DocIncOperator: type=%d first=%d, last=%d text=`%s'\n",
// op->type(),op->isFirst(),op->isLast(),op->text().data());
if
(
op
->
isFirst
())
{
m_t
<<
"
\n\n\\
footnotesize
\\
begin{verbatim}"
;
m_hide
=
TRUE
;
}
if
(
op
->
type
()
!=
DocIncOperator
::
Skip
)
{
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
().
latin1
(),
FALSE
,
0
);
}
if
(
op
->
isLast
())
{
m_hide
=
FALSE
;
m_t
<<
"
\\
end{verbatim}
\\
normalsize"
<<
endl
;
}
else
{
m_t
<<
endl
;
}
}
void
ManDocVisitor
::
visit
(
DocFormula
*
f
)
{
if
(
m_hide
)
return
;
m_t
<<
f
->
text
();
}
void
ManDocVisitor
::
visit
(
DocIndexEntry
*
i
)
{
m_t
<<
"
\\
index{"
<<
i
->
entry
()
<<
"@{"
;
m_t
<<
"}}"
;
}
//--------------------------------------
// visitor functions for compound nodes
//--------------------------------------
void
ManDocVisitor
::
visitPre
(
DocAutoList
*
l
)
{
if
(
l
->
isEnumList
())
{
m_t
<<
"
\\
begin{enumerate}"
<<
endl
;
}
else
{
m_t
<<
"
\\
begin{itemize}"
<<
endl
;
}
}
void
ManDocVisitor
::
visitPost
(
DocAutoList
*
l
)
{
if
(
l
->
isEnumList
())
{
m_t
<<
"
\\
end{enumerate}"
<<
endl
;
}
else
{
m_t
<<
"
\\
end{itemize}"
<<
endl
;
}
}
void
ManDocVisitor
::
visitPre
(
DocAutoListItem
*
)
{
m_t
<<
"
\\
item "
;
}
void
ManDocVisitor
::
visitPost
(
DocAutoListItem
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocPara
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocPara
*
p
)
{
if
(
!
p
->
isLast
()
&&
// omit <p> for last paragraph
!
(
p
->
parent
()
&&
// and for parameter sections
p
->
parent
()
->
kind
()
==
DocNode
::
Kind_ParamSect
)
)
m_t
<<
endl
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocRoot
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocRoot
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocSimpleSect
*
s
)
{
m_t
<<
"
\\
begin{Desc}
\n\\
item["
;
switch
(
s
->
type
())
{
case
DocSimpleSect
:
:
See
:
m_t
<<
theTranslator
->
trSeeAlso
();
break
;
case
DocSimpleSect
:
:
Return
:
m_t
<<
theTranslator
->
trReturns
();
break
;
case
DocSimpleSect
:
:
Author
:
m_t
<<
theTranslator
->
trAuthor
(
TRUE
,
TRUE
);
break
;
case
DocSimpleSect
:
:
Authors
:
m_t
<<
theTranslator
->
trAuthor
(
TRUE
,
FALSE
);
break
;
case
DocSimpleSect
:
:
Version
:
m_t
<<
theTranslator
->
trVersion
();
break
;
case
DocSimpleSect
:
:
Since
:
m_t
<<
theTranslator
->
trSince
();
break
;
case
DocSimpleSect
:
:
Date
:
m_t
<<
theTranslator
->
trDate
();
break
;
case
DocSimpleSect
:
:
Note
:
m_t
<<
theTranslator
->
trNote
();
break
;
case
DocSimpleSect
:
:
Warning
:
m_t
<<
theTranslator
->
trWarning
();
break
;
case
DocSimpleSect
:
:
Pre
:
m_t
<<
theTranslator
->
trPrecondition
();
break
;
case
DocSimpleSect
:
:
Post
:
m_t
<<
theTranslator
->
trPostcondition
();
break
;
case
DocSimpleSect
:
:
Invar
:
m_t
<<
theTranslator
->
trInvariant
();
break
;
case
DocSimpleSect
:
:
Remark
:
m_t
<<
theTranslator
->
trRemarks
();
break
;
case
DocSimpleSect
:
:
Attention
:
m_t
<<
theTranslator
->
trAttention
();
break
;
case
DocSimpleSect
:
:
User
:
break
;
case
DocSimpleSect
:
:
Unknown
:
break
;
}
// special case 1: user defined title
if
(
s
->
type
()
!=
DocSimpleSect
::
User
)
{
m_t
<<
":]"
;
}
}
void
ManDocVisitor
::
visitPost
(
DocSimpleSect
*
)
{
m_t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocTitle
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocTitle
*
)
{
m_t
<<
"]"
;
}
void
ManDocVisitor
::
visitPre
(
DocSimpleList
*
)
{
m_t
<<
"
\\
begin{itemize}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocSimpleList
*
)
{
m_t
<<
"
\\
end{itemize}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocSimpleListItem
*
)
{
m_t
<<
"
\\
item "
;
}
void
ManDocVisitor
::
visitPost
(
DocSimpleListItem
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocSection
*
s
)
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
hypertarget{"
<<
s
->
file
()
<<
"_"
<<
s
->
anchor
()
<<
"}{}"
;
}
if
(
Config_getBool
(
"COMPACT_LATEX"
))
{
switch
(
s
->
level
())
{
case
1
:
m_t
<<
"
\\
subsubsection{"
;
break
;
case
2
:
m_t
<<
"
\\
paragraph{"
;
break
;
case
3
:
m_t
<<
"
\\
subparagraph{"
;
break
;
case
4
:
m_t
<<
"
\\
subparagraph{"
;
break
;
}
}
else
{
switch
(
s
->
level
())
{
case
1
:
m_t
<<
"
\\
subsection{"
;
break
;
case
2
:
m_t
<<
"
\\
subsubsection{"
;
break
;
case
3
:
m_t
<<
"
\\
paragraph{"
;
break
;
case
4
:
m_t
<<
"
\\
subparagraph{"
;
break
;
}
}
filter
(
s
->
title
());
m_t
<<
"}
\\
label{"
<<
s
->
anchor
()
<<
"}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocSection
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocHtmlList
*
s
)
{
if
(
s
->
type
()
==
DocHtmlList
::
Ordered
)
m_t
<<
"
\\
begin{enumerate}"
<<
endl
;
else
m_t
<<
"
\\
begin{itemize}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlList
*
s
)
{
if
(
s
->
type
()
==
DocHtmlList
::
Ordered
)
m_t
<<
"
\\
end{enumerate}"
<<
endl
;
else
m_t
<<
"
\\
end{itemize}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlListItem
*
)
{
m_t
<<
"
\\
item "
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlListItem
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocHtmlPre
*
)
{
m_t
<<
"
\\
small
\\
begin{alltt}"
;
m_insidePre
=
TRUE
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlPre
*
)
{
m_insidePre
=
FALSE
;
m_t
<<
"
\\
end{alltt}
\\
normalsize "
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlDescList
*
)
{
m_t
<<
"
\\
begin{description}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlDescList
*
)
{
m_t
<<
"
\\
end{description}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlDescTitle
*
)
{
m_t
<<
"
\\
item["
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlDescTitle
*
)
{
m_t
<<
"]"
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlDescData
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocHtmlDescData
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocHtmlTable
*
t
)
{
if
(
t
->
hasCaption
())
{
m_t
<<
"
\\
begin{table}[h]"
;
}
m_t
<<
"
\\
begin{TabularC}{"
<<
t
->
numCols
()
<<
"}
\n\\
hline
\n
"
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlTable
*
t
)
{
if
(
t
->
hasCaption
())
{
m_t
<<
"
\\
end{table}
\n
"
;
}
else
{
m_t
<<
"
\\\\\\
hline
\n\\
end{TabularC}
\n
"
;
}
}
void
ManDocVisitor
::
visitPre
(
DocHtmlCaption
*
)
{
m_t
<<
"
\\\\\\
hline
\n\\
end{TabularC}
\n\\
centering
\n\\
caption{"
;
}
void
ManDocVisitor
::
visitPost
(
DocHtmlCaption
*
)
{
m_t
<<
"}
\n
"
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlRow
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocHtmlRow
*
)
{
m_t
<<
"
\\\\\\
hline
\n
"
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlCell
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocHtmlCell
*
c
)
{
if
(
!
c
->
isLast
())
m_t
<<
"&"
;
}
void
ManDocVisitor
::
visitPre
(
DocInternal
*
)
{
m_t
<<
"
\\
begin{Desc}"
<<
endl
<<
"
\\
item["
<<
theTranslator
->
trForInternalUseOnly
()
<<
"]"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocInternal
*
)
{
m_t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocHRef
*
href
)
{
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
href{"
;
m_t
<<
href
->
url
();
m_t
<<
"}"
;
}
m_t
<<
"{
\\
tt "
;
}
void
ManDocVisitor
::
visitPost
(
DocHRef
*
)
{
m_t
<<
"}"
;
}
void
ManDocVisitor
::
visitPre
(
DocHtmlHeader
*
header
)
{
if
(
Config_getBool
(
"COMPACT_LATEX"
))
{
switch
(
header
->
level
())
{
case
1
:
m_t
<<
"
\\
subsection*{"
;
break
;
case
2
:
m_t
<<
"
\\
subsubsection*{"
;
break
;
case
3
:
m_t
<<
"
\\
paragraph*{"
;
break
;
}
}
else
{
switch
(
header
->
level
())
{
case
1
:
m_t
<<
"
\\
section*{"
;
break
;
case
2
:
m_t
<<
"
\\
subsection*{"
;
break
;
case
3
:
m_t
<<
"
\\
subsubsection*{"
;
break
;
}
}
}
void
ManDocVisitor
::
visitPost
(
DocHtmlHeader
*
)
{
m_t
<<
"}"
;
}
void
ManDocVisitor
::
visitPre
(
DocImage
*
img
)
{
if
(
img
->
type
()
==
DocImage
::
Latex
)
{
if
(
img
->
hasCaption
())
{
m_t
<<
"
\\
begin{figure}[H]"
<<
endl
;
m_t
<<
"
\\
begin{center}"
<<
endl
;
}
else
{
m_t
<<
"
\\
mbox{"
;
}
QString
gfxName
=
img
->
name
();
if
(
gfxName
.
right
(
4
)
==
".eps"
||
gfxName
.
right
(
4
)
==
".pdf"
)
{
gfxName
=
gfxName
.
left
(
gfxName
.
length
()
-
4
);
}
m_t
<<
"
\\
includegraphics"
;
if
(
!
img
->
width
().
isEmpty
())
{
m_t
<<
"[width="
<<
img
->
width
()
<<
"]"
;
}
else
if
(
!
img
->
height
().
isEmpty
())
{
m_t
<<
"[height="
<<
img
->
height
()
<<
"]"
;
}
m_t
<<
"{"
<<
gfxName
<<
"}"
;
if
(
img
->
hasCaption
())
{
m_t
<<
"
\\
caption{"
;
}
}
else
// other format -> skip
{
m_hide
=
TRUE
;
}
}
void
ManDocVisitor
::
visitPost
(
DocImage
*
img
)
{
if
(
img
->
type
()
==
DocImage
::
Latex
)
{
m_t
<<
"}"
<<
endl
;
// end mbox or caption
if
(
img
->
hasCaption
())
{
m_t
<<
"
\\
end{center}"
<<
endl
;
m_t
<<
"
\\
end{figure}"
<<
endl
;
}
}
else
// other format
{
m_hide
=
FALSE
;
}
}
void
ManDocVisitor
::
visitPre
(
DocDotFile
*
df
)
{
QString
baseName
=
df
->
file
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
)
{
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
-
1
);
}
if
(
baseName
.
right
(
4
)
==
".eps"
||
baseName
.
right
(
4
)
==
".pdf"
)
{
baseName
=
baseName
.
left
(
baseName
.
length
()
-
4
);
}
QString
outDir
=
Config_getString
(
"LATEX_OUTPUT"
);
writeDotGraphFromFile
(
df
->
file
(),
outDir
,
baseName
,
EPS
);
if
(
df
->
hasCaption
())
{
m_t
<<
"
\\
begin{figure}[H]"
<<
endl
;
m_t
<<
"
\\
begin{center}"
<<
endl
;
}
else
{
m_t
<<
"
\\
mbox{"
;
}
m_t
<<
"
\\
includegraphics"
;
if
(
!
df
->
width
().
isEmpty
())
{
m_t
<<
"[width="
<<
df
->
width
()
<<
"]"
;
}
else
if
(
!
df
->
height
().
isEmpty
())
{
m_t
<<
"[height="
<<
df
->
height
()
<<
"]"
;
}
m_t
<<
"{"
<<
baseName
<<
"}"
;
if
(
df
->
hasCaption
())
{
m_t
<<
"
\\
caption{"
;
}
}
void
ManDocVisitor
::
visitPost
(
DocDotFile
*
df
)
{
m_t
<<
"}"
<<
endl
;
// end mbox or caption
if
(
df
->
hasCaption
())
{
m_t
<<
"
\\
end{center}"
<<
endl
;
m_t
<<
"
\\
end{figure}"
<<
endl
;
}
}
void
ManDocVisitor
::
visitPre
(
DocLink
*
)
{
m_t
<<
"
\\
fB "
;
}
void
ManDocVisitor
::
visitPost
(
DocLink
*
)
{
m_t
<<
"
\\
fP "
;
}
void
ManDocVisitor
::
visitPre
(
DocRef
*
ref
)
{
m_t
<<
"
\\
fB "
;
if
(
!
ref
->
hasLinkText
())
filter
(
ref
->
targetTitle
());
}
void
ManDocVisitor
::
visitPost
(
DocRef
*
)
{
m_t
<<
"
\\
fP "
;
}
void
ManDocVisitor
::
visitPre
(
DocSecRefItem
*
)
{
m_t
<<
"
\\
item
\\
contentsline{section}{"
;
}
void
ManDocVisitor
::
visitPost
(
DocSecRefItem
*
ref
)
{
m_t
<<
"}{
\\
ref{"
<<
ref
->
anchor
()
<<
"}}{}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocSecRefList
*
)
{
m_t
<<
"
\\
footnotesize"
<<
endl
;
m_t
<<
"
\\
begin{multicols}{2}"
<<
endl
;
m_t
<<
"
\\
begin{CompactList}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocSecRefList
*
)
{
m_t
<<
"
\\
end{CompactList}"
<<
endl
;
m_t
<<
"
\\
end{multicols}"
<<
endl
;
m_t
<<
"
\\
normalsize"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocLanguage
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocLanguage
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocParamSect
*
s
)
{
m_t
<<
"
\\
begin{Desc}"
<<
endl
;
m_t
<<
"
\\
item["
;
switch
(
s
->
type
())
{
case
DocParamSect
:
:
Param
:
m_t
<<
theTranslator
->
trParameters
();
break
;
case
DocParamSect
:
:
RetVal
:
m_t
<<
theTranslator
->
trReturnValues
();
break
;
case
DocParamSect
:
:
Exception
:
m_t
<<
theTranslator
->
trExceptions
();
break
;
default
:
ASSERT
(
0
);
}
m_t
<<
":]"
<<
endl
;
m_t
<<
"
\\
begin{description}"
<<
endl
;
}
void
ManDocVisitor
::
visitPost
(
DocParamSect
*
)
{
m_t
<<
"
\\
end{description}"
<<
endl
;
m_t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocParamList
*
pl
)
{
m_t
<<
"
\\
item[{
\\
em "
;
QStrListIterator
li
(
pl
->
parameters
());
const
char
*
s
;
bool
first
=
TRUE
;
for
(
li
.
toFirst
();(
s
=
li
.
current
());
++
li
)
{
if
(
!
first
)
m_t
<<
","
;
else
first
=
FALSE
;
m_t
<<
s
;
}
m_t
<<
"}]"
;
}
void
ManDocVisitor
::
visitPost
(
DocParamList
*
)
{
}
void
ManDocVisitor
::
visitPre
(
DocXRefItem
*
x
)
{
m_t
<<
"
\\
begin{Desc}"
<<
endl
;
m_t
<<
"
\\
item["
;
if
(
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"
\\
hyperlink{"
<<
x
->
file
()
<<
"_"
<<
x
->
anchor
()
<<
"}{"
;
}
else
{
m_t
<<
"{
\\
bf "
;
}
filter
(
x
->
title
());
m_t
<<
"}]"
;
}
void
ManDocVisitor
::
visitPost
(
DocXRefItem
*
)
{
m_t
<<
"
\\
end{Desc}"
<<
endl
;
}
void
ManDocVisitor
::
visitPre
(
DocInternalRef
*
)
{
m_t
<<
"
\\
fB "
;
}
void
ManDocVisitor
::
visitPost
(
DocInternalRef
*
)
{
m_t
<<
"
\\
fP "
;
}
void
ManDocVisitor
::
visitPre
(
DocCopy
*
)
{
}
void
ManDocVisitor
::
visitPost
(
DocCopy
*
)
{
}
void
ManDocVisitor
::
filter
(
const
char
*
str
)
{
if
(
str
)
{
const
char
*
p
=
str
;
char
c
=
0
;
while
((
c
=*
p
++
))
{
switch
(
c
)
{
case
'\\'
:
m_t
<<
"
\\\\
"
;
break
;
case
'"'
:
c
=
'\''
;
// fall through
default
:
m_t
<<
c
;
break
;
}
}
}
}
src/mandocvisitor.h
0 → 100644
View file @
5ed55684
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _MANDOCVISITOR_H
#define _MANDOCVISITOR_H
#include "docvisitor.h"
class
QTextStream
;
class
BaseCodeDocInterface
;
class
QString
;
/*! @brief Concrete visitor implementation for LaTeX output. */
class
ManDocVisitor
:
public
DocVisitor
{
public
:
ManDocVisitor
(
QTextStream
&
t
,
BaseCodeDocInterface
&
ci
);
//--------------------------------------
// visitor functions for leaf nodes
//--------------------------------------
void
visit
(
DocWord
*
);
void
visit
(
DocLinkedWord
*
);
void
visit
(
DocWhiteSpace
*
);
void
visit
(
DocSymbol
*
);
void
visit
(
DocURL
*
);
void
visit
(
DocLineBreak
*
);
void
visit
(
DocHorRuler
*
);
void
visit
(
DocStyleChange
*
);
void
visit
(
DocVerbatim
*
);
void
visit
(
DocAnchor
*
);
void
visit
(
DocInclude
*
);
void
visit
(
DocIncOperator
*
);
void
visit
(
DocFormula
*
);
void
visit
(
DocIndexEntry
*
);
//--------------------------------------
// visitor functions for compound nodes
//--------------------------------------
void
visitPre
(
DocAutoList
*
);
void
visitPost
(
DocAutoList
*
);
void
visitPre
(
DocAutoListItem
*
);
void
visitPost
(
DocAutoListItem
*
);
void
visitPre
(
DocPara
*
);
void
visitPost
(
DocPara
*
);
void
visitPre
(
DocRoot
*
);
void
visitPost
(
DocRoot
*
);
void
visitPre
(
DocSimpleSect
*
);
void
visitPost
(
DocSimpleSect
*
);
void
visitPre
(
DocTitle
*
);
void
visitPost
(
DocTitle
*
);
void
visitPre
(
DocSimpleList
*
);
void
visitPost
(
DocSimpleList
*
);
void
visitPre
(
DocSimpleListItem
*
);
void
visitPost
(
DocSimpleListItem
*
);
void
visitPre
(
DocSection
*
s
);
void
visitPost
(
DocSection
*
);
void
visitPre
(
DocHtmlList
*
s
);
void
visitPost
(
DocHtmlList
*
s
);
void
visitPre
(
DocHtmlListItem
*
);
void
visitPost
(
DocHtmlListItem
*
);
void
visitPre
(
DocHtmlPre
*
);
void
visitPost
(
DocHtmlPre
*
);
void
visitPre
(
DocHtmlDescList
*
);
void
visitPost
(
DocHtmlDescList
*
);
void
visitPre
(
DocHtmlDescTitle
*
);
void
visitPost
(
DocHtmlDescTitle
*
);
void
visitPre
(
DocHtmlDescData
*
);
void
visitPost
(
DocHtmlDescData
*
);
void
visitPre
(
DocHtmlTable
*
t
);
void
visitPost
(
DocHtmlTable
*
t
);
void
visitPre
(
DocHtmlCaption
*
);
void
visitPost
(
DocHtmlCaption
*
);
void
visitPre
(
DocHtmlRow
*
);
void
visitPost
(
DocHtmlRow
*
)
;
void
visitPre
(
DocHtmlCell
*
);
void
visitPost
(
DocHtmlCell
*
);
void
visitPre
(
DocInternal
*
);
void
visitPost
(
DocInternal
*
);
void
visitPre
(
DocHRef
*
);
void
visitPost
(
DocHRef
*
);
void
visitPre
(
DocHtmlHeader
*
);
void
visitPost
(
DocHtmlHeader
*
)
;
void
visitPre
(
DocImage
*
);
void
visitPost
(
DocImage
*
);
void
visitPre
(
DocDotFile
*
);
void
visitPost
(
DocDotFile
*
);
void
visitPre
(
DocLink
*
lnk
);
void
visitPost
(
DocLink
*
);
void
visitPre
(
DocRef
*
ref
);
void
visitPost
(
DocRef
*
);
void
visitPre
(
DocSecRefItem
*
);
void
visitPost
(
DocSecRefItem
*
);
void
visitPre
(
DocSecRefList
*
);
void
visitPost
(
DocSecRefList
*
);
void
visitPre
(
DocLanguage
*
);
void
visitPost
(
DocLanguage
*
);
void
visitPre
(
DocParamSect
*
);
void
visitPost
(
DocParamSect
*
);
void
visitPre
(
DocParamList
*
);
void
visitPost
(
DocParamList
*
);
void
visitPre
(
DocXRefItem
*
);
void
visitPost
(
DocXRefItem
*
);
void
visitPre
(
DocInternalRef
*
);
void
visitPost
(
DocInternalRef
*
);
void
visitPre
(
DocCopy
*
);
void
visitPost
(
DocCopy
*
);
private
:
//--------------------------------------
// helper functions
//--------------------------------------
void
filter
(
const
char
*
str
);
//--------------------------------------
// state variables
//--------------------------------------
QTextStream
&
m_t
;
BaseCodeDocInterface
&
m_ci
;
bool
m_insidePre
;
bool
m_hide
;
};
#endif
src/mangen.cpp
View file @
5ed55684
...
...
@@ -29,6 +29,7 @@
#include "doxygen.h"
#include <string.h>
#include "docparser.h"
#include "mandocvisitor.h"
static
QCString
getExtension
()
{
...
...
@@ -613,7 +614,10 @@ void ManGenerator::endParamList()
{
}
void
ManGenerator
::
printDoc
(
DocNode
*
)
void
ManGenerator
::
printDoc
(
DocNode
*
n
)
{
ManDocVisitor
*
visitor
=
new
ManDocVisitor
(
t
,
*
this
);
n
->
accept
(
visitor
);
delete
visitor
;
}
src/memberdef.cpp
View file @
5ed55684
...
...
@@ -554,8 +554,8 @@ bool MemberDef::isBriefSectionVisible() const
{
//printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
// name().data(),
// grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
// getFileDef()->name().data(),
//
0,"", //
grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
//
"", //
getFileDef()->name().data(),
// argsString());
bool
hasDocs
=
hasDocumentation
()
||
// part of a documented member group
...
...
@@ -600,8 +600,10 @@ bool MemberDef::isBriefSectionVisible() const
);
// hide member if it overrides a member in a superclass and has no
// documentation
bool
visibleIfDocVirtual
=
(
reimplements
()
||
hasDocs
);
// documentation of its own
//bool visibleIfDocVirtual = !reimplements() ||
// !Config_getBool("INHERIT_DOCS") ||
// hasDocs;
// true if this member is a constructor or destructor
bool
cOrDTor
=
isConstructor
()
||
isDestructor
();
...
...
@@ -624,7 +626,7 @@ bool MemberDef::isBriefSectionVisible() const
bool
visible
=
visibleIfStatic
&&
visibleIfDocumented
&&
visibleIfEnabled
&&
visibleIfPrivate
&&
visibleIfDocVirtual
&&
visibleIfNotDefaultCDTor
&&
/*visibleIfDocVirtual &&*/
visibleIfNotDefaultCDTor
&&
visibleIfFriendCompound
&&
!
annScope
;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible);
...
...
@@ -1539,6 +1541,10 @@ void MemberDef::warnIfUndocumented()
else
t
=
"file"
,
d
=
fd
;
//printf("warnIfUndoc: d->isLinkable()=%d isLinkable()=%d "
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot);
if
(
d
&&
d
->
isLinkable
()
&&
!
isLinkable
()
&&
!
isDocumentedFriendClass
()
&&
name
().
find
(
'@'
)
==-
1
&&
...
...
src/namespacedef.cpp
View file @
5ed55684
...
...
@@ -248,6 +248,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"DETAILS_AT_TOP"
))
{
writeDetailedDocumentation
(
ol
);
ol
.
newParagraph
();
}
else
if
(
!
briefDescription
().
isEmpty
())
{
...
...
src/rtfdocvisitor.cpp
View file @
5ed55684
...
...
@@ -32,9 +32,9 @@ RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
{
}
Q
C
String
RTFDocVisitor
::
getStyle
(
const
char
*
name
)
QString
RTFDocVisitor
::
getStyle
(
const
char
*
name
)
{
Q
C
String
n
;
QString
n
;
n
.
sprintf
(
"%s%d"
,
name
,
m_indentLevel
);
StyleData
*
sd
=
rtf_Style
[
n
];
ASSERT
(
sd
!=
0
);
...
...
@@ -271,7 +271,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
m_t
<<
"{"
<<
endl
;
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
rtf_Style_Reset
<<
getStyle
(
"CodeExample"
);
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
"}"
<<
endl
;
break
;
...
...
@@ -295,7 +295,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
void
RTFDocVisitor
::
visit
(
DocAnchor
*
anc
)
{
if
(
m_hide
)
return
;
Q
C
String
anchor
;
QString
anchor
;
if
(
!
anc
->
file
().
isEmpty
())
{
anchor
+=
anc
->
file
();
...
...
@@ -321,7 +321,7 @@ void RTFDocVisitor::visit(DocInclude *inc)
m_t
<<
"{"
<<
endl
;
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
rtf_Style_Reset
<<
getStyle
(
"CodeExample"
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
"}"
<<
endl
;
break
;
...
...
@@ -353,7 +353,7 @@ void RTFDocVisitor::visit(DocIncOperator *op)
}
if
(
op
->
type
()
!=
DocIncOperator
::
Skip
)
{
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
()
.
latin1
()
,
FALSE
,
0
);
}
if
(
op
->
isLast
())
{
...
...
@@ -534,7 +534,7 @@ void RTFDocVisitor::visitPre(DocSection *s)
{
m_t
<<
"{"
// start section
<<
rtf_Style_Reset
;
Q
C
String
heading
;
QString
heading
;
int
level
=
QMIN
(
s
->
level
()
+
2
,
4
);
heading
.
sprintf
(
"Heading%d"
,
level
);
// set style
...
...
@@ -750,7 +750,7 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header)
{
m_t
<<
"{"
// start section
<<
rtf_Style_Reset
;
Q
C
String
heading
;
QString
heading
;
int
level
=
QMIN
(
header
->
level
()
+
2
,
4
);
heading
.
sprintf
(
"Heading%d"
,
level
);
// set style
...
...
@@ -793,13 +793,13 @@ void RTFDocVisitor::visitPost(DocImage *)
void
RTFDocVisitor
::
visitPre
(
DocDotFile
*
df
)
{
Q
C
String
baseName
=
df
->
file
();
QString
baseName
=
df
->
file
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
)
{
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
-
1
);
}
Q
C
String
outDir
=
Config_getString
(
"RTF_OUTPUT"
);
QString
outDir
=
Config_getString
(
"RTF_OUTPUT"
);
writeDotGraphFromFile
(
df
->
file
(),
outDir
,
baseName
,
BITMAP
);
m_t
<<
"
\\
par"
<<
endl
;
m_t
<<
"{"
<<
endl
;
...
...
@@ -927,7 +927,7 @@ void RTFDocVisitor::visitPre(DocXRefItem *x)
m_t
<<
"
\\
par"
<<
endl
;
if
(
Config_getBool
(
"RTF_HYPERLINKS"
))
{
Q
C
String
refName
;
QString
refName
;
if
(
!
x
->
file
().
isEmpty
())
{
refName
+=
x
->
file
();
...
...
@@ -1033,11 +1033,11 @@ void RTFDocVisitor::filter(const char *str)
}
}
void
RTFDocVisitor
::
startLink
(
const
Q
CString
&
ref
,
const
QCString
&
file
,
const
QC
String
&
anchor
)
void
RTFDocVisitor
::
startLink
(
const
Q
String
&
ref
,
const
QString
&
file
,
const
Q
String
&
anchor
)
{
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"RTF_HYPERLINKS"
))
{
Q
C
String
refName
;
QString
refName
;
if
(
!
file
.
isEmpty
())
{
refName
+=
file
;
...
...
@@ -1059,7 +1059,7 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS
}
}
void
RTFDocVisitor
::
endLink
(
const
Q
C
String
&
ref
)
void
RTFDocVisitor
::
endLink
(
const
QString
&
ref
)
{
if
(
ref
.
isEmpty
()
&&
Config_getBool
(
"RTF_HYPERLINKS"
))
{
...
...
src/rtfdocvisitor.h
View file @
5ed55684
...
...
@@ -23,7 +23,7 @@
class
QTextStream
;
class
BaseCodeDocInterface
;
class
Q
C
String
;
class
QString
;
/*! @brief Concrete visitor implementation for RTF output. */
class
RTFDocVisitor
:
public
DocVisitor
...
...
@@ -130,10 +130,10 @@ class RTFDocVisitor : public DocVisitor
//--------------------------------------
void
filter
(
const
char
*
str
);
void
startLink
(
const
Q
CString
&
ref
,
const
QC
String
&
file
,
const
Q
C
String
&
anchor
);
void
endLink
(
const
Q
C
String
&
ref
);
Q
C
String
getStyle
(
const
char
*
name
);
void
startLink
(
const
Q
String
&
ref
,
const
Q
String
&
file
,
const
QString
&
anchor
);
void
endLink
(
const
QString
&
ref
);
QString
getStyle
(
const
char
*
name
);
void
incIndentLevel
();
void
decIndentLevel
();
...
...
src/scanner.l
View file @
5ed55684
...
...
@@ -3925,33 +3925,33 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yyLineNr++;
}
<SkipSection>"//"|"*/"
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
// previous section enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
// section was enabled => skip now
depthIf=1;
BEGIN(SkipSection);
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
// section enabled => absorb endif
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START;
lineCount();
BEGIN( GroupName );
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
current->subGrouping = FALSE;
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
current->initLines = 100000; // ON
}
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
<ClassDoc,
ClassDocBrief,
LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
current->initLines = 0; // OFF
}
<GroupName>{ID} {
...
...
@@ -3992,7 +3992,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
else
{
yyLineNr++;
if (yytext[yyleng-1]=='\n')
yyLineNr++;
}
BEGIN( lastBriefContext );
}
...
...
@@ -4295,7 +4295,18 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->doc+=yytext;
}
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment,SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
<SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
int i,l=pValue->length();
for (i=l-1;i>=0;i--)
{
unput(pValue->at(i));
}
}
}
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
bool handled=FALSE;
if ( useOverrideCommands)
{
...
...
@@ -4338,9 +4349,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (pValue)
{
int i,l=pValue->length();
char c;
for (i=l-1;i>=0;i--)
{
unput(pValue->at(i));
c=pValue->at(i);
unput(c);
if (c=='\n') yyLineNr--;
}
}
else
...
...
src/translator_fr.h
View file @
5ed55684
...
...
@@ -37,6 +37,8 @@
* -------------+------------------------------------------------------------
* 2002-07-11 | Update for new since 1.2.16
* -------------+------------------------------------------------------------
* 2002-09-24 | Update for new since 1.2.17
* -------------+------------------------------------------------------------
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
...
...
@@ -1268,6 +1270,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
return
"Table des matières"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual
QCString
trDeprecatedList
()
{
return
"Liste obsolète"
;
}
};
...
...
src/util.cpp
View file @
5ed55684
...
...
@@ -2569,9 +2569,11 @@ bool generateLink(OutputDocInterface &od,const char *clName,
}
else
if
(
compound
)
// link to compound
{
if
(
lt
==
0
&&
compound
->
definitionType
()
==
Definition
::
TypeGroup
)
if
(
lt
==
0
&&
anchor
.
isEmpty
()
&&
/* compound link */
compound
->
definitionType
()
==
Definition
::
TypeGroup
/* is group */
)
{
linkText
=
((
GroupDef
*
)
compound
)
->
groupTitle
();
linkText
=
((
GroupDef
*
)
compound
)
->
groupTitle
();
// use group's title as link
}
od
.
writeObjectLink
(
compound
->
getReference
(),
compound
->
getOutputFileBase
(),
anchor
,
linkText
);
...
...
src/xmldocvisitor.cpp
View file @
5ed55684
...
...
@@ -148,7 +148,7 @@ void XmlDocVisitor::visit(DocVerbatim *s)
{
case
DocVerbatim
:
:
Code
:
// fall though
m_t
<<
"<programlisting>"
;
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
s
->
context
(),
s
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"</programlisting>"
;
break
;
case
DocVerbatim
:
:
Verbatim
:
...
...
@@ -182,7 +182,7 @@ void XmlDocVisitor::visit(DocInclude *inc)
{
case
DocInclude
:
:
Include
:
m_t
<<
"<programlisting>"
;
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
inc
->
context
(),
inc
->
text
()
.
latin1
()
,
FALSE
,
0
);
m_t
<<
"</programlisting>"
;
break
;
case
DocInclude
:
:
DontInclude
:
...
...
@@ -211,7 +211,7 @@ void XmlDocVisitor::visit(DocIncOperator *op)
}
if
(
op
->
type
()
!=
DocIncOperator
::
Skip
)
{
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
(),
FALSE
,
0
);
parseCode
(
m_ci
,
op
->
context
(),
op
->
text
()
.
latin1
()
,
FALSE
,
0
);
}
if
(
op
->
isLast
())
{
...
...
@@ -536,7 +536,7 @@ void XmlDocVisitor::visitPre(DocImage *img)
}
m_t
<<
"
\"
"
;
Q
C
String
baseName
=
img
->
name
();
QString
baseName
=
img
->
name
();
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
||
(
i
=
baseName
.
findRev
(
'\\'
))
!=-
1
)
{
...
...
@@ -719,7 +719,7 @@ void XmlDocVisitor::filter(const char *str)
}
}
void
XmlDocVisitor
::
startLink
(
const
Q
CString
&
ref
,
const
QCString
&
file
,
const
QC
String
&
anchor
)
void
XmlDocVisitor
::
startLink
(
const
Q
String
&
ref
,
const
QString
&
file
,
const
Q
String
&
anchor
)
{
m_t
<<
"<ref refid=
\"
"
<<
file
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"_1"
<<
anchor
;
...
...
src/xmldocvisitor.h
View file @
5ed55684
...
...
@@ -23,9 +23,9 @@
class
QTextStream
;
class
BaseCodeDocInterface
;
class
Q
C
String
;
class
QString
;
/*! @brief Concrete visitor implementation for
HT
ML output. */
/*! @brief Concrete visitor implementation for
X
ML output. */
class
XmlDocVisitor
:
public
DocVisitor
{
public
:
...
...
@@ -130,8 +130,8 @@ class XmlDocVisitor : public DocVisitor
//--------------------------------------
void
filter
(
const
char
*
str
);
void
startLink
(
const
Q
CString
&
ref
,
const
QC
String
&
file
,
const
Q
C
String
&
anchor
);
void
startLink
(
const
Q
String
&
ref
,
const
Q
String
&
file
,
const
QString
&
anchor
);
void
endLink
();
//--------------------------------------
...
...
src/xmlgen.cpp
View file @
5ed55684
...
...
@@ -1199,7 +1199,7 @@ static void writeXMLDocBlock(QTextStream &t,
const
QCString
&
text
)
{
QCString
stext
=
text
.
stripWhiteSpace
();
if
(
text
.
isEmpty
())
return
;
if
(
s
text
.
isEmpty
())
return
;
// convert the documentation string into an abstract syntax tree
DocNode
*
root
=
validatingParseDoc
(
fileName
,
lineNr
,
scope
,
md
,
stext
);
// create a code generator
...
...
@@ -1489,20 +1489,20 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t
<<
"</initializer>"
<<
endl
;
}
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
emd
->
getDefFileName
(),
emd
->
getD
efLine
(),
scopeName
,
emd
,
emd
->
briefDescription
());
writeXMLDocBlock
(
t
,
emd
->
briefFile
(),
emd
->
bri
efLine
(),
scopeName
,
emd
,
emd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
emd
->
getDefFileName
(),
emd
->
getDef
Line
(),
scopeName
,
emd
,
emd
->
documentation
());
writeXMLDocBlock
(
t
,
emd
->
docFile
(),
emd
->
doc
Line
(),
scopeName
,
emd
,
emd
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" </enumvalue>"
<<
endl
;
}
}
}
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getD
efLine
(),
scopeName
,
md
,
md
->
briefDescription
());
writeXMLDocBlock
(
t
,
md
->
briefFile
(),
md
->
bri
efLine
(),
scopeName
,
md
,
md
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
md
->
getDefFileName
(),
md
->
getDef
Line
(),
scopeName
,
md
,
md
->
documentation
());
writeXMLDocBlock
(
t
,
md
->
docFile
(),
md
->
doc
Line
(),
scopeName
,
md
,
md
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
if
(
md
->
getDefLine
()
!=-
1
)
{
...
...
@@ -1763,10 +1763,10 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
generateXMLSection
(
cd
,
ti
,
t
,
&
cd
->
related
,
"related"
);
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
cd
->
getDefFileName
(),
cd
->
getD
efLine
(),
cd
->
name
(),
0
,
cd
->
briefDescription
());
writeXMLDocBlock
(
t
,
cd
->
briefFile
(),
cd
->
bri
efLine
(),
cd
->
name
(),
0
,
cd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
cd
->
getDefFileName
(),
cd
->
getDef
Line
(),
cd
->
name
(),
0
,
cd
->
documentation
());
writeXMLDocBlock
(
t
,
cd
->
docFile
(),
cd
->
doc
Line
(),
cd
->
name
(),
0
,
cd
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
DotClassGraph
inheritanceGraph
(
cd
,
DotClassGraph
::
Inheritance
);
if
(
!
inheritanceGraph
.
isTrivial
())
...
...
@@ -1868,10 +1868,10 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
generateXMLSection
(
nd
,
ti
,
t
,
&
nd
->
decVarMembers
,
"var"
);
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
nd
->
getDefFileName
(),
nd
->
getD
efLine
(),
0
,
0
,
nd
->
briefDescription
());
writeXMLDocBlock
(
t
,
nd
->
briefFile
(),
nd
->
bri
efLine
(),
0
,
0
,
nd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
nd
->
getDefFileName
(),
nd
->
getDef
Line
(),
0
,
0
,
nd
->
documentation
());
writeXMLDocBlock
(
t
,
nd
->
docFile
(),
nd
->
doc
Line
(),
0
,
0
,
nd
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" <location file=
\"
"
<<
nd
->
getDefFileName
()
<<
"
\"
line=
\"
"
...
...
@@ -2002,10 +2002,10 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
generateXMLSection
(
fd
,
ti
,
t
,
&
fd
->
decVarMembers
,
"var"
);
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
fd
->
getDefFileName
(),
fd
->
getD
efLine
(),
0
,
0
,
fd
->
briefDescription
());
writeXMLDocBlock
(
t
,
fd
->
briefFile
(),
fd
->
bri
efLine
(),
0
,
0
,
fd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
fd
->
getDefFileName
(),
fd
->
getDef
Line
(),
0
,
0
,
fd
->
documentation
());
writeXMLDocBlock
(
t
,
fd
->
docFile
(),
fd
->
doc
Line
(),
0
,
0
,
fd
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" <programlisting>"
<<
endl
;
writeXMLCodeBlock
(
t
,
fd
);
...
...
@@ -2125,10 +2125,10 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
generateXMLSection
(
gd
,
ti
,
t
,
&
gd
->
decVarMembers
,
"var"
);
t
<<
" <briefdescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
gd
->
getDefFileName
(),
gd
->
getD
efLine
(),
0
,
0
,
gd
->
briefDescription
());
writeXMLDocBlock
(
t
,
gd
->
briefFile
(),
gd
->
bri
efLine
(),
0
,
0
,
gd
->
briefDescription
());
t
<<
" </briefdescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
gd
->
getDefFileName
(),
gd
->
getDef
Line
(),
0
,
0
,
gd
->
documentation
());
writeXMLDocBlock
(
t
,
gd
->
docFile
(),
gd
->
doc
Line
(),
0
,
0
,
gd
->
documentation
());
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" </compounddef>"
<<
endl
;
t
<<
"</doxygen>"
<<
endl
;
...
...
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