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
Hide 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_NUMBER =
OUTPUT_DIRECTORY = doxygen_docs
OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
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
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
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
SORT_BRIEF_DOCS = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
ALIASES =
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
...
...
@@ -46,6 +57,7 @@ SHOW_USED_FILES = YES
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
...
...
@@ -65,7 +77,7 @@ EXCLUDE = src/code.cpp \
src/pre.cpp \
src/scanner.cpp \
src/tag.cpp \
src/doctokenizer.cpp \
src/doctokenizer.cpp \
src/logos.cpp \
src/doxysearch.cpp \
src/suffixtree.cpp \
...
...
@@ -73,6 +85,7 @@ EXCLUDE = src/code.cpp \
src/searchindex.cpp \
src/searchindex.h \
src/commentcnv.cpp
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
...
...
@@ -85,8 +98,10 @@ FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
...
...
@@ -98,11 +113,14 @@ IGNORE_PREFIX =
#---------------------------------------------------------------------------
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
...
...
@@ -115,6 +133,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 =
...
...
@@ -122,6 +142,7 @@ LATEX_HEADER =
PDF_HYPERLINKS = YES
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
...
...
@@ -142,11 +163,22 @@ MAN_LINKS = NO
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
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
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
...
...
@@ -159,32 +191,36 @@ PREDEFINED =
EXPAND_AS_DEFINED =
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
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
HIDE_UNDOC_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::addtions related to the search engine
# Configuration::add
i
tions related to the search engine
#---------------------------------------------------------------------------
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
(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.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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 @@
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).
</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>
The elements in the class diagrams in HTML and RTF
...
...
src/classdef.h
View file @
3ced6106
...
...
@@ -302,6 +302,8 @@ class ClassDef : public Definition
* \param fName the file name as found in the tag file.
* This overwrites the file that doxygen normally
* 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
,
const
char
*
name
,
CompoundType
ct
,
...
...
src/classlist.cpp
View file @
3ced6106
...
...
@@ -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
*
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
()));
int
p1
=
0
,
p2
=
0
;
static
bool
b
=
Config_getBool
(
"SORT_BY_SCOPE_NAME"
);
if
(
!
b
)
{
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
)
{
ClassDef
*
c1
=
(
ClassDef
*
)
item1
;
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
()));
return
compItems
(
item1
,
item2
);
}
ClassListIterator
::
ClassListIterator
(
const
ClassList
&
cllist
)
:
...
...
src/code.l
View file @
3ced6106
...
...
@@ -1074,7 +1074,7 @@ static int yyread(char *buf,int max_size)
B [ \t]
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})
TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">"
SCOPETNAME ((({ID}{TEMPLIST}?){BN}*"::"{BN}*)*)((~{BN}*)?{ID})
...
...
@@ -1543,7 +1543,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_code->codify(yytext);
endFontClass();
}
<Body>"
this->"
{ g_code->codify(yytext); }
<Body>"
$"?"this->"
{ g_code->codify(yytext); }
<Body>"."|"->" {
g_code->codify(yytext);
g_memCallContext = YY_START;
...
...
src/config.l
View file @
3ced6106
...
...
@@ -897,33 +897,40 @@ void Config::check()
// expand the relative stripFromPath values
QStrList &stripFromPath = Config_getList("STRIP_FROM_PATH");
char *sfp = stripFromPath.first();
while (sfp)
if (sfp==0) // by default use the current path
{
register char *p = sfp;
if (p)
stripFromPath.append(QDir::currentDirPath()+"/");
}
else
{
while (sfp)
{
char c
;
while ((c=*p)
)
register char *p = sfp
;
if (p
)
{
if (c=='\\') *p='/';
p++;
char c;
while ((c=*p))
{
if (c=='\\') *p='/';
p++;
}
}
}
QCString path = sfp;
if (path.at(0)!='/' && (path.length()<=2 || path.at(1)!=':'))
{
QFileInfo fi(path);
if (fi.exists() && fi.isDir())
QCString path = sfp;
if (path.at(0)!='/' && (path.length()<=2 || path.at(1)!=':'))
{
int i = stripFromPath.at();
stripFromPath.remove();
if (stripFromPath.at()==i) // did not remove last item
stripFromPath.insert(i,fi.absFilePath()+"/");
else
stripFromPath.append(fi.absFilePath()+"/");
QFileInfo fi(path);
if (fi.exists() && fi.isDir())
{
int i = stripFromPath.at();
stripFromPath.remove();
if (stripFromPath.at()==i) // did not remove last item
stripFromPath.insert(i,fi.absFilePath()+"/");
else
stripFromPath.append(fi.absFilePath()+"/");
}
}
sfp = stripFromPath.next();
}
sfp = stripFromPath.next();
}
...
...
@@ -1475,7 +1482,9 @@ void Config::create()
"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"
"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");
cb = addBool(
...
...
@@ -1682,6 +1691,18 @@ void Config::create()
"declaration order. \n",
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(
"GENERATE_TODOLIST",
"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)
Definition
*
compound
=
0
;
MemberDef
*
member
=
0
;
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());
if
(
member
)
// member link
...
...
@@ -3998,7 +3999,11 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &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
);
g_insideHtmlLink
=
TRUE
;
retval
=
href
->
parse
();
...
...
src/docparser.h
View file @
3ced6106
...
...
@@ -691,16 +691,18 @@ class DocLanguage : public CompAccept<DocLanguage>, public DocNode
class
DocHRef
:
public
CompAccept
<
DocHRef
>
,
public
DocNode
{
public
:
DocHRef
(
DocNode
*
parent
,
const
QString
&
url
)
:
m_parent
(
parent
),
m_url
(
url
)
{}
DocHRef
(
DocNode
*
parent
,
const
HtmlAttribList
&
attribs
,
const
QString
&
url
)
:
m_parent
(
parent
),
m_
attribs
(
attribs
),
m_
url
(
url
)
{}
int
parse
();
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
);
}
const
HtmlAttribList
&
attribs
()
const
{
return
m_attribs
;
}
private
:
DocNode
*
m_parent
;
HtmlAttribList
m_attribs
;
QString
m_url
;
};
...
...
src/doxygen.cpp
View file @
3ced6106
...
...
@@ -117,6 +117,7 @@ double Doxygen::sysElapsedTime = 0.0;
QTime
Doxygen
::
runningTime
;
SearchIndex
*
Doxygen
::
searchIndex
=
0
;
SDict
<
DefinitionList
>
*
Doxygen
::
symbolMap
;
bool
Doxygen
::
outputToWizard
=
FALSE
;
static
StringList
inputFiles
;
static
StringDict
excludeNameDict
(
1009
);
// sections
...
...
@@ -7039,9 +7040,12 @@ static int readDir(QFileInfo *fi,
if
(
exclDict
==
0
||
exclDict
->
find
(
cfi
->
absFilePath
())
==
0
)
{
// file should not be excluded
//printf("killDict->find(%s)\n",cfi->absFilePath().data());
if
(
(
!
cfi
->
exists
()
||
!
cfi
->
isReadable
())
&&
errorIfNotExist
)
if
(
!
cfi
->
exists
()
||
!
cfi
->
isReadable
()
)
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
cfi
->
absFilePath
().
data
());
if
(
errorIfNotExist
)
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
cfi
->
absFilePath
().
data
());
}
}
else
if
(
cfi
->
isFile
()
&&
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
cfi
->
isSymLink
())
&&
...
...
@@ -7159,9 +7163,12 @@ static int readFileOrDirectory(const char *s,
{
if
(
exclDict
==
0
||
exclDict
->
find
(
fi
.
absFilePath
())
==
0
)
{
if
(
(
!
fi
.
exists
()
||
!
fi
.
isReadable
())
&&
errorIfNotExist
)
if
(
!
fi
.
exists
()
||
!
fi
.
isReadable
()
)
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
s
);
if
(
errorIfNotExist
)
{
err
(
"Error: source %s is not a readable file or directory... skipping.
\n
"
,
s
);
}
}
else
if
(
!
Config_getBool
(
"EXCLUDE_SYMLINKS"
)
||
!
fi
.
isSymLink
())
{
...
...
@@ -7542,6 +7549,7 @@ void readConfiguration(int argc, char **argv)
break
;
case
'b'
:
setvbuf
(
stdout
,
NULL
,
_IONBF
,
0
);
Doxygen
::
outputToWizard
=
TRUE
;
break
;
case
'h'
:
case
'?'
:
...
...
src/doxygen.h
View file @
3ced6106
...
...
@@ -100,6 +100,7 @@ class Doxygen
static
QTime
runningTime
;
static
SearchIndex
*
searchIndex
;
static
SDict
<
DefinitionList
>
*
symbolMap
;
static
bool
outputToWizard
;
};
void
initDoxygen
();
...
...
src/filedef.cpp
View file @
3ced6106
...
...
@@ -38,8 +38,9 @@ class DevNullCodeDocInterface : public BaseCodeDocInterface
{
public
:
virtual
void
codify
(
const
char
*
)
{}
virtual
void
writeCodeLink
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
{}
virtual
void
writeCodeLink
(
const
char
*
ref
,
const
char
*
file
,
const
char
*
anchor
,
const
char
*
name
)
{
ref
=
ref
;
file
=
file
;
anchor
=
anchor
;
name
=
name
;
}
virtual
void
writeLineNumber
(
const
char
*
,
const
char
*
,
const
char
*
,
int
)
{}
virtual
void
startCodeLine
()
{}
...
...
src/htmldocvisitor.cpp
View file @
3ced6106
...
...
@@ -660,7 +660,8 @@ void HtmlDocVisitor::visitPost(DocInternal *)
void
HtmlDocVisitor
::
visitPre
(
DocHRef
*
href
)
{
if
(
m_hide
)
return
;
m_t
<<
"<a href=
\"
"
<<
href
->
url
()
<<
"
\"
>"
;
m_t
<<
"<a href=
\"
"
<<
href
->
url
()
<<
"
\"
"
<<
htmlAttribsToString
(
href
->
attribs
())
<<
">"
;
}
void
HtmlDocVisitor
::
visitPost
(
DocHRef
*
)
...
...
src/index.cpp
View file @
3ced6106
...
...
@@ -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
)
{
// save old generator state
...
...
@@ -3040,11 +3050,11 @@ void writeIndex(OutputList &ol)
Doxygen
::
mainPage
?
Doxygen
::
mainPage
->
getDefLine
()
:
1
;
QCString
title
;
if
(
!
Doxygen
::
mainPage
||
Doxygen
::
mainPage
->
title
().
isEmpty
())
if
(
!
mainPageHasTitle
())
{
title
=
theTranslator
->
trMainPage
();
}
else
if
(
Doxygen
::
mainPage
)
else
{
title
=
substitute
(
Doxygen
::
mainPage
->
title
(),
"%"
,
""
);
}
...
...
@@ -3149,7 +3159,7 @@ void writeIndex(OutputList &ol)
if
(
Doxygen
::
mainPage
)
{
ol
.
startIndexSection
(
isMainPage
);
if
(
!
Doxygen
::
mainPage
->
title
().
isEmpty
())
if
(
mainPageHasTitle
())
{
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)
void
LatexDocVisitor
::
visit
(
DocAnchor
*
anc
)
{
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"
))
{
m_t
<<
"
\\
hypertarget{"
<<
anc
->
file
()
<<
"_"
<<
anc
->
anchor
()
...
...
@@ -526,7 +526,7 @@ void LatexDocVisitor::visitPre(DocSection *s)
}
m_t
<<
"
\\
"
<<
getSectionName
(
s
->
level
())
<<
"{"
;
filter
(
s
->
title
());
m_t
<<
"}
\\
label{"
<<
s
->
anchor
()
<<
"}"
<<
endl
;
m_t
<<
"}
\\
label{"
<<
s
->
file
()
<<
"_"
<<
s
->
anchor
()
<<
"}"
<<
endl
;
}
void
LatexDocVisitor
::
visitPost
(
DocSection
*
)
...
...
@@ -810,7 +810,7 @@ void LatexDocVisitor::visitPre(DocSecRefItem *)
void
LatexDocVisitor
::
visitPost
(
DocSecRefItem
*
ref
)
{
if
(
m_hide
)
return
;
m_t
<<
"}{
\\
ref{"
<<
ref
->
anchor
()
<<
"}}{}"
<<
endl
;
m_t
<<
"}{
\\
ref{"
<<
ref
->
file
()
<<
"_"
<<
ref
->
anchor
()
<<
"}}{}"
<<
endl
;
}
void
LatexDocVisitor
::
visitPre
(
DocSecRefList
*
)
...
...
@@ -976,7 +976,8 @@ void LatexDocVisitor::endLink(const QString &ref,const QString &file,const QStri
m_t
<<
"}"
;
if
(
ref
.
isEmpty
()
&&
!
Config_getBool
(
"PDF_HYPERLINKS"
))
{
m_t
<<
"{
\\
rm ("
;
filter
(
theTranslator
->
trPageAbbreviation
());
m_t
<<
"{
\\
rm ("
;
filter
(
theTranslator
->
trPageAbbreviation
());
m_t
<<
"
\\
,
\\
pageref{"
<<
file
;
if
(
!
anchor
.
isEmpty
())
m_t
<<
"_"
<<
anchor
;
m_t
<<
"})}"
;
...
...
src/message.cpp
View file @
3ced6106
...
...
@@ -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
)
{
if
(
!
Config_getBool
(
tag
))
return
;
// warning type disabled
char
text
[
4096
];
char
text
[
4096
0
];
vsprintf
(
text
,
fmt
,
args
);
if
(
file
==
0
)
file
=
"<unknown>"
;
switch
(
warnFormatOrder
)
...
...
src/outputlist.cpp
View file @
3ced6106
...
...
@@ -36,64 +36,17 @@ OutputList::OutputList(bool)
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
()
{
//printf("OutputList::~OutputList()\n");
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
)
{
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
)
{
OutputGenerator
*
og
=
outputs
->
first
();
...
...
@@ -156,21 +109,6 @@ bool OutputList::isEnabled(OutputGenerator::OutputType o)
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
()
{
OutputGenerator
*
og
=
outputs
->
first
();
...
...
src/perlmodgen.cpp
View file @
3ced6106
...
...
@@ -1921,7 +1921,7 @@ void PerlModGenerator::generatePerlModForGroup(GroupDef *gd)
GroupDef
*
sgd
;
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
m_output
.
openHash
()
.
addFieldQuotedString
(
"title"
,
gd
->
groupTitle
())
.
addFieldQuotedString
(
"title"
,
s
gd
->
groupTitle
())
.
closeHash
();
m_output
.
closeList
();
}
...
...
src/scanner.l
View file @
3ced6106
...
...
@@ -500,12 +500,85 @@ static bool checkForKnRstyleC()
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
* function the type is found \e after the argument list, so this routine
* in needed to fix up.
*/
void addKnRArgInfo(const QCString &type,const QCString &name,
const QCString &brief,const QCString &docs)
static
void addKnRArgInfo(const QCString &type,const QCString &name,
const QCString &brief,const QCString &docs)
{
if (current->argList==0) return;
ArgumentListIterator ali(*current->argList);
...
...
@@ -564,7 +637,7 @@ BS ^(({B}*"//")?)(({B}*"*"+)?){B}*
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
FILEECHAR [a-z_A-Z0-9\-\+]
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\-]*
SCOPEID {ID}({ID}*{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_;]
<FuncQual>{ID} { // typically a K&R style C function
if (checkForKnRstyleC())
{
fprintf(stderr,"===> got a K&R style function\n");
//
fprintf(stderr,"===> got a K&R style function\n");
current->args = yytext;
oldStyleArgType.resize(0);
BEGIN(OldStyleArgs);
...
...
@@ -2863,41 +2936,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<OldStyleArgs>[,;] {
QCString oldStyleArgPtr;
QCString oldStyleArgName;
if (oldStyleArgType.isEmpty())
{
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());
splitKnRArg(oldStyleArgPtr,oldStyleArgName);
QCString doc,brief;
if (current->doc!=docBackup)
{
...
...
@@ -2909,7 +2948,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
brief=current->brief.copy();
current->brief=briefBackup;
}
addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,oldStyleArgName,brief,doc);
addKnRArgInfo(oldStyleArgType+oldStyleArgPtr,
oldStyleArgName,brief,doc);
current->args.resize(0);
if (*yytext==';') oldStyleArgType.resize(0);
}
...
...
@@ -4404,7 +4444,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<SkipVerbatim><<EOF>> {
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();
}
...
...
@@ -4452,7 +4492,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<SkipCode><<EOF>> {
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()
);
yyterminate();
...
...
src/util.cpp
View file @
3ced6106
...
...
@@ -847,15 +847,53 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
Definition
*
newScope
=
followPath
(
scope
,
fileScope
,
explicitScopePart
);
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
)
{
//printf("> found it\n");
}
else
{
// repeat for the parent scope
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
)
{
i
=
isAccessibleFrom
(
scope
->
getOuterScope
(),
fileScope
,
item
,
explicitScopePart
);
...
...
@@ -1381,17 +1419,24 @@ QCString argListToString(ArgumentList *al)
result
+=
"("
;
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
())
{
result
+=
a
->
attrib
+
" "
;
}
if
(
!
a
->
name
.
isEmpty
()
||
!
a
->
array
.
isEmpty
())
{
result
+=
a
->
type
+
" "
+
a
->
name
+
a
->
array
;
result
+=
type1
+
" "
+
a
->
name
+
type2
+
a
->
array
;
}
else
{
result
+=
a
->
type
;
result
+=
type1
+
type2
;
}
if
(
!
a
->
defval
.
isEmpty
())
{
...
...
src/xmlgen.cpp
View file @
3ced6106
...
...
@@ -1467,8 +1467,16 @@ static void generateXMLForPage(PageDef *pd,QTextStream &ti,bool isExample)
t
<<
" <title>"
<<
convertToXML
(
si
->
title
)
<<
"</title>"
<<
endl
;
}
t
<<
" <detaileddescription>"
<<
endl
;
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
pd
->
documentation
()
+
"
\n\\
include "
+
pd
->
name
());
if
(
isExample
)
{
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
pd
->
documentation
()
+
"
\n\\
include "
+
pd
->
name
());
}
else
{
writeXMLDocBlock
(
t
,
pd
->
docFile
(),
pd
->
docLine
(),
pd
,
0
,
pd
->
documentation
());
}
t
<<
" </detaileddescription>"
<<
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