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
2fbdd54d
Commit
2fbdd54d
authored
Sep 13, 2004
by
Dimitri van Heesch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.8-20040913
parent
4ccd672e
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
292 additions
and
163 deletions
+292
-163
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
htmlcmds.doc
doc/htmlcmds.doc
+4
-0
language.doc
doc/language.doc
+3
-3
translator_report.txt
doc/translator_report.txt
+3
-18
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+1
-1
code.l
src/code.l
+1
-1
commentcnv.l
src/commentcnv.l
+1
-1
config.l
src/config.l
+2
-1
declinfo.l
src/declinfo.l
+1
-1
dirdef.cpp
src/dirdef.cpp
+10
-5
docparser.cpp
src/docparser.cpp
+2
-2
dot.cpp
src/dot.cpp
+10
-0
dot.h
src/dot.h
+8
-0
doxygen.cpp
src/doxygen.cpp
+13
-6
filedef.cpp
src/filedef.cpp
+1
-1
groupdef.cpp
src/groupdef.cpp
+1
-1
memberdef.cpp
src/memberdef.cpp
+3
-3
namespacedef.cpp
src/namespacedef.cpp
+1
-1
scanner.l
src/scanner.l
+40
-12
search.php
src/search.php
+38
-30
search_php.h
src/search_php.h
+38
-30
searchindex.cpp
src/searchindex.cpp
+20
-26
searchindex.h
src/searchindex.h
+2
-2
translator_en.h
src/translator_en.h
+27
-2
translator_nl.h
src/translator_nl.h
+47
-1
xmlgen.cpp
src/xmlgen.cpp
+9
-9
No files found.
INSTALL
View file @
2fbdd54d
DOXYGEN Version 1.3.8-200409
06
DOXYGEN Version 1.3.8-200409
13
Please read the installation section of the manual
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
(http://www.doxygen.org/install.html) for instructions.
--------
--------
Dimitri van Heesch (
06
September 2004)
Dimitri van Heesch (
13
September 2004)
README
View file @
2fbdd54d
DOXYGEN Version 1.3.8_200409
06
DOXYGEN Version 1.3.8_200409
13
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (
06
September 2004)
Dimitri van Heesch (dimitri@stack.nl) (
13
September 2004)
VERSION
View file @
2fbdd54d
1.3.8-200409
06
1.3.8-200409
13
doc/htmlcmds.doc
View file @
2fbdd54d
...
@@ -39,6 +39,8 @@ only exception).
...
@@ -39,6 +39,8 @@ only exception).
<li><tt>\<DD\></tt> Starts an item description.
<li><tt>\<DD\></tt> Starts an item description.
<li><tt>\<DFN\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\<DFN\></tt> Starts a piece of text displayed in a typewriter font.
<li><tt>\</DFN\></tt> Ends a <tt>\<DFN\></tt> section.
<li><tt>\</DFN\></tt> Ends a <tt>\<DFN\></tt> section.
<li><tt>\<DIV></tt> Starts a section with a specific style (HTML only)
<li><tt>\</DIV></tt> Ends a section with a specific style (HTML only)
<li><tt>\<DL\></tt> Starts a description list.
<li><tt>\<DL\></tt> Starts a description list.
<li><tt>\</DL\></tt> Ends a description list.
<li><tt>\</DL\></tt> Ends a description list.
<li><tt>\<DT\></tt> Starts an item title.
<li><tt>\<DT\></tt> Starts an item title.
...
@@ -71,6 +73,8 @@ only exception).
...
@@ -71,6 +73,8 @@ only exception).
<li><tt>\</PRE\></tt> Ends a preformatted fragment.
<li><tt>\</PRE\></tt> Ends a preformatted fragment.
<li><tt>\<SMALL\></tt> Starts a section of text displayed in a smaller font.
<li><tt>\<SMALL\></tt> Starts a section of text displayed in a smaller font.
<li><tt>\</SMALL\></tt> Ends a <tt>\<SMALL\></tt> section.
<li><tt>\</SMALL\></tt> Ends a <tt>\<SMALL\></tt> section.
<li><tt>\<SPAN></tt> Starts an inline text fragment with a specific style (HTML only)
<li><tt>\</SPAN></tt> Ends an inline text fragment with a specific style (HTML only)
<li><tt>\<STRONG\></tt> Starts a section of bold text.
<li><tt>\<STRONG\></tt> Starts a section of bold text.
<li><tt>\</STRONG\></tt> Ends a section of bold text.
<li><tt>\</STRONG\></tt> Ends a section of bold text.
<li><tt>\<SUB\></tt> Starts a piece of text displayed in subscript.
<li><tt>\<SUB\></tt> Starts a piece of text displayed in subscript.
...
...
doc/language.doc
View file @
2fbdd54d
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
...
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
configuration file (with default name and known as Doxyfile).
Currently (version 1.3.8-20040
825
), 30 languages
Currently (version 1.3.8-20040
907
), 30 languages
are supported (sorted alphabetically):
are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
...
@@ -102,7 +102,7 @@ when the translator was updated.
...
@@ -102,7 +102,7 @@ when the translator was updated.
<td>Dutch</td>
<td>Dutch</td>
<td>Dimitri van Heesch</td>
<td>Dimitri van Heesch</td>
<td>dimitri at stack dot nl</td>
<td>dimitri at stack dot nl</td>
<td>
1.3.9
</td>
<td>
up-to-date
</td>
</tr>
</tr>
<tr bgcolor="#ffffff">
<tr bgcolor="#ffffff">
<td>English</td>
<td>English</td>
...
@@ -275,7 +275,7 @@ when the translator was updated.
...
@@ -275,7 +275,7 @@ when the translator was updated.
\hline
\hline
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\
Danish & Erik S\o{}e S\o{}rensen & {\tt\tiny eriksoe+doxygen@daimi.au.dk} & 1.3.9 \\
\hline
\hline
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} &
1.3.9
\\
Dutch & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} &
up-to-date
\\
\hline
\hline
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
English & Dimitri van Heesch & {\tt\tiny dimitri@stack.nl} & up-to-date \\
\hline
\hline
...
...
doc/translator_report.txt
View file @
2fbdd54d
(1.3.8-20040
825
)
(1.3.8-20040
907
)
Doxygen supports the following 30 languages (sorted alphabetically):
Doxygen supports the following 30 languages (sorted alphabetically):
...
@@ -8,7 +8,7 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En),
...
@@ -8,7 +8,7 @@ German, Greek, Hungarian, Italian, Japanese (+En), Korean (+En),
Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian,
Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian,
Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Slovak, Slovene, Spanish, Swedish, and Ukrainian.
Of them,
1 translators are up-to-date, 29
translators are based on
Of them,
2 translators are up-to-date, 28
translators are based on
some adapter class, and 2 are English based.
some adapter class, and 2 are English based.
----------------------------------------------------------------------
----------------------------------------------------------------------
...
@@ -17,6 +17,7 @@ alphabetically). This means that they derive from the Translator class
...
@@ -17,6 +17,7 @@ alphabetically). This means that they derive from the Translator class
and they implement all 201 of the required methods. Anyway, there
and they implement all 201 of the required methods. Anyway, there
still may be some details listed even for them:
still may be some details listed even for them:
TranslatorDutch
TranslatorEnglish
TranslatorEnglish
----------------------------------------------------------------------
----------------------------------------------------------------------
...
@@ -32,7 +33,6 @@ must be implemented to become up-to-date:
...
@@ -32,7 +33,6 @@ must be implemented to become up-to-date:
TranslatorItalian 1.3.9 6 methods to implement
TranslatorItalian 1.3.9 6 methods to implement
TranslatorHungarian 1.3.9 6 methods to implement
TranslatorHungarian 1.3.9 6 methods to implement
TranslatorGerman 1.3.9 6 methods to implement
TranslatorGerman 1.3.9 6 methods to implement
TranslatorDutch 1.3.9 6 methods to implement
TranslatorDanish 1.3.9 6 methods to implement
TranslatorDanish 1.3.9 6 methods to implement
TranslatorCzech 1.3.9 6 methods to implement
TranslatorCzech 1.3.9 6 methods to implement
TranslatorCroatian 1.3.9 6 methods to implement
TranslatorCroatian 1.3.9 6 methods to implement
...
@@ -205,21 +205,6 @@ TranslatorDanish (TranslatorAdapter_1_3_9) 6 methods to implement
...
@@ -205,21 +205,6 @@ TranslatorDanish (TranslatorAdapter_1_3_9) 6 methods to implement
virtual QCString trDir(bool first_capital, bool singular)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorDutch (TranslatorAdapter_1_3_9) 6 methods to implement
---------------
Implements 195 of the required methods.
Missing methods (should be implemented):
virtual QCString trDirIndex()
virtual QCString trDirDocumentation()
virtual QCString trDirectories()
virtual QCString trDirDescription()
virtual QCString trDirReference(const char * dirName)
virtual QCString trDir(bool first_capital, bool singular)
TranslatorFinnish (TranslatorEnglish) 98 methods to implement
TranslatorFinnish (TranslatorEnglish) 98 methods to implement
-----------------
-----------------
...
...
packages/rpm/doxygen.spec
View file @
2fbdd54d
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.3.8_200409
06
Version: 1.3.8_200409
13
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
2fbdd54d
...
@@ -955,7 +955,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
...
@@ -955,7 +955,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"SEARCHENGINE"
))
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
{
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
addWord
(
localName
());
Doxygen
::
searchIndex
->
addWord
(
localName
()
,
TRUE
);
}
}
ol
.
startTextBlock
();
ol
.
startTextBlock
();
...
...
src/code.l
View file @
2fbdd54d
...
@@ -388,7 +388,7 @@ static void addToSearchIndex(const char *text)
...
@@ -388,7 +388,7 @@ static void addToSearchIndex(const char *text)
static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
if (searchEngineEnabled)
if (searchEngineEnabled)
{
{
Doxygen::searchIndex->addWord(text);
Doxygen::searchIndex->addWord(text
,FALSE
);
}
}
}
}
...
...
src/commentcnv.l
View file @
2fbdd54d
...
@@ -252,7 +252,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
...
@@ -252,7 +252,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
}
}
<SComment>\n[ \t]*"//!" |
<SComment>\n[ \t]*"//!" |
<SComment>\n[ \t]*"//!<"/.*\n |
<SComment>\n[ \t]*"//!<"/.*\n |
<SComment>\n[ \t]*"//!"[^<]/.*\n {
<SComment>\n[ \t]*"//!"[^<
\n
]/.*\n {
replaceComment(1);
replaceComment(1);
g_readLineCtx=YY_START;
g_readLineCtx=YY_START;
BEGIN(ReadLine);
BEGIN(ReadLine);
...
...
src/config.l
View file @
2fbdd54d
...
@@ -1001,7 +1001,8 @@ void Config::check()
...
@@ -1001,7 +1001,8 @@ void Config::check()
alias=alias.stripWhiteSpace();
alias=alias.stripWhiteSpace();
if (alias.find(re)!=0)
if (alias.find(re)!=0)
{
{
config_err("Illegal alias format `%s'. Use \"name=value\"\n",alias.data());
config_err("Illegal alias format `%s'. Use \"name=value\"\n",
alias.data());
}
}
s=aliasList.next();
s=aliasList.next();
}
}
...
...
src/declinfo.l
View file @
2fbdd54d
...
@@ -132,7 +132,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+)
...
@@ -132,7 +132,7 @@ ID ([a-z_A-Z][a-z_A-Z0-9]*)|(@[0-9]+)
}
}
name.resize(0);
name.resize(0);
}
}
<Start>":" { // Objective-C argument separator
<Start>
{B}*
":" { // Objective-C argument separator
name+=yytext;
name+=yytext;
}
}
<Start>[*&]+ {
<Start>[*&]+ {
...
...
src/dirdef.cpp
View file @
2fbdd54d
...
@@ -207,6 +207,7 @@ void DirDef::writePathFragment(OutputList &ol)
...
@@ -207,6 +207,7 @@ void DirDef::writePathFragment(OutputList &ol)
if
(
getOuterScope
()
!=
Doxygen
::
globalScope
&&
if
(
getOuterScope
()
!=
Doxygen
::
globalScope
&&
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeDir
)
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeDir
)
{
{
//printf("getOuterScope %s\n",getOuterScope()->name().data());
((
DirDef
*
)
getOuterScope
())
->
writePathFragment
(
ol
);
((
DirDef
*
)
getOuterScope
())
->
writePathFragment
(
ol
);
ol
.
writeString
(
" / "
);
ol
.
writeString
(
" / "
);
}
}
...
@@ -236,6 +237,7 @@ DirDef *DirDef::createNewDir(const char *path)
...
@@ -236,6 +237,7 @@ DirDef *DirDef::createNewDir(const char *path)
{
{
//printf("Adding new dir %s\n",path);
//printf("Adding new dir %s\n",path);
dir
=
new
DirDef
(
path
);
dir
=
new
DirDef
(
path
);
//printf("createNewDir %s short=%s\n",path,dir->shortName().data());
Doxygen
::
directories
.
inSort
(
path
,
dir
);
Doxygen
::
directories
.
inSort
(
path
,
dir
);
}
}
return
dir
;
return
dir
;
...
@@ -267,7 +269,7 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
...
@@ -267,7 +269,7 @@ DirDef *DirDef::mergeDirectoryInTree(const QCString &path)
while
((
i
=
path
.
find
(
'/'
,
p
))
!=-
1
)
while
((
i
=
path
.
find
(
'/'
,
p
))
!=-
1
)
{
{
QCString
part
=
path
.
left
(
i
+
1
);
QCString
part
=
path
.
left
(
i
+
1
);
if
(
!
matchPath
(
part
,
Config_getList
(
"STRIP_FROM_PATH"
)))
if
(
!
matchPath
(
part
,
Config_getList
(
"STRIP_FROM_PATH"
))
&&
part
!=
"/"
)
{
{
dir
=
createNewDir
(
part
);
dir
=
createNewDir
(
part
);
}
}
...
@@ -316,15 +318,18 @@ void buildDirectories()
...
@@ -316,15 +318,18 @@ void buildDirectories()
//printf("New dir %s\n",dir->displayName().data());
//printf("New dir %s\n",dir->displayName().data());
QCString
name
=
dir
->
name
();
QCString
name
=
dir
->
name
();
int
i
=
name
.
findRev
(
'/'
,
name
.
length
()
-
2
);
int
i
=
name
.
findRev
(
'/'
,
name
.
length
()
-
2
);
if
(
i
!=-
1
)
if
(
i
>
0
)
{
{
DirDef
*
parent
=
Doxygen
::
directories
.
find
(
name
.
left
(
i
+
1
));
DirDef
*
parent
=
Doxygen
::
directories
.
find
(
name
.
left
(
i
+
1
));
//if (parent==0) parent=root;
//if (parent==0) parent=root;
if
(
parent
)
parent
->
addSubDir
(
dir
);
if
(
parent
)
{
parent
->
addSubDir
(
dir
);
//printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n",
//printf("DirDef::addSubdir(): Adding subdir\n%s to\n%s\n",
// dir->displayName().data(), parent->displayName().data());
// dir->displayName().data(), parent->displayName().data());
}
}
}
}
}
}
}
void
generateDirDocs
(
OutputList
&
ol
)
void
generateDirDocs
(
OutputList
&
ol
)
...
...
src/docparser.cpp
View file @
2fbdd54d
...
@@ -1247,7 +1247,7 @@ DocWord::DocWord(DocNode *parent,const QString &word) :
...
@@ -1247,7 +1247,7 @@ DocWord::DocWord(DocNode *parent,const QString &word) :
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if
(
!
g_searchUrl
.
isEmpty
())
if
(
!
g_searchUrl
.
isEmpty
())
{
{
Doxygen
::
searchIndex
->
addWord
(
word
);
Doxygen
::
searchIndex
->
addWord
(
word
,
FALSE
);
}
}
}
}
...
@@ -1262,7 +1262,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
...
@@ -1262,7 +1262,7 @@ DocLinkedWord::DocLinkedWord(DocNode *parent,const QString &word,
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
//printf("new word %s url=%s\n",word.data(),g_searchUrl.data());
if
(
!
g_searchUrl
.
isEmpty
())
if
(
!
g_searchUrl
.
isEmpty
())
{
{
Doxygen
::
searchIndex
->
addWord
(
word
);
Doxygen
::
searchIndex
->
addWord
(
word
,
FALSE
);
}
}
}
}
...
...
src/dot.cpp
View file @
2fbdd54d
...
@@ -2327,6 +2327,16 @@ bool DotCallGraph::isTrivial() const
...
@@ -2327,6 +2327,16 @@ bool DotCallGraph::isTrivial() const
//-------------------------------------------------------------
//-------------------------------------------------------------
DotDirDeps
::
DotDirDeps
(
DirDef
*
)
{
}
DotDirDeps
::~
DotDirDeps
()
{
}
//-------------------------------------------------------------
void
generateGraphLegend
(
const
char
*
path
)
void
generateGraphLegend
(
const
char
*
path
)
{
{
QFile
dotFile
((
QCString
)
path
+
"/graph_legend.dot"
);
QFile
dotFile
((
QCString
)
path
+
"/graph_legend.dot"
);
...
...
src/dot.h
View file @
2fbdd54d
...
@@ -31,6 +31,7 @@ class DotNodeList;
...
@@ -31,6 +31,7 @@ class DotNodeList;
class
ClassSDict
;
class
ClassSDict
;
class
MemberDef
;
class
MemberDef
;
class
Definition
;
class
Definition
;
class
DirDef
;
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
enum
GraphOutputFormat
{
BITMAP
,
EPS
};
...
@@ -201,6 +202,13 @@ class DotCallGraph
...
@@ -201,6 +202,13 @@ class DotCallGraph
Definition
*
m_scope
;
Definition
*
m_scope
;
};
};
class
DotDirDeps
{
public
:
DotDirDeps
(
DirDef
*
dir
);
~
DotDirDeps
();
};
void
generateGraphLegend
(
const
char
*
path
);
void
generateGraphLegend
(
const
char
*
path
);
void
writeDotGraphFromFile
(
const
char
*
inFile
,
const
char
*
outDir
,
void
writeDotGraphFromFile
(
const
char
*
inFile
,
const
char
*
outDir
,
const
char
*
outFile
,
GraphOutputFormat
format
);
const
char
*
outFile
,
GraphOutputFormat
format
);
...
...
src/doxygen.cpp
View file @
2fbdd54d
...
@@ -1785,10 +1785,16 @@ static bool isVarWithConstructor(Entry *root)
...
@@ -1785,10 +1785,16 @@ static bool isVarWithConstructor(Entry *root)
Argument
*
a
;
Argument
*
a
;
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
for
(
ali
.
toFirst
();(
a
=
ali
.
current
());
++
ali
)
{
{
//printf("a->name=%s a->type=%s\n",a->name.data(),a->type.data());
if
(
!
a
->
name
.
isEmpty
()
||
!
a
->
defval
.
isEmpty
())
if
(
!
a
->
name
.
isEmpty
()
||
!
a
->
defval
.
isEmpty
())
{
if
(
a
->
name
.
find
(
initChars
)
==
0
)
{
result
=
TRUE
;
}
else
{
{
result
=
FALSE
;
// arg has (type,name) pair -> function prototype
result
=
FALSE
;
// arg has (type,name) pair -> function prototype
}
goto
done
;
goto
done
;
}
}
if
(
a
->
type
.
isEmpty
()
||
getResolvedClass
(
ctx
,
fd
,
a
->
type
)
!=
0
)
if
(
a
->
type
.
isEmpty
()
||
getResolvedClass
(
ctx
,
fd
,
a
->
type
)
!=
0
)
...
@@ -2197,8 +2203,8 @@ static void buildFunctionList(Entry *root)
...
@@ -2197,8 +2203,8 @@ static void buildFunctionList(Entry *root)
ClassDef
*
cd
=
0
;
ClassDef
*
cd
=
0
;
// check if this function's parent is a class
// check if this function's parent is a class
static
QRegExp
re
(
"([a-z_A-Z0-9: ]*[ *]*[ ]*"
);
static
QRegExp
re
(
"([a-z_A-Z0-9: ]*[ *]*[ ]*"
);
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
//printf("root->parent=`%s'
%x
cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->parent->name.data(),
root->parent->section,
getClass(root->parent->name),
// root->type.find(re,0));
// root->type.find(re,0));
QCString
scope
=
stripAnonymousNamespaceScope
(
root
->
parent
->
name
);
QCString
scope
=
stripAnonymousNamespaceScope
(
root
->
parent
->
name
);
scope
=
stripTemplateSpecifiersFromScope
(
scope
,
FALSE
);
scope
=
stripTemplateSpecifiersFromScope
(
scope
,
FALSE
);
...
@@ -2225,6 +2231,7 @@ static void buildFunctionList(Entry *root)
...
@@ -2225,6 +2231,7 @@ static void buildFunctionList(Entry *root)
isMember
=
memIndex
<
ts
||
memIndex
>
te
;
isMember
=
memIndex
<
ts
||
memIndex
>
te
;
}
}
}
}
if
(
root
->
parent
&&
if
(
root
->
parent
&&
!
root
->
parent
->
name
.
isEmpty
()
&&
!
root
->
parent
->
name
.
isEmpty
()
&&
(
root
->
parent
->
section
&
Entry
::
COMPOUND_MASK
)
&&
(
root
->
parent
->
section
&
Entry
::
COMPOUND_MASK
)
&&
...
@@ -6466,7 +6473,7 @@ static void findDirDocumentation(Entry *root)
...
@@ -6466,7 +6473,7 @@ static void findDirDocumentation(Entry *root)
SDict
<
DirDef
>::
Iterator
sdi
(
Doxygen
::
directories
);
SDict
<
DirDef
>::
Iterator
sdi
(
Doxygen
::
directories
);
for
(
sdi
.
toFirst
();(
dir
=
sdi
.
current
());
++
sdi
)
for
(
sdi
.
toFirst
();(
dir
=
sdi
.
current
());
++
sdi
)
{
{
printf
(
"Dir: %s<->%s
\n
"
,
dir
->
name
().
data
(),
normalizedName
.
data
());
//
printf("Dir: %s<->%s\n",dir->name().data(),normalizedName.data());
if
(
dir
->
name
().
right
(
normalizedName
.
length
())
==
normalizedName
)
if
(
dir
->
name
().
right
(
normalizedName
.
length
())
==
normalizedName
)
{
{
if
(
matchingDir
)
if
(
matchingDir
)
...
@@ -6486,7 +6493,7 @@ static void findDirDocumentation(Entry *root)
...
@@ -6486,7 +6493,7 @@ static void findDirDocumentation(Entry *root)
}
}
if
(
matchingDir
)
if
(
matchingDir
)
{
{
printf
(
"Match for with dir %s
\n
"
,
matchingDir
->
name
().
data
());
//
printf("Match for with dir %s\n",matchingDir->name().data());
matchingDir
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
matchingDir
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
matchingDir
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
matchingDir
->
setDocumentation
(
root
->
doc
,
root
->
docFile
,
root
->
docLine
);
}
}
...
...
src/filedef.cpp
View file @
2fbdd54d
...
@@ -241,7 +241,7 @@ void FileDef::writeDocumentation(OutputList &ol)
...
@@ -241,7 +241,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"SEARCHENGINE"
))
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
{
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
addWord
(
localName
());
Doxygen
::
searchIndex
->
addWord
(
localName
()
,
TRUE
);
}
}
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
...
...
src/groupdef.cpp
View file @
2fbdd54d
...
@@ -468,7 +468,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
...
@@ -468,7 +468,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
int
i
=
0
,
p
=
0
,
l
=
0
;
int
i
=
0
,
p
=
0
,
l
=
0
;
while
((
i
=
we
.
match
(
title
,
p
,
&
l
))
!=-
1
)
// foreach word in the title
while
((
i
=
we
.
match
(
title
,
p
,
&
l
))
!=-
1
)
// foreach word in the title
{
{
Doxygen
::
searchIndex
->
addWord
(
title
.
mid
(
i
,
l
));
Doxygen
::
searchIndex
->
addWord
(
title
.
mid
(
i
,
l
)
,
TRUE
);
p
=
i
+
l
;
p
=
i
+
l
;
}
}
}
}
...
...
src/memberdef.cpp
View file @
2fbdd54d
...
@@ -201,7 +201,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
...
@@ -201,7 +201,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
if
(
!
md
->
isDefine
())
if
(
!
md
->
isDefine
())
{
{
QCString
key
;
QCString
key
;
if
(
md
->
isObjCMethod
()
&&
a
->
attrib
.
length
()
>
2
)
if
(
md
->
isObjCMethod
()
&&
a
->
attrib
.
length
()
>
=
2
)
{
{
//printf("Found parameter keyword %s\n",a->attrib.data());
//printf("Found parameter keyword %s\n",a->attrib.data());
// strip [ and ]
// strip [ and ]
...
@@ -845,8 +845,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
...
@@ -845,8 +845,8 @@ void MemberDef::writeDeclaration(OutputList &ol,
if
(
Config_getBool
(
"SEARCHENGINE"
))
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
{
Doxygen
::
searchIndex
->
setCurrentDoc
(
qualifiedName
(),
getOutputFileBase
(),
anchor
());
Doxygen
::
searchIndex
->
setCurrentDoc
(
qualifiedName
(),
getOutputFileBase
(),
anchor
());
Doxygen
::
searchIndex
->
addWord
(
localName
());
Doxygen
::
searchIndex
->
addWord
(
localName
()
,
TRUE
);
Doxygen
::
searchIndex
->
addWord
(
qualifiedName
());
Doxygen
::
searchIndex
->
addWord
(
qualifiedName
()
,
FALSE
);
}
}
Definition
*
d
=
0
;
Definition
*
d
=
0
;
...
...
src/namespacedef.cpp
View file @
2fbdd54d
...
@@ -282,7 +282,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
...
@@ -282,7 +282,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if
(
Config_getBool
(
"SEARCHENGINE"
))
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
{
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
setCurrentDoc
(
pageTitle
,
getOutputFileBase
());
Doxygen
::
searchIndex
->
addWord
(
localName
());
Doxygen
::
searchIndex
->
addWord
(
localName
()
,
TRUE
);
}
}
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
if
(
!
Config_getString
(
"GENERATE_TAGFILE"
).
isEmpty
())
...
...
src/scanner.l
View file @
2fbdd54d
...
@@ -1101,10 +1101,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1101,10 +1101,17 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCReturnType>")" {
<ObjCReturnType>")" {
BEGIN( ObjCMethod );
BEGIN( ObjCMethod );
}
}
<ObjCParams>{ID}{BN}*/":" { // Keyword of parameter
<ObjCParams>({ID})?":" { // Keyword of parameter
lineCount();
QCString keyw = yytext;
QCString keyw = QCString(yytext).stripWhiteSpace();
keyw=keyw.left(keyw.length()-1); // strip :
current->name += keyw;
if (keyw.isEmpty())
{
current->name += " :";
}
else
{
current->name += keyw+":";
}
if (current->argList->getLast()->type.isEmpty())
if (current->argList->getLast()->type.isEmpty())
{
{
current->argList->getLast()->type="id";
current->argList->getLast()->type="id";
...
@@ -1121,19 +1128,25 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1121,19 +1128,25 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->argList->getLast()->attrib="[,]";
current->argList->getLast()->attrib="[,]";
current->argList->getLast()->type="...";
current->argList->getLast()->type="...";
}
}
/*
<ObjCParams>":" {
<ObjCParams>":" {
current->name += ':';
current->name += ':';
}
}
*/
<ObjCParams>"(" {
<ObjCParams>"(" {
BEGIN( ObjCParamType );
BEGIN( ObjCParamType );
}
}
<ObjCParamType>[^)]* {
<ObjCParamType>[^)]* {
current->argList->getLast()->type=
yytext
;
current->argList->getLast()->type=
QCString(yytext).stripWhiteSpace()
;
}
}
<ObjCParamType>")"{B}* {
<ObjCParamType>")"
/
{B}* {
BEGIN( ObjCParams );
BEGIN( ObjCParams );
}
}
<ObjCMethod,ObjCParams>";" { // end of method declaration
<ObjCMethod,ObjCParams>";" { // end of method declaration
if (current->argList->getLast() && current->argList->getLast()->type.isEmpty())
{
current->argList->getLast()->type="id";
}
current->args = argListToString(current->argList);
current->args = argListToString(current->argList);
//printf("argList=%s\n",current->args.data());
//printf("argList=%s\n",current->args.data());
unput(';');
unput(';');
...
@@ -1143,6 +1156,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -1143,6 +1156,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
//printf("Type=%s Name=%s args=%s\n",
//printf("Type=%s Name=%s args=%s\n",
// current->type.data(),current->name.data(),argListToString(current->argList).data()
// current->type.data(),current->name.data(),argListToString(current->argList).data()
// );
// );
if (current->argList->getLast() && current->argList->getLast()->type.isEmpty())
{
current->argList->getLast()->type="id";
}
current->args = argListToString(current->argList);
unput('{');
unput('{');
BEGIN( Function );
BEGIN( Function );
}
}
...
@@ -2094,13 +2112,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -2094,13 +2112,20 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
yyLineNr++;
yyLineNr++;
}
}
<ReadInitializer>"@\"" {
<ReadInitializer>"@\"" {
printf("insideCS=%d\n",insideCS);
current->initializer+=yytext;
current->initializer+=yytext;
if (!insideCS) REJECT;
if (!insideCS && !insideObjC)
// C# verbatim string
{
REJECT;
}
else
{
// C#/ObjC verbatim string
lastSkipVerbStringContext=YY_START;
lastSkipVerbStringContext=YY_START;
pSkipVerbString=¤t->initializer;
pSkipVerbString=¤t->initializer;
BEGIN(SkipVerbString);
BEGIN(SkipVerbString);
}
}
}
<SkipVerbString>[^\n"]+ {
<SkipVerbString>[^\n"]+ {
*pSkipVerbString+=yytext;
*pSkipVerbString+=yytext;
}
}
...
@@ -3589,7 +3614,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
...
@@ -3589,7 +3614,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (insideObjC && *yytext=='(') // class category
if (insideObjC && *yytext=='(') // class category
{
{
current->name+='(';
current->name+='(';
if (current->section!=Entry::OBJCIMPL_SEC)
{
current->section=Entry::CATEGORY_SEC;
current->section=Entry::CATEGORY_SEC;
}
BEGIN( ClassCategory );
BEGIN( ClassCategory );
}
}
else
else
...
...
src/search.php
View file @
2fbdd54d
<?
function
readInt
(
$file
)
function
readInt
(
$file
)
{
{
$b1
=
ord
(
fgetc
(
$file
));
$b2
=
ord
(
fgetc
(
$file
));
$b1
=
ord
(
fgetc
(
$file
));
$b2
=
ord
(
fgetc
(
$file
));
...
@@ -60,10 +61,15 @@ function search($file,$word,&$statsList)
...
@@ -60,10 +61,15 @@ function search($file,$word,&$statsList)
}
}
$w
=
readString
(
$file
);
$w
=
readString
(
$file
);
}
}
$totalFreq
=
0
;
$totalHi
=
0
;
$totalFreqHi
=
0
;
$totalFreqLo
=
0
;
for
(
$count
=
$start
;
$count
<
sizeof
(
$statsList
);
$count
++
)
for
(
$count
=
$start
;
$count
<
sizeof
(
$statsList
);
$count
++
)
{
{
$statInfo
=
&
$statsList
[
$count
];
$statInfo
=
&
$statsList
[
$count
];
$multiplier
=
1
;
// whole word matches have a double weight
if
(
$statInfo
[
"full"
])
$multiplier
=
2
;
fseek
(
$file
,
$statInfo
[
"index"
]);
fseek
(
$file
,
$statInfo
[
"index"
]);
$numDocs
=
readInt
(
$file
);
$numDocs
=
readInt
(
$file
);
$docInfo
=
array
();
$docInfo
=
array
();
...
@@ -72,11 +78,22 @@ function search($file,$word,&$statsList)
...
@@ -72,11 +78,22 @@ function search($file,$word,&$statsList)
{
{
$idx
=
readInt
(
$file
);
$idx
=
readInt
(
$file
);
$freq
=
readInt
(
$file
);
$freq
=
readInt
(
$file
);
$docInfo
[
$i
]
=
array
(
"idx"
=>
$idx
,
"freq"
=>
$freq
,
"rank"
=>
0.0
);
$docInfo
[
$i
]
=
array
(
"idx"
=>
$idx
,
$totalFreq
+=
$freq
;
"freq"
=>
$freq
>>
1
,
if
(
$statInfo
[
"full"
])
$totalFreq
+=
$freq
;
"rank"
=>
0.0
,
"hi"
=>
$freq
&
1
);
if
(
$freq
&
1
)
// word occurs in high priority doc
{
$totalHi
++
;
$totalFreqHi
+=
$freq
*
$multiplier
;
}
else
// word occurs in low priority doc
{
$totalFreqLo
+=
$freq
*
$multiplier
;
}
}
}
// read name an url info for the doc
// read name an
d
url info for the doc
for
(
$i
=
0
;
$i
<
$numDocs
;
$i
++
)
for
(
$i
=
0
;
$i
<
$numDocs
;
$i
++
)
{
{
fseek
(
$file
,
$docInfo
[
$i
][
"idx"
]);
fseek
(
$file
,
$docInfo
[
$i
][
"idx"
]);
...
@@ -85,15 +102,28 @@ function search($file,$word,&$statsList)
...
@@ -85,15 +102,28 @@ function search($file,$word,&$statsList)
}
}
$statInfo
[
"docs"
]
=
$docInfo
;
$statInfo
[
"docs"
]
=
$docInfo
;
}
}
$totalFreq
=
(
$totalHi
+
1
)
*
$totalFreqLo
+
$totalFreqHi
;
for
(
$count
=
$start
;
$count
<
sizeof
(
$statsList
);
$count
++
)
for
(
$count
=
$start
;
$count
<
sizeof
(
$statsList
);
$count
++
)
{
{
$statInfo
=
&
$statsList
[
$count
];
$statInfo
=
&
$statsList
[
$count
];
$multiplier
=
1
;
// whole word matches have a double weight
if
(
$statInfo
[
"full"
])
$multiplier
=
2
;
for
(
$i
=
0
;
$i
<
sizeof
(
$statInfo
[
"docs"
]);
$i
++
)
for
(
$i
=
0
;
$i
<
sizeof
(
$statInfo
[
"docs"
]);
$i
++
)
{
{
$docInfo
=
&
$statInfo
[
"docs"
];
$docInfo
=
&
$statInfo
[
"docs"
];
// compute frequency rank of the word in each doc
// compute frequency rank of the word in each doc
$freq
=
$docInfo
[
$i
][
"freq"
];
if
(
$docInfo
[
$i
][
"hi"
])
{
$statInfo
[
"docs"
][
$i
][
"rank"
]
=
$statInfo
[
"docs"
][
$i
][
"rank"
]
=
(
float
)
$docInfo
[
$i
][
"freq"
]
/
$totalFreq
;
(
float
)(
$freq
*
$multiplier
+
$totalFreqLo
)
/
$totalFreq
;
}
else
{
$statInfo
[
"docs"
][
$i
][
"rank"
]
=
(
float
)(
$freq
*
$multiplier
)
/
$totalFreq
;
}
}
}
}
}
}
}
...
@@ -113,7 +143,6 @@ function combine_results($results,&$docs)
...
@@ -113,7 +143,6 @@ function combine_results($results,&$docs)
if
(
in_array
(
$key
,
array_keys
(
$docs
)))
if
(
in_array
(
$key
,
array_keys
(
$docs
)))
{
{
$docs
[
$key
][
"rank"
]
+=
$rank
;
$docs
[
$key
][
"rank"
]
+=
$rank
;
$docs
[
$key
][
"rank"
]
*=
2
;
// multiple matches increases rank
}
}
else
else
{
{
...
@@ -132,25 +161,6 @@ function combine_results($results,&$docs)
...
@@ -132,25 +161,6 @@ function combine_results($results,&$docs)
return
$docs
;
return
$docs
;
}
}
function
normalize_ranking
(
&
$docs
)
{
$maxRank
=
0.0000001
;
// compute maximal rank
foreach
(
$docs
as
$doc
)
{
if
(
$doc
[
"rank"
]
>
$maxRank
)
{
$maxRank
=
$doc
[
"rank"
];
}
}
reset
(
$docs
);
// normalize rankings
while
(
list
(
$key
,
$val
)
=
each
(
$docs
))
{
$docs
[
$key
][
"rank"
]
*=
100
/
$maxRank
;
}
}
function
filter_results
(
$docs
,
&
$requiredWords
,
&
$forbiddenWords
)
function
filter_results
(
$docs
,
&
$requiredWords
,
&
$forbiddenWords
)
{
{
$filteredDocs
=
array
();
$filteredDocs
=
array
();
...
@@ -284,7 +294,7 @@ function main()
...
@@ -284,7 +294,7 @@ function main()
if
(
!
in_array
(
$word
,
$foundWords
))
if
(
!
in_array
(
$word
,
$foundWords
))
{
{
$foundWords
[]
=
$word
;
$foundWords
[]
=
$word
;
search
(
$file
,
strtolower
(
$word
)
,
$results
);
search
(
$file
,
$word
,
$results
);
}
}
$word
=
strtok
(
" "
);
$word
=
strtok
(
" "
);
}
}
...
@@ -293,8 +303,6 @@ function main()
...
@@ -293,8 +303,6 @@ function main()
// filter out documents with forbidden word or that do not contain
// filter out documents with forbidden word or that do not contain
// required words
// required words
$filteredDocs
=
filter_results
(
$docs
,
$requiredWords
,
$forbiddenWords
);
$filteredDocs
=
filter_results
(
$docs
,
$requiredWords
,
$forbiddenWords
);
// normalize rankings so they are in the range [0-100]
normalize_ranking
(
$filteredDocs
);
// sort the results based on rank
// sort the results based on rank
$sorted
=
array
();
$sorted
=
array
();
sort_results
(
$filteredDocs
,
$sorted
);
sort_results
(
$filteredDocs
,
$sorted
);
...
...
src/search_php.h
View file @
2fbdd54d
"<?
\n
"
"function readInt($file)
\n
"
"function readInt($file)
\n
"
"{
\n
"
"{
\n
"
" $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file));
\n
"
" $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file));
\n
"
...
@@ -60,10 +61,15 @@
...
@@ -60,10 +61,15 @@
" }
\n
"
" }
\n
"
" $w = readString($file);
\n
"
" $w = readString($file);
\n
"
" }
\n
"
" }
\n
"
" $totalFreq=0;
\n
"
" $totalHi=0;
\n
"
" $totalFreqHi=0;
\n
"
" $totalFreqLo=0;
\n
"
" for ($count=$start;$count<sizeof($statsList);$count++)
\n
"
" for ($count=$start;$count<sizeof($statsList);$count++)
\n
"
" {
\n
"
" {
\n
"
" $statInfo = &$statsList[$count];
\n
"
" $statInfo = &$statsList[$count];
\n
"
" $multiplier = 1;
\n
"
" // whole word matches have a double weight
\n
"
" if ($statInfo[
\"
full
\"
]) $multiplier=2;
\n
"
" fseek($file,$statInfo[
\"
index
\"
]);
\n
"
" fseek($file,$statInfo[
\"
index
\"
]);
\n
"
" $numDocs = readInt($file);
\n
"
" $numDocs = readInt($file);
\n
"
" $docInfo = array();
\n
"
" $docInfo = array();
\n
"
...
@@ -72,11 +78,22 @@
...
@@ -72,11 +78,22 @@
" {
\n
"
" {
\n
"
" $idx=readInt($file);
\n
"
" $idx=readInt($file);
\n
"
" $freq=readInt($file);
\n
"
" $freq=readInt($file);
\n
"
" $docInfo[$i]=array(
\"
idx
\"
=>$idx,
\"
freq
\"
=>$freq,
\"
rank
\"
=>0.0);
\n
"
" $docInfo[$i]=array(
\"
idx
\"
=> $idx,
\n
"
" $totalFreq+=$freq;
\n
"
"
\"
freq
\"
=> $freq>>1,
\n
"
" if ($statInfo[
\"
full
\"
]) $totalFreq+=$freq;
\n
"
"
\"
rank
\"
=> 0.0,
\n
"
"
\"
hi
\"
=> $freq&1
\n
"
" );
\n
"
" if ($freq&1) // word occurs in high priority doc
\n
"
" {
\n
"
" $totalHi++;
\n
"
" $totalFreqHi+=$freq*$multiplier;
\n
"
" }
\n
"
" else // word occurs in low priority doc
\n
"
" {
\n
"
" $totalFreqLo+=$freq*$multiplier;
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" // read name an url info for the doc
\n
"
" // read name an
d
url info for the doc
\n
"
" for ($i=0;$i<$numDocs;$i++)
\n
"
" for ($i=0;$i<$numDocs;$i++)
\n
"
" {
\n
"
" {
\n
"
" fseek($file,$docInfo[$i][
\"
idx
\"
]);
\n
"
" fseek($file,$docInfo[$i][
\"
idx
\"
]);
\n
"
...
@@ -85,15 +102,28 @@
...
@@ -85,15 +102,28 @@
" }
\n
"
" }
\n
"
" $statInfo[
\"
docs
\"
]=$docInfo;
\n
"
" $statInfo[
\"
docs
\"
]=$docInfo;
\n
"
" }
\n
"
" }
\n
"
" $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi;
\n
"
" for ($count=$start;$count<sizeof($statsList);$count++)
\n
"
" for ($count=$start;$count<sizeof($statsList);$count++)
\n
"
" {
\n
"
" {
\n
"
" $statInfo = &$statsList[$count];
\n
"
" $statInfo = &$statsList[$count];
\n
"
" $multiplier = 1;
\n
"
" // whole word matches have a double weight
\n
"
" if ($statInfo[
\"
full
\"
]) $multiplier=2;
\n
"
" for ($i=0;$i<sizeof($statInfo[
\"
docs
\"
]);$i++)
\n
"
" for ($i=0;$i<sizeof($statInfo[
\"
docs
\"
]);$i++)
\n
"
" {
\n
"
" {
\n
"
" $docInfo = &$statInfo[
\"
docs
\"
];
\n
"
" $docInfo = &$statInfo[
\"
docs
\"
];
\n
"
" // compute frequency rank of the word in each doc
\n
"
" // compute frequency rank of the word in each doc
\n
"
" $freq=$docInfo[$i][
\"
freq
\"
];
\n
"
" if ($docInfo[$i][
\"
hi
\"
])
\n
"
" {
\n
"
" $statInfo[
\"
docs
\"
][$i][
\"
rank
\"
]=
\n
"
" $statInfo[
\"
docs
\"
][$i][
\"
rank
\"
]=
\n
"
" (float)$docInfo[$i][
\"
freq
\"
]/$totalFreq;
\n
"
" (float)($freq*$multiplier+$totalFreqLo)/$totalFreq;
\n
"
" }
\n
"
" else
\n
"
" {
\n
"
" $statInfo[
\"
docs
\"
][$i][
\"
rank
\"
]=
\n
"
" (float)($freq*$multiplier)/$totalFreq;
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
" }
\n
"
...
@@ -113,7 +143,6 @@
...
@@ -113,7 +143,6 @@
" if (in_array($key, array_keys($docs)))
\n
"
" if (in_array($key, array_keys($docs)))
\n
"
" {
\n
"
" {
\n
"
" $docs[$key][
\"
rank
\"
]+=$rank;
\n
"
" $docs[$key][
\"
rank
\"
]+=$rank;
\n
"
" $docs[$key][
\"
rank
\"
]*=2; // multiple matches increases rank
\n
"
" }
\n
"
" }
\n
"
" else
\n
"
" else
\n
"
" {
\n
"
" {
\n
"
...
@@ -132,25 +161,6 @@
...
@@ -132,25 +161,6 @@
" return $docs;
\n
"
" return $docs;
\n
"
"}
\n
"
"}
\n
"
"
\n
"
"
\n
"
"function normalize_ranking(&$docs)
\n
"
"{
\n
"
" $maxRank = 0.0000001;
\n
"
" // compute maximal rank
\n
"
" foreach ($docs as $doc)
\n
"
" {
\n
"
" if ($doc[
\"
rank
\"
]>$maxRank)
\n
"
" {
\n
"
" $maxRank=$doc[
\"
rank
\"
];
\n
"
" }
\n
"
" }
\n
"
" reset($docs);
\n
"
" // normalize rankings
\n
"
" while (list ($key, $val) = each ($docs))
\n
"
" {
\n
"
" $docs[$key][
\"
rank
\"
]*=100/$maxRank;
\n
"
" }
\n
"
"}
\n
"
"
\n
"
"function filter_results($docs,&$requiredWords,&$forbiddenWords)
\n
"
"function filter_results($docs,&$requiredWords,&$forbiddenWords)
\n
"
"{
\n
"
"{
\n
"
" $filteredDocs=array();
\n
"
" $filteredDocs=array();
\n
"
...
@@ -284,7 +294,7 @@
...
@@ -284,7 +294,7 @@
" if (!in_array($word,$foundWords))
\n
"
" if (!in_array($word,$foundWords))
\n
"
" {
\n
"
" {
\n
"
" $foundWords[]=$word;
\n
"
" $foundWords[]=$word;
\n
"
" search($file,
strtolower($word)
,$results);
\n
"
" search($file,
$word
,$results);
\n
"
" }
\n
"
" }
\n
"
" $word=strtok(
\"
\"
);
\n
"
" $word=strtok(
\"
\"
);
\n
"
" }
\n
"
" }
\n
"
...
@@ -293,8 +303,6 @@
...
@@ -293,8 +303,6 @@
" // filter out documents with forbidden word or that do not contain
\n
"
" // filter out documents with forbidden word or that do not contain
\n
"
" // required words
\n
"
" // required words
\n
"
" $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords);
\n
"
" $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords);
\n
"
" // normalize rankings so they are in the range [0-100]
\n
"
" normalize_ranking($filteredDocs);
\n
"
" // sort the results based on rank
\n
"
" // sort the results based on rank
\n
"
" $sorted = array();
\n
"
" $sorted = array();
\n
"
" sort_results($filteredDocs,$sorted);
\n
"
" sort_results($filteredDocs,$sorted);
\n
"
...
...
src/searchindex.cpp
View file @
2fbdd54d
...
@@ -21,14 +21,16 @@
...
@@ -21,14 +21,16 @@
#include <qfile.h>
#include <qfile.h>
// file format:
// file format:
(all multi-byte values are stored in big endian format)
// 4 byte header
// 4 byte header
// 256*256*4 byte index
// 256*256*4 byte index
(4 bytes)
// for each index entry: a zero terminated list of words
// for each index entry: a zero terminated list of words
// for each word: a
0 terminated string + 4 bytes stats index
// for each word: a
\0 terminated string + 4 byte offset to the stats info
// padding bytes to align at 4 byte boundary
// padding bytes to align at 4 byte boundary
// for each word: a counter + for each url containing the word 8 bytes statistics
// for each word: the number of urls (4 bytes)
// for each url: a 0 terminated string
// + for each url containing the word 8 bytes statistics
// (4 bytes index to url string + 4 bytes frequency counter)
// for each url: a \0 terminated string
const
int
numIndexEntries
=
256
*
256
;
const
int
numIndexEntries
=
256
*
256
;
...
@@ -37,17 +39,21 @@ const int numIndexEntries = 256*256;
...
@@ -37,17 +39,21 @@ const int numIndexEntries = 256*256;
IndexWord
::
IndexWord
(
const
char
*
word
)
:
m_word
(
word
),
m_urls
(
17
)
IndexWord
::
IndexWord
(
const
char
*
word
)
:
m_word
(
word
),
m_urls
(
17
)
{
{
m_urls
.
setAutoDelete
(
TRUE
);
m_urls
.
setAutoDelete
(
TRUE
);
//printf("IndexWord::IndexWord(%s)\n",word);
}
}
void
IndexWord
::
addUrlIndex
(
int
idx
)
void
IndexWord
::
addUrlIndex
(
int
idx
,
bool
hiPriority
)
{
{
//printf("IndexWord::addUrlIndex(%d,%d)\n",idx,hiPriority);
URLInfo
*
ui
=
m_urls
.
find
(
idx
);
URLInfo
*
ui
=
m_urls
.
find
(
idx
);
if
(
ui
==
0
)
if
(
ui
==
0
)
{
{
//printf("URLInfo::URLInfo(%d)\n",idx);
ui
=
new
URLInfo
(
idx
,
0
);
ui
=
new
URLInfo
(
idx
,
0
);
m_urls
.
insert
(
idx
,
ui
);
m_urls
.
insert
(
idx
,
ui
);
}
}
ui
->
freq
++
;
ui
->
freq
+=
2
;
if
(
hiPriority
)
ui
->
freq
|=
1
;
// mark as high priority document
}
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
...
@@ -62,6 +68,7 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd
...
@@ -62,6 +68,7 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd
void
SearchIndex
::
setCurrentDoc
(
const
char
*
name
,
const
char
*
baseName
,
const
char
*
anchor
)
void
SearchIndex
::
setCurrentDoc
(
const
char
*
name
,
const
char
*
baseName
,
const
char
*
anchor
)
{
{
//printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor);
QCString
url
=
baseName
+
Config_getString
(
"HTML_FILE_EXTENSION"
);
QCString
url
=
baseName
+
Config_getString
(
"HTML_FILE_EXTENSION"
);
if
(
anchor
)
url
+=
(
QCString
)
"#"
+
anchor
;
if
(
anchor
)
url
+=
(
QCString
)
"#"
+
anchor
;
m_urlIndex
++
;
m_urlIndex
++
;
...
@@ -79,9 +86,11 @@ static int charsToIndex(const char *word)
...
@@ -79,9 +86,11 @@ static int charsToIndex(const char *word)
return
c1
*
256
+
c2
;
return
c1
*
256
+
c2
;
}
}
void
SearchIndex
::
addWord
(
const
char
*
word
)
void
SearchIndex
::
addWord
(
const
char
*
word
,
bool
hiPriority
)
{
{
QString
wStr
=
QString
(
word
).
lower
();
//printf("SearchIndex::addWord(%s,%d)\n",word,hiPriority);
//QString wStr=QString(word).lower();
QString
wStr
(
word
);
if
(
wStr
.
isEmpty
())
return
;
if
(
wStr
.
isEmpty
())
return
;
IndexWord
*
w
=
m_words
[
wStr
];
IndexWord
*
w
=
m_words
[
wStr
];
if
(
w
==
0
)
if
(
w
==
0
)
...
@@ -91,9 +100,9 @@ void SearchIndex::addWord(const char *word)
...
@@ -91,9 +100,9 @@ void SearchIndex::addWord(const char *word)
w
=
new
IndexWord
(
wStr
);
w
=
new
IndexWord
(
wStr
);
//fprintf(stderr,"addWord(%s) at index %d\n",word,idx);
//fprintf(stderr,"addWord(%s) at index %d\n",word,idx);
m_index
[
idx
]
->
append
(
w
);
m_index
[
idx
]
->
append
(
w
);
m_words
.
insert
(
w
ord
,
w
);
m_words
.
insert
(
w
Str
,
w
);
}
}
w
->
addUrlIndex
(
m_urlIndex
);
w
->
addUrlIndex
(
m_urlIndex
,
hiPriority
);
}
}
...
@@ -257,21 +266,6 @@ void SearchIndex::write(const char *fileName)
...
@@ -257,21 +266,6 @@ void SearchIndex::write(const char *fileName)
}
}
}
}
//for (wdi.toFirst();(iw=wdi.current());++wdi)
//{
// printf("Word %s:\n",wdi.currentKey().data());
// QIntDictIterator<URLInfo> udi(iw->urls());
// URLInfo *ui;
// for (udi.toFirst();(ui=udi.current());++udi)
// {
// printf(" url[%d]=(name=%s,url=%s),freq=%d\n",
// ui->urlIdx,
// m_urls[ui->urlIdx]->name.data(),
// m_urls[ui->urlIdx]->url.data(),
// ui->freq);
// }
//}
delete
urlOffsets
;
delete
urlOffsets
;
delete
wordStatOffsets
;
delete
wordStatOffsets
;
}
}
...
...
src/searchindex.h
View file @
2fbdd54d
...
@@ -44,7 +44,7 @@ class IndexWord
...
@@ -44,7 +44,7 @@ class IndexWord
{
{
public
:
public
:
IndexWord
(
const
char
*
word
);
IndexWord
(
const
char
*
word
);
void
addUrlIndex
(
int
);
void
addUrlIndex
(
int
,
bool
);
const
QIntDict
<
URLInfo
>
&
urls
()
const
{
return
m_urls
;
}
const
QIntDict
<
URLInfo
>
&
urls
()
const
{
return
m_urls
;
}
QCString
word
()
const
{
return
m_word
;
}
QCString
word
()
const
{
return
m_word
;
}
...
@@ -58,7 +58,7 @@ class SearchIndex
...
@@ -58,7 +58,7 @@ class SearchIndex
public
:
public
:
SearchIndex
();
SearchIndex
();
void
setCurrentDoc
(
const
char
*
name
,
const
char
*
baseName
,
const
char
*
anchor
=
0
);
void
setCurrentDoc
(
const
char
*
name
,
const
char
*
baseName
,
const
char
*
anchor
=
0
);
void
addWord
(
const
char
*
word
);
void
addWord
(
const
char
*
word
,
bool
hiPriority
);
void
write
(
const
char
*
file
);
void
write
(
const
char
*
file
);
private
:
private
:
QDict
<
IndexWord
>
m_words
;
QDict
<
IndexWord
>
m_words
;
...
...
src/translator_en.h
View file @
2fbdd54d
...
@@ -1560,16 +1560,41 @@ class TranslatorEnglish : public Translator
...
@@ -1560,16 +1560,41 @@ class TranslatorEnglish : public Translator
// new since 1.3.9
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual
QCString
trDirIndex
()
virtual
QCString
trDirIndex
()
{
return
"Directories"
;
}
{
return
"Directory Hierarchy"
;
}
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual
QCString
trDirDocumentation
()
virtual
QCString
trDirDocumentation
()
{
return
"Directory Documentation"
;
}
{
return
"Directory Documentation"
;
}
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual
QCString
trDirectories
()
virtual
QCString
trDirectories
()
{
return
"Directories"
;
}
{
return
"Directories"
;
}
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual
QCString
trDirDescription
()
virtual
QCString
trDirDescription
()
{
return
"Here is a list of all directories:"
;
}
{
return
"This directory hierarchy is sorted roughly, "
"but not completely, alphabetically:"
;
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual
QCString
trDirReference
(
const
char
*
dirName
)
virtual
QCString
trDirReference
(
const
char
*
dirName
)
{
QCString
result
=
dirName
;
result
+=
" Directory Reference"
;
return
result
;
}
{
QCString
result
=
dirName
;
result
+=
" Directory Reference"
;
return
result
;
}
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual
QCString
trDir
(
bool
first_capital
,
bool
singular
)
virtual
QCString
trDir
(
bool
first_capital
,
bool
singular
)
{
{
QCString
result
((
first_capital
?
"Director"
:
"director"
));
QCString
result
((
first_capital
?
"Director"
:
"director"
));
...
...
src/translator_nl.h
View file @
2fbdd54d
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
#ifndef TRANSLATOR_NL_H
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
class
TranslatorDutch
:
public
Translator
Adapter_1_3_9
class
TranslatorDutch
:
public
Translator
{
{
public
:
public
:
QCString
idLanguage
()
QCString
idLanguage
()
...
@@ -1154,6 +1154,52 @@ class TranslatorDutch : public TranslatorAdapter_1_3_9
...
@@ -1154,6 +1154,52 @@ class TranslatorDutch : public TranslatorAdapter_1_3_9
return
filename
+
" Bron Bestand"
;
return
filename
+
" Bron Bestand"
;
}
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual
QCString
trDirIndex
()
{
return
"Directory Hiërarchie"
;
}
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual
QCString
trDirDocumentation
()
{
return
"Directory Documentatie"
;
}
/*! This is used as the title of the directory index and also in the
* Quick links of a HTML page, to link to the directory hierarchy.
*/
virtual
QCString
trDirectories
()
{
return
"Directories"
;
}
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual
QCString
trDirDescription
()
{
return
"Deze directory hiërarchie is min of meer alfabetisch "
"gesorteerd:"
;
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual
QCString
trDirReference
(
const
char
*
dirName
)
{
QCString
result
=
dirName
;
result
+=
" Directory Referentie"
;
return
result
;
}
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual
QCString
trDir
(
bool
first_capital
,
bool
singular
)
{
QCString
result
((
first_capital
?
"Director"
:
"director"
));
if
(
singular
)
result
+=
"y"
;
else
result
+=
"ies"
;
return
result
;
}
};
};
...
...
src/xmlgen.cpp
View file @
2fbdd54d
...
@@ -1678,15 +1678,15 @@ void generateXML()
...
@@ -1678,15 +1678,15 @@ void generateXML()
generateXMLForClass
(
cd
,
t
);
generateXMLForClass
(
cd
,
t
);
}
}
}
}
{
//
{
ClassSDict
::
Iterator
cli
(
Doxygen
::
hiddenClasses
);
//
ClassSDict::Iterator cli(Doxygen::hiddenClasses);
ClassDef
*
cd
;
//
ClassDef *cd;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
//
for (cli.toFirst();(cd=cli.current());++cli)
{
//
{
msg
(
"Generating XML output for class %s
\n
"
,
cd
->
name
().
data
());
//
msg("Generating XML output for class %s\n",cd->name().data());
generateXMLForClass
(
cd
,
t
);
//
generateXMLForClass(cd,t);
}
//
}
}
//
}
NamespaceSDict
::
Iterator
nli
(
Doxygen
::
namespaceSDict
);
NamespaceSDict
::
Iterator
nli
(
Doxygen
::
namespaceSDict
);
NamespaceDef
*
nd
;
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
...
...
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