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
5ad8b41e
Commit
5ad8b41e
authored
Jul 31, 2000
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.0-20000731
parent
7ce8e31b
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
394 additions
and
309 deletions
+394
-309
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
config_templ.l
addon/configgen/config_templ.l
+2
-0
configgen.cpp
addon/configgen/configgen.cpp
+8
-1
README
addon/xmlread/README
+1
-1
xmlread.pro.in
addon/xmlread/xmlread.pro.in
+2
-2
config.doc
doc/config.doc
+8
-5
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
code.l
src/code.l
+30
-12
config.h
src/config.h
+1
-1
config.l
src/config.l
+222
-203
formula.cpp
src/formula.cpp
+1
-1
scanner.l
src/scanner.l
+82
-66
util.cpp
src/util.cpp
+31
-11
No files found.
INSTALL
View file @
5ad8b41e
DOXYGEN Version 1.2.0
DOXYGEN Version 1.2.0
-20000731
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (3
0
July 2000)
Dimitri van Heesch (3
1
July 2000)
README
View file @
5ad8b41e
DOXYGEN Version 1.2.0
DOXYGEN Version 1.2.0
-20000731
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (3
0
July 2000)
Dimitri van Heesch (3
1
July 2000)
VERSION
View file @
5ad8b41e
1.2.0
1.2.0
-20000731
addon/configgen/config_templ.l
View file @
5ad8b41e
...
...
@@ -272,6 +272,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# All text after a hash (#) is considered a comment and will be ignored\n";
t << "# The format is:\n";
t << "# TAG = value [value, ...]\n";
t << "# For lists items can also be appended using:\n";
t << "# TAG += value [value, ...]\n";
t << "# Values that contain spaces should be placed between quotes (\" \")\n";
}
#CONFIG Template
...
...
addon/configgen/configgen.cpp
View file @
5ad8b41e
...
...
@@ -27,7 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
#define MAX_OPTION_LENGTH 2
2
#define MAX_OPTION_LENGTH 2
3
static
QString
spaces
=
" "
;
...
...
@@ -259,10 +259,17 @@ class ConfigList : public ConfigOption
const
char
*
short_
,
const
char
*
long_
,
WidgetType
w
=
String
);
virtual
void
printRules
(
QTextStream
&
t
)
{
// rule for assignment
t
<<
"<Start>
\"
"
<<
cfgName
<<
"
\"
[
\\
t]*
\"
=
\"
"
;
t
<<
spaces
.
left
(
MAX_OPTION_LENGTH
-
cfgName
.
length
());
t
<<
"{ BEGIN(GetStrList); l=&Config::"
<<
varName
;
t
<<
"; l->clear(); elemStr=
\"\"
; }"
<<
endl
;
// rule for appending
t
<<
"<Start>
\"
"
<<
cfgName
<<
"
\"
[
\\
t]*
\"
+=
\"
"
;
t
<<
spaces
.
left
(
MAX_OPTION_LENGTH
-
cfgName
.
length
()
-
1
);
t
<<
"{ BEGIN(GetStrList); l=&Config::"
<<
varName
;
t
<<
"; elemStr=
\"\"
; }"
<<
endl
;
}
virtual
void
printInit
(
QTextStream
&
t
)
{
...
...
addon/xmlread/README
View file @
5ad8b41e
...
...
@@ -2,7 +2,7 @@ This is a small utility that is used to test and validate the
XML output generated by doxygen (when GENERATE_XML = YES).
It uses the Xerces-C XML parser/validator (see http://xml.apache.org)
and expects the environment variable XERCES
_
ROOT to point to the root
and expects the environment variable XERCES
C
ROOT to point to the root
of the Xerces package.
Currently is reads an XML file, validates it, and prints the class
...
...
addon/xmlread/xmlread.pro.in
View file @
5ad8b41e
...
...
@@ -3,5 +3,5 @@ CONFIG = console qt warn_on debug
HEADERS = saxhandler.h strx.h compounddef.h
SOURCES = main.cpp \
saxhandlers.cpp
LIBS = -lxerces-c1_
1 -L$(XERCES_ROOT)
INCLUDEPATH = $(XERCES
_
ROOT)/include
LIBS = -lxerces-c1_
2 -L$(XERCESCROOT)/lib
INCLUDEPATH = $(XERCES
C
ROOT)/include
doc/config.doc
View file @
5ad8b41e
...
...
@@ -30,12 +30,15 @@ line.
The
file
essentially
consists
of
a
list
of
assignment
statements
.
Each
statement
consists
of
a
\
c
TAG_NAME
written
in
capitals
,
followed
by
the
\
c
=
character
and
one
or
more
values
.
Values
are
sequences
of
non
-
blanks
.
If
the
value
should
contain
one
or
more
blanks
it
must
be
surrounded
by
quotes
(&
quot
;...&
quot
;).
followed
by
the
<
code
>=</
code
>
character
and
one
or
more
values
.
If
the
same
tag
is
assigned
more
than
once
,
the
last
assignment
overwrites
any
earlier
assignment
.
For
options
that
take
a
list
as
their
argument
,
the
<
code
>+=</
code
>
operator
can
be
used
instead
of
<
code
>=</
code
>
to
append
new
values
to
the
list
.
Values
are
sequences
of
non
-
blanks
.
If
the
value
should
contain
one
or
more
blanks
it
must
be
surrounded
by
quotes
(&
quot
;...&
quot
;).
Multiple
lines
can
be
concatenated
by
inserting
a
backslash
(\\)
as
the
last
character
of
a
line
.
Environment
variables
can
expanded
using
the
pattern
\
c
$(
ENV_VARIABLE_NAME
).
as
the
last
character
of
a
line
.
Environment
variables
can
be
expanded
using
the
pattern
\
c
$(
ENV_VARIABLE_NAME
).
The
configuration
options
can
be
divided
into
several
categories
.
Below
is
an
alphabetical
index
of
the
tags
that
are
recognized
...
...
packages/rpm/doxygen.spec
View file @
5ad8b41e
Name: doxygen
Version: 1.2.0
Version: 1.2.0
-20000731
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
...
...
src/code.l
View file @
5ad8b41e
...
...
@@ -281,12 +281,23 @@ static void addVariable()
}
else
{
//printf("adding variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data())
;
int i
;
if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type]))
{
//printf("adding variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data());
g_cvd.classScope=g_classScope;
g_codeVarList.append(new CodeVarDef(g_cvd)); // add it to a list
}
else if ((i=g_cvd.type.find('<'))>0)
{
g_cvd.type = g_cvd.type.left(i);
if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type.left(i)]))
{
//printf("adding template type variable `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data());
g_cvd.classScope=g_classScope;
g_codeVarList.append(new CodeVarDef(g_cvd));
}
}
}
}
...
...
@@ -300,12 +311,23 @@ static void addParameter()
}
else
{
//printf("adding parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data())
;
if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type]))
int i
;
if ((get
Resolved
Class(g_cvd.type)) || (g_codeClassDict[g_cvd.type]))
{
//printf("adding parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data());
g_cvd.classScope=g_classScope;
g_codeParmList.append(new CodeVarDef(g_cvd)); // add it to a list
}
else if ((i=g_cvd.type.find('<'))>0)
{
g_cvd.type = g_cvd.type.left(i);
if ((getResolvedClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type.left(i)]))
{
//printf("adding template type parameter `%s' `%s'\n",g_cvd.type.data(),g_cvd.name.data());
g_cvd.classScope=g_classScope;
g_codeParmList.append(new CodeVarDef(g_cvd));
}
}
}
}
...
...
@@ -948,15 +970,11 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
addType();
g_name+=yytext;
}
/*
<Body>{SCOPETNAME}/{B}* {
int i;
generateClassLink(*g_code,yytext,&i);
<Body>{SCOPENAME}{B}*"<"[^\n\>]*">"/{B}* { // A<T> *pt;
generateClassLink(*g_code,yytext);
addType();
QCString text=yytext;
g_name+=text.left(i);
g_name+=yytext;
}
*/
<Body>{SCOPENAME}/{B}* { // p->func()
generateClassLink(*g_code,yytext);
addType();
...
...
@@ -1094,7 +1112,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_code->codify(yytext);
endFontClass();
}
<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]* {
<MemberCall2,FuncCall>[a-z_A-Z][:a-z_A-Z0-9]*
({B}*"<"[^\n\>]*">")?
{
addParmType();
g_parmName=yytext;
generateClassLink(*g_code,yytext);
...
...
src/config.h
View file @
5ad8b41e
/* This file was generated by configgen on
Fri Jul 28 19:43:36
2000
/* This file was generated by configgen on
Mon Jul 31 16:07:18
2000
* from config_templ.h
*
* DO NOT EDIT!
...
...
src/config.l
View file @
5ad8b41e
/* This file was generated by configgen on
Fri Jul 28 19:43:36
2000
/* This file was generated by configgen on
Mon Jul 31 16:11:27
2000
* from config_templ.l
*
* DO NOT EDIT!
...
...
@@ -240,6 +240,7 @@ static int yyread(char *buf,int max_size)
<Start>"ALWAYS_DETAILED_SEC"[ \t]*"=" { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; }
<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; }
<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; }
<Start>"STRIP_FROM_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::stripFromPath; elemStr=""; }
<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; }
<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; }
<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::sourceBrowseFlag; }
...
...
@@ -255,6 +256,7 @@ static int yyread(char *buf,int max_size)
<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; }
<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); }
<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; }
<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; }
<Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; }
<Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; }
<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; }
...
...
@@ -262,17 +264,25 @@ static int yyread(char *buf,int max_size)
<Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; }
<Start>"WARN_FORMAT"[ \t]*"=" { BEGIN(GetString); s=&Config::warnFormat; s->resize(0); }
<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; }
<Start>"INPUT"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::inputSources; elemStr=""; }
<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; }
<Start>"FILE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::filePatternList; elemStr=""; }
<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; }
<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; }
<Start>"EXCLUDE"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::excludeSources; elemStr=""; }
<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; }
<Start>"EXCLUDE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::excludePatternList; elemStr=""; }
<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; }
<Start>"EXAMPLE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::examplePath; elemStr=""; }
<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; }
<Start>"EXAMPLE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::examplePatternList; elemStr=""; }
<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; }
<Start>"IMAGE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::imagePath; elemStr=""; }
<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); }
<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; }
<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); }
<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; }
<Start>"IGNORE_PREFIX"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; elemStr=""; }
<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; }
<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); }
<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); }
...
...
@@ -285,6 +295,7 @@ static int yyread(char *buf,int max_size)
<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; }
<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); }
<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; }
<Start>"EXTRA_PACKAGES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::extraPackageList; elemStr=""; }
<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); }
<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; }
<Start>"USE_PDFLATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::usePDFLatexFlag; }
...
...
@@ -303,10 +314,15 @@ static int yyread(char *buf,int max_size)
<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; }
<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; }
<Start>"INCLUDE_PATH"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::includePath; elemStr=""; }
<Start>"INCLUDE_FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includeFilePatternList; l->clear(); elemStr=""; }
<Start>"INCLUDE_FILE_PATTERNS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::includeFilePatternList; elemStr=""; }
<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; }
<Start>"PREDEFINED"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::predefined; elemStr=""; }
<Start>"EXPAND_AS_DEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; l->clear(); elemStr=""; }
<Start>"EXPAND_AS_DEFINED"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; elemStr=""; }
<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; }
<Start>"TAGFILES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::tagFileList; elemStr=""; }
<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); }
<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; }
<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); }
...
...
@@ -326,6 +342,7 @@ static int yyread(char *buf,int max_size)
<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); }
<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); }
<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; }
<Start>"EXT_DOC_PATHS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::extDocPathList; elemStr=""; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n {
...
...
@@ -813,6 +830,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# All text after a hash (#) is considered a comment and will be ignored\n";
t << "# The format is:\n";
t << "# TAG = value [value, ...]\n";
t << "# For lists items can also be appended using:\n";
t << "# TAG += value [value, ...]\n";
t << "# Values that contain spaces should be placed between quotes (\" \")\n";
}
if (!sl)
...
...
src/formula.cpp
View file @
5ad8b41e
...
...
@@ -189,7 +189,7 @@ void FormulaList::generateBitmaps(const char *path)
"gswin32.exe"
,
/* file to execute */
gsArgs
,
/* argument list */
NULL
,
/* use current working dir */
SW_HIDE
/* minimize on start-up */
SW_HIDE
,
/* minimize on start-up */
0
,
/* application instance handle */
NULL
,
/* ignored: id list */
NULL
,
/* ignored: class name */
...
...
src/scanner.l
View file @
5ad8b41e
...
...
@@ -586,18 +586,38 @@ static void newDocState();
//-----------------------------------------------------------------
static QStack<int> listIndentStack;
struct IndentInfo
{
public:
IndentInfo(int i,bool e) : indent(i), enumerated(e) {};
~IndentInfo() {}
void startList()
{
if (enumerated) outDoc->startEnumList(); else outDoc->startItemList();
}
void endList()
{
if (enumerated) outDoc->endEnumList(); else outDoc->endItemList();
}
void writeItem()
{
outDoc->writeListItem();
}
int indent;
bool enumerated;
};
static QStack<IndentInfo> listIndentStack;
static bool insideItemList = FALSE;
static void addListItemMarker(const char *marker)
static void addListItemMarker(const char *marker
,int dashPos,bool enumerated
)
{
// find the actual position at which the bullet was found
int i;
int indent=0;
const char *p=marker;
char c;
while ((c=*p++))
for (i=0;i<dashPos;i++)
{
if (
c
=='\t')
if (
marker[i]
=='\t')
{
indent+=Config::tabSize - (indent%Config::tabSize);
}
...
...
@@ -606,32 +626,42 @@ static void addListItemMarker(const char *marker)
indent++;
}
}
//printf("list marker found at column %d
\n",indent
);
//printf("list marker found at column %d
enumerated %d\n",indent,enumerated
);
if (!insideItemList)
{
outDoc->startItemList(
);
outDoc->writeListItem
();
listIndentStack.
push(new int(indent)
);
listIndentStack.push(new IndentInfo(indent,enumerated)
);
listIndentStack.top()->startList
();
listIndentStack.
top()->writeItem(
);
insideItemList=TRUE;
}
else
{
int *pPrevIndent = listIndentStack.top();
if (*pPrevIndent==indent) // new item at the same indent level
IndentInfo *pPrevInfo = listIndentStack.top();
if (pPrevInfo->indent==indent && pPrevInfo->enumerated==enumerated)
// new item of same kind at the same indent level
{
outDoc->writeList
Item();
pPrevInfo->write
Item();
}
else if (*pPrevIndent<indent) // start sub item list
else if (pPrevInfo->indent==indent)
// new item of diffent kind at the same indent level
{
outDoc->startItemList();
outDoc->writeListItem();
listIndentStack.push(new int(indent));
// switch to a diffent list type
pPrevInfo->endList();
pPrevInfo->enumerated=enumerated;
pPrevInfo->startList();
pPrevInfo->writeItem();
}
else if (pPrevInfo->indent<indent) // start sub item list
{
listIndentStack.push(new IndentInfo(indent,enumerated));
listIndentStack.top()->startList();
listIndentStack.top()->writeItem();
}
else // end sub item list
{
pPrevInfo->endList();
listIndentStack.pop();
delete pPrevIndent;
outDoc->endItemList();
delete pPrevInfo;
// safe guard against wrong indenting
if (listIndentStack.isEmpty())
{
...
...
@@ -641,35 +671,24 @@ static void addListItemMarker(const char *marker)
}
else
{
outDoc->writeList
Item();
listIndentStack.top()->write
Item();
}
}
}
}
// end the current (nested) list regardless of the nesting level.
static void forceEndItemList()
{
int *indent
;
while ((in
dent
=listIndentStack.pop())!=0)
IndentInfo *info
;
while ((in
fo
=listIndentStack.pop())!=0)
{
outDoc->endItem
List();
delete in
dent
;
info->end
List();
delete in
fo
;
}
insideItemList=FALSE;
}
#if 0
static void tryEndItemList()
{
if (listIndentStack.count()==1) // no subitems => end list
{
outDoc->endItemList();
delete listIndentStack.pop();
insideItemList=FALSE;
}
}
#endif
//-----------------------------------------------------------------
static bool inBlock()
...
...
@@ -1144,25 +1163,19 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
BEGIN( FindMembers );
}
<*>\x0d
/*
<DocScan>^{BL} {
if (insideArgumentList)
{
insideArgumentList=FALSE;
outDoc->endItemList();
}
else
{
outDoc->newParagraph();
}
if (inBlock()) endBlock();
}
*/
<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"{B}+ { /* found list item marker */
addListItemMarker(yytext);
<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */
QCString text=yytext;
int dashPos = text.findRev('-');
//printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1));
bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext,dashPos,isEnumerated);
}
<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"{B}+ {
addListItemMarker(yytext+1);
<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */
QCString text=yytext;
int dashPos = text.findRev('-');
//printf("dashPos=%d char='%c'\n",dashPos,text.at(dashPos+1));
bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext+1,dashPos,isEnumerated);
}
<DocScan,Text>"©" { outDoc->writeCopyright(); }
<DocScan,Text>""" { outDoc->writeQuote(); }
...
...
@@ -2222,19 +2235,19 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
<DocScan>"%"[a-zA-Z_0-9\-]+ {
outDoc->docify(yytext+1);
}
<DocEmphasis>
{WORD} {
<DocEmphasis>
[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" {
outDoc->startEmphasis();
linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE
);
generateRef(*outDoc,className,yytext,inSeeBlock
);
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocEmphasis>
[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" {
<DocEmphasis>
{WORD} {
outDoc->startEmphasis();
generateRef(*outDoc,className,yytext,inSeeBlock
);
linkifyText(TextGeneratorOLImpl(*outDoc),className,0,yytext,FALSE,FALSE
);
outDoc->endEmphasis();
BEGIN( DocScan );
}
<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"()" {
<DocBold>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"(
"[a-z_A-Z0-9,:\<\> \t\*\&]*"
)" {
outDoc->startBold();
generateRef(*outDoc,className,yytext,inSeeBlock);
outDoc->endBold();
...
...
@@ -2246,7 +2259,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
outDoc->endBold();
BEGIN( DocScan );
}
<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()
|\*/]*"(
)" {
<DocCode>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()
!\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*"
)" {
outDoc->startTypewriter();
generateRef(*outDoc,className,yytext,inSeeBlock);
outDoc->endTypewriter();
...
...
@@ -2278,7 +2291,10 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
outDoc->docify(yytext);
}
<DocCode,DocEmphasis,DocBold>"\n" { outDoc->writeChar('\n'); }
<DocScan>({B}*"\n"){2,}{B}*"*"*{B}*"-"{B}+ { // new paragraph & start of a list
<DocScan>({B}*"\n"){2,}{B}*"*"*{B}*"-"("#")?{B}+ { // new paragraph & start of a list
QCString text=yytext;
int dashPos = text.findRev('-');
bool isEnumerated = text.at(dashPos+1)=='#';
if (insideArgumentList)
{
insideArgumentList=FALSE;
...
...
@@ -2293,7 +2309,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
outDoc->newParagraph();
}
if (inBlock()) endBlock();
addListItemMarker(strrchr(yytext,'\n')+1);
addListItemMarker(strrchr(yytext,'\n')+1
,dashPos,isEnumerated
);
}
<DocScan>({B}*"\n"){2,}{B}* { // new paragraph
if (insideArgumentList)
...
...
@@ -5163,7 +5179,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
unput('/');unput('*');
BEGIN( tmpDocType );
}
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"{B}+ {
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"
("#")?
{B}+ {
current->doc += yytext;
}
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
...
...
src/util.cpp
View file @
5ad8b41e
...
...
@@ -838,6 +838,23 @@ QCString fileToString(const char *name)
if
(
name
[
0
]
==
'-'
&&
name
[
1
]
==
0
)
// read from stdin
{
fileOpened
=
f
.
open
(
IO_ReadOnly
,
stdin
);
if
(
fileOpened
)
{
const
int
bSize
=
4096
;
QCString
contents
(
bSize
);
int
totalSize
=
0
;
int
size
;
while
((
size
=
f
.
readBlock
(
contents
.
data
()
+
totalSize
,
bSize
))
==
bSize
)
{
totalSize
+=
bSize
;
contents
.
resize
(
totalSize
+
bSize
);
}
totalSize
+=
size
+
2
;
contents
.
resize
(
totalSize
);
contents
.
at
(
totalSize
-
2
)
=
'\n'
;
// to help the scanner
contents
.
at
(
totalSize
-
1
)
=
'\0'
;
return
contents
;
}
}
else
// read from file
{
...
...
@@ -849,22 +866,25 @@ QCString fileToString(const char *name)
}
f
.
setName
(
name
);
fileOpened
=
f
.
open
(
IO_ReadOnly
);
}
if
(
!
fileOpened
)
if
(
fileOpened
)
{
err
(
"Error: cannot open file `%s' for reading
\n
"
,
name
);
return
""
;
}
int
fsize
=
f
.
size
();
QCString
contents
(
fsize
+
2
);
f
.
readBlock
(
contents
.
data
(),
fsize
);
if
(
fsize
==
0
||
contents
[
fsize
-
1
]
==
'\n'
)
contents
[
fsize
]
=
'\0'
;
else
contents
[
fsize
]
=
'\n'
;
contents
[
fsize
]
=
'\n'
;
// to help the scanner
contents
[
fsize
+
1
]
=
'\0'
;
f
.
close
();
return
contents
;
}
}
if
(
!
fileOpened
)
{
err
(
"Error: cannot open file `%s' for reading
\n
"
,
name
);
}
return
""
;
}
QCString
dateToString
(
bool
includeTime
)
...
...
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