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
74cc4d70
Commit
74cc4d70
authored
Dec 15, 1999
by
mueller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mods for doxygen-0.49-991117
parent
5576fbf6
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
7878 additions
and
7662 deletions
+7878
-7662
INSTALL
INSTALL
+4
-4
Makefile.in
Makefile.in
+3
-1
README
README
+2
-2
VERSION
VERSION
+1
-1
commands.doc
doc/commands.doc
+2
-5
config.doc
doc/config.doc
+6
-9
faq.doc
doc/faq.doc
+19
-0
history.doc
doc/history.doc
+0
-16
index.doc
doc/index.doc
+1
-0
language.doc
doc/language.doc
+0
-14
todo.doc
doc/todo.doc
+36
-0
code.cpp
src/code.cpp
+214
-163
code.l
src/code.l
+136
-85
config.cpp
src/config.cpp
+1
-11
config.l
src/config.l
+1
-11
debug.cpp
src/debug.cpp
+7
-0
debug.h
src/debug.h
+6
-4
doxygen.cpp
src/doxygen.cpp
+168
-176
filename.cpp
src/filename.cpp
+8
-4
groupdef.cpp
src/groupdef.cpp
+1
-0
htmlgen.cpp
src/htmlgen.cpp
+10
-7
index.cpp
src/index.cpp
+23
-20
memberdef.cpp
src/memberdef.cpp
+1
-1
namespacedef.cpp
src/namespacedef.cpp
+1
-1
pre.cpp
src/pre.cpp
+140
-136
pre.l
src/pre.l
+19
-15
scanner.cpp
src/scanner.cpp
+6957
-6930
scanner.l
src/scanner.l
+9
-8
tag.cpp
src/tag.cpp
+5
-1
tag.l
src/tag.l
+5
-1
translator_nl.h
src/translator_nl.h
+44
-27
translator_se.h
src/translator_se.h
+36
-1
util.cpp
src/util.cpp
+12
-8
No files found.
INSTALL
View file @
74cc4d70
DOXYGEN Version 0.49-9911
06
DOXYGEN Version 0.49-9911
17
CONTENTS
--------
...
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-0.49-9911
06
.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-9911
06
.src.tar # unpack it
gunzip doxygen-0.49-9911
17
.src.tar.gz # uncompress the archive
tar xf doxygen-0.49-9911
17
.src.tar # unpack it
2. Run the configure script:
...
...
@@ -234,4 +234,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
06
November 1999)
Dimitri van Heesch (
17
November 1999)
Makefile.in
View file @
74cc4d70
...
...
@@ -21,7 +21,9 @@ install:
$(INSTTOOL)
-d
$(INSTALL)
/bin
$(INSTTOOL)
-d
$(INSTALL)
/doc/doxygen
$(INSTTOOL)
-d
$(INSTALL)
/doc/doxygen
$(INSTTOOL)
-m
755 bin/doxy
*
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxygen
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxytag
$(INSTALL)
/bin
$(INSTTOOL)
-m
755 bin/doxysearch
$(INSTALL)
/bin
cp
-r
doc
$(INSTALL)
/doc/doxygen
cp
-r
examples
$(INSTALL)
/doc/doxygen
echo
"DOXYGEN =
$(INSTALL)
"
>
$(INSTALL)
/doc/doxygen/doc/Makefile
...
...
README
View file @
74cc4d70
DOXYGEN Version 0.49-9911
06
DOXYGEN Version 0.49-9911
17
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
06
November 1999)
Dimitri van Heesch (
17
November 1999)
VERSION
View file @
74cc4d70
0.49-9911
06
0.49-9911
17
doc/commands.doc
View file @
74cc4d70
...
...
@@ -1057,10 +1057,8 @@ Doxygen. Unrecognized commands are treated as normal text.
The second argument specifies the file name of the image.
Doxygen will look for files in the paths (or files) that you specified
after the \ref cfg_image_path "IMAGE_PATH" tag and filter those files through the patterns
you specified after the \ref cfg_image_patterns "IMAGE_PATTERNS" tag.
If the image is found it
will be copied to the correct output directory.
after the \ref cfg_image_path "IMAGE_PATH" tag.
If the image is found it will be copied to the correct output directory.
If the image name contains spaces you'll have to put quotes (") around it.
The third argument can be used to specify the width or height of the
...
...
@@ -1083,7 +1081,6 @@ Doxygen. Unrecognized commands are treated as normal text.
\verbatim
IMAGE_PATH = my_image_dir
IMAGE_PATTERNS = *.eps *.gif *.jpg
\endverbatim
\warning The image format for HTML is limited to what your
...
...
doc/config.doc
View file @
74cc4d70
...
...
@@ -88,7 +88,6 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_html_output
HTML_OUTPUT
<
li
>
\
refitem
cfg_html_stylesheet
HTML_STYLESHEET
<
li
>
\
refitem
cfg_image_path
IMAGE_PATH
<
li
>
\
refitem
cfg_image_patterns
IMAGE_PATTERNS
<
li
>
\
refitem
cfg_include_path
INCLUDE_PATH
<
li
>
\
refitem
cfg_inherit_docs
INHERIT_DOCS
<
li
>
\
refitem
cfg_inline_info
INLINE_INFO
...
...
@@ -115,6 +114,7 @@ followed by the descriptions of the tags grouped by category.
<
li
>
\
refitem
cfg_searchengine
SEARCHENGINE
<
li
>
\
refitem
cfg_source_browser
SOURCE_BROWSER
<
li
>
\
refitem
cfg_strip_from_path
STRIP_FROM_PATH
<
li
>
\
refitem
cfg_tab_size
TAB_SIZE
<
li
>
\
refitem
cfg_tagfiles
TAGFILES
<
li
>
\
refitem
cfg_verbatim_headers
VERBATIM_HEADERS
<
li
>
\
refitem
cfg_warnings
WARNINGS
...
...
@@ -314,6 +314,11 @@ followed by the descriptions of the tags grouped by category.
If
the
\
c
INLINE_INFO
tag
is
set
to
\
c
YES
(
the
default
)
then
a
tag
[
inline
]
is
inserted
in
the
documentation
for
inline
members
.
\
anchor
cfg_tab_size
<
dt
>\
c
TAB_SIZE
<
dd
>
the
TAB_SIZE
tag
can
be
used
to
set
the
number
of
spaces
in
a
tab
.
Doxygen
uses
this
value
to
replace
tabs
by
spaces
in
code
fragments
.
</
dl
>
\
subsection
config_input
Input
related
options
...
...
@@ -382,14 +387,6 @@ followed by the descriptions of the tags grouped by category.
directories
that
contain
images
that
are
to
be
included
in
the
documentation
(
see
the
\
ref
cmdimage
"\image"
command
).
\
anchor
cfg_image_patterns
<
dt
>\
c
IMAGE_PATTERNS
<
dd
>
\
addindex
IMAGE_PATTERNS
If
the
value
of
the
\
c
IMAGE_PATH
tag
contains
directories
,
you
can
use
the
\
c
IMAGE_PATTERNS
tag
to
specify
one
or
more
wildcard
pattern
(
like
*.
gif
and
*.
eps
)
to
filter
out
the
image
files
in
the
directories
.
If
left
blank
all
files
are
included
.
\
anchor
cfg_input_filter
<
dt
>\
c
INPUT_FILTER
<
dd
>
\
addindex
INPUT_FILTER
...
...
doc/faq.doc
View file @
74cc4d70
...
...
@@ -56,6 +56,25 @@ as <code>PREPROCESSING = YES</code>.
Look at section \ref preprocessing for the answer.
<li><b>How can I change what's after the <code>#include</code> in class documentation?</b>
You can document your class like
\verbatim
/*! \class MyClassName include.h path/include.h
*
* Docs for MyClassName
*/
\endverbatim
To make doxygen put <br><br>
<code>
#include <path/include.h>
</code>
in the documentation of the class MyClassName regardless of the name of the actual
header file in which the definition of MyClassName is contained.
</ol>
*/
doc/history.doc
View file @
74cc4d70
...
...
@@ -14,24 +14,8 @@
*
*/
/*! \page history Doxygen History
<h3>TODO/Wish list</h3>
<ul>
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More ouput formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
<h3>Features scheduled for version 1.0</h3>
<ul>
<li>Include LaTeX style formulas in LaTeX and HTML output (in HTML as a gif).
...
...
doc/index.doc
View file @
74cc4d70
...
...
@@ -184,6 +184,7 @@ Patrick Alberts,
Jacques Tremblay,
John Sturton,
Moshe Kruger,
David Wong,
and many others for suggestions, patches and bug reports.
</ul>
*/
...
...
doc/language.doc
View file @
74cc4d70
...
...
@@ -100,18 +100,6 @@ Here is a list of the languages and their current maintainers:
borco@NOSPAM.borco-ei.eng.hokudai.ac.jp</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Polish
</TD>
<TD>
Piotr Piatkowski
</TD>
<TD>
<a href="mailto:kompas@NOSPAM.ceti.com.pl">
kompas@NOSPAM.ceti.com.pl</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Italian
...
...
@@ -209,8 +197,6 @@ Here is a list of the languages and their current maintainers:
\hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline
Polish & Piotr Piatkowski & {\tt kompas@ceti.com.pl} \\
\hline
Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} \\
& Alessandro Falappa & {\tt a.falappa@flashnet.it} \\
\hline
...
...
doc/todo.doc
0 → 100644
View file @
74cc4d70
/******************************************************************************
*
* $Id$
*
* Copyright (C) 1997-1999 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.
*
* All output generated with Doxygen is not covered by this license.
*
*/
/*! \page todo Doxygen TODO's
<h3>TODO/Wish list</h3>
<ul>
<li>Expand namespaces in the file docs with the contents that are
specific to the file (maybe also expand the classes inside a namespace).
<li>Add support for grouping members, and document then as a group.
<li>Support for K&R-style function arguments.
<li>More output formats: suggested are info format and RTF format.
<li>Split long lists in an index to a set of smaller lists.
<li>Add a nice graphical front-end for creating and modifying the
configuration file (it should be flexible enough to quickly add new options).
<li>Improve the search index generation, so it uses less memory and
is easier to get running.
<li>Generate code metrics (Anyone know a good book about code metrics?)
<li>Add features that you think are missing... So if you know any that are
not yet listed here, please let me know.
</ul>
*/
src/code.cpp
View file @
74cc4d70
This diff is collapsed.
Click to expand it.
src/code.l
View file @
74cc4d70
...
...
@@ -109,6 +109,97 @@ static int anchorCount;
static FileDef *sourceFileDef;
static QCString lastVariable;
// start a new line of code, inserting a line number if sourceFileDef
// is TRUE. If a definition starts at the current line, then the line
// number is linked to the documentation of that definition.
static void startCodeLine(OutputList &ol)
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
ol.startCodeAnchor(lineAnchor);
ol.writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
ol.endCodeAnchor();
}
else
{
ol.codify(lineNumber);
}
}
ol.startCodeLine();
}
// write a code fragment `text' that may span multiple lines, inserting
// line numbers for each line.
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(*code);
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
// writes a link to a fragment `text' that may span multiple lines, inserting
// line numbers for each line. If `text' contains newlines, the link will be
// split into multiple links with the same destination, one for each line.
static void writeMultiLineCodeLink(OutputList &ol,
const char *ref,const char *file,
const char *anchor,const char *text)
{
bool done=FALSE;
QCString ts = text;
char *p=ts.data();
while (!done)
{
char *sp=p;
char c;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
ol.writeCodeLink(ref,file,anchor,sp);
ol.endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine(ol);
}
}
else
{
ol.writeCodeLink(ref,file,anchor,sp);
done=TRUE;
}
}
}
static void addType()
{
if (name=="const") { name.resize(0); return; }
...
...
@@ -166,7 +257,7 @@ static void addParameter()
}
}
static void generateClassLink(OutputList &ol,c
onst c
har *clName)
static void generateClassLink(OutputList &ol,char *clName)
{
QCString className=clName;
if (className.length()==0) return;
...
...
@@ -188,11 +279,12 @@ static void generateClassLink(OutputList &ol,const char *clName)
anchorCount++;
}
}
ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
//ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className);
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className);
}
else
{
ol.codify
(clName);
codifyLines
(clName);
}
}
...
...
@@ -231,8 +323,10 @@ static bool getLink(const char *className,
if (d)
{
//printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data());
result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
//result.writeCodeLink(d->getReference(),d->getOutputFileBase(),
// md->anchor(),text ? text : memberName);
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName);
return TRUE;
}
}
...
...
@@ -254,7 +348,7 @@ static ClassDef *stripClassName(const char *s)
}
static void generateMemberLink(OutputList &ol,const char *varName,
c
onst c
har *memName)
char *memName)
{
//printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n",
// varName,memName,classScope.data());
...
...
@@ -301,7 +395,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
}
else
{
ol.codify
(memName);
codifyLines
(memName);
}
return;
}
...
...
@@ -328,34 +422,51 @@ static void generateMemberLink(OutputList &ol,const char *varName,
MemberName *mmn=memberNameDict[memName];
if (mmn)
{
MemberNameIterator mmni(*mmn);
MemberDef *mmd;
for (;(mmd=mmni.current());++mmni)
{
if (mmd->memberClass()==mcd)
MemberNameIterator mmni(*mmn);
MemberDef *mmd;
for (;(mmd=mmni.current());++mmni)
{
ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
mmd->anchor(),memName);
return;
if (mmd->memberClass()==mcd)
{
//ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(),
// mmd->anchor(),memName);
writeMultiLineCodeLink(ol,mcd->getReference(),
mcd->getOutputFileBase(),mmd->anchor(),memName);
return;
}
}
}
}
}
}
}
}
}
}
ol.codify
(memName);
codifyLines
(memName);
return;
}
static void generateFunctionLink(OutputList &ol,const char *funcName)
static QCString removeWhiteSpace(const char *s)
{
QCString result;
if (s)
{
const char *p=s;
int c;
while ((c=*p++))
{
if (c!=' ' && c!='\n' && c!='\r' && c!='\t') result+=c;
}
}
return result;
}
static void generateFunctionLink(OutputList &ol,char *funcName)
{
OutputList result(&ol);
CodeClassDef *ccd=0;
QCString locScope=classScope.copy();
QCString locFunc=
funcName
;
QCString locFunc=
removeWhiteSpace(funcName)
;
int i=locFunc.findRev("::");
if (i>0)
{
...
...
@@ -383,7 +494,7 @@ static void generateFunctionLink(OutputList &ol,const char *funcName)
}
else
{
ol.codify
(funcName);
codifyLines
(funcName);
}
return;
}
...
...
@@ -398,66 +509,6 @@ static int countLines()
return count;
}
static void startCodeLine()
{
if (sourceFileDef)
{
QCString lineNumber,lineAnchor;
lineNumber.sprintf("%05d ",yyLineNr);
lineAnchor.sprintf("l%05d",yyLineNr);
//MemberDef *md = sourceFileDef->getSourceDefinition(yyLineNr);
//Definition *d=0;
//if (md)
//{
// d=md->memberClass();
// if (!d) d=md->getFileDef();
//}
//if (md && d)
Definition *d = sourceFileDef->getSourceDefinition(yyLineNr);
QCString anchor = sourceFileDef->getSourceAnchor(yyLineNr);
if (d && d->isLinkableInProject())
{
code->startCodeAnchor(lineAnchor);
code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber);
code->endCodeAnchor();
}
else
{
code->codify(lineNumber);
}
}
code->startCodeLine();
}
static void codifyLines(char *text)
{
char *p=text,*sp=p;
char c;
bool done=FALSE;
while (!done)
{
sp=p;
while ((c=*p++) && c!='\n');
if (c=='\n')
{
yyLineNr++;
*(p-1)='\0';
code->codify(sp);
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
}
}
else
{
code->codify(sp);
done=TRUE;
}
}
}
/* -----------------------------------------------------------------
*/
#undef YY_INPUT
...
...
@@ -812,7 +863,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(
*code
);
}
BEGIN(lastSpecialCContext);
}
...
...
@@ -852,7 +903,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(
*code
);
}
}
<*>^{B}*"//"[!/][^\n]*\n { // remove special one-line comment
...
...
@@ -860,7 +911,7 @@ SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
code->endCodeLine();
if (yyLineNr<inputLines)
{
startCodeLine();
startCodeLine(
*code
);
}
}
<*>"//"[!/][^\n]*\n { // strip special one-line comment
...
...
@@ -928,7 +979,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
bool exBlock, const char *exName,FileDef *fd)
{
code = new OutputList(&ol);
if (s.
length()==0
) return;
if (s.
isEmpty()
) return;
inputString = s;
inputPosition = 0;
inputLines = countLines();
...
...
@@ -941,7 +992,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
exampleName = exName;
sourceFileDef = fd;
exampleFile = convertSlashes(exampleName,TRUE)+"-example";
startCodeLine();
startCodeLine(
*code
);
type.resize(0);
name.resize(0);
args.resize(0);
...
...
src/config.cpp
View file @
74cc4d70
...
...
@@ -3170,7 +3170,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# the TAB_SIZE tag can be used to set the number of spaces in a tab
\n
"
;
t
<<
"# the TAB_SIZE tag can be used to set the number of spaces in a tab
.
\n
"
;
t
<<
"# Doxygen uses this value to replace tabs by spaces in code fragments.
\n
"
;
t
<<
"
\n
"
;
}
...
...
@@ -3259,16 +3259,6 @@ void writeTemplateConfig(QFile *f,bool sl)
}
t
<<
"IMAGE_PATH =
\n
"
;
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# If the value of the IMAGE_PATH tag contains directories, you can use the
\n
"
;
t
<<
"# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif
\n
"
;
t
<<
"# and *.eps) to filter out the image files in the directories. If left
\n
"
;
t
<<
"# blank all files are included.
\n
"
;
t
<<
"
\n
"
;
}
t
<<
"IMAGE_PATTERNS =
\n
"
;
if
(
!
sl
)
{
t
<<
"
\n
"
;
t
<<
"# The INPUT_FILTER tag can be used to specify a program that doxygen should
\n
"
;
...
...
src/config.l
View file @
74cc4d70
...
...
@@ -707,7 +707,7 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab\n";
t << "# the TAB_SIZE tag can be used to set the number of spaces in a tab
.
\n";
t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n";
t << "\n";
}
...
...
@@ -796,16 +796,6 @@ void writeTemplateConfig(QFile *f,bool sl)
}
t << "IMAGE_PATH =\n";
if (!sl)
{
t << "\n";
t << "# If the value of the IMAGE_PATH tag contains directories, you can use the\n";
t << "# IMAGE_PATTERNS tag to specify one or more wildcard pattern (like *.gif \n";
t << "# and *.eps) to filter out the image files in the directories. If left \n";
t << "# blank all files are included.\n";
t << "\n";
}
t << "IMAGE_PATTERNS =\n";
if (!sl)
{
t << "\n";
t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n";
...
...
src/debug.cpp
View file @
74cc4d70
...
...
@@ -43,6 +43,8 @@ static int labelToEnumValue(const char *l)
return
Debug
::
Functions
;
else
if
(
label
==
"Variables"
)
return
Debug
::
Variables
;
else
if
(
label
==
"Preprocessor"
)
return
Debug
::
Preprocessor
;
else
return
0
;
}
...
...
@@ -61,3 +63,8 @@ void Debug::setPriority(int p)
{
curPrio
=
p
;
}
bool
Debug
::
isFlagSet
(
DebugMask
mask
)
{
return
(
curMask
&
mask
)
!=
0
;
}
src/debug.h
View file @
74cc4d70
...
...
@@ -21,14 +21,16 @@
class
Debug
{
public
:
enum
DebugMask
{
Quiet
=
0x00000000
,
FindMembers
=
0x00000001
,
Functions
=
0x00000002
,
Variables
=
0x00000004
enum
DebugMask
{
Quiet
=
0x00000000
,
FindMembers
=
0x00000001
,
Functions
=
0x00000002
,
Variables
=
0x00000004
,
Preprocessor
=
0x00000008
};
static
void
print
(
DebugMask
mask
,
int
prio
,
const
char
*
fmt
,...);
static
void
setFlag
(
const
char
*
label
);
static
void
clearFlag
(
const
char
*
label
);
static
bool
isFlagSet
(
DebugMask
mask
);
static
void
setPriority
(
int
p
);
private
:
...
...
src/doxygen.cpp
View file @
74cc4d70
This diff is collapsed.
Click to expand it.
src/filename.cpp
View file @
74cc4d70
...
...
@@ -60,6 +60,7 @@ void FileName::generateDiskNames()
while
(
fd
&&
fd
->
isReference
())
fd
=
next
();
char
c
=
fd
->
path
.
at
(
i
);
if
(
c
==
'/'
)
j
=
i
;
// remember last position of dirname
fd
=
next
();
while
(
fd
&&
!
found
)
{
if
(
!
fd
->
isReference
())
...
...
@@ -67,8 +68,8 @@ void FileName::generateDiskNames()
//printf("i=%d fd->path=`%s' fd->name=`%s'\n",i,fd->path.data(),fd->name().data());
if
(
i
==
(
int
)
fd
->
path
.
length
())
{
warning
(
"Warning: Input file %s found multiple times!
\n
"
" The generated documentation for this file may not be correct!
\n
"
,
fd
->
absFilePath
().
data
());
//
warning("Warning: Input file %s found multiple times!\n"
//
" The generated documentation for this file may not be correct!\n",fd->absFilePath().data());
found
=
TRUE
;
}
else
if
(
fd
->
path
[
i
]
!=
c
)
...
...
@@ -84,8 +85,11 @@ void FileName::generateDiskNames()
while
(
fd
)
{
//printf("fd->setName(%s)\n",(fd->path.right(fd->path.length()-j-1)+name).data());
fd
->
setName
(
fd
->
path
.
right
(
fd
->
path
.
length
()
-
j
-
1
)
+
name
);
fd
->
diskname
=
convertSlashes
(
fd
->
name
());
if
(
!
fd
->
isReference
())
{
fd
->
setName
(
fd
->
path
.
right
(
fd
->
path
.
length
()
-
j
-
1
)
+
name
);
fd
->
diskname
=
convertSlashes
(
fd
->
name
());
}
fd
=
next
();
}
}
...
...
src/groupdef.cpp
View file @
74cc4d70
...
...
@@ -93,6 +93,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol
.
disable
(
OutputGenerator
::
Latex
);
ol
.
startTextLink
(
0
,
"_details"
);
parseText
(
ol
,
theTranslator
->
trMore
());
ol
.
endTextLink
();
ol
.
enable
(
OutputGenerator
::
Latex
);
}
if
(
fileList
->
count
()
>
0
)
...
...
src/htmlgen.cpp
View file @
74cc4d70
...
...
@@ -124,11 +124,14 @@ void HtmlGenerator::writeFooter(int part,bool external)
t
<<
"<hr><address><small>"
;
else
t
<<
substitute
(
substitute
(
substitute
(
footer
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
substitute
(
substitute
(
substitute
(
footer
,
"$title"
,
lastTitle
),
"$datetime"
,
dateToString
(
TRUE
)
),
"$date"
,
dateToString
(
FALSE
)
),
"$d
ate"
,
dateToString
(
FALSE
)
"$d
oxygenversion"
,
versionString
);
break
;
case
1
:
...
...
@@ -663,7 +666,7 @@ void HtmlGenerator::endIndexList()
void
HtmlGenerator
::
startAlphabeticalIndexList
()
{
t
<<
"<table width=95% border=0 cellspacing=0 cellpadding=0>"
<<
endl
;
t
<<
"<table
align=center
width=95% border=0 cellspacing=0 cellpadding=0>"
<<
endl
;
}
void
HtmlGenerator
::
endAlphabeticalIndexList
()
...
...
@@ -684,9 +687,9 @@ void HtmlGenerator::writeImage(const char *name,const char *,const char *)
int
i
;
if
((
i
=
baseName
.
findRev
(
'/'
))
!=-
1
||
(
i
=
baseName
.
findRev
(
'\\'
))
!=-
1
)
{
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
);
baseName
=
baseName
.
right
(
baseName
.
length
()
-
i
-
1
);
}
t
<<
"<img src=
"
<<
name
<<
" alt=
\"
"
<<
baseName
<<
"
\"
>"
<<
endl
;
t
<<
"<img src=
\"
"
<<
name
<<
"
\
"
alt=
\"
"
<<
baseName
<<
"
\"
>"
<<
endl
;
}
void
HtmlGenerator
::
startMemberDoc
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
...
...
src/index.cpp
View file @
74cc4d70
...
...
@@ -358,7 +358,7 @@ void writeFileIndex(OutputList &ol)
fd
->
name
()
);
ol
.
docify
(
" ("
);
if
(
fd
->
briefDescription
())
if
(
!
fd
->
briefDescription
().
isEmpty
())
{
OutputList
briefOutput
(
&
ol
);
parseDoc
(
briefOutput
,
0
,
0
,
...
...
@@ -421,24 +421,27 @@ void writeSourceIndex(OutputList &ol)
FileDef
*
fd
=
fn
->
first
();
while
(
fd
)
{
if
(
!
started
)
{
started
=
TRUE
;
ol
.
startItemList
();
}
ol
.
writeListItem
();
QCString
path
;
if
(
Config
::
fullPathNameFlag
)
{
path
=
stripFromPath
(
fd
->
getPath
().
copy
());
}
if
(
!
path
.
isEmpty
())
ol
.
docify
(
path
);
ol
.
writeObjectLink
(
0
,
fd
->
sourceName
(),
0
,
fd
->
name
());
ol
.
writeString
(
"
\n
"
);
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
if
(
!
fd
->
isReference
())
{
HtmlHelp
::
getInstance
()
->
addContentsItem
(
fd
->
name
(),
fd
->
sourceName
());
if
(
!
started
)
{
started
=
TRUE
;
ol
.
startItemList
();
}
ol
.
writeListItem
();
QCString
path
;
if
(
Config
::
fullPathNameFlag
)
{
path
=
stripFromPath
(
fd
->
getPath
().
copy
());
}
if
(
!
path
.
isEmpty
())
ol
.
docify
(
path
);
ol
.
writeObjectLink
(
0
,
fd
->
sourceName
(),
0
,
fd
->
name
());
ol
.
writeString
(
"
\n
"
);
if
(
Config
::
generateHtml
&&
Config
::
htmlHelpFlag
)
{
HtmlHelp
::
getInstance
()
->
addContentsItem
(
fd
->
name
(),
fd
->
sourceName
());
}
}
fd
=
fn
->
next
();
}
...
...
@@ -497,7 +500,7 @@ void writeNamespaceIndex(OutputList &ol)
{
ol
.
writeStartAnnoItem
(
"namespace"
,
nd
->
getOutputFileBase
(),
0
,
nd
->
name
());
ol
.
docify
(
" ("
);
if
(
nd
->
briefDescription
())
if
(
!
nd
->
briefDescription
().
isEmpty
())
{
OutputList
briefOutput
(
&
ol
);
parseDoc
(
briefOutput
,
nd
->
name
(),
0
,
...
...
@@ -570,7 +573,7 @@ void writeAnnotatedClassList(OutputList &ol)
}
ol
.
writeStartAnnoItem
(
type
,
cd
->
getOutputFileBase
(),
0
,
cd
->
name
());
ol
.
docify
(
" ("
);
if
(
cd
->
briefDescription
())
if
(
!
cd
->
briefDescription
().
isEmpty
())
{
OutputList
briefOutput
(
&
ol
);
parseDoc
(
briefOutput
,
cd
->
name
(),
0
,
...
...
src/memberdef.cpp
View file @
74cc4d70
...
...
@@ -991,8 +991,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,const char *sco
ol
.
disableAllBut
(
OutputGenerator
::
Man
);
ol
.
writeString
(
" "
);
ol
.
enableAll
();
ol
.
endDescTableTitle
();
ol
.
endDoxyAnchor
();
ol
.
endDescTableTitle
();
//ol.newParagraph();
ol
.
startDescTableData
();
...
...
src/namespacedef.cpp
View file @
74cc4d70
...
...
@@ -73,7 +73,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if
(
Config
::
genTagFile
.
length
()
>
0
)
tagFile
<<
"%"
<<
name
()
<<
":
\n
"
;
OutputList
briefOutput
(
&
ol
);
if
(
briefDescription
())
if
(
!
briefDescription
().
isEmpty
())
{
parseDoc
(
briefOutput
,
name
(),
0
,
briefDescription
());
ol
+=
briefOutput
;
...
...
src/pre.cpp
View file @
74cc4d70
This diff is collapsed.
Click to expand it.
src/pre.l
View file @
74cc4d70
...
...
@@ -40,6 +40,7 @@
#include "message.h"
#include "util.h"
#include "defargs.h"
#include "debug.h"
#if defined(_MSC_VER) || defined(__BORLANDC__)
#define popen _popen
...
...
@@ -48,7 +49,7 @@
#define YY_NEVER_INTERACTIVE 1
#define DUMP_OUTPUT
0
// set this to one to see what the preprocessor
#define DUMP_OUTPUT
1
// set this to one to see what the preprocessor
// produces.
#define SHOW_INCLUDES 0 // set this to one to list all parsed include files
...
...
@@ -1627,9 +1628,9 @@ void cleanupPreprocessor()
void preprocessFile(const char *fileName,BufStr &output)
{
#if DUMP_OUTPUT
//
#if DUMP_OUTPUT
uint orgOffset=output.curPos();
#endif
//
#endif
outputBuf=&output;
includeStack.setAutoDelete(TRUE);
...
...
@@ -1765,20 +1766,23 @@ void preprocessFile(const char *fileName,BufStr &output)
else
pclose(preYYin);
#if DUMP_OUTPUT
char *orgPos=output.data()+orgOffset;
char *newPos=output.data()+output.curPos();
printf("Resulting size: %d bytes\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
//#if DUMP_OUTPUT
if (Debug::isFlagSet(Debug::Preprocessor))
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
char *orgPos=output.data()+orgOffset;
char *newPos=output.data()+output.curPos();
printf("Preprocessor output (size: %d bytes):\n",newPos-orgPos);
int line=1;
printf("---------\n00001 ");
while (orgPos<newPos)
{
putchar(*orgPos);
if (*orgPos=='\n') printf("%05d ",++line);
orgPos++;
}
printf("\n---------\n");
}
printf("\n---------\n");
#endif
//#endif
}
extern "C" { // some bogus code to keep the compiler happy
...
...
src/scanner.cpp
View file @
74cc4d70
This diff is collapsed.
Click to expand it.
src/scanner.l
View file @
74cc4d70
...
...
@@ -127,7 +127,6 @@ static bool inBugBlock;
static bool inWarningBlock;
static bool inParBlock;
static bool firstSeeArg;
static bool javaDocSee;
static char afterDocTerminator;
static int tmpDocType;
static QCString sectionLabel;
...
...
@@ -200,7 +199,6 @@ static void initParser()
inWarningBlock = FALSE;
inParBlock = FALSE;
firstSeeArg = FALSE;
javaDocSee = FALSE;
}
//-----------------------------------------------------------------------------
...
...
@@ -707,8 +705,12 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
}
else
{
warn("Warning: image file %s is not found. ",fileName);
warn("Check your IMAGE_PATH\n");
result=fileName;
if (result.left(5)!="http:")
{
warn("Warning: image file %s is not found in IMAGE_PATH: "
"assuming external image. ",fileName);
}
}
return result;
}
...
...
@@ -1243,7 +1245,6 @@ VAR [vV][aA][rR]
if (inBlock()) endBlock();
inSeeBlock=TRUE;
//firstSeeArg=TRUE;
//javaDocSee=!strcmp(yytext,"@see");
outDoc->startDescList();
//outDoc->writeBoldString("See also: ");
outDoc->startBold();
...
...
@@ -1439,8 +1440,8 @@ VAR [vV][aA][rR]
<DocImage>[lL][aA][tT][eE][xX] {
BEGIN(DocLatexImageName);
}
<DocHtmlImageName>{FILE}
{
curImageName = findAndCopyImage(
yytext
,IT_Html);
<DocHtmlImageName>{FILE}
|{URLMASK}
{
curImageName = findAndCopyImage(
stripQuotes(yytext)
,IT_Html);
if (!curImageName.isEmpty())
{
storeOutputListState();
...
...
@@ -1451,7 +1452,7 @@ VAR [vV][aA][rR]
BEGIN(DocScan);
}
<DocLatexImageName>{FILE} {
curImageName = findAndCopyImage(
yytext
,IT_Latex);
curImageName = findAndCopyImage(
stripQuotes(yytext)
,IT_Latex);
if (curImageName.isEmpty())
BEGIN(DocScan);
else
...
...
src/tag.cpp
View file @
74cc4d70
...
...
@@ -1939,7 +1939,11 @@ void parseTagFile(const char *fileName)
{
FILE
*
f
=
fopen
(
fileName
,
"r"
);
QFileInfo
fi
(
fileName
);
if
(
!
f
||
!
fi
.
exists
());
if
(
!
f
||
!
fi
.
exists
())
{
if
(
f
)
fclose
(
f
);
return
;
}
tagName
=
fi
.
fileName
();
tagYYin
=
f
;
...
...
src/tag.l
View file @
74cc4d70
...
...
@@ -260,7 +260,11 @@ void parseTagFile(const char *fileName)
{
FILE *f=fopen(fileName,"r");
QFileInfo fi(fileName);
if (!f || !fi.exists());
if (!f || !fi.exists())
{
if (f) fclose(f);
return;
}
tagName = fi.fileName();
tagYYin = f;
...
...
src/translator_nl.h
View file @
74cc4d70
...
...
@@ -259,7 +259,7 @@ class TranslatorDutch : public Translator
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trCompoundReference
(
const
char
*
clName
,
QCString
trCompoundReference
(
const
char
*
clName
,
ClassDef
::
CompoundType
compType
)
// used as the title of the HTML page of a class/struct/union
{
...
...
@@ -274,14 +274,14 @@ class TranslatorDutch : public Translator
result
+=
" Referentie"
;
return
result
;
}
virtual
QCString
trFileReference
(
const
char
*
fileName
)
QCString
trFileReference
(
const
char
*
fileName
)
// used as the title of the HTML page of a file
{
QCString
result
=
fileName
;
result
+=
" File Referentie"
;
return
result
;
}
virtual
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
QCString
trNamespaceReference
(
const
char
*
namespaceName
)
// used as the title of the HTML page of a namespace
{
QCString
result
=
namespaceName
;
...
...
@@ -290,29 +290,29 @@ class TranslatorDutch : public Translator
}
// these are for the member sections of a class, struct or union
virtual
QCString
trPublicMembers
()
QCString
trPublicMembers
()
{
return
"Public Members"
;
}
virtual
QCString
trPublicSlots
()
QCString
trPublicSlots
()
{
return
"Public Slots"
;
}
virtual
QCString
trSignals
()
QCString
trSignals
()
{
return
"Signals"
;
}
virtual
QCString
trStaticPublicMembers
()
QCString
trStaticPublicMembers
()
{
return
"Static Public Members"
;
}
virtual
QCString
trProtectedMembers
()
QCString
trProtectedMembers
()
{
return
"Protected Members"
;
}
virtual
QCString
trProtectedSlots
()
QCString
trProtectedSlots
()
{
return
"Protected Slots"
;
}
virtual
QCString
trStaticProtectedMembers
()
QCString
trStaticProtectedMembers
()
{
return
"Static Protected Members"
;
}
virtual
QCString
trPrivateMembers
()
QCString
trPrivateMembers
()
{
return
"Private Members"
;
}
virtual
QCString
trPrivateSlots
()
QCString
trPrivateSlots
()
{
return
"Private Slots"
;
}
virtual
QCString
trStaticPrivateMembers
()
QCString
trStaticPrivateMembers
()
{
return
"Static Private Members"
;
}
// end of member sections
virtual
QCString
trWriteList
(
int
numEntries
)
QCString
trWriteList
(
int
numEntries
)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
...
...
@@ -336,35 +336,35 @@ class TranslatorDutch : public Translator
return
result
;
}
virtual
QCString
trInheritsList
(
int
numEntries
)
QCString
trInheritsList
(
int
numEntries
)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return
"Erft over van "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QCString
trInheritedByList
(
int
numEntries
)
QCString
trInheritedByList
(
int
numEntries
)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return
"Wordt overgeërfd door "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QCString
trReimplementedFromList
(
int
numEntries
)
QCString
trReimplementedFromList
(
int
numEntries
)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return
"Nieuwe implementatie van "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QCString
trReimplementedInList
(
int
numEntries
)
QCString
trReimplementedInList
(
int
numEntries
)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return
"Opnieuw geïmplementeerd in "
+
trWriteList
(
numEntries
)
+
"."
;
}
virtual
QCString
trNamespaceMembers
()
QCString
trNamespaceMembers
()
// This is put above each page as a link to all members of namespaces.
{
return
"Namespace Members"
;
}
virtual
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
QCString
trNamespaceMemberDescription
(
bool
extractAll
)
// This is an introduction to the page with all namespace members
{
QCString
result
=
"Hier is een lijst van alle "
;
...
...
@@ -376,11 +376,11 @@ class TranslatorDutch : public Translator
result
+=
"de namespaces waartoe ze behoren:"
;
return
result
;
}
virtual
QCString
trNamespaceIndex
()
QCString
trNamespaceIndex
()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{
return
"Namespace Index"
;
}
virtual
QCString
trNamespaceDocumentation
()
QCString
trNamespaceDocumentation
()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{
return
"Namespace Documentatie"
;
}
...
...
@@ -392,7 +392,7 @@ class TranslatorDutch : public Translator
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
virtual
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
QCString
trGeneratedFromFiles
(
ClassDef
::
CompoundType
compType
,
bool
single
)
{
// here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
...
...
@@ -412,7 +412,7 @@ class TranslatorDutch : public Translator
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual
QCString
trAlphabeticalList
()
QCString
trAlphabeticalList
()
{
return
"Alphabetical List"
;
}
//////////////////////////////////////////////////////////////////////////
...
...
@@ -420,19 +420,36 @@ class TranslatorDutch : public Translator
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual
QCString
trReturnValues
()
QCString
trReturnValues
()
{
return
"Retour waarden"
;
}
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual
QCString
trMainPage
()
QCString
trMainPage
()
{
return
"Hoofd Pagina"
;
}
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual
QCString
trPageAbbreviation
()
QCString
trPageAbbreviation
()
{
return
"p."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991106
//////////////////////////////////////////////////////////////////////////
QCString
trSources
()
{
return
"Sources"
;
}
QCString
trDefinedAtLineInSourceFile
()
{
return
"De definitie bevindt zich op regel @0 in de file @1."
;
}
QCString
trDefinedInSourceFile
()
{
return
"De definitie bevindt zich in de file @0."
;
}
};
#endif
src/translator_se.h
View file @
74cc4d70
...
...
@@ -53,7 +53,7 @@ Problem!
===================================================================================
1999/09/01
* Det verkar som om "namnrymd" r en hyggligt vedertagen svensk versttning
av "nam
ne
pace", s jag kr med det frn och med nu.
av "nam
es
pace", s jag kr med det frn och med nu.
* "interface" heter numera "grnssnitt"
*/
...
...
@@ -538,6 +538,41 @@ class TranslatorSwedish : public Translator
{
return
"Alfabetisk lista"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
virtual
QCString
trReturnValues
()
{
return
"Returvrden"
;
}
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual
QCString
trMainPage
()
{
return
"Huvudsida"
;
}
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual
QCString
trPageAbbreviation
()
{
return
"s."
;
}
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
virtual
QCString
trSources
()
{
return
"Kllor"
;
}
virtual
QCString
trDefinedAtLineInSourceFile
()
{
return
"Definition p rad @0 i filen @1."
;
}
virtual
QCString
trDefinedInSourceFile
()
{
return
"Definition i filen @0."
;
}
};
#endif
src/util.cpp
View file @
74cc4d70
...
...
@@ -320,8 +320,8 @@ void writeExample(OutputList &ol,ExampleList *el)
QCString
exampleLine
=
theTranslator
->
trWriteList
(
el
->
count
());
bool
latexEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Latex
);
bool
manEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Html
);
bool
htmlEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Man
);
bool
manEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Man
);
bool
htmlEnabled
=
ol
.
isEnabled
(
OutputGenerator
::
Html
);
QRegExp
marker
(
"@[0-9]+"
);
int
index
=
0
,
newIndex
,
matchLen
;
// now replace all markers in inheritLine with links to the classes
...
...
@@ -624,21 +624,25 @@ QCString fileToString(const char *name)
QFileInfo
fi
(
name
);
if
(
!
fi
.
exists
()
||
!
fi
.
isFile
())
{
err
(
"Error: file `%s' not found
\n
"
,
name
);
exit
(
1
)
;
warn
(
"Error: file `%s' not found
\n
"
,
name
);
return
""
;
}
f
.
setName
(
name
);
fileOpened
=
f
.
open
(
IO_ReadOnly
);
}
if
(
!
fileOpened
)
{
err
(
"Error: cannot open file `%s' for reading
\n
"
,
name
);
exit
(
1
)
;
warn
(
"Error: cannot open file `%s' for reading
\n
"
,
name
);
return
""
;
}
int
fsize
=
f
.
size
();
QCString
contents
(
fsize
+
1
);
QCString
contents
(
fsize
+
2
);
f
.
readBlock
(
contents
.
data
(),
fsize
);
contents
[
fsize
]
=
'\0'
;
if
(
fsize
==
0
||
contents
[
fsize
-
1
]
==
'\n'
)
contents
[
fsize
]
=
'\0'
;
else
contents
[
fsize
]
=
'\n'
;
contents
[
fsize
+
1
]
=
'\0'
;
f
.
close
();
return
contents
;
}
...
...
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