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
3ced6106
Commit
3ced6106
authored
Jan 25, 2004
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.5-20040125
parent
29348f28
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
318 additions
and
192 deletions
+318
-192
Doxyfile
Doxyfile
+57
-21
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
diagrams.doc
doc/diagrams.doc
+3
-0
classdef.h
src/classdef.h
+2
-0
classlist.cpp
src/classlist.cpp
+16
-13
code.l
src/code.l
+2
-2
config.l
src/config.l
+42
-21
docparser.cpp
src/docparser.cpp
+7
-2
docparser.h
src/docparser.h
+4
-2
doxygen.cpp
src/doxygen.cpp
+12
-4
doxygen.h
src/doxygen.h
+1
-0
filedef.cpp
src/filedef.cpp
+3
-2
htmldocvisitor.cpp
src/htmldocvisitor.cpp
+2
-1
index.cpp
src/index.cpp
+13
-3
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+5
-4
message.cpp
src/message.cpp
+1
-1
outputlist.cpp
src/outputlist.cpp
+0
-62
perlmodgen.cpp
src/perlmodgen.cpp
+1
-1
scanner.l
src/scanner.l
+83
-42
util.cpp
src/util.cpp
+49
-4
xmlgen.cpp
src/xmlgen.cpp
+10
-2
No files found.
Doxyfile
View file @
3ced6106
# Doxyfile 1.
2.12-20011209
# Doxyfile 1.
3.5
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
#
General
configuration options
#
Project related
configuration options
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
PROJECT_NAME = Doxygen
PROJECT_NAME = Doxygen
PROJECT_NUMBER =
PROJECT_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
OUTPUT_DIRECTORY = doxygen_docs
OUTPUT_LANGUAGE = English
OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
USE_WINDOWS_ENCODING = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_PATH = $(PWD)/
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
INTERNAL_DOCS = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = NO
CASE_SENSE_NAMES = NO
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
INHERIT_DOCS = YES
INLINE_INFO = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
SORT_BRIEF_DOCS = NO
TAB_SIZE = 8
GENERATE_TODOLIST = YES
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
# configuration options related to warning and progress messages
...
@@ -46,6 +57,7 @@ SHOW_USED_FILES = YES
...
@@ -46,6 +57,7 @@ SHOW_USED_FILES = YES
QUIET = NO
QUIET = NO
WARNINGS = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file:$line: $text"
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
WARN_LOGFILE =
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -73,6 +85,7 @@ EXCLUDE = src/code.cpp \
...
@@ -73,6 +85,7 @@ EXCLUDE = src/code.cpp \
src/searchindex.cpp \
src/searchindex.cpp \
src/searchindex.h \
src/searchindex.h \
src/commentcnv.cpp
src/commentcnv.cpp
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_PATTERNS =
...
@@ -85,8 +98,10 @@ FILTER_SOURCE_FILES = NO
...
@@ -85,8 +98,10 @@ FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_RELATION = YES
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -98,11 +113,14 @@ IGNORE_PREFIX =
...
@@ -98,11 +113,14 @@ IGNORE_PREFIX =
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_HTML = YES
GENERATE_HTML = YES
HTML_OUTPUT =
HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_HEADER =
HTML_FOOTER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
GENERATE_CHI = NO
BINARY_TOC = NO
BINARY_TOC = NO
TOC_EXPAND = NO
TOC_EXPAND = NO
...
@@ -115,6 +133,8 @@ TREEVIEW_WIDTH = 250
...
@@ -115,6 +133,8 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
GENERATE_LATEX = NO
LATEX_OUTPUT =
LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
EXTRA_PACKAGES =
...
@@ -122,6 +142,7 @@ LATEX_HEADER =
...
@@ -122,6 +142,7 @@ LATEX_HEADER =
PDF_HYPERLINKS = YES
PDF_HYPERLINKS = YES
USE_PDFLATEX = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the RTF output
# configuration options related to the RTF output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
...
@@ -142,11 +163,22 @@ MAN_LINKS = NO
...
@@ -142,11 +163,22 @@ MAN_LINKS = NO
# configuration options related to the XML output
# configuration options related to the XML output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_XML = YES
GENERATE_XML = YES
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
ENABLE_PREPROCESSING = YES
...
@@ -159,32 +191,36 @@ PREDEFINED =
...
@@ -159,32 +191,36 @@ PREDEFINED =
EXPAND_AS_DEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Configuration::addtions related to external references
# Configuration::add
i
tions related to external references
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
TAGFILES = qtools_docs/qtools.tag=../../qtools_docs/html
TAGFILES = qtools_docs/qtools.tag=../../qtools_docs/html
GENERATE_TAGFILE =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
HAVE_DOT = NO
CLASS_GRAPH = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
COLLABORATION_GRAPH = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOT_PATH =
DOTFILE_DIRS =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
# Configuration::add
i
tions related to the search engine
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
SEARCHENGINE = YES
SEARCHENGINE = YES
INSTALL
View file @
3ced6106
DOXYGEN Version 1.3.5-200401
0
5
DOXYGEN Version 1.3.5-200401
2
5
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
0
5 January 2004)
Dimitri van Heesch (
2
5 January 2004)
README
View file @
3ced6106
DOXYGEN Version 1.3.5_200401
0
5
DOXYGEN Version 1.3.5_200401
2
5
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
0
5 January 2004)
Dimitri van Heesch (dimitri@stack.nl) (
2
5 January 2004)
VERSION
View file @
3ced6106
1.3.5-200401
0
5
1.3.5-200401
2
5
doc/diagrams.doc
View file @
3ced6106
...
@@ -52,6 +52,9 @@
...
@@ -52,6 +52,9 @@
class \c A has a member variable \c m_a of type class \c B, then
class \c A has a member variable \c m_a of type class \c B, then
\c A has an arrow to \c B with \c m_a as label).
\c A has an arrow to \c B with \c m_a as label).
</ul>
</ul>
<li>if \ref cfg_call_graph "CALL_GRAPH" is set to YES, a
graphical call graph is drawn for each function showing the
functions that the function directly or indirectly calls.
</ul>
</ul>
The elements in the class diagrams in HTML and RTF
The elements in the class diagrams in HTML and RTF
...
...
src/classdef.h
View file @
3ced6106
...
@@ -302,6 +302,8 @@ class ClassDef : public Definition
...
@@ -302,6 +302,8 @@ class ClassDef : public Definition
* \param fName the file name as found in the tag file.
* \param fName the file name as found in the tag file.
* This overwrites the file that doxygen normally
* This overwrites the file that doxygen normally
* generates based on the compound type & name.
* generates based on the compound type & name.
* \param isSymbol If TRUE this class name is added as a publicly
* visible (and referencable) symbol.
*/
*/
ClassDef
(
const
char
*
fileName
,
int
startLine
,
ClassDef
(
const
char
*
fileName
,
int
startLine
,
const
char
*
name
,
CompoundType
ct
,
const
char
*
name
,
CompoundType
ct
,
...
...
src/classlist.cpp
View file @
3ced6106
...
@@ -30,26 +30,29 @@ ClassList::~ClassList()
...
@@ -30,26 +30,29 @@ ClassList::~ClassList()
{
{
}
}
int
ClassList
::
compareItems
(
GCI
item1
,
GCI
item2
)
static
int
compItems
(
void
*
item1
,
void
*
item2
)
{
{
ClassDef
*
c1
=
(
ClassDef
*
)
item1
;
ClassDef
*
c1
=
(
ClassDef
*
)
item1
;
ClassDef
*
c2
=
(
ClassDef
*
)
item2
;
ClassDef
*
c2
=
(
ClassDef
*
)
item2
;
//return stricmp(c1->localName().data()+getPrefixIndex(c1->localName()),
int
p1
=
0
,
p2
=
0
;
// c2->localName().data()+getPrefixIndex(c2->localName())
static
bool
b
=
Config_getBool
(
"SORT_BY_SCOPE_NAME"
);
// );
if
(
!
b
)
return
stricmp
(
c1
->
className
().
data
()
+
getPrefixIndex
(
c1
->
className
()),
{
c2
->
className
().
data
()
+
getPrefixIndex
(
c2
->
className
()));
p1
=
getPrefixIndex
(
c1
->
className
());
p2
=
getPrefixIndex
(
c2
->
className
());
}
return
stricmp
(
c1
->
className
().
data
()
+
p1
,
c2
->
className
().
data
()
+
p2
);
}
int
ClassList
::
compareItems
(
GCI
item1
,
GCI
item2
)
{
return
compItems
(
item1
,
item2
);
}
}
int
ClassSDict
::
compareItems
(
GCI
item1
,
GCI
item2
)
int
ClassSDict
::
compareItems
(
GCI
item1
,
GCI
item2
)
{
{
ClassDef
*
c1
=
(
ClassDef
*
)
item1
;
return
compItems
(
item1
,
item2
);
ClassDef
*
c2
=
(
ClassDef
*
)
item2
;
//return stricmp(c1->localName().data()+getPrefixIndex(c1->localName()),
// c2->localName().data()+getPrefixIndex(c2->localName())
// );
return
stricmp
(
c1
->
className
().
data
()
+
getPrefixIndex
(
c1
->
className
()),
c2
->
className
().
data
()
+
getPrefixIndex
(
c2
->
className
()));
}
}
ClassListIterator
::
ClassListIterator
(
const
ClassList
&
cllist
)
:
ClassListIterator
::
ClassListIterator
(
const
ClassList
&
cllist
)
:
...
...
src/code.l
View file @
3ced6106
...
@@ -1074,7 +1074,7 @@ static int yyread(char *buf,int max_size)
...
@@ -1074,7 +1074,7 @@ static int yyread(char *buf,int max_size)
B [ \t]
B [ \t]
BN [ \t\n\r]
BN [ \t\n\r]
ID [a-z_A-Z][a-z_A-Z0-9]*
ID
"$"?
[a-z_A-Z][a-z_A-Z0-9]*
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">"
TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">"
SCOPETNAME ((({ID}{TEMPLIST}?){BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPETNAME ((({ID}{TEMPLIST}?){BN}*"::"{BN}*)*)((~{BN}*)?{ID})
...
@@ -1543,7 +1543,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
...
@@ -1543,7 +1543,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_code->codify(yytext);
g_code->codify(yytext);
endFontClass();
endFontClass();
}
}
<Body>"
this->"
{ g_code->codify(yytext); }
<Body>"
$"?"this->"
{ g_code->codify(yytext); }
<Body>"."|"->" {
<Body>"."|"->" {
g_code->codify(yytext);
g_code->codify(yytext);
g_memCallContext = YY_START;
g_memCallContext = YY_START;
...
...
src/config.l
View file @
3ced6106
...
@@ -897,6 +897,12 @@ void Config::check()
...
@@ -897,6 +897,12 @@ void Config::check()
// expand the relative stripFromPath values
// expand the relative stripFromPath values
QStrList &stripFromPath = Config_getList("STRIP_FROM_PATH");
QStrList &stripFromPath = Config_getList("STRIP_FROM_PATH");
char *sfp = stripFromPath.first();
char *sfp = stripFromPath.first();
if (sfp==0) // by default use the current path
{
stripFromPath.append(QDir::currentDirPath()+"/");
}
else
{
while (sfp)
while (sfp)
{
{
register char *p = sfp;
register char *p = sfp;
...
@@ -925,6 +931,7 @@ void Config::check()
...
@@ -925,6 +931,7 @@ void Config::check()
}
}
sfp = stripFromPath.next();
sfp = stripFromPath.next();
}
}
}
// Test to see if HTML header is valid
// Test to see if HTML header is valid
...
@@ -1475,7 +1482,9 @@ void Config::create()
...
@@ -1475,7 +1482,9 @@ void Config::create()
"If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n"
"If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n"
"can be used to strip a user-defined part of the path. Stripping is \n"
"can be used to strip a user-defined part of the path. Stripping is \n"
"only done if one of the specified strings matches the left-hand part of \n"
"only done if one of the specified strings matches the left-hand part of \n"
"the path. It is allowed to use relative paths in the argument list.\n"
"the path. It is allowed to use relative paths in the argument list. \n"
"If left blank the directory from which doxygen is run is used as the \n"
"path to strip. \n"
);
);
cl->addDependency("FULL_PATH_NAMES");
cl->addDependency("FULL_PATH_NAMES");
cb = addBool(
cb = addBool(
...
@@ -1682,6 +1691,18 @@ void Config::create()
...
@@ -1682,6 +1691,18 @@ void Config::create()
"declaration order. \n",
"declaration order. \n",
FALSE
FALSE
);
);
cb = addBool(
"SORT_BY_SCOPE_NAME",
"If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be \n"
"sorted by fully-qualified names, including namespaces. If set to \n"
"NO (the default), the class list will be sorted only by class name, \n"
"not including the namespace part. \n"
"Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n"
"Note: This option applies only to the class list, not to the \n"
"alphabetical list.\n",
FALSE
);
cb = addBool(
cb = addBool(
"GENERATE_TODOLIST",
"GENERATE_TODOLIST",
"The GENERATE_TODOLIST tag can be used to enable (YES) or \n"
"The GENERATE_TODOLIST tag can be used to enable (YES) or \n"
...
...
src/docparser.cpp
View file @
3ced6106
...
@@ -699,7 +699,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
...
@@ -699,7 +699,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
Definition
*
compound
=
0
;
Definition
*
compound
=
0
;
MemberDef
*
member
=
0
;
MemberDef
*
member
=
0
;
QString
name
=
linkToText
(
g_token
->
name
,
TRUE
);
QString
name
=
linkToText
(
g_token
->
name
,
TRUE
);
if
(
resolveRef
(
g_context
,
g_token
->
name
,
g_inSeeBlock
,
&
compound
,
&
member
))
if
(
!
g_insideHtmlLink
&&
resolveRef
(
g_context
,
g_token
->
name
,
g_inSeeBlock
,
&
compound
,
&
member
))
{
{
//printf("resolveRef %s = %p (linkable?=%d)\n",g_token->name.data(),member,member->isLinkable());
//printf("resolveRef %s = %p (linkable?=%d)\n",g_token->name.data(),member,member->isLinkable());
if
(
member
)
// member link
if
(
member
)
// member link
...
@@ -3998,7 +3999,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
...
@@ -3998,7 +3999,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
}
}
else
if
(
opt
->
name
==
"href"
)
// <a href=url>..</a> tag
else
if
(
opt
->
name
==
"href"
)
// <a href=url>..</a> tag
{
{
DocHRef
*
href
=
new
DocHRef
(
this
,
opt
->
value
);
// copy attributes
HtmlAttribList
attrList
=
tagHtmlAttribs
;
// and remove the href attribute
attrList
.
remove
(
opt
);
DocHRef
*
href
=
new
DocHRef
(
this
,
attrList
,
opt
->
value
);
m_children
.
append
(
href
);
m_children
.
append
(
href
);
g_insideHtmlLink
=
TRUE
;
g_insideHtmlLink
=
TRUE
;
retval
=
href
->
parse
();
retval
=
href
->
parse
();
...
...
src/docparser.h
View file @
3ced6106
...
@@ -691,16 +691,18 @@ class DocLanguage : public CompAccept<DocLanguage>, public DocNode
...
@@ -691,16 +691,18 @@ class DocLanguage : public CompAccept<DocLanguage>, public DocNode
class
DocHRef
:
public
CompAccept
<
DocHRef
>
,
public
DocNode
class
DocHRef
:
public
CompAccept
<
DocHRef
>
,
public
DocNode
{
{
public
:
public
:
DocHRef
(
DocNode
*
parent
,
const
QString
&
url
)
:
DocHRef
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
,
const
QString
&
url
)
:
m_parent
(
parent
),
m_url
(
url
)
{}
m_parent
(
parent
),
m_
attribs
(
attribs
),
m_
url
(
url
)
{}
int
parse
();
int
parse
();
QString
url
()
const
{
return
m_url
;
}
QString
url
()
const
{
return
m_url
;
}
Kind
kind
()
const
{
return
Kind_HRef
;
}
Kind
kind
()
const
{
return
Kind_HRef
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
DocNode
*
parent
()
const
{
return
m_parent
;
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHRef
>::
accept
(
this
,
v
);
}
void
accept
(
DocVisitor
*
v
)
{
CompAccept
<
DocHRef
>::
accept
(
this
,
v
);
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
private
:
private
:
DocNode
*
m_parent
;
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
QString
m_url
;
QString
m_url
;
};
};
...
...
src/doxygen.cpp
View file @
3ced6106
...
@@ -117,6 +117,7 @@ double Doxygen::sysElapsedTime = 0.0;
...
@@ -117,6 +117,7 @@ double Doxygen::sysElapsedTime = 0.0;
QTime
Doxygen
::
runningTime
;
QTime
Doxygen
::
runningTime
;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
bool
Doxygen
::
outputToWizard
=
FALSE
;
static
StringList
inputFiles
;
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
static
StringDict
excludeNameDict
(
1009
);
// sections
...
@@ -7039,10 +7040,13 @@ static int readDir(QFileInfo *fi,
...
@@ -7039,10 +7040,13 @@ static int readDir(QFileInfo *fi,
if
(
exclDict
==
0
||
exclDict
->
find
(
cfi
->
absFilePath
())
==
0
)
if
(
exclDict
==
0
||
exclDict
->
find
(
cfi
->
absFilePath
())
==
0
)
{
// file should not be excluded
{
// file should not be excluded
//printf("killDict->find(%s)\n",cfi->absFilePath().data());
//printf("killDict->find(%s)\n",cfi->absFilePath().data());
if
((
!
cfi
->
exists
()
||
!
cfi
->
isReadable
())
&&
errorIfNotExist
)
if
(
!
cfi
->
exists
()
||
!
cfi
->
isReadable
())
{
if
(
errorIfNotExist
)
{
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
cfi
->
absFilePath
().
data
());
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
cfi
->
absFilePath
().
data
());
}
}
}
else
if
(
cfi
->
isFile
()
&&
else
if
(
cfi
->
isFile
()
&&
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
cfi
->
isSymLink
())
&&
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
cfi
->
isSymLink
())
&&
(
patList
==
0
||
patternMatch
(
cfi
,
patList
))
&&
(
patList
==
0
||
patternMatch
(
cfi
,
patList
))
&&
...
@@ -7159,10 +7163,13 @@ static int readFileOrDirectory(const char *s,
...
@@ -7159,10 +7163,13 @@ static int readFileOrDirectory(const char *s,
{
{
if
(
exclDict
==
0
||
exclDict
->
find
(
fi
.
absFilePath
())
==
0
)
if
(
exclDict
==
0
||
exclDict
->
find
(
fi
.
absFilePath
())
==
0
)
{
{
if
((
!
fi
.
exists
()
||
!
fi
.
isReadable
())
&&
errorIfNotExist
)
if
(
!
fi
.
exists
()
||
!
fi
.
isReadable
())
{
if
(
errorIfNotExist
)
{
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
s
);
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
s
);
}
}
}
else
if
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
fi
.
isSymLink
())
else
if
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
fi
.
isSymLink
())
{
{
if
(
fi
.
isFile
())
if
(
fi
.
isFile
())
...
@@ -7542,6 +7549,7 @@ void readConfiguration(int argc, char **argv)
...
@@ -7542,6 +7549,7 @@ void readConfiguration(int argc, char **argv)
break
;
break
;
case
'b'
:
case
'b'
:
setvbuf
(
stdout
,
NULL
,
_IONBF
,
0
);
setvbuf
(
stdout
,
NULL
,
_IONBF
,
0
);
Doxygen
::
outputToWizard
=
TRUE
;
break
;
break
;
case
'h'
:
case
'h'
:
case
'?'
:
case
'?'
:
...
...
src/doxygen.h
View file @
3ced6106
...
@@ -100,6 +100,7 @@ class Doxygen
...
@@ -100,6 +100,7 @@ class Doxygen
static
QTime
runningTime
;
static
QTime
runningTime
;
static
SearchIndex
*
searchIndex
;
static
SearchIndex
*
searchIndex
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
bool
outputToWizard
;
};
};
void
initDoxygen
();
void
initDoxygen
();
...
...
src/filedef.cpp
View file @
3ced6106
...
@@ -38,8 +38,9 @@ class DevNullCodeDocInterface : public BaseCodeDocInterface
...
@@ -38,8 +38,9 @@ class DevNullCodeDocInterface : public BaseCodeDocInterface
{
{
public
:
public
:
virtual
void
codify
(
const
char
*
)
{}
virtual
void
codify
(
const
char
*
)
{}
virtual
void
writeCodeLink
(
const
char
*
,
const
char
*
,
virtual
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
,
const
char
*
)
{}
const
char
*
anchor
,
const
char
*
name
)
{
ref
=
ref
;
file
=
file
;
anchor
=
anchor
;
name
=
name
;
}
virtual
void
writeLineNumber
(
const
char
*
,
const
char
*
,
virtual
void
writeLineNumber
(
const
char
*
,
const
char
*
,
const
char
*
,
int
)
{}
const
char
*
,
int
)
{}
virtual
void
startCodeLine
()
{}
virtual
void
startCodeLine
()
{}
...
...
src/htmldocvisitor.cpp
View file @
3ced6106
...
@@ -660,7 +660,8 @@ void HtmlDocVisitor::visitPost(DocInternal *)
...
@@ -660,7 +660,8 @@ void HtmlDocVisitor::visitPost(DocInternal *)
void
HtmlDocVisitor
::
visitPre
(
DocHRef
*
href
)
void
HtmlDocVisitor
::
visitPre
(
DocHRef
*
href
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
m_t
<<
"<a href=
\"
"
<<
href
->
url
()
<<
"
\"
>"
;
m_t
<<
"<a href=
\"
"
<<
href
->
url
()
<<
"
\"
"
<<
htmlAttribsToString
(
href
->
attribs
())
<<
">"
;
}
}
void
HtmlDocVisitor
::
visitPost
(
DocHRef
*
)
void
HtmlDocVisitor
::
visitPost
(
DocHRef
*
)
...
...
src/index.cpp
View file @
3ced6106
...
@@ -3018,6 +3018,16 @@ void writeGroupIndex(OutputList &ol)
...
@@ -3018,6 +3018,16 @@ void writeGroupIndex(OutputList &ol)
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
static
bool
mainPageHasTitle
()
{
if
(
Doxygen
::
mainPage
==
0
)
return
FALSE
;
if
(
Doxygen
::
mainPage
->
title
().
isEmpty
())
return
FALSE
;
if
(
Doxygen
::
mainPage
->
title
().
lower
()
==
"notitle"
)
return
FALSE
;
return
TRUE
;
}
//----------------------------------------------------------------------------
void
writeIndex
(
OutputList
&
ol
)
void
writeIndex
(
OutputList
&
ol
)
{
{
// save old generator state
// save old generator state
...
@@ -3040,11 +3050,11 @@ void writeIndex(OutputList &ol)
...
@@ -3040,11 +3050,11 @@ void writeIndex(OutputList &ol)
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefLine
()
:
1
;
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefLine
()
:
1
;
QCString
title
;
QCString
title
;
if
(
!
Doxygen
::
mainPage
||
Doxygen
::
mainPage
->
title
().
isEmpty
())
if
(
!
mainPageHasTitle
())
{
{
title
=
theTranslator
->
trMainPage
();
title
=
theTranslator
->
trMainPage
();
}
}
else
if
(
Doxygen
::
mainPage
)
else
{
{
title
=
substitute
(
Doxygen
::
mainPage
->
title
(),
"%"
,
""
);
title
=
substitute
(
Doxygen
::
mainPage
->
title
(),
"%"
,
""
);
}
}
...
@@ -3149,7 +3159,7 @@ void writeIndex(OutputList &ol)
...
@@ -3149,7 +3159,7 @@ void writeIndex(OutputList &ol)
if
(
Doxygen
::
mainPage
)
if
(
Doxygen
::
mainPage
)
{
{
ol
.
startIndexSection
(
isMainPage
);
ol
.
startIndexSection
(
isMainPage
);
if
(
!
Doxygen
::
mainPage
->
title
().
isEmpty
())
if
(
mainPageHasTitle
())
{
{
ol
.
parseDoc
(
defFileName
,
defLine
,
Doxygen
::
mainPage
,
0
,
Doxygen
::
mainPage
->
title
(),
FALSE
,
FALSE
);
ol
.
parseDoc
(
defFileName
,
defLine
,
Doxygen
::
mainPage
,
0
,
Doxygen
::
mainPage
->
title
(),
FALSE
,
FALSE
);
}
}
...
...
src/latexdocvisitor.cpp
View file @
3ced6106
...
@@ -294,7 +294,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
...
@@ -294,7 +294,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
void
LatexDocVisitor
::
visit
(
DocAnchor
*
anc
)
void
LatexDocVisitor
::
visit
(
DocAnchor
*
anc
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
m_t
<<
"
\\
label{"
<<
anc
->
anchor
()
<<
"}"
<<
endl
;
m_t
<<
"
\\
label{"
<<
anc
->
file
()
<<
"_"
<<
anc
->
anchor
()
<<
"}"
<<
endl
;
if
(
!
anc
->
file
().
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
!
anc
->
file
().
isEmpty
()
&&
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
m_t
<<
"
\\
hypertarget{"
<<
anc
->
file
()
<<
"_"
<<
anc
->
anchor
()
m_t
<<
"
\\
hypertarget{"
<<
anc
->
file
()
<<
"_"
<<
anc
->
anchor
()
...
@@ -526,7 +526,7 @@ void LatexDocVisitor::visitPre(DocSection *s)
...
@@ -526,7 +526,7 @@ void LatexDocVisitor::visitPre(DocSection *s)
}
}
m_t
<<
"
\\
"
<<
getSectionName
(
s
->
level
())
<<
"{"
;
m_t
<<
"
\\
"
<<
getSectionName
(
s
->
level
())
<<
"{"
;
filter
(
s
->
title
());
filter
(
s
->
title
());
m_t
<<
"}
\\
label{"
<<
s
->
anchor
()
<<
"}"
<<
endl
;
m_t
<<
"}
\\
label{"
<<
s
->
file
()
<<
"_"
<<
s
->
anchor
()
<<
"}"
<<
endl
;
}
}
void
LatexDocVisitor
::
visitPost
(
DocSection
*
)
void
LatexDocVisitor
::
visitPost
(
DocSection
*
)
...
@@ -810,7 +810,7 @@ void LatexDocVisitor::visitPre(DocSecRefItem *)
...
@@ -810,7 +810,7 @@ void LatexDocVisitor::visitPre(DocSecRefItem *)
void
LatexDocVisitor
::
visitPost
(
DocSecRefItem
*
ref
)
void
LatexDocVisitor
::
visitPost
(
DocSecRefItem
*
ref
)
{
{
if
(
m_hide
)
return
;
if
(
m_hide
)
return
;
m_t
<<
"}{
\\
ref{"
<<
ref
->
anchor
()
<<
"}}{}"
<<
endl
;
m_t
<<
"}{
\\
ref{"
<<
ref
->
file
()
<<
"_"
<<
ref
->
anchor
()
<<
"}}{}"
<<
endl
;
}
}
void
LatexDocVisitor
::
visitPre
(
DocSecRefList
*
)
void
LatexDocVisitor
::
visitPre
(
DocSecRefList
*
)
...
@@ -976,7 +976,8 @@ void LatexDocVisitor::endLink(const QString &ref,const QString &file,const QStri
...
@@ -976,7 +976,8 @@ void LatexDocVisitor::endLink(const QString &ref,const QString &file,const QStri
m_t
<<
"}"
;
m_t
<<
"}"
;
if
(
ref
.
isEmpty
()
&&
!
Config_getBool
(
"PDF_HYPERLINKS"
))
if
(
ref
.
isEmpty
()
&&
!
Config_getBool
(
"PDF_HYPERLINKS"
))
{
{
m_t
<<
"{
\\
rm ("
;
filter
(
theTranslator
->
trPageAbbreviation
());
m_t
<<
"{
\\
rm ("
;
filter
(
theTranslator
->
trPageAbbreviation
());
m_t
<<
"
\\
,
\\
pageref{"
<<
file
;
m_t
<<
"
\\
,
\\
pageref{"
<<
file
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"_"
<<
anchor
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"_"
<<
anchor
;
m_t
<<
"})}"
;
m_t
<<
"})}"
;
...
...
src/message.cpp
View file @
3ced6106
...
@@ -113,7 +113,7 @@ void msg(const char *fmt, ...)
...
@@ -113,7 +113,7 @@ void msg(const char *fmt, ...)
static
void
do_warn
(
const
char
*
tag
,
const
char
*
file
,
int
line
,
const
char
*
fmt
,
va_list
args
)
static
void
do_warn
(
const
char
*
tag
,
const
char
*
file
,
int
line
,
const
char
*
fmt
,
va_list
args
)
{
{
if
(
!
Config_getBool
(
tag
))
return
;
// warning type disabled
if
(
!
Config_getBool
(
tag
))
return
;
// warning type disabled
char
text
[
4096
];
char
text
[
4096
0
];
vsprintf
(
text
,
fmt
,
args
);
vsprintf
(
text
,
fmt
,
args
);
if
(
file
==
0
)
file
=
"<unknown>"
;
if
(
file
==
0
)
file
=
"<unknown>"
;
switch
(
warnFormatOrder
)
switch
(
warnFormatOrder
)
...
...
src/outputlist.cpp
View file @
3ced6106
...
@@ -36,64 +36,17 @@ OutputList::OutputList(bool)
...
@@ -36,64 +36,17 @@ OutputList::OutputList(bool)
outputs
->
setAutoDelete
(
TRUE
);
outputs
->
setAutoDelete
(
TRUE
);
}
}
//OutputList::OutputList(const OutputList *olist)
//{
// //printf("OutputList::OutputList() deep copy\n");
// outputs = new QList<OutputGenerator>;
// outputs->setAutoDelete(TRUE);
//
// QList<OutputGenerator> *ol=olist->outputs;
// OutputGenerator *og=ol->first();
// while (og)
// {
// OutputGenerator *ogc=og->copy();
// outputs->append(ogc);
// if (og->isEnabled()) ogc->enable(); else ogc->disable();
// og=ol->next();
// }
// //printf("OutputList::OutputList dst=%d res=%d\n",ol->count(),outputs->count());
//}
OutputList
::~
OutputList
()
OutputList
::~
OutputList
()
{
{
//printf("OutputList::~OutputList()\n");
//printf("OutputList::~OutputList()\n");
delete
outputs
;
delete
outputs
;
}
}
//OutputList &OutputList::operator=(const OutputList &olist)
//{
// if (this!=&olist)
// {
// QList<OutputGenerator> *ol=olist.outputs;
// OutputGenerator *ogsrc=ol->first();
// OutputGenerator *ogdst=outputs->first();
// //printf("OutputList::operator= src=%d dst=%d\n",outputs->count(),ol->count());
// while (ogdst)
// {
// ogdst=ogsrc->copy();
// ogsrc=ol->next();
// ogdst=outputs->next();
// }
// }
// return *this;
//}
void
OutputList
::
add
(
const
OutputGenerator
*
og
)
void
OutputList
::
add
(
const
OutputGenerator
*
og
)
{
{
if
(
og
)
outputs
->
append
(
og
);
if
(
og
)
outputs
->
append
(
og
);
}
}
//HtmlGenerator *OutputList::getHtmlGenerator()
//{
// OutputGenerator *og=outputs->first();
// while (og)
// {
// if (og->get(OutputGenerator::Html)) return (HtmlGenerator *)og;
// og=outputs->next();
// }
// return 0; // should not happen!
//}
void
OutputList
::
disableAllBut
(
OutputGenerator
::
OutputType
o
)
void
OutputList
::
disableAllBut
(
OutputGenerator
::
OutputType
o
)
{
{
OutputGenerator
*
og
=
outputs
->
first
();
OutputGenerator
*
og
=
outputs
->
first
();
...
@@ -156,21 +109,6 @@ bool OutputList::isEnabled(OutputGenerator::OutputType o)
...
@@ -156,21 +109,6 @@ bool OutputList::isEnabled(OutputGenerator::OutputType o)
return
result
;
return
result
;
}
}
//OutputList &OutputList::operator+=(const OutputList &outputList)
//{
// OutputList *ol=(OutputList *)&outputList;
// OutputGenerator *ogsrc=ol->outputs->first();
// OutputGenerator *ogdst=outputs->first();
// //printf("OutputList::operator+= src=%d dst=%d\n",outputs->count(),ol->outputs->count());
// while (ogdst && ogsrc)
// {
// ogdst->append(ogsrc);
// ogsrc=ol->outputs->next();
// ogdst=outputs->next();
// }
// return *this;
//}
void
OutputList
::
pushGeneratorState
()
void
OutputList
::
pushGeneratorState
()
{
{
OutputGenerator
*
og
=
outputs
->
first
();
OutputGenerator
*
og
=
outputs
->
first
();
...
...
src/perlmodgen.cpp
View file @
3ced6106
...
@@ -1921,7 +1921,7 @@ void PerlModGenerator::generatePerlModForGroup(GroupDef *gd)
...
@@ -1921,7 +1921,7 @@ void PerlModGenerator::generatePerlModForGroup(GroupDef *gd)
GroupDef
*
sgd
;
GroupDef
*
sgd
;
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
m_output
.
openHash
()
m_output
.
openHash
()
.
addFieldQuotedString
(
"title"
,
gd
->
groupTitle
())
.
addFieldQuotedString
(
"title"
,
s
gd
->
groupTitle
())
.
closeHash
();
.
closeHash
();
m_output
.
closeList
();
m_output
.
closeList
();
}
}
...
...
src/scanner.l
View file @
3ced6106
...
@@ -500,11 +500,84 @@ static bool checkForKnRstyleC()
...
@@ -500,11 +500,84 @@ static bool checkForKnRstyleC()
return TRUE;
return TRUE;
}
}
static void splitKnRArg(QCString &oldStyleArgPtr,QCString &oldStyleArgName)
{
int si = current->args.length();
if (oldStyleArgType.isEmpty()) // new argument
{
static QRegExp re("([^)]*)");
int bi1 = current->args.findRev(re);
int bi2 = bi1!=-1 ? current->args.findRev(re,bi1-1) : -1;
char c;
if (bi1!=-1 && bi2!=-1) // found something like "int (*func)(int arg)"
{
int s=bi2+1;
oldStyleArgType = current->args.left(s);
int i=s;
while (i<si && ((c=current->args.at(i))=='*' || isspace(c))) i++;
oldStyleArgType += current->args.mid(s,i-s);
s=i;
while (i<si && isId(current->args.at(i))) i++;
oldStyleArgName = current->args.mid(s,i-s);
oldStyleArgType+=current->args.mid(i);
}
else if (bi1!=-1) // redundant braces like in "int (*var)"
{
int s=bi1;
oldStyleArgType = current->args.left(s);
s++;
int i=s+1;
while (i<si && ((c=current->args.at(i))=='*' || isspace(c))) i++;
oldStyleArgType += current->args.mid(s,i-s);
s=i;
while (i<si && isId(current->args.at(i))) i++;
oldStyleArgName = current->args.mid(s,i-s);
}
else // normal "int *var"
{
int l=si,i=l-1,j;
char c;
// look for start of name in "type *name"
while (i>=0 && isId(current->args.at(i))) i--;
j=i+1;
// look for start of *'s
while (i>=0 && ((c=current->args.at(i))=='*' || isspace(c))) i--;
i++;
if (i!=l)
{
oldStyleArgType=current->args.left(i);
oldStyleArgPtr=current->args.mid(i,j-i);
oldStyleArgName=current->args.mid(j).stripWhiteSpace();
}
else
{
oldStyleArgName=current->args.copy().stripWhiteSpace();
}
}
}
else // continuation like *arg2 in "int *args,*arg2"
{
int l=si,j=0;
char c;
while (j<l && ((c=current->args.at(j))=='*' || isspace(c))) j++;
if (j>0)
{
oldStyleArgPtr=current->args.left(j);
oldStyleArgName=current->args.mid(j).stripWhiteSpace();
}
else
{
oldStyleArgName=current->args.copy().stripWhiteSpace();
}
}
//fprintf(stderr,"type=%s ptr=%s name=%s\n",oldStyleArgType.data(),oldStyleArgPtr.data(),oldStyleArgName.data());
}
/*! Update the argument \a name with additional \a type info. For K&R style
/*! Update the argument \a name with additional \a type info. For K&R style
* function the type is found \e after the argument list, so this routine
* function the type is found \e after the argument list, so this routine
* in needed to fix up.
* in needed to fix up.
*/
*/
void addKnRArgInfo(const QCString &type,const QCString &name,
static
void addKnRArgInfo(const QCString &type,const QCString &name,
const QCString &brief,const QCString &docs)
const QCString &brief,const QCString &docs)
{
{
if (current->argList==0) return;
if (current->argList==0) return;
...
@@ -564,7 +637,7 @@ BS ^(({B}*"//")?)(({B}*"*"+)?){B}*
...
@@ -564,7 +637,7 @@ BS ^(({B}*"//")?)(({B}*"*"+)?){B}*
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
FILEECHAR [a-z_A-Z0-9\-\+]
FILEECHAR [a-z_A-Z0-9\-\+]
FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+"\"")
FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+"\"")
ID [a-z_A-Z][a-z_A-Z0-9]*
ID
"$"?
[a-z_A-Z][a-z_A-Z0-9]*
LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
SCOPEID {ID}({ID}*{BN}*"::"{BN}*)*({ID}?)
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
...
@@ -2850,7 +2923,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -2850,7 +2923,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<FuncQual>{ID} { // typically a K&R style C function
<FuncQual>{ID} { // typically a K&R style C function
if (checkForKnRstyleC())
if (checkForKnRstyleC())
{
{
fprintf(stderr,"===> got a K&R style function\n");
//
fprintf(stderr,"===> got a K&R style function\n");
current->args = yytext;
current->args = yytext;
oldStyleArgType.resize(0);
oldStyleArgType.resize(0);
BEGIN(OldStyleArgs);
BEGIN(OldStyleArgs);
...
@@ -2863,41 +2936,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -2863,41 +2936,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<OldStyleArgs>[,;] {
<OldStyleArgs>[,;] {
QCString oldStyleArgPtr;
QCString oldStyleArgPtr;
QCString oldStyleArgName;
QCString oldStyleArgName;
if (oldStyleArgType.isEmpty())
splitKnRArg(oldStyleArgPtr,oldStyleArgName);
{
int l=current->args.length(),i=l-1,j;
char c;
while (i>=0 && isId(current->args.at(i))) i--;
j=i+1;
while (i>=0 && ((c=current->args.at(i))=='*' || isspace(c))) i--;
i++;
if (i!=l)
{
oldStyleArgType=current->args.left(i);
oldStyleArgPtr=current->args.mid(i,j-i);
oldStyleArgName=current->args.mid(j).stripWhiteSpace();
}
else
{
oldStyleArgName=current->args.copy().stripWhiteSpace();
}
}
else
{
int l=current->args.length(),j=0;
char c;
while (j<l && ((c=current->args.at(j))=='*' || isspace(c))) j++;
if (j>0)
{
oldStyleArgPtr=current->args.left(j);
oldStyleArgName=current->args.mid(j).stripWhiteSpace();
}
else
{
oldStyleArgName=current->args.copy().stripWhiteSpace();
}
}
fprintf(stderr,"type=%s ptr=%s name=%s\n",oldStyleArgType.data(),oldStyleArgPtr.data(),oldStyleArgName.data());
QCString doc,brief;
QCString doc,brief;
if (current->doc!=docBackup)
if (current->doc!=docBackup)
{
{
...
@@ -2909,7 +2948,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -2909,7 +2948,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
brief=current->brief.copy();
brief=current->brief.copy();
current->brief=briefBackup;
current->brief=briefBackup;
}
}
addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,oldStyleArgName,brief,doc);
addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,
oldStyleArgName,brief,doc);
current->args.resize(0);
current->args.resize(0);
if (*yytext==';') oldStyleArgType.resize(0);
if (*yytext==';') oldStyleArgType.resize(0);
}
}
...
@@ -4404,7 +4444,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4404,7 +4444,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<SkipVerbatim><<EOF>> {
<SkipVerbatim><<EOF>> {
warn(yyFileName,yyLineNr,
warn(yyFileName,yyLineNr,
"Warning: reached end of file while inside a @%s block; check for missing @end%s!",g_skipBlockName.data(),g_skipBlockName.data()
"Warning: reached end of file while inside a @%s block; check for missing @end%s
tag
!",g_skipBlockName.data(),g_skipBlockName.data()
);
);
yyterminate();
yyterminate();
}
}
...
@@ -4452,7 +4492,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -4452,7 +4492,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<SkipCode><<EOF>> {
<SkipCode><<EOF>> {
warn(yyFileName,yyLineNr,
warn(yyFileName,yyLineNr,
"Warning: reached end of file while inside a %s block; check for missing end tag!",
"Warning: reached end of file while inside a @%s block; check for missing @end%s tag!",
g_skipBlockName.data(),
g_skipBlockName.data()
g_skipBlockName.data()
);
);
yyterminate();
yyterminate();
...
...
src/util.cpp
View file @
3ced6106
...
@@ -847,15 +847,53 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
...
@@ -847,15 +847,53 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
Definition
*
newScope
=
followPath
(
scope
,
fileScope
,
explicitScopePart
);
Definition
*
newScope
=
followPath
(
scope
,
fileScope
,
explicitScopePart
);
if
(
newScope
)
// explicitScope is inside scope => newScope is the result
if
(
newScope
)
// explicitScope is inside scope => newScope is the result
{
{
//printf("scope traversal successful
!\n"
);
//printf("scope traversal successful
%s<->%s!\n",item->getOuterScope()->name().data(),newScope->name().data()
);
if
(
item
->
getOuterScope
()
==
newScope
)
if
(
item
->
getOuterScope
()
==
newScope
)
{
{
//printf("> found it\n");
//printf("> found it\n");
}
}
else
else
{
{
// repeat for the parent scope
int
i
=-
1
;
int
i
=-
1
;
if
(
newScope
->
definitionType
()
==
Definition
::
TypeNamespace
)
{
// this part deals with the case where item is a class
// A::B::C but is explicit referenced as A::C, where B is imported
// in A via a using directive.
//printf("newScope is a namespace: %s!\n",newScope->name().data());
NamespaceDef
*
nscope
=
(
NamespaceDef
*
)
newScope
;
ClassSDict
*
cl
=
nscope
->
getUsedClasses
();
if
(
cl
)
{
ClassSDict
::
Iterator
cli
(
*
cl
);
ClassDef
*
cd
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
i
=
isAccessibleFrom
(
scope
,
fileScope
,
item
,
cd
->
name
());
if
(
i
!=-
1
)
{
//printf("> found via explicit scope of used class\n");
goto
done
;
}
}
}
NamespaceSDict
*
nl
=
nscope
->
getUsedNamespaces
();
if
(
nl
)
{
NamespaceSDict
::
Iterator
nli
(
*
nl
);
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
i
=
isAccessibleFrom
(
scope
,
fileScope
,
item
,
nd
->
name
());
if
(
i
!=-
1
)
{
//printf("> found via explicit scope of used namespace\n");
goto
done
;
}
}
}
}
// repeat for the parent scope
if
(
scope
!=
Doxygen
::
globalScope
)
if
(
scope
!=
Doxygen
::
globalScope
)
{
{
i
=
isAccessibleFrom
(
scope
->
getOuterScope
(),
fileScope
,
item
,
explicitScopePart
);
i
=
isAccessibleFrom
(
scope
->
getOuterScope
(),
fileScope
,
item
,
explicitScopePart
);
...
@@ -1381,17 +1419,24 @@ QCString argListToString(ArgumentList *al)
...
@@ -1381,17 +1419,24 @@ QCString argListToString(ArgumentList *al)
result
+=
"("
;
result
+=
"("
;
while
(
a
)
while
(
a
)
{
{
QCString
type1
=
a
->
type
,
type2
;
int
i
=
type1
.
find
(
")("
);
// hack to deal with function pointers
if
(
i
!=-
1
)
{
type2
=
type1
.
mid
(
i
);
type1
=
type1
.
left
(
i
);
}
if
(
!
a
->
attrib
.
isEmpty
())
if
(
!
a
->
attrib
.
isEmpty
())
{
{
result
+=
a
->
attrib
+
" "
;
result
+=
a
->
attrib
+
" "
;
}
}
if
(
!
a
->
name
.
isEmpty
()
||
!
a
->
array
.
isEmpty
())
if
(
!
a
->
name
.
isEmpty
()
||
!
a
->
array
.
isEmpty
())
{
{
result
+=
a
->
type
+
" "
+
a
->
name
+
a
->
array
;
result
+=
type1
+
" "
+
a
->
name
+
type2
+
a
->
array
;
}
}
else
else
{
{
result
+=
a
->
type
;
result
+=
type1
+
type2
;
}
}
if
(
!
a
->
defval
.
isEmpty
())
if
(
!
a
->
defval
.
isEmpty
())
{
{
...
...
src/xmlgen.cpp
View file @
3ced6106
...
@@ -1467,8 +1467,16 @@ static void generateXMLForPage(PageDef *pd,QTextStream &ti,bool isExample)
...
@@ -1467,8 +1467,16 @@ static void generateXMLForPage(PageDef *pd,QTextStream &ti,bool isExample)
t
<<
" <title>"
<<
convertToXML
(
si
->
title
)
<<
"</title>"
<<
endl
;
t
<<
" <title>"
<<
convertToXML
(
si
->
title
)
<<
"</title>"
<<
endl
;
}
}
t
<<
" <detaileddescription>"
<<
endl
;
t
<<
" <detaileddescription>"
<<
endl
;
if
(
isExample
)
{
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
pd
->
documentation
()
+
"
\n\\
include "
+
pd
->
name
());
pd
->
documentation
()
+
"
\n\\
include "
+
pd
->
name
());
}
else
{
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
pd
->
documentation
());
}
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" </detaileddescription>"
<<
endl
;
t
<<
" </compounddef>"
<<
endl
;
t
<<
" </compounddef>"
<<
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