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
3b98221d
Commit
3b98221d
authored
Sep 16, 2005
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.4-20050817
parent
2620b73b
Changes
26
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1586 additions
and
669 deletions
+1586
-669
INSTALL
INSTALL
+2
-2
README
README
+2
-3
VERSION
VERSION
+1
-1
doxygen.cpp
src/doxygen.cpp
+50
-111
doxygen.css
src/doxygen.css
+310
-0
doxygen_css.h
src/doxygen_css.h
+310
-0
filedef.cpp
src/filedef.cpp
+2
-2
ftvhelp.cpp
src/ftvhelp.cpp
+0
-40
htmlgen.cpp
src/htmlgen.cpp
+663
-387
index.cpp
src/index.cpp
+88
-28
index.h
src/index.h
+5
-1
libdoxygen.pro.in
src/libdoxygen.pro.in
+1
-0
libdoxygen.t
src/libdoxygen.t
+8
-3
memberdef.cpp
src/memberdef.cpp
+2
-1
namespacedef.cpp
src/namespacedef.cpp
+1
-1
namespacedef.h
src/namespacedef.h
+1
-1
pre.l
src/pre.l
+22
-11
pycode.h
src/pycode.h
+5
-3
pycode.l
src/pycode.l
+5
-3
pyscanner.h
src/pyscanner.h
+5
-3
pyscanner.l
src/pyscanner.l
+19
-7
scanner.l
src/scanner.l
+4
-0
search.php
src/search.php
+2
-5
search_php.h
src/search_php.h
+2
-5
util.cpp
src/util.cpp
+74
-50
util.h
src/util.h
+2
-1
No files found.
INSTALL
View file @
3b98221d
DOXYGEN Version 1.4.4-2005081
5
DOXYGEN Version 1.4.4-2005081
7
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (1
5
August 2005)
Dimitri van Heesch (1
7
August 2005)
README
View file @
3b98221d
DOXYGEN Version 1.4.4_2005081
5
DOXYGEN Version 1.4.4_2005081
7
Please read INSTALL for compilation instructions.
...
...
@@ -17,5 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (15 August 2005)
Dimitri van Heesch (dimitri@stack.nl) (17 August 2005)
VERSION
View file @
3b98221d
1.4.4-2005081
5
1.4.4-2005081
7
src/doxygen.cpp
View file @
3b98221d
...
...
@@ -268,6 +268,21 @@ static STLInfo g_stlinfo[] =
{
"priority_queue"
,
0
,
0
,
"T"
,
"elements"
,
0
,
0
,
FALSE
,
FALSE
},
{
"stack"
,
0
,
0
,
"T"
,
"elements"
,
0
,
0
,
FALSE
,
FALSE
},
{
"valarray"
,
0
,
0
,
"T"
,
"elements"
,
0
,
0
,
FALSE
,
FALSE
},
{
"exception"
,
0
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"bad_alloc"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"bad_cast"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"bad_typeid"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"logic_error"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"ios_base::failure"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"runtime_error"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"bad_exception"
,
"exception"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"domain_error"
,
"logic_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"invalid_argument"
,
"logic_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"length_error"
,
"logic_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"out_of_range"
,
"logic_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"range_error"
,
"runtime_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"overflow_error"
,
"runtime_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
"underflow_error"
,
"runtime_error"
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
},
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
FALSE
,
FALSE
}
};
...
...
@@ -3162,119 +3177,22 @@ static QDict<int> *getTemplateArgumentsInName(ArgumentList *templateArguments,co
*/
static
ClassDef
*
findClassWithinClassContext
(
Definition
*
context
,
ClassDef
*
cd
,
const
QCString
&
name
)
{
#if 0
ClassDef *result=0;
FileDef *fd=cd->getFileDef();
// try using of namespaces in namespace scope
NamespaceDef *nd=cd->getNamespaceDef();
if (nd) // class is inside a namespace
{
QCString fName = nd->name()+"::"+name;
result = getResolvedClass(cd,fd,fName);
if (result && result!=cd)
{
return result;
}
NamespaceSDict *nl = nd->getUsedNamespaces();
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) ; ++nli)
{
fName = nd->name()+"::"+name;
result = getResolvedClass(cd,fd,fName);
if (result && result!=cd) return result;
}
}
SDict<Definition> *cl = nd->getUsedClasses();
if (cl)
{
SDict<Definition>::Iterator cli(*cl);
Definition *ucd;
for (cli.toFirst(); (ucd=cli.current()) ; ++cli)
{
if (ucd->definitionType()==Definition::TypeClass &&
rightScopeMatch(ucd->name(),name))
{
return (ClassDef *)ucd;
}
}
}
// TODO: check any inbetween namespaces as well!
if (fd) // and in the global namespace
{
SDict<Definition> *cl = fd->getUsedClasses();
if (cl)
{
SDict<Definition>::Iterator cli(*cl);
Definition *ucd;
for (cli.toFirst(); (ucd=cli.current()); ++cli)
{
if (ucd->definitionType()==Definition::TypeClass &&
rightScopeMatch(ucd->name(),name))
{
return (ClassDef *)ucd;
}
}
}
}
}
// try using of namespaces in file scope
if (fd)
{
// look for the using statement in this file in which the
// class was found
NamespaceSDict *nl = fd->getUsedNamespaces();
if (nl) // try to prepend any of the using namespace scopes.
{
NamespaceSDict::Iterator nli(*nl);
NamespaceDef *nd;
for (nli.toFirst() ; (nd=nli.current()) ; ++nli)
{
QCString fName = nd->name()+"::"+name;
result=getResolvedClass(cd,fd,fName);
if (result && result!=cd)
{
return result;
}
}
}
SDict<Definition> *cl = fd->getUsedClasses();
if (cl)
{
SDict<Definition>::Iterator cli(*cl);
Definition *ucd;
for (cli.toFirst(); (ucd=cli.current()) ; ++cli)
{
if (ucd->definitionType()==Definition::TypeClass &&
rightScopeMatch(ucd->name(),name))
{
return (ClassDef *)ucd;
}
}
}
}
#endif
FileDef
*
fd
=
cd
->
getFileDef
();
ClassDef
*
result
=
0
;
if
(
context
&&
cd
!=
context
)
{
result
=
getResolvedClass
(
context
,
0
,
name
);
result
=
getResolvedClass
(
context
,
0
,
name
,
0
,
0
,
FALSE
,
TRUE
);
}
if
(
result
==
0
)
{
result
=
getResolvedClass
(
cd
,
fd
,
name
);
result
=
getResolvedClass
(
cd
,
fd
,
name
,
0
,
0
,
FALSE
,
TRUE
);
}
//printf("** Trying to find %s within context %s class %s result=%s\n",
//printf("** Trying to find %s within context %s class %s result=%s
lookup=%p
\n",
// name.data(),
// context ? context->name().data() : "<none>",
// cd ? cd->name().data() : "<none>",
// result ? result->name().data() : "<none>"
// result ? result->name().data() : "<none>",
// Doxygen::classSDict.find(name)
// );
return
result
;
}
...
...
@@ -3320,7 +3238,7 @@ static void findUsedClassesForClass(Entry *root,
MemberDef
*
md
=
mi
->
memberDef
;
if
(
md
->
isVariable
())
// for each member variable in this class
{
//printf("Found variable %s in class %s\n",md->name().data(),masterCd->name().data());
//printf("
Found variable %s in class %s\n",md->name().data(),masterCd->name().data());
QCString
type
=
removeRedundantWhiteSpace
(
md
->
typeString
());
int
pos
=
0
;
QCString
usedClassName
;
...
...
@@ -3332,11 +3250,16 @@ static void findUsedClassesForClass(Entry *root,
type
=
substituteTemplateArgumentsInString
(
type
,
formalArgs
,
actualArgs
);
}
//printf(" template substitution gives=%s\n",type.data());
//printf("
template substitution gives=%s\n",type.data());
while
(
!
found
&&
extractClassNameFromType
(
type
,
pos
,
usedClassName
,
templSpec
)
!=-
1
)
{
// find the type (if any) that matches usedClassName
ClassDef
*
typeCd
=
getResolvedClass
(
masterCd
,
masterCd
->
getFileDef
(),
usedClassName
);
ClassDef
*
typeCd
=
getResolvedClass
(
masterCd
,
masterCd
->
getFileDef
(),
usedClassName
,
0
,
0
,
FALSE
,
TRUE
);
//printf("====> usedClassName=%s -> typeCd=%s\n",
// usedClassName.data(),typeCd?typeCd->name().data():"<none>");
if
(
typeCd
)
...
...
@@ -3383,6 +3306,7 @@ static void findUsedClassesForClass(Entry *root,
usedCd
=
new
ClassDef
(
masterCd
->
getDefFileName
(),
masterCd
->
getDefLine
(),
usedName
,
ClassDef
::
Class
);
usedCd
->
makeTemplateArgument
();
Doxygen
::
hiddenClasses
.
append
(
usedName
,
usedCd
);
}
if
(
usedCd
)
...
...
@@ -3536,7 +3460,7 @@ static bool findTemplateInstanceRelation(Entry *root,
if
(
freshInstance
)
{
Debug
::
print
(
Debug
::
Classes
,
0
,
" found fresh instance
!
\n
"
);
Debug
::
print
(
Debug
::
Classes
,
0
,
" found fresh instance
'%s'!
\n
"
,
instanceClass
->
name
().
data
()
);
Doxygen
::
classSDict
.
append
(
instanceClass
->
name
(),
instanceClass
);
instanceClass
->
setTemplateBaseClassNames
(
templateNames
);
...
...
@@ -3638,11 +3562,12 @@ static bool findClassRelation(
MemberDef
*
baseClassTypeDef
=
0
;
QCString
templSpec
;
ClassDef
*
baseClass
=
getResolvedClass
(
explicitGlobalScope
?
0
:
cd
,
cd
->
getFileDef
(),
// todo: is this ok?
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
&
templSpec
,
mode
==
Undocumented
mode
==
Undocumented
,
TRUE
);
//printf("baseClassName=%s baseClass=%p cd=%p explicitGlobalScope=%d\n",
// baseClassName.data(),baseClass,cd,explicitGlobalScope);
...
...
@@ -3695,7 +3620,14 @@ static bool findClassRelation(
{
templSpec
=
baseClassName
.
mid
(
i
,
e
-
i
);
baseClassName
=
baseClassName
.
left
(
i
)
+
baseClassName
.
right
(
baseClassName
.
length
()
-
e
);
baseClass
=
getResolvedClass
(
cd
,
cd
->
getFileDef
(),
baseClassName
);
baseClass
=
getResolvedClass
(
cd
,
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
0
,
//&templSpec,
mode
==
Undocumented
,
TRUE
);
//printf("baseClass=%p -> baseClass=%s templSpec=%s\n",
// baseClass,baseClassName.data(),templSpec.data());
}
...
...
@@ -3707,7 +3639,14 @@ static bool findClassRelation(
{
// replace any namespace aliases
replaceNamespaceAliases
(
baseClassName
,
si
);
baseClass
=
getResolvedClass
(
cd
,
cd
->
getFileDef
(),
baseClassName
);
baseClass
=
getResolvedClass
(
cd
,
cd
->
getFileDef
(),
baseClassName
,
&
baseClassTypeDef
,
&
templSpec
,
mode
==
Undocumented
,
TRUE
);
found
=
baseClass
!=
0
&&
baseClass
!=
cd
;
}
...
...
@@ -4305,7 +4244,7 @@ static void addMemberDocs(Entry *root,
static
ClassDef
*
findClassDefinition
(
FileDef
*
fd
,
NamespaceDef
*
nd
,
const
char
*
scopeName
)
{
ClassDef
*
tcd
=
getResolvedClass
(
nd
,
fd
,
scopeName
,
0
,
0
,
TRUE
);
ClassDef
*
tcd
=
getResolvedClass
(
nd
,
fd
,
scopeName
,
0
,
0
,
TRUE
,
TRUE
);
return
tcd
;
}
...
...
src/doxygen.css
0 → 100644
View file @
3b98221d
BODY
,
H1
,
H2
,
H3
,
H4
,
H5
,
H6
,
P
,
CENTER
,
TD
,
TH
,
UL
,
DL
,
DIV
{
font-family
:
Geneva
,
Arial
,
Helvetica
,
sans-serif
;
}
BODY
,
TD
{
font-size
:
90%
;
}
H1
{
text-align
:
center
;
font-size
:
160%
;
}
H2
{
font-size
:
120%
;
}
H3
{
font-size
:
100%
;
}
CAPTION
{
font-weight
:
bold
}
DIV
.qindex
{
width
:
100%
;
background-color
:
#e8eef2
;
border
:
1px
solid
#84b0c7
;
text-align
:
center
;
margin
:
2px
;
padding
:
2px
;
line-height
:
140%
;
}
DIV
.nav
{
width
:
100%
;
background-color
:
#e8eef2
;
border
:
1px
solid
#84b0c7
;
text-align
:
center
;
margin
:
2px
;
padding
:
2px
;
line-height
:
140%
;
}
DIV
.navtab
{
background-color
:
#e8eef2
;
border
:
1px
solid
#84b0c7
;
text-align
:
center
;
margin
:
2px
;
margin-right
:
15px
;
padding
:
2px
;
}
TD
.navtab
{
font-size
:
70%
;
}
A
.qindex
{
text-decoration
:
none
;
font-weight
:
bold
;
color
:
#1A419D
;
}
A
.qindex
:visited
{
text-decoration
:
none
;
font-weight
:
bold
;
color
:
#1A419D
}
A
.qindex
:hover
{
text-decoration
:
none
;
background-color
:
#ddddff
;
}
A
.qindexHL
{
text-decoration
:
none
;
font-weight
:
bold
;
background-color
:
#6666cc
;
color
:
#ffffff
;
border
:
1px
double
#9295C2
;
}
A
.qindexHL
:hover
{
text-decoration
:
none
;
background-color
:
#6666cc
;
color
:
#ffffff
;
}
A
.qindexHL
:visited
{
text-decoration
:
none
;
background-color
:
#6666cc
;
color
:
#ffffff
}
A
.el
{
text-decoration
:
none
;
font-weight
:
bold
}
A
.elRef
{
font-weight
:
bold
}
A
.code
:link
{
text-decoration
:
none
;
font-weight
:
normal
;
color
:
#0000FF
}
A
.code
:visited
{
text-decoration
:
none
;
font-weight
:
normal
;
color
:
#0000FF
}
A
.codeRef
:link
{
font-weight
:
normal
;
color
:
#0000FF
}
A
.codeRef
:visited
{
font-weight
:
normal
;
color
:
#0000FF
}
A
:hover
{
text-decoration
:
none
;
background-color
:
#f2f2ff
}
DL
.el
{
margin-left
:
-1cm
}
.fragment
{
font-family
:
Fixed
,
monospace
;
font-size
:
95%
;
}
PRE
.fragment
{
border
:
1px
solid
#CCCCCC
;
background-color
:
#f5f5f5
;
margin-top
:
4px
;
margin-bottom
:
4px
;
margin-left
:
2px
;
margin-right
:
8px
;
padding-left
:
6px
;
padding-right
:
6px
;
padding-top
:
4px
;
padding-bottom
:
4px
;
}
DIV
.ah
{
background-color
:
black
;
font-weight
:
bold
;
color
:
#ffffff
;
margin-bottom
:
3px
;
margin-top
:
3px
}
TD
.md
{
background-color
:
#F4F4FB
;
font-weight
:
bold
;
}
TD
.mdPrefix
{
background-color
:
#F4F4FB
;
color
:
#606060
;
font-size
:
80%
;
}
TD
.mdname1
{
background-color
:
#F4F4FB
;
font-weight
:
bold
;
color
:
#602020
;
}
TD
.mdname
{
background-color
:
#F4F4FB
;
font-weight
:
bold
;
color
:
#602020
;
width
:
600px
;
}
DIV
.groupHeader
{
margin-left
:
16px
;
margin-top
:
12px
;
margin-bottom
:
6px
;
font-weight
:
bold
;
}
DIV
.groupText
{
margin-left
:
16px
;
font-style
:
italic
;
font-size
:
90%
}
BODY
{
background
:
white
;
color
:
black
;
margin-right
:
20px
;
margin-left
:
20px
;
}
TD
.indexkey
{
background-color
:
#e8eef2
;
font-weight
:
bold
;
padding-right
:
10px
;
padding-top
:
2px
;
padding-left
:
10px
;
padding-bottom
:
2px
;
margin-left
:
0px
;
margin-right
:
0px
;
margin-top
:
2px
;
margin-bottom
:
2px
;
border
:
1px
solid
#CCCCCC
;
}
TD
.indexvalue
{
background-color
:
#e8eef2
;
font-style
:
italic
;
padding-right
:
10px
;
padding-top
:
2px
;
padding-left
:
10px
;
padding-bottom
:
2px
;
margin-left
:
0px
;
margin-right
:
0px
;
margin-top
:
2px
;
margin-bottom
:
2px
;
border
:
1px
solid
#CCCCCC
;
}
TR
.memlist
{
background-color
:
#f0f0f0
;
}
P
.formulaDsp
{
text-align
:
center
;
}
IMG
.formulaDsp
{
}
IMG
.formulaInl
{
vertical-align
:
middle
;
}
SPAN
.keyword
{
color
:
#008000
}
SPAN
.keywordtype
{
color
:
#604020
}
SPAN
.keywordflow
{
color
:
#e08000
}
SPAN
.comment
{
color
:
#800000
}
SPAN
.preprocessor
{
color
:
#806020
}
SPAN
.stringliteral
{
color
:
#002080
}
SPAN
.charliteral
{
color
:
#008080
}
.mdTable
{
border
:
1px
solid
#868686
;
background-color
:
#F4F4FB
;
}
.mdRow
{
padding
:
8px
10px
;
}
.mdescLeft
{
padding
:
0px
8px
4px
8px
;
font-size
:
80%
;
font-style
:
italic
;
background-color
:
#FAFAFA
;
border-top
:
1px
none
#E0E0E0
;
border-right
:
1px
none
#E0E0E0
;
border-bottom
:
1px
none
#E0E0E0
;
border-left
:
1px
none
#E0E0E0
;
margin
:
0px
;
}
.mdescRight
{
padding
:
0px
8px
4px
8px
;
font-size
:
80%
;
font-style
:
italic
;
background-color
:
#FAFAFA
;
border-top
:
1px
none
#E0E0E0
;
border-right
:
1px
none
#E0E0E0
;
border-bottom
:
1px
none
#E0E0E0
;
border-left
:
1px
none
#E0E0E0
;
margin
:
0px
;
}
.memItemLeft
{
padding
:
1px
0px
0px
8px
;
margin
:
4px
;
border-top-width
:
1px
;
border-right-width
:
1px
;
border-bottom-width
:
1px
;
border-left-width
:
1px
;
border-top-color
:
#E0E0E0
;
border-right-color
:
#E0E0E0
;
border-bottom-color
:
#E0E0E0
;
border-left-color
:
#E0E0E0
;
border-top-style
:
solid
;
border-right-style
:
none
;
border-bottom-style
:
none
;
border-left-style
:
none
;
background-color
:
#FAFAFA
;
font-size
:
80%
;
}
.memItemRight
{
padding
:
1px
8px
0px
8px
;
margin
:
4px
;
border-top-width
:
1px
;
border-right-width
:
1px
;
border-bottom-width
:
1px
;
border-left-width
:
1px
;
border-top-color
:
#E0E0E0
;
border-right-color
:
#E0E0E0
;
border-bottom-color
:
#E0E0E0
;
border-left-color
:
#E0E0E0
;
border-top-style
:
solid
;
border-right-style
:
none
;
border-bottom-style
:
none
;
border-left-style
:
none
;
background-color
:
#FAFAFA
;
font-size
:
80%
;
}
.memTemplItemLeft
{
padding
:
1px
0px
0px
8px
;
margin
:
4px
;
border-top-width
:
1px
;
border-right-width
:
1px
;
border-bottom-width
:
1px
;
border-left-width
:
1px
;
border-top-color
:
#E0E0E0
;
border-right-color
:
#E0E0E0
;
border-bottom-color
:
#E0E0E0
;
border-left-color
:
#E0E0E0
;
border-top-style
:
none
;
border-right-style
:
none
;
border-bottom-style
:
none
;
border-left-style
:
none
;
background-color
:
#FAFAFA
;
font-size
:
80%
;
}
.memTemplItemRight
{
padding
:
1px
8px
0px
8px
;
margin
:
4px
;
border-top-width
:
1px
;
border-right-width
:
1px
;
border-bottom-width
:
1px
;
border-left-width
:
1px
;
border-top-color
:
#E0E0E0
;
border-right-color
:
#E0E0E0
;
border-bottom-color
:
#E0E0E0
;
border-left-color
:
#E0E0E0
;
border-top-style
:
none
;
border-right-style
:
none
;
border-bottom-style
:
none
;
border-left-style
:
none
;
background-color
:
#FAFAFA
;
font-size
:
80%
;
}
.memTemplParams
{
padding
:
1px
0px
0px
8px
;
margin
:
4px
;
border-top-width
:
1px
;
border-right-width
:
1px
;
border-bottom-width
:
1px
;
border-left-width
:
1px
;
border-top-color
:
#E0E0E0
;
border-right-color
:
#E0E0E0
;
border-bottom-color
:
#E0E0E0
;
border-left-color
:
#E0E0E0
;
border-top-style
:
solid
;
border-right-style
:
none
;
border-bottom-style
:
none
;
border-left-style
:
none
;
color
:
#606060
;
background-color
:
#FAFAFA
;
font-size
:
80%
;
}
.search
{
color
:
#003399
;
font-weight
:
bold
;
}
FORM
.search
{
margin-bottom
:
0px
;
margin-top
:
0px
;
}
INPUT
.search
{
font-size
:
75%
;
color
:
#000080
;
font-weight
:
normal
;
background-color
:
#e8eef2
;
}
TD
.tiny
{
font-size
:
75%
;
}
a
{
color
:
#1A41A8
;
}
a
:visited
{
color
:
#2A3798
;
}
.dirtab
{
padding
:
4px
;
border-collapse
:
collapse
;
border
:
1px
solid
#84b0c7
;
}
TH
.dirtab
{
background
:
#e8eef2
;
font-weight
:
bold
;
}
HR
{
height
:
1px
;
border
:
none
;
border-top
:
1px
solid
black
;
}
src/doxygen_css.h
0 → 100644
View file @
3b98221d
"BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
\n
"
" font-family: Geneva, Arial, Helvetica, sans-serif;
\n
"
"}
\n
"
"BODY,TD {
\n
"
" font-size: 90%;
\n
"
"}
\n
"
"H1 {
\n
"
" text-align: center;
\n
"
" font-size: 160%;
\n
"
"}
\n
"
"H2 {
\n
"
" font-size: 120%;
\n
"
"}
\n
"
"H3 {
\n
"
" font-size: 100%;
\n
"
"}
\n
"
"CAPTION { font-weight: bold }
\n
"
"DIV.qindex {
\n
"
" width: 100%;
\n
"
" background-color: #e8eef2;
\n
"
" border: 1px solid #84b0c7;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" padding: 2px;
\n
"
" line-height: 140%;
\n
"
"}
\n
"
"DIV.nav {
\n
"
" width: 100%;
\n
"
" background-color: #e8eef2;
\n
"
" border: 1px solid #84b0c7;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" padding: 2px;
\n
"
" line-height: 140%;
\n
"
"}
\n
"
"DIV.navtab {
\n
"
" background-color: #e8eef2;
\n
"
" border: 1px solid #84b0c7;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" margin-right: 15px;
\n
"
" padding: 2px;
\n
"
"}
\n
"
"TD.navtab {
\n
"
" font-size: 70%;
\n
"
"}
\n
"
"A.qindex {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" color: #1A419D;
\n
"
"}
\n
"
"A.qindex:visited {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" color: #1A419D
\n
"
"}
\n
"
"A.qindex:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #ddddff;
\n
"
"}
\n
"
"A.qindexHL {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
" border: 1px double #9295C2;
\n
"
"}
\n
"
"A.qindexHL:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
"}
\n
"
"A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
\n
"
"A.el { text-decoration: none; font-weight: bold }
\n
"
"A.elRef { font-weight: bold }
\n
"
"A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
\n
"
"A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
\n
"
"A.codeRef:link { font-weight: normal; color: #0000FF}
\n
"
"A.codeRef:visited { font-weight: normal; color: #0000FF}
\n
"
"A:hover { text-decoration: none; background-color: #f2f2ff }
\n
"
"DL.el { margin-left: -1cm }
\n
"
".fragment {
\n
"
" font-family: Fixed, monospace;
\n
"
" font-size: 95%;
\n
"
"}
\n
"
"PRE.fragment {
\n
"
" border: 1px solid #CCCCCC;
\n
"
" background-color: #f5f5f5;
\n
"
" margin-top: 4px;
\n
"
" margin-bottom: 4px;
\n
"
" margin-left: 2px;
\n
"
" margin-right: 8px;
\n
"
" padding-left: 6px;
\n
"
" padding-right: 6px;
\n
"
" padding-top: 4px;
\n
"
" padding-bottom: 4px;
\n
"
"}
\n
"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
\n
"
"TD.md { background-color: #F4F4FB; font-weight: bold; }
\n
"
"TD.mdPrefix {
\n
"
" background-color: #F4F4FB;
\n
"
" color: #606060;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
"TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
\n
"
"TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
\n
"
"DIV.groupHeader {
\n
"
" margin-left: 16px;
\n
"
" margin-top: 12px;
\n
"
" margin-bottom: 6px;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
\n
"
"BODY {
\n
"
" background: white;
\n
"
" color: black;
\n
"
" margin-right: 20px;
\n
"
" margin-left: 20px;
\n
"
"}
\n
"
"TD.indexkey {
\n
"
" background-color: #e8eef2;
\n
"
" font-weight: bold;
\n
"
" padding-right : 10px;
\n
"
" padding-top : 2px;
\n
"
" padding-left : 10px;
\n
"
" padding-bottom : 2px;
\n
"
" margin-left : 0px;
\n
"
" margin-right : 0px;
\n
"
" margin-top : 2px;
\n
"
" margin-bottom : 2px;
\n
"
" border: 1px solid #CCCCCC;
\n
"
"}
\n
"
"TD.indexvalue {
\n
"
" background-color: #e8eef2;
\n
"
" font-style: italic;
\n
"
" padding-right : 10px;
\n
"
" padding-top : 2px;
\n
"
" padding-left : 10px;
\n
"
" padding-bottom : 2px;
\n
"
" margin-left : 0px;
\n
"
" margin-right : 0px;
\n
"
" margin-top : 2px;
\n
"
" margin-bottom : 2px;
\n
"
" border: 1px solid #CCCCCC;
\n
"
"}
\n
"
"TR.memlist {
\n
"
" background-color: #f0f0f0;
\n
"
"}
\n
"
"P.formulaDsp { text-align: center; }
\n
"
"IMG.formulaDsp { }
\n
"
"IMG.formulaInl { vertical-align: middle; }
\n
"
"SPAN.keyword { color: #008000 }
\n
"
"SPAN.keywordtype { color: #604020 }
\n
"
"SPAN.keywordflow { color: #e08000 }
\n
"
"SPAN.comment { color: #800000 }
\n
"
"SPAN.preprocessor { color: #806020 }
\n
"
"SPAN.stringliteral { color: #002080 }
\n
"
"SPAN.charliteral { color: #008080 }
\n
"
".mdTable {
\n
"
" border: 1px solid #868686;
\n
"
" background-color: #F4F4FB;
\n
"
"}
\n
"
".mdRow {
\n
"
" padding: 8px 10px;
\n
"
"}
\n
"
".mdescLeft {
\n
"
" padding: 0px 8px 4px 8px;
\n
"
" font-size: 80%;
\n
"
" font-style: italic;
\n
"
" background-color: #FAFAFA;
\n
"
" border-top: 1px none #E0E0E0;
\n
"
" border-right: 1px none #E0E0E0;
\n
"
" border-bottom: 1px none #E0E0E0;
\n
"
" border-left: 1px none #E0E0E0;
\n
"
" margin: 0px;
\n
"
"}
\n
"
".mdescRight {
\n
"
" padding: 0px 8px 4px 8px;
\n
"
" font-size: 80%;
\n
"
" font-style: italic;
\n
"
" background-color: #FAFAFA;
\n
"
" border-top: 1px none #E0E0E0;
\n
"
" border-right: 1px none #E0E0E0;
\n
"
" border-bottom: 1px none #E0E0E0;
\n
"
" border-left: 1px none #E0E0E0;
\n
"
" margin: 0px;
\n
"
"}
\n
"
".memItemLeft {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memItemRight {
\n
"
" padding: 1px 8px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memTemplItemLeft {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: none;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memTemplItemRight {
\n
"
" padding: 1px 8px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: none;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memTemplParams {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" color: #606060;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".search { color: #003399;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"FORM.search {
\n
"
" margin-bottom: 0px;
\n
"
" margin-top: 0px;
\n
"
"}
\n
"
"INPUT.search { font-size: 75%;
\n
"
" color: #000080;
\n
"
" font-weight: normal;
\n
"
" background-color: #e8eef2;
\n
"
"}
\n
"
"TD.tiny { font-size: 75%;
\n
"
"}
\n
"
"a {
\n
"
" color: #1A41A8;
\n
"
"}
\n
"
"a:visited {
\n
"
" color: #2A3798;
\n
"
"}
\n
"
".dirtab { padding: 4px;
\n
"
" border-collapse: collapse;
\n
"
" border: 1px solid #84b0c7;
\n
"
"}
\n
"
"TH.dirtab { background: #e8eef2;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"HR { height: 1px;
\n
"
" border: none;
\n
"
" border-top: 1px solid black;
\n
"
"}
\n
"
"
\n
"
src/filedef.cpp
View file @
3b98221d
...
...
@@ -234,7 +234,7 @@ void FileDef::writeDocumentation(OutputList &ol)
}
QCString
title
=
docname
+
versionTitle
;
QCString
pageTitle
=
theTranslator
->
trFileReference
(
docname
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
,
HLI_FileVisible
);
if
(
Config_getBool
(
"SHOW_DIRECTORIES"
)
&&
getDirDef
())
{
...
...
@@ -630,7 +630,7 @@ void FileDef::writeSource(OutputList &ol)
}
QCString
pageTitle
=
theTranslator
->
trSourceFile
(
title
);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
startFile
(
ol
,
getSourceFileBase
(),
0
,
pageTitle
);
startFile
(
ol
,
getSourceFileBase
(),
0
,
pageTitle
,
HLI_FileVisible
);
if
(
Config_getBool
(
"SHOW_DIRECTORIES"
)
&&
getDirDef
())
{
...
...
src/ftvhelp.cpp
View file @
3b98221d
...
...
@@ -663,30 +663,6 @@ void FTVHelp::generateTreeView()
t
<<
" <script type=
\"
text/javascript
\"
>
\n
"
;
t
<<
" <!-- // Hide script from old browsers
\n
"
;
t
<<
"
\n
"
;
//t << " function findChildNode(node, name) \n";
//t << " {\n";
//t << " var temp;\n";
//t << " if (node == null) \n";
//t << " {\n";
//t << " return null;\n";
//t << " } \n";
//t << " node = node.firstChild;\n";
//t << " while (node != null) \n";
//t << " {\n";
//t << " if (node.nodeName == name) \n";
//t << " {\n";
//t << " return node;\n";
//t << " }\n";
//t << " temp = findChildNode(node, name);\n";
//t << " if (temp != null) \n";
//t << " {\n";
//t << " return temp;\n";
//t << " }\n";
//t << " node = node.nextSibling;\n";
//t << " }\n";
//t << " return null;\n";
//t << " }\n";
//t << "\n";
/* User has clicked on a node (folder or +/-) in the tree */
t
<<
" function toggleFolder(id, imageNode)
\n
"
;
...
...
@@ -702,23 +678,12 @@ void FTVHelp::generateTreeView()
t
<<
" imageNode = imageNode.previousSibling;
\n
"
;
t
<<
" l = imageNode.src.length;
\n
"
;
t
<<
" }
\n
"
;
//t << " var vl = \"" FTV_ICON_FILE(vertline) "\";\n";
//t << " if (imageNode != null && imageNode.nodeName != \"IMG\") \n";
//t << " {\n";
//t << " imageNode = findChildNode(imageNode, \"IMG\");\n";
//t << " if (imageNode!=null) l = imageNode.src.length;\n";
//t << " }\n";
t
<<
" if (folder == null)
\n
"
;
t
<<
" {
\n
"
;
t
<<
" }
\n
"
;
/* Node controls a open section, we need to close it */
t
<<
" else if (folder.style.display ==
\"
block
\"
)
\n
"
;
t
<<
" {
\n
"
;
//t << " while (imageNode != null && \n";
//t << " imageNode.src.substring(l-vl.length,l) == vl)\n";
//t << " {\n";
//t << " imageNode = imageNode.nextSibling;\n";
//t << " }\n";
t
<<
" if (imageNode != null)
\n
"
;
t
<<
" {
\n
"
;
t
<<
" imageNode.nextSibling.src =
\"
"
FTV_ICON_FILE
(
folderclosed
)
"
\"
;
\n
"
;
...
...
@@ -735,11 +700,6 @@ void FTVHelp::generateTreeView()
t
<<
" }
\n
"
;
t
<<
" else
\n
"
;
/* section is closed, we need to open it */
t
<<
" {
\n
"
;
//t << " while (imageNode != null && \n";
//t << " imageNode.src.substring(l-vl.length,l) == vl)\n";
//t << " {\n";
//t << " imageNode = imageNode.nextSibling;\n";
//t << " }\n";
t
<<
" if (imageNode != null)
\n
"
;
t
<<
" {
\n
"
;
t
<<
" imageNode.nextSibling.src =
\"
"
FTV_ICON_FILE
(
folderopen
)
"
\"
;
\n
"
;
...
...
src/htmlgen.cpp
View file @
3b98221d
...
...
@@ -42,331 +42,453 @@
//#define DBG_HTML(x) x;
#define DBG_HTML(x)
static
const
char
*
defaultStyleSheet
=
"BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
\n
"
" font-family: Geneva, Arial, Helvetica, sans-serif;
\n
"
"}
\n
"
"BODY,TD {
\n
"
" font-size: 90%;
\n
"
"}
\n
"
"H1 {
\n
"
" text-align: center;
\n
"
" font-size: 160%;
\n
"
"}
\n
"
"H2 {
\n
"
" font-size: 120%;
\n
"
static
const
char
defaultStyleSheet
[]
=
#include "doxygen_css.h"
;
const
char
search_script
[]
=
#include "search_php.h"
;
static
QCString
g_header
;
static
QCString
g_footer
;
//------------------------- Pictures for the Tabs ------------------------
static
unsigned
char
tab_b_gif
[]
=
{
0x47
,
0x49
,
0x46
,
0x38
,
0x39
,
0x61
,
0x01
,
0x00
,
0x01
,
0x00
,
0x80
,
0x00
,
0x00
,
0x84
,
0xb0
,
0xc7
,
0x00
,
0x00
,
0x00
,
0x2c
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x01
,
0x00
,
0x00
,
0x02
,
0x02
,
0x44
,
0x01
,
0x00
,
0x3b
};
static
unsigned
int
tab_b_gif_len
=
35
;
static
unsigned
char
tab_l_gif
[]
=
{
0x47
,
0x49
,
0x46
,
0x38
,
0x39
,
0x61
,
0x09
,
0x00
,
0x2c
,
0x01
,
0xd5
,
0x00
,
0x00
,
0xf6
,
0xf7
,
0xf9
,
0xf1
,
0xf4
,
0xf7
,
0xf6
,
0xf8
,
0xfa
,
0xfc
,
0xfd
,
0xfe
,
0xfa
,
0xfb
,
0xfc
,
0xf9
,
0xfa
,
0xfb
,
0xf8
,
0xf9
,
0xfa
,
0xea
,
0xef
,
0xf3
,
0xef
,
0xf3
,
0xf6
,
0xc6
,
0xd5
,
0xdf
,
0xd2
,
0xde
,
0xe6
,
0xd8
,
0xe2
,
0xe9
,
0xde
,
0xe7
,
0xed
,
0xdd
,
0xe6
,
0xec
,
0xe5
,
0xec
,
0xf1
,
0xe8
,
0xee
,
0xf2
,
0xf4
,
0xf7
,
0xf9
,
0xf3
,
0xf6
,
0xf8
,
0xb3
,
0xc8
,
0xd5
,
0xc1
,
0xd2
,
0xdd
,
0xcb
,
0xd9
,
0xe2
,
0xcf
,
0xdc
,
0xe4
,
0xd6
,
0xe1
,
0xe8
,
0x96
,
0xb4
,
0xc5
,
0x9d
,
0xb9
,
0xc9
,
0xaf
,
0xc2
,
0xcd
,
0xbb
,
0xce
,
0xd9
,
0xc3
,
0xd4
,
0xde
,
0xc2
,
0xd3
,
0xdd
,
0xc8
,
0xd7
,
0xe0
,
0xcc
,
0xda
,
0xe2
,
0xd5
,
0xe1
,
0xe8
,
0xd9
,
0xe4
,
0xea
,
0xd7
,
0xe2
,
0xe8
,
0xe5
,
0xec
,
0xf0
,
0xeb
,
0xf0
,
0xf3
,
0x84
,
0xb0
,
0xc7
,
0xd1
,
0xde
,
0xe5
,
0xdc
,
0xe6
,
0xeb
,
0xe3
,
0xeb
,
0xef
,
0xeb
,
0xf1
,
0xf4
,
0xee
,
0xf3
,
0xf5
,
0xf7
,
0xfa
,
0xfb
,
0xfb
,
0xfc
,
0xfc
,
0xff
,
0xff
,
0xff
,
0xfe
,
0xfe
,
0xfe
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x2c
,
0x00
,
0x00
,
0x00
,
0x00
,
0x09
,
0x00
,
0x2c
,
0x01
,
0x00
,
0x06
,
0xff
,
0x40
,
0x96
,
0x50
,
0xb1
,
0xc9
,
0x60
,
0x48
,
0x24
,
0x21
,
0x25
,
0x43
,
0x71
,
0x00
,
0x56
,
0x03
,
0x16
,
0x65
,
0x32
,
0x1a
,
0x58
,
0xad
,
0x8a
,
0xcc
,
0x08
,
0x4a
,
0x28
,
0x08
,
0x04
,
0x93
,
0xc4
,
0xa0
,
0x2b
,
0x80
,
0x98
,
0x33
,
0x0d
,
0x32
,
0x24
,
0xc0
,
0xc6
,
0x20
,
0xbc
,
0x6b
,
0x76
,
0x8a
,
0xe4
,
0x2d
,
0xcb
,
0xe7
,
0xf5
,
0x75
,
0x2a
,
0x85
,
0x22
,
0x7d
,
0xe3
,
0x7c
,
0x7d
,
0x7f
,
0x01
,
0x7c
,
0x07
,
0x07
,
0x7e
,
0x71
,
0x28
,
0x0f
,
0x22
,
0x0c
,
0x24
,
0x66
,
0x84
,
0x07
,
0x0c
,
0x0c
,
0x27
,
0x8e
,
0x6c
,
0x28
,
0x8c
,
0x26
,
0x26
,
0x24
,
0x72
,
0x91
,
0x99
,
0x0b
,
0x9b
,
0x90
,
0x0c
,
0x26
,
0x0b
,
0x21
,
0xa0
,
0x29
,
0x0f
,
0xa2
,
0xa4
,
0x9b
,
0x7b
,
0xa8
,
0xa3
,
0xa5
,
0x72
,
0xad
,
0xaa
,
0xb0
,
0xa9
,
0xaf
,
0x84
,
0xb1
,
0xaf
,
0xac
,
0xb4
,
0xa6
,
0xb7
,
0xbb
,
0xba
,
0xb3
,
0xae
,
0xab
,
0xa7
,
0xbe
,
0xb6
,
0xc3
,
0xc2
,
0xc0
,
0xbf
,
0xb2
,
0xb9
,
0xc7
,
0xc4
,
0xcb
,
0xc6
,
0xb2
,
0xcc
,
0xc9
,
0xce
,
0xb5
,
0xd2
,
0xbd
,
0xcd
,
0xbc
,
0x84
,
0xd4
,
0xc8
,
0xd3
,
0xd7
,
0xd0
,
0xb8
,
0xd9
,
0xdd
,
0xd5
,
0xcf
,
0xd9
,
0xca
,
0xe2
,
0xdc
,
0xdf
,
0xe3
,
0xe7
,
0xe6
,
0xea
,
0xbe
,
0xe4
,
0xdb
,
0xc5
,
0xeb
,
0xc7
,
0xed
,
0xe1
,
0xee
,
0xd6
,
0xec
,
0xe9
,
0xef
,
0xf8
,
0xf1
,
0xf7
,
0xf5
,
0xfc
,
0xd1
,
0xf0
,
0xe5
,
0xf9
,
0xfc
,
0x05
,
0xa4
,
0x07
,
0x50
,
0xdf
,
0x3f
,
0x82
,
0x08
,
0x83
,
0x1d
,
0x9c
,
0xc7
,
0x10
,
0xdb
,
0x42
,
0x6d
,
0x0d
,
0xe5
,
0x41
,
0x9c
,
0x08
,
0xce
,
0xe1
,
0xc0
,
0x86
,
0x15
,
0x25
,
0x56
,
0xdc
,
0x88
,
0xee
,
0x21
,
0xc7
,
0x6b
,
0x1a
,
0xf7
,
0x15
,
0x14
,
0xd8
,
0x2f
,
0xe1
,
0xc4
,
0x90
,
0x1e
,
0x3b
,
0x5e
,
0xa4
,
0xa8
,
0xb2
,
0x24
,
0xc6
,
0x96
,
0x23
,
0x4d
,
0x66
,
0x14
,
0x29
,
0x13
,
0x66
,
0xcd
,
0x87
,
0x28
,
0x57
,
0xce
,
0x4c
,
0x89
,
0x93
,
0xe6
,
0x4b
,
0xe7
,
0x90
,
0xd2
,
0x84
,
0xb0
,
0x20
,
0x92
,
0x01
,
0x49
,
0x12
,
0x29
,
0x4c
,
0x1c
,
0x18
,
0x10
,
0x3a
,
0x65
,
0x44
,
0x0b
,
0xa1
,
0x43
,
0xb5
,
0xb4
,
0x78
,
0x2a
,
0x34
,
0x0c
,
0x55
,
0xa8
,
0x68
,
0xa0
,
0x0a
,
0x25
,
0x11
,
0x41
,
0xab
,
0x90
,
0xa3
,
0x5e
,
0xc1
,
0x4e
,
0x1d
,
0x4b
,
0x62
,
0xac
,
0xd9
,
0x16
,
0x65
,
0xa7
,
0x0e
,
0x58
,
0xb1
,
0x82
,
0x00
,
0x81
,
0xb4
,
0x6b
,
0xbb
,
0x78
,
0x21
,
0xc1
,
0xd6
,
0xed
,
0x97
,
0x32
,
0x74
,
0xdd
,
0xd6
,
0x09
,
0x00
,
0x21
,
0xaf
,
0x9a
,
0x35
,
0x74
,
0xdb
,
0xe6
,
0xe9
,
0x1b
,
0x97
,
0xc0
,
0x5d
,
0x01
,
0x24
,
0xac
,
0xb4
,
0x25
,
0x83
,
0x58
,
0xed
,
0xe2
,
0x2e
,
0x69
,
0x5b
,
0xac
,
0x5d
,
0x1c
,
0x59
,
0xad
,
0x95
,
0xca
,
0x66
,
0x8f
,
0x9e
,
0x45
,
0xeb
,
0xf5
,
0x6b
,
0x67
,
0x16
,
0x60
,
0xb5
,
0x86
,
0x86
,
0x3a
,
0x7a
,
0xeb
,
0xe7
,
0xd2
,
0x9e
,
0x3b
,
0xa3
,
0x06
,
0x7d
,
0xba
,
0xb5
,
0x6a
,
0xd7
,
0x61
,
0x61
,
0x8b
,
0x96
,
0x4d
,
0x9a
,
0xb6
,
0xe9
,
0xd7
,
0xb8
,
0x63
,
0xe7
,
0x9e
,
0xbd
,
0xbb
,
0x76
,
0xef
,
0xdb
,
0xba
,
0x83
,
0xf3
,
0x16
,
0xee
,
0x9b
,
0x38
,
0xf0
,
0xe1
,
0xc8
,
0x8b
,
0x27
,
0x3f
,
0xae
,
0xbc
,
0x39
,
0xf3
,
0xe7
,
0xa9
,
0x8d
,
0x47
,
0x5f
,
0x3e
,
0xdd
,
0x79
,
0x75
,
0xe8
,
0xac
,
0x7f
,
0x5f
,
0xdf
,
0x9e
,
0x5d
,
0x7a
,
0x77
,
0xea
,
0xdf
,
0xad
,
0x87
,
0xc7
,
0xbe
,
0xba
,
0xbc
,
0x6d
,
0xee
,
0xe6
,
0xb5
,
0x8f
,
0x47
,
0x7f
,
0x7e
,
0xbd
,
0xfb
,
0xf4
,
0xde
,
0xe1
,
0x83
,
0x97
,
0x2f
,
0x9e
,
0x3e
,
0xf9
,
0xf6
,
0xf6
,
0xd9
,
0xab
,
0xcf
,
0xff
,
0x1e
,
0xbf
,
0xff
,
0xfd
,
0xff
,
0xc5
,
0x17
,
0xe0
,
0x7c
,
0x03
,
0xd6
,
0x57
,
0xe0
,
0x7d
,
0x00
,
0x76
,
0x16
,
0x04
,
0x00
,
0x3b
};
static
unsigned
int
tab_l_gif_len
=
706
;
static
unsigned
char
tab_r_gif
[]
=
{
0x47
,
0x49
,
0x46
,
0x38
,
0x39
,
0x61
,
0x90
,
0x01
,
0x2c
,
0x01
,
0xd5
,
0x00
,
0x00
,
0xf6
,
0xf7
,
0xf9
,
0xf1
,
0xf4
,
0xf7
,
0xf6
,
0xf8
,
0xfa
,
0xfc
,
0xfd
,
0xfe
,
0xfa
,
0xfb
,
0xfc
,
0xf9
,
0xfa
,
0xfb
,
0xf8
,
0xf9
,
0xfa
,
0xea
,
0xef
,
0xf3
,
0xef
,
0xf3
,
0xf6
,
0xc6
,
0xd5
,
0xdf
,
0xd2
,
0xde
,
0xe6
,
0xd8
,
0xe2
,
0xe9
,
0xde
,
0xe7
,
0xed
,
0xdd
,
0xe6
,
0xec
,
0xe5
,
0xec
,
0xf1
,
0xe8
,
0xee
,
0xf2
,
0xf4
,
0xf7
,
0xf9
,
0xf3
,
0xf6
,
0xf8
,
0xb3
,
0xc8
,
0xd5
,
0xc1
,
0xd2
,
0xdd
,
0xcb
,
0xd9
,
0xe2
,
0xcf
,
0xdc
,
0xe4
,
0xd6
,
0xe1
,
0xe8
,
0x96
,
0xb4
,
0xc5
,
0x9d
,
0xb9
,
0xc9
,
0xaf
,
0xc2
,
0xcd
,
0xbb
,
0xce
,
0xd9
,
0xc3
,
0xd4
,
0xde
,
0xc2
,
0xd3
,
0xdd
,
0xc8
,
0xd7
,
0xe0
,
0xcc
,
0xda
,
0xe2
,
0xd5
,
0xe1
,
0xe8
,
0xd9
,
0xe4
,
0xea
,
0xd7
,
0xe2
,
0xe8
,
0xe5
,
0xec
,
0xf0
,
0xeb
,
0xf0
,
0xf3
,
0x84
,
0xb0
,
0xc7
,
0xd1
,
0xde
,
0xe5
,
0xdc
,
0xe6
,
0xeb
,
0xe3
,
0xeb
,
0xef
,
0xeb
,
0xf1
,
0xf4
,
0xee
,
0xf3
,
0xf5
,
0xf7
,
0xfa
,
0xfb
,
0xfb
,
0xfc
,
0xfc
,
0xff
,
0xff
,
0xff
,
0xfe
,
0xfe
,
0xfe
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x2c
,
0x00
,
0x00
,
0x00
,
0x00
,
0x90
,
0x01
,
0x2c
,
0x01
,
0x00
,
0x06
,
0xff
,
0x40
,
0x92
,
0x70
,
0x48
,
0x2c
,
0x1a
,
0x8f
,
0xc8
,
0xa4
,
0x72
,
0xc9
,
0x6c
,
0x3a
,
0x9f
,
0xd0
,
0xa8
,
0x74
,
0x4a
,
0xad
,
0x5a
,
0xaf
,
0xd8
,
0xac
,
0x76
,
0x0b
,
0x95
,
0x68
,
0x3c
,
0xac
,
0x70
,
0x6b
,
0x4c
,
0x2e
,
0x9b
,
0xcf
,
0xe8
,
0xb4
,
0x7a
,
0xcd
,
0x6e
,
0xbb
,
0xdf
,
0xf0
,
0xb8
,
0x7c
,
0x4e
,
0xaf
,
0xdb
,
0xef
,
0xf8
,
0xbc
,
0x7e
,
0xcf
,
0x77
,
0x0f
,
0x56
,
0x10
,
0x16
,
0x1a
,
0x17
,
0x1c
,
0x61
,
0x2b
,
0x87
,
0x88
,
0x89
,
0x8a
,
0x8b
,
0x8c
,
0x8d
,
0x8e
,
0x8f
,
0x90
,
0x91
,
0x92
,
0x93
,
0x94
,
0x95
,
0x96
,
0x97
,
0x98
,
0x99
,
0x9a
,
0x9b
,
0x9c
,
0x9d
,
0x9e
,
0x9f
,
0xa0
,
0x93
,
0x2a
,
0x10
,
0x01
,
0x29
,
0x15
,
0x5e
,
0x2c
,
0x2a
,
0xaa
,
0xab
,
0xac
,
0xad
,
0xae
,
0xaf
,
0xb0
,
0xb1
,
0xb2
,
0xb3
,
0xb4
,
0xb5
,
0xb6
,
0xb7
,
0xb8
,
0xb9
,
0xba
,
0xbb
,
0xbc
,
0xbd
,
0xbe
,
0xbf
,
0xc0
,
0xc1
,
0xc2
,
0xc3
,
0xb6
,
0x10
,
0x10
,
0x29
,
0x0f
,
0x27
,
0x1d
,
0x17
,
0x15
,
0xc6
,
0xce
,
0xcf
,
0xd0
,
0xd1
,
0xd2
,
0xd3
,
0xd4
,
0xd5
,
0xd6
,
0xd7
,
0xd8
,
0xd9
,
0xda
,
0xdb
,
0xdc
,
0xdd
,
0xde
,
0xdf
,
0xe0
,
0xe1
,
0xe2
,
0xe3
,
0xe4
,
0xe5
,
0xe6
,
0xda
,
0xa5
,
0x28
,
0x22
,
0x0c
,
0x0c
,
0x12
,
0x12
,
0x01
,
0xf0
,
0xf1
,
0xf2
,
0xf3
,
0xf4
,
0xf5
,
0xf6
,
0xf7
,
0xf8
,
0xf9
,
0xfa
,
0xfb
,
0xfc
,
0xfd
,
0xfe
,
0xff
,
0x00
,
0x03
,
0x0a
,
0x1c
,
0x48
,
0xb0
,
0xa0
,
0xc1
,
0x83
,
0x08
,
0x13
,
0xf2
,
0x4b
,
0x81
,
0x22
,
0x19
,
0x03
,
0x13
,
0x83
,
0x52
,
0x48
,
0x9c
,
0x48
,
0xb1
,
0xa2
,
0xc5
,
0x8b
,
0x18
,
0x33
,
0x6a
,
0xdc
,
0xc8
,
0xb1
,
0xa3
,
0xc7
,
0x8f
,
0x20
,
0x43
,
0x8a
,
0x1c
,
0x49
,
0xb2
,
0xa4
,
0xc9
,
0x93
,
0x28
,
0x53
,
0xaa
,
0x5c
,
0xe9
,
0x11
,
0xc5
,
0x81
,
0x75
,
0x26
,
0x40
,
0x80
,
0x20
,
0xc1
,
0xb2
,
0xa6
,
0xcd
,
0x9b
,
0x38
,
0x73
,
0xea
,
0xdc
,
0xc9
,
0xb3
,
0xa7
,
0x4f
,
0xff
,
0x96
,
0x28
,
0x1a
,
0xc2
,
0x04
,
0xb1
,
0x80
,
0x44
,
0xd0
,
0xa3
,
0x48
,
0x93
,
0x2a
,
0x5d
,
0xca
,
0xb4
,
0xa9
,
0xd3
,
0xa7
,
0x50
,
0xa3
,
0x4a
,
0x9d
,
0x4a
,
0xb5
,
0xaa
,
0xd5
,
0xab
,
0x58
,
0xb3
,
0x6a
,
0xdd
,
0xca
,
0xb5
,
0xab
,
0xd7
,
0xaf
,
0x53
,
0x0f
,
0x38
,
0x34
,
0xb1
,
0x20
,
0x04
,
0x89
,
0x03
,
0x68
,
0xd3
,
0xaa
,
0x5d
,
0xcb
,
0xb6
,
0xad
,
0xdb
,
0xb7
,
0x70
,
0xe3
,
0xca
,
0x9d
,
0x4b
,
0xb7
,
0xae
,
0xdd
,
0xbb
,
0x78
,
0xf3
,
0xea
,
0xdd
,
0xcb
,
0xb7
,
0xaf
,
0xdf
,
0xbf
,
0x80
,
0x03
,
0xd3
,
0x7d
,
0x20
,
0xe2
,
0x44
,
0xcc
,
0x10
,
0x66
,
0x1f
,
0x28
,
0x5e
,
0xcc
,
0xb8
,
0xb1
,
0xe3
,
0xc7
,
0x90
,
0x23
,
0x4b
,
0x9e
,
0x4c
,
0xb9
,
0xb2
,
0xe5
,
0xcb
,
0x98
,
0x33
,
0x6b
,
0xde
,
0xcc
,
0xb9
,
0xb3
,
0xe7
,
0xcf
,
0xa0
,
0x43
,
0x8b
,
0x1e
,
0x6d
,
0xb9
,
0xf0
,
0x43
,
0xc4
,
0x1f
,
0x48
,
0x9c
,
0x58
,
0xcd
,
0xba
,
0xb5
,
0xeb
,
0xd7
,
0xb0
,
0x63
,
0xcb
,
0x9e
,
0x4d
,
0xbb
,
0xb6
,
0xed
,
0xdb
,
0xb8
,
0x73
,
0xeb
,
0xde
,
0xcd
,
0xbb
,
0xb7
,
0xef
,
0xdf
,
0xc0
,
0x83
,
0x0b
,
0x1f
,
0x4e
,
0x1c
,
0xf7
,
0xc3
,
0x05
,
0x1f
,
0x4a
,
0x94
,
0x20
,
0xc1
,
0xae
,
0xb9
,
0xf3
,
0xe7
,
0xd0
,
0xa3
,
0x4b
,
0x9f
,
0x4e
,
0xbd
,
0xba
,
0xf5
,
0xeb
,
0xd8
,
0xb3
,
0x6b
,
0xdf
,
0xce
,
0xbd
,
0xbb
,
0xf7
,
0xef
,
0xe0
,
0xc3
,
0x8b
,
0x1f
,
0x4f
,
0xbe
,
0x3c
,
0x76
,
0x13
,
0x31
,
0x91
,
0x2b
,
0x5f
,
0x2e
,
0xb3
,
0xbd
,
0xfb
,
0xf7
,
0xf0
,
0xe3
,
0xcb
,
0x9f
,
0x4f
,
0xbf
,
0xbe
,
0xfd
,
0xfb
,
0xf8
,
0xf3
,
0xeb
,
0xdf
,
0xcf
,
0xbf
,
0xbf
,
0xff
,
0xff
,
0x00
,
0x06
,
0x28
,
0xe0
,
0x80
,
0x04
,
0x16
,
0x98
,
0x5f
,
0x59
,
0xc9
,
0x95
,
0x40
,
0xc1
,
0x72
,
0x88
,
0x35
,
0xe8
,
0xe0
,
0x83
,
0x10
,
0x46
,
0x28
,
0xe1
,
0x84
,
0x14
,
0x56
,
0x68
,
0xe1
,
0x85
,
0x18
,
0x66
,
0xa8
,
0xe1
,
0x86
,
0x1c
,
0x76
,
0xe8
,
0xff
,
0xe1
,
0x87
,
0x20
,
0x86
,
0x28
,
0xe2
,
0x88
,
0x24
,
0x96
,
0xa8
,
0x61
,
0x82
,
0x14
,
0xa4
,
0x48
,
0x82
,
0x89
,
0x2c
,
0xb6
,
0xe8
,
0xe2
,
0x8b
,
0x30
,
0xc6
,
0x28
,
0xe3
,
0x8c
,
0x34
,
0xd6
,
0x68
,
0xe2
,
0x07
,
0x09
,
0x2a
,
0xa8
,
0x22
,
0x8e
,
0x3c
,
0xf6
,
0xe8
,
0xe3
,
0x8f
,
0x40
,
0x06
,
0x29
,
0xe4
,
0x90
,
0x44
,
0x16
,
0x69
,
0xe4
,
0x91
,
0x48
,
0x26
,
0xa9
,
0xe4
,
0x92
,
0x4c
,
0x36
,
0xe9
,
0xe4
,
0x93
,
0x50
,
0x46
,
0x29
,
0xe5
,
0x94
,
0x54
,
0x26
,
0xa9
,
0x5c
,
0x8a
,
0x3b
,
0x56
,
0xa9
,
0xe5
,
0x96
,
0x5c
,
0x76
,
0xe9
,
0xe5
,
0x97
,
0x60
,
0x86
,
0x29
,
0xe6
,
0x98
,
0x5a
,
0x5e
,
0x89
,
0x25
,
0x09
,
0x64
,
0xa6
,
0xa9
,
0xe6
,
0x9a
,
0x6c
,
0xb6
,
0xe9
,
0xe6
,
0x9b
,
0x70
,
0xfe
,
0x68
,
0x66
,
0x96
,
0x71
,
0xd6
,
0x69
,
0xe7
,
0x9d
,
0x78
,
0xe6
,
0xa9
,
0xe7
,
0x97
,
0x73
,
0x52
,
0x80
,
0xe6
,
0x9e
,
0x80
,
0x06
,
0x2a
,
0xe8
,
0xa0
,
0x84
,
0xc2
,
0xd9
,
0xe7
,
0x9f
,
0x85
,
0x26
,
0xaa
,
0xe8
,
0xa2
,
0x8c
,
0x36
,
0x3a
,
0xe4
,
0xa1
,
0x8e
,
0x46
,
0x2a
,
0xe9
,
0xa4
,
0x94
,
0xc6
,
0x09
,
0x69
,
0xa5
,
0x98
,
0x66
,
0xaa
,
0xe9
,
0xa6
,
0x4f
,
0x5e
,
0xca
,
0xe9
,
0xa7
,
0xa0
,
0x86
,
0xca
,
0xa9
,
0xa7
,
0xa2
,
0x96
,
0x6a
,
0xea
,
0xa9
,
0x84
,
0x92
,
0x8a
,
0xea
,
0xaa
,
0xac
,
0xb6
,
0xca
,
0xa6
,
0xaa
,
0xae
,
0xc6
,
0x2a
,
0xeb
,
0xac
,
0x53
,
0xc2
,
0x4a
,
0xeb
,
0xad
,
0xb8
,
0xe6
,
0x2a
,
0xa4
,
0xad
,
0xba
,
0xf6
,
0xea
,
0xeb
,
0xac
,
0xbc
,
0xfe
,
0x2a
,
0xec
,
0xb0
,
0xa5
,
0x06
,
0x4b
,
0xec
,
0xb1
,
0xc8
,
0x56
,
0x6a
,
0x6c
,
0xb2
,
0xcc
,
0x36
,
0x9b
,
0xe8
,
0xb2
,
0xce
,
0x46
,
0x2b
,
0x2d
,
0x9e
,
0xd0
,
0x4e
,
0x6b
,
0xed
,
0xb5
,
0x6b
,
0x56
,
0x8b
,
0xed
,
0xb6
,
0xdc
,
0x76
,
0xa9
,
0x6d
,
0xb7
,
0xe0
,
0x86
,
0xdb
,
0xa9
,
0x8e
,
0x74
,
0x8a
,
0x6b
,
0xee
,
0xb9
,
0x51
,
0x7e
,
0x8b
,
0xff
,
0xee
,
0xba
,
0xec
,
0xf2
,
0xa8
,
0x6e
,
0xbb
,
0xf0
,
0x9a
,
0xfb
,
0x6e
,
0xbc
,
0xf4
,
0x72
,
0x3b
,
0x6f
,
0xbd
,
0xf8
,
0x4e
,
0x7b
,
0x6f
,
0xbe
,
0xfc
,
0x32
,
0xbb
,
0x6f
,
0xbf
,
0x00
,
0x0f
,
0xfb
,
0x6f
,
0xc0
,
0x04
,
0xeb
,
0x3a
,
0x70
,
0xc1
,
0x08
,
0x03
,
0x4b
,
0xae
,
0x9f
,
0x09
,
0x37
,
0x1c
,
0xed
,
0xc1
,
0x0e
,
0x47
,
0x6c
,
0x2a
,
0xc4
,
0x12
,
0x57
,
0xfc
,
0x29
,
0xc5
,
0x16
,
0x67
,
0x8c
,
0x29
,
0xc6
,
0x1a
,
0x77
,
0x1c
,
0x29
,
0xc7
,
0x1e
,
0x87
,
0xac
,
0x28
,
0xc8
,
0x22
,
0x97
,
0x2c
,
0x28
,
0xc9
,
0x26
,
0xa7
,
0x9c
,
0x27
,
0xca
,
0x2a
,
0xb7
,
0x6c
,
0xe9
,
0xc2
,
0x88
,
0xba
,
0x2c
,
0x33
,
0xa5
,
0x2c
,
0xcf
,
0x6c
,
0x33
,
0x99
,
0x35
,
0xdf
,
0xac
,
0x33
,
0x9f
,
0x30
,
0xef
,
0xec
,
0xf3
,
0xb3
,
0x3d
,
0xff
,
0x2c
,
0x74
,
0xa0
,
0x39
,
0x0f
,
0x6d
,
0xb4
,
0x93
,
0x45
,
0x1f
,
0xad
,
0xb4
,
0x95
,
0x41
,
0x2f
,
0xed
,
0x74
,
0x9b
,
0x49
,
0x3f
,
0x2d
,
0x35
,
0x90
,
0x51
,
0x4f
,
0x6d
,
0x35
,
0x8e
,
0x55
,
0x5f
,
0x3d
,
0x75
,
0xd6
,
0x5a
,
0x3f
,
0xcd
,
0x75
,
0xd7
,
0x4b
,
0x7f
,
0x0d
,
0xf6
,
0xd1
,
0x62
,
0x8f
,
0x3d
,
0x74
,
0xd9
,
0x66
,
0xff
,
0x8c
,
0x76
,
0xda
,
0x3b
,
0xaf
,
0xcd
,
0xf6
,
0xcd
,
0x6e
,
0xbf
,
0x3d
,
0x73
,
0xdc
,
0x72
,
0xbb
,
0x4c
,
0x77
,
0xdd
,
0x2a
,
0xdf
,
0x8d
,
0xb7
,
0xc9
,
0x7a
,
0xef
,
0x2d
,
0x72
,
0xdf
,
0x7e
,
0x7b
,
0x0c
,
0x78
,
0xe0
,
0x1a
,
0x0f
,
0x4e
,
0xb8
,
0xc5
,
0x86
,
0x1f
,
0x2e
,
0x71
,
0xe2
,
0x8a
,
0x3b
,
0xcc
,
0x78
,
0xe3
,
0x09
,
0x3f
,
0x0e
,
0x79
,
0xc1
,
0x92
,
0x4f
,
0x1e
,
0x70
,
0xe5
,
0x96
,
0xf7
,
0x8b
,
0x79
,
0xe6
,
0xf9
,
0x6e
,
0xce
,
0x79
,
0xbd
,
0x9e
,
0x7f
,
0x1e
,
0x6f
,
0xe8
,
0xa2
,
0xb7
,
0x4b
,
0x7a
,
0xe9
,
0xeb
,
0x9e
,
0x8e
,
0xfa
,
0xb9
,
0xaa
,
0xaf
,
0x2e
,
0x6e
,
0xeb
,
0xae
,
0x83
,
0x0b
,
0x7b
,
0xec
,
0xf6
,
0x36
,
0x4d
,
0xff
,
0xbb
,
0xd6
,
0xb3
,
0xdf
,
0x7e
,
0x6d
,
0xee
,
0xba
,
0xeb
,
0x6b
,
0x7b
,
0xef
,
0x52
,
0xf3
,
0x0e
,
0xbc
,
0xb3
,
0xc2
,
0x0f
,
0xef
,
0xef
,
0xef
,
0xc6
,
0x2b
,
0x5d
,
0x7c
,
0xf2
,
0xc7
,
0x2e
,
0xcf
,
0xbc
,
0xc0
,
0xc8
,
0x3f
,
0x2f
,
0xb4
,
0xf3
,
0xd2
,
0xfb
,
0x4a
,
0x7d
,
0xf5
,
0x06
,
0x47
,
0x8f
,
0xbd
,
0xce
,
0xd7
,
0x6f
,
0x7f
,
0x6b
,
0xf7
,
0xde
,
0x2b
,
0x8c
,
0x25
,
0xc3
,
0xe1
,
0xab
,
0xad
,
0x7d
,
0xf9
,
0x76
,
0x9f
,
0x8f
,
0x7e
,
0xde
,
0xea
,
0xaf
,
0xcf
,
0x77
,
0xfb
,
0xee
,
0xff
,
0x0d
,
0x7f
,
0xfc
,
0x82
,
0xcf
,
0x4f
,
0x7f
,
0xe1
,
0xf6
,
0xdf
,
0x8f
,
0x78
,
0xfe
,
0xfa
,
0x2f
,
0xce
,
0x7f
,
0xff
,
0x8e
,
0xfb
,
0x1f
,
0x00
,
0x23
,
0x27
,
0xc0
,
0x01
,
0x52
,
0xae
,
0x80
,
0x06
,
0xbc
,
0x1c
,
0x02
,
0x13
,
0xa8
,
0xb9
,
0x05
,
0x32
,
0xb0
,
0x73
,
0x0e
,
0x7c
,
0x20
,
0xe8
,
0x22
,
0x28
,
0xc1
,
0xd1
,
0x51
,
0xb0
,
0x82
,
0xa6
,
0xbb
,
0x20
,
0x06
,
0x53
,
0xa7
,
0xc1
,
0x0d
,
0xb2
,
0xae
,
0x83
,
0x1e
,
0x7c
,
0x1d
,
0x08
,
0x43
,
0x28
,
0xbb
,
0x11
,
0x92
,
0xb0
,
0x76
,
0xe3
,
0x8b
,
0xd9
,
0x09
,
0x09
,
0x98
,
0xc2
,
0x15
,
0x46
,
0x0c
,
0x7c
,
0x2e
,
0x64
,
0x14
,
0x0c
,
0x63
,
0x38
,
0x32
,
0x13
,
0xd2
,
0x50
,
0x5a
,
0x33
,
0xbc
,
0x61
,
0xaa
,
0x6c
,
0xa8
,
0xc3
,
0x66
,
0xe5
,
0xb0
,
0x87
,
0x44
,
0xe3
,
0x21
,
0x10
,
0x91
,
0xf5
,
0xc3
,
0x21
,
0xea
,
0xa9
,
0x88
,
0x46
,
0xa4
,
0x96
,
0x10
,
0x93
,
0x28
,
0x2c
,
0x24
,
0x32
,
0xb1
,
0x4e
,
0x4e
,
0x7c
,
0xa2
,
0xa1
,
0x96
,
0x28
,
0xc5
,
0xec
,
0xb5
,
0xb0
,
0x8a
,
0x16
,
0x4c
,
0x21
,
0x17
,
0xb6
,
0xc8
,
0xc5
,
0x2e
,
0x7a
,
0xf1
,
0x8b
,
0x60
,
0x0c
,
0xa3
,
0x18
,
0xc7
,
0x48
,
0xc6
,
0x2e
,
0x7a
,
0x01
,
0x0c
,
0x61
,
0x48
,
0xa3
,
0x1a
,
0xd7
,
0xc8
,
0xc6
,
0x36
,
0xba
,
0xf1
,
0x8d
,
0x70
,
0x8c
,
0xa3
,
0x1c
,
0xe7
,
0x48
,
0xc7
,
0x3a
,
0xda
,
0xff
,
0xf1
,
0x8e
,
0x78
,
0xcc
,
0xa3
,
0x1e
,
0xf7
,
0xc8
,
0xc7
,
0x3e
,
0xfa
,
0xf1
,
0x8f
,
0x80
,
0x0c
,
0x64
,
0x1d
,
0xc7
,
0x40
,
0x80
,
0x00
,
0x08
,
0x82
,
0x10
,
0x82
,
0x4c
,
0xa4
,
0x22
,
0x17
,
0xc9
,
0xc8
,
0x46
,
0x3a
,
0xf2
,
0x91
,
0x90
,
0x8c
,
0xa4
,
0x24
,
0x13
,
0x39
,
0x86
,
0x02
,
0x08
,
0x20
,
0x00
,
0x28
,
0x38
,
0x85
,
0x06
,
0x26
,
0xc9
,
0xc9
,
0x4e
,
0x7a
,
0xf2
,
0x93
,
0xa0
,
0x0c
,
0xa5
,
0x28
,
0x47
,
0xa9
,
0x46
,
0x42
,
0x5e
,
0xb2
,
0x21
,
0xcb
,
0xa8
,
0x00
,
0x29
,
0x57
,
0xc9
,
0xca
,
0x56
,
0xba
,
0xf2
,
0x95
,
0xb0
,
0x6c
,
0xa4
,
0x29
,
0x31
,
0x99
,
0x0c
,
0x77
,
0xc4
,
0xf2
,
0x96
,
0xb8
,
0xcc
,
0xa5
,
0x2e
,
0x77
,
0x19
,
0xca
,
0x59
,
0xba
,
0xe4
,
0x01
,
0x83
,
0xe0
,
0xa5
,
0x30
,
0x87
,
0x49
,
0xcc
,
0x62
,
0x1a
,
0xf3
,
0x8d
,
0xbe
,
0x7c
,
0xc9
,
0x03
,
0x48
,
0x70
,
0xcc
,
0x66
,
0x3a
,
0xf3
,
0x99
,
0xd0
,
0xec
,
0x65
,
0x0b
,
0x08
,
0x70
,
0x4a
,
0xb1
,
0x88
,
0x80
,
0x04
,
0x7d
,
0xc8
,
0xa6
,
0x36
,
0xb7
,
0xc9
,
0xcd
,
0x6e
,
0x7a
,
0xf3
,
0x9b
,
0xe0
,
0x0c
,
0xa7
,
0x38
,
0xfb
,
0x30
,
0x00
,
0x02
,
0x90
,
0xc2
,
0x25
,
0x22
,
0xb8
,
0xe6
,
0x38
,
0xd7
,
0xc9
,
0xce
,
0x76
,
0xba
,
0xf3
,
0x9d
,
0xf0
,
0x8c
,
0xa7
,
0x3c
,
0xc9
,
0x50
,
0xce
,
0x51
,
0x60
,
0xf2
,
0x25
,
0xd7
,
0x24
,
0x80
,
0x3e
,
0xf7
,
0xc9
,
0xcf
,
0x7e
,
0xfa
,
0xf3
,
0x9f
,
0x00
,
0x0d
,
0xa8
,
0x40
,
0x07
,
0x4a
,
0xd0
,
0x82
,
0x1a
,
0xf4
,
0xa0
,
0x08
,
0x4d
,
0xa8
,
0x42
,
0x17
,
0xca
,
0xd0
,
0x86
,
0x3a
,
0xf4
,
0xa1
,
0x10
,
0x8d
,
0xa8
,
0x44
,
0x27
,
0x5a
,
0x50
,
0x4b
,
0x46
,
0x20
,
0x05
,
0xd6
,
0xbc
,
0x26
,
0x31
,
0x36
,
0xca
,
0xd1
,
0x8e
,
0x7a
,
0xf4
,
0xa3
,
0x20
,
0x0d
,
0xa9
,
0x48
,
0x47
,
0x4a
,
0x52
,
0x62
,
0x08
,
0x20
,
0x02
,
0xf7
,
0x4c
,
0xe7
,
0x35
,
0xcf
,
0xc1
,
0xd2
,
0x96
,
0xba
,
0xf4
,
0xa5
,
0xff
,
0x30
,
0x8d
,
0xa9
,
0x4c
,
0x67
,
0x4a
,
0xd3
,
0x9a
,
0x9a
,
0x23
,
0x02
,
0x28
,
0x65
,
0x08
,
0x3e
,
0xaf
,
0x89
,
0xd3
,
0x9e
,
0xfa
,
0xf4
,
0xa7
,
0x40
,
0x0d
,
0xaa
,
0x50
,
0x87
,
0x4a
,
0xd4
,
0xa2
,
0x1a
,
0xf5
,
0xa8
,
0x48
,
0x4d
,
0xaa
,
0x52
,
0x97
,
0xca
,
0xd4
,
0xa6
,
0x3a
,
0xf5
,
0xa9
,
0x50
,
0x8d
,
0xaa
,
0x54
,
0xa7
,
0x4a
,
0xd5
,
0xaa
,
0x26
,
0x35
,
0x1d
,
0x3b
,
0x25
,
0x81
,
0x55
,
0xb7
,
0xca
,
0xd5
,
0xae
,
0x7a
,
0xf5
,
0xab
,
0x60
,
0x0d
,
0xab
,
0x58
,
0xc7
,
0x4a
,
0x56
,
0xab
,
0xc2
,
0x43
,
0xa7
,
0x8b
,
0xd1
,
0x6a
,
0x59
,
0xd7
,
0xca
,
0xd6
,
0xb6
,
0xba
,
0xf5
,
0xad
,
0x70
,
0x8d
,
0xab
,
0x5c
,
0x7f
,
0x8a
,
0x55
,
0xb4
,
0x90
,
0xc0
,
0xa6
,
0x78
,
0xcd
,
0xab
,
0x5e
,
0xf7
,
0xca
,
0xd7
,
0xbe
,
0xfa
,
0xf5
,
0xaf
,
0xd0
,
0xc0
,
0x69
,
0x29
,
0x24
,
0x82
,
0x02
,
0x12
,
0x94
,
0xf4
,
0xb0
,
0x88
,
0x4d
,
0xac
,
0x62
,
0x17
,
0xcb
,
0xd8
,
0xc6
,
0x3a
,
0x76
,
0x15
,
0x02
,
0x88
,
0x2c
,
0x04
,
0x04
,
0x0b
,
0x0f
,
0x12
,
0x14
,
0xe0
,
0xb2
,
0x98
,
0xcd
,
0xac
,
0x66
,
0x37
,
0xcb
,
0xd9
,
0xce
,
0x7a
,
0xf6
,
0xb3
,
0xa0
,
0x0d
,
0xad
,
0x68
,
0x47
,
0x4b
,
0xda
,
0xd2
,
0x9a
,
0xf6
,
0xb4
,
0xa8
,
0x4d
,
0xad
,
0x6a
,
0x57
,
0xcb
,
0xda
,
0xd6
,
0xba
,
0xf6
,
0xb5
,
0xb0
,
0x15
,
0xad
,
0x2a
,
0x24
,
0xdb
,
0x53
,
0x12
,
0x50
,
0xf4
,
0xb6
,
0xb8
,
0xcd
,
0xad
,
0x6e
,
0x77
,
0xcb
,
0xdb
,
0xde
,
0xfa
,
0xf6
,
0xb7
,
0xc0
,
0xc5
,
0x6d
,
0x01
,
0x20
,
0x2b
,
0x00
,
0x12
,
0x84
,
0xe2
,
0xb8
,
0xc8
,
0x4d
,
0xae
,
0x72
,
0x97
,
0xcb
,
0xdc
,
0xe6
,
0x3a
,
0xf7
,
0xb9
,
0xd0
,
0x45
,
0xae
,
0x3f
,
0xb1
,
0x39
,
0xcf
,
0xea
,
0x5a
,
0xf7
,
0xba
,
0xd8
,
0xcd
,
0xae
,
0x76
,
0xbf
,
0x39
,
0x80
,
0xee
,
0x22
,
0x82
,
0xba
,
0xdb
,
0x0d
,
0xaf
,
0x78
,
0xc7
,
0x4b
,
0xde
,
0xf2
,
0x62
,
0x97
,
0x99
,
0xd1
,
0x4c
,
0xff
,
0xaf
,
0x7a
,
0xd7
,
0xcb
,
0x5e
,
0x41
,
0xa2
,
0xb7
,
0xbd
,
0xf0
,
0x8d
,
0xaf
,
0x7c
,
0xe7
,
0x1b
,
0x86
,
0xf7
,
0xd2
,
0xf7
,
0xbe
,
0xf8
,
0xcd
,
0xaf
,
0x30
,
0xed
,
0xab
,
0xdf
,
0xfe
,
0xfa
,
0xf7
,
0xbf
,
0xa1
,
0xe4
,
0x2f
,
0x80
,
0x07
,
0x4c
,
0xe0
,
0x02
,
0xbb
,
0xd7
,
0xc0
,
0x08
,
0x4e
,
0xb0
,
0x82
,
0xef
,
0x28
,
0xe0
,
0x05
,
0x3b
,
0xf8
,
0xc1
,
0x09
,
0x6e
,
0x30
,
0x84
,
0x27
,
0x4c
,
0x61
,
0xfd
,
0x4a
,
0xb8
,
0xc2
,
0x18
,
0xce
,
0x30
,
0x7b
,
0x2f
,
0xac
,
0xe1
,
0x0e
,
0x7b
,
0xd8
,
0x98
,
0x1c
,
0xfe
,
0xb0
,
0x88
,
0x47
,
0x7c
,
0xcb
,
0x10
,
0x93
,
0xf8
,
0xc4
,
0x28
,
0x16
,
0xa5
,
0x89
,
0x53
,
0xcc
,
0xe2
,
0x16
,
0x43
,
0x72
,
0xc5
,
0x2e
,
0x8e
,
0xb1
,
0x8c
,
0x01
,
0x09
,
0xe3
,
0x19
,
0xdb
,
0xf8
,
0xc6
,
0x76
,
0xac
,
0x31
,
0x8e
,
0x77
,
0xcc
,
0x63
,
0x36
,
0xea
,
0xb8
,
0xc7
,
0x40
,
0xde
,
0xf1
,
0x8f
,
0x83
,
0x4c
,
0x64
,
0x19
,
0x0f
,
0xb9
,
0xc8
,
0x48
,
0x4e
,
0xf1
,
0x91
,
0x93
,
0xcc
,
0x64
,
0x11
,
0x2f
,
0xb9
,
0xc9
,
0x50
,
0xce
,
0xf0
,
0x93
,
0xa3
,
0x4c
,
0x65
,
0x08
,
0x4f
,
0xb9
,
0xca
,
0x58
,
0x8e
,
0x70
,
0x96
,
0xb7
,
0x7c
,
0xe2
,
0x2b
,
0x73
,
0xf9
,
0xcb
,
0xfd
,
0xf5
,
0x32
,
0x98
,
0xc7
,
0x4c
,
0x5f
,
0x31
,
0x93
,
0xf9
,
0xcc
,
0xed
,
0x35
,
0x33
,
0x9a
,
0xd7
,
0x1c
,
0x4d
,
0x35
,
0xb3
,
0xf9
,
0xcd
,
0xc7
,
0x74
,
0x33
,
0x9c
,
0xe7
,
0xbc
,
0x5f
,
0x3a
,
0xdb
,
0xd9
,
0xc2
,
0x77
,
0xce
,
0x73
,
0x99
,
0xf5
,
0xcc
,
0x67
,
0xf8
,
0xca
,
0xb9
,
0xcf
,
0x80
,
0x0e
,
0x70
,
0xa0
,
0x07
,
0xfd
,
0xcc
,
0x3f
,
0x13
,
0xfa
,
0xd0
,
0x2f
,
0x46
,
0xb4
,
0xa2
,
0xeb
,
0xbc
,
0xe8
,
0x46
,
0xe3
,
0xd2
,
0xd0
,
0x8e
,
0x8e
,
0x74
,
0x1f
,
0x21
,
0x2d
,
0xe9
,
0x4a
,
0xe3
,
0x91
,
0xd2
,
0x96
,
0xce
,
0xf4
,
0x1c
,
0x31
,
0xad
,
0xe9
,
0x4e
,
0xbb
,
0x91
,
0xd3
,
0x9e
,
0x0e
,
0x75
,
0x1a
,
0xff
,
0x41
,
0x2d
,
0xea
,
0x50
,
0x93
,
0xba
,
0xd4
,
0x9d
,
0x3e
,
0x35
,
0xaa
,
0x33
,
0xad
,
0xea
,
0x55
,
0x57
,
0xba
,
0xd5
,
0xae
,
0x8e
,
0x34
,
0xac
,
0x63
,
0xdd
,
0xe8
,
0x59
,
0xd3
,
0x5a
,
0xd1
,
0xb6
,
0xbe
,
0xf5
,
0xa1
,
0x73
,
0xad
,
0xeb
,
0x41
,
0xf3
,
0xba
,
0xd7
,
0x80
,
0xfe
,
0x35
,
0xb0
,
0xf9
,
0x2c
,
0xec
,
0x61
,
0xe7
,
0xb9
,
0xd8
,
0xc6
,
0xb6
,
0x33
,
0xb2
,
0x93
,
0x3d
,
0xe7
,
0x65
,
0x33
,
0xfb
,
0xcd
,
0xce
,
0x7e
,
0xf6
,
0x9a
,
0xa3
,
0x2d
,
0xed
,
0x33
,
0x53
,
0xbb
,
0xda
,
0x63
,
0xbe
,
0x36
,
0xb6
,
0xbf
,
0xac
,
0xed
,
0x6d
,
0x6f
,
0xb9
,
0xdb
,
0xde
,
0xc6
,
0x32
,
0xb8
,
0xc3
,
0x4d
,
0xe5
,
0x71
,
0x93
,
0x1b
,
0xca
,
0xe6
,
0x3e
,
0x37
,
0x93
,
0xd3
,
0xad
,
0x6e
,
0x24
,
0xb3
,
0xbb
,
0xdd
,
0x44
,
0x7e
,
0x37
,
0xbc
,
0x81
,
0x2c
,
0xef
,
0x79
,
0xf3
,
0xb8
,
0xde
,
0xf6
,
0xc6
,
0x31
,
0xbe
,
0xf3
,
0x6d
,
0xe3
,
0x7d
,
0xf3
,
0xdb
,
0xc8
,
0xff
,
0x76
,
0xb5
,
0xbf
,
0x03
,
0xde
,
0xe2
,
0x81
,
0x13
,
0x5c
,
0xc9
,
0x07
,
0x2f
,
0xb5
,
0xc1
,
0x13
,
0x4e
,
0xe2
,
0x85
,
0x33
,
0xdc
,
0xc9
,
0x0f
,
0xf7
,
0xb4
,
0xc3
,
0x23
,
0xde
,
0xe1
,
0x89
,
0x53
,
0x5c
,
0xca
,
0x17
,
0x67
,
0x75
,
0xc6
,
0x2d
,
0x6d
,
0xf1
,
0x8d
,
0x4f
,
0xb8
,
0xe3
,
0x1e
,
0x7f
,
0x30
,
0xc8
,
0x43
,
0xbe
,
0xe0
,
0x91
,
0x93
,
0x5c
,
0xcb
,
0x27
,
0x5f
,
0xb4
,
0xc9
,
0x53
,
0x5e
,
0xe0
,
0x95
,
0xb3
,
0x7c
,
0xc0
,
0x2e
,
0x7f
,
0xf9
,
0x7f
,
0x63
,
0x2e
,
0xf3
,
0x30
,
0xd7
,
0x9c
,
0xd0
,
0x34
,
0xbf
,
0x39
,
0x7e
,
0x73
,
0xae
,
0xf3
,
0x3d
,
0xf7
,
0xbc
,
0xcf
,
0x3c
,
0xff
,
0x79
,
0x7c
,
0x83
,
0x2e
,
0xf4
,
0x34
,
0x17
,
0x5d
,
0xcf
,
0x44
,
0x3f
,
0xba
,
0x7a
,
0x93
,
0xae
,
0xf4
,
0x36
,
0x37
,
0x5d
,
0xd9
,
0x4f
,
0xa7
,
0x33
,
0xd3
,
0xa3
,
0xde
,
0xcc
,
0xa9
,
0x53
,
0x1d
,
0xc4
,
0x57
,
0x87
,
0x76
,
0xd6
,
0xd9
,
0x6c
,
0x3e
,
0xf5
,
0xad
,
0x33
,
0xda
,
0xeb
,
0x64
,
0xee
,
0x3a
,
0xd8
,
0x75
,
0x29
,
0xf6
,
0xb1
,
0x3f
,
0xda
,
0xec
,
0xd9
,
0x46
,
0x3b
,
0x98
,
0xcb
,
0xae
,
0xf6
,
0x57
,
0xb2
,
0xbd
,
0xed
,
0xad
,
0x7c
,
0x3b
,
0xdc
,
0x57
,
0x29
,
0xf7
,
0xb9
,
0x8f
,
0xb2
,
0xee
,
0x76
,
0x17
,
0x74
,
0xde
,
0xcb
,
0xbd
,
0x77
,
0xbe
,
0xf7
,
0x1d
,
0xdd
,
0x7f
,
0x07
,
0x7c
,
0xe0
,
0xd7
,
0x3d
,
0x78
,
0xc2
,
0x17
,
0xde
,
0xdd
,
0x41
,
0x00
,
0x00
,
0x3b
};
static
unsigned
int
tab_r_gif_len
=
2585
;
static
const
char
tabs_css
[]
=
"/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
\n
"
"
\n
"
"DIV.tabs
\n
"
"{
\n
"
" float : left;
\n
"
" width : 100%;
\n
"
" background : url(
\"
tab_b.gif
\"
) repeat-x bottom;
\n
"
" margin-bottom : 4px;
\n
"
"}
\n
"
"H3 {
\n
"
" font-size: 100%;
\n
"
"
\n
"
"DIV.tabs UL
\n
"
"{
\n
"
" margin : 0px;
\n
"
" padding-left : 10px;
\n
"
" list-style : none;
\n
"
"}
\n
"
"CAPTION { font-weight: bold }
\n
"
"DIV.qindex {
\n
"
" width: 100%;
\n
"
" background-color: #eeeeff;
\n
"
" border: 1px solid #b0b0b0;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" padding: 2px;
\n
"
" line-height: 140%;
\n
"
"
\n
"
"DIV.tabs LI, DIV.tabs FORM
\n
"
"{
\n
"
" display : inline;
\n
"
" margin : 0px;
\n
"
" padding : 0px;
\n
"
"}
\n
"
"DIV.nav {
\n
"
" width: 100%;
\n
"
" background-color: #eeeeff;
\n
"
" border: 1px solid #b0b0b0;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" padding: 2px;
\n
"
" line-height: 140%;
\n
"
"
\n
"
"DIV.tabs FORM
\n
"
"{
\n
"
" float : right;
\n
"
"}
\n
"
"DIV.navtab {
\n
"
" background-color: #eeeeff;
\n
"
" border: 1px solid #b0b0b0;
\n
"
" text-align: center;
\n
"
" margin: 2px;
\n
"
" margin-right: 15px;
\n
"
" padding: 2px;
\n
"
"
\n
"
"DIV.tabs A
\n
"
"{
\n
"
" float : left;
\n
"
" background : url(
\"
tab_r.gif
\"
) no-repeat right top;
\n
"
" border-bottom : 1px solid #84B0C7;
\n
"
" font-size : x-small;
\n
"
" font-weight : bold;
\n
"
" text-decoration : none;
\n
"
"}
\n
"
"TD.navtab {
\n
"
" font-size: 70%;
\n
"
"
\n
"
"DIV.tabs A:hover
\n
"
"{
\n
"
" background-position: 100% -150px;
\n
"
"}
\n
"
"A.qindex {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
"
\n
"
"DIV.tabs A:link, DIV.tabs A:visited,
\n
"
"DIV.tabs A:active, DIV.tabs A:hover
\n
"
"{
\n
"
" color: #1A419D;
\n
"
"}
\n
"
"A.qindex:visited {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" color: #1A419D
\n
"
"}
\n
"
"A.qindex:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #ddddff;
\n
"
"}
\n
"
"A.qindexHL {
\n
"
" text-decoration: none;
\n
"
" font-weight: bold;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
" border: 1px double #9295C2;
\n
"
"}
\n
"
"A.qindexHL:hover {
\n
"
" text-decoration: none;
\n
"
" background-color: #6666cc;
\n
"
" color: #ffffff;
\n
"
"}
\n
"
"A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
\n
"
"A.el { text-decoration: none; font-weight: bold }
\n
"
"A.elRef { font-weight: bold }
\n
"
"A.code:link { text-decoration: none; font-weight: normal; color: #0000FF}
\n
"
"A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF}
\n
"
"A.codeRef:link { font-weight: normal; color: #0000FF}
\n
"
"A.codeRef:visited { font-weight: normal; color: #0000FF}
\n
"
"A:hover { text-decoration: none; background-color: #f2f2ff }
\n
"
"DL.el { margin-left: -1cm }
\n
"
".fragment {
\n
"
" font-family: Fixed, monospace;
\n
"
" font-size: 95%;
\n
"
"}
\n
"
"PRE.fragment {
\n
"
" border: 1px solid #CCCCCC;
\n
"
" background-color: #f5f5f5;
\n
"
" margin-top: 4px;
\n
"
" margin-bottom: 4px;
\n
"
" margin-left: 2px;
\n
"
" margin-right: 8px;
\n
"
" padding-left: 6px;
\n
"
" padding-right: 6px;
\n
"
" padding-top: 4px;
\n
"
" padding-bottom: 4px;
\n
"
"}
\n
"
//"DIV.fragment {\n"
//" font-family: monospace\n"
//" border: 1px solid #CCCCCC;\n"
//" background-color: #f5f5f5;\n"
//" padding: 6px;\n"
//"}\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
\n
"
"TD.md { background-color: #F4F4FB; font-weight: bold; }
\n
"
"TD.mdPrefix {
\n
"
" background-color: #F4F4FB;
\n
"
" color: #606060;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
"TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
\n
"
"TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
\n
"
"DIV.groupHeader {
\n
"
" margin-left: 16px;
\n
"
" margin-top: 12px;
\n
"
" margin-bottom: 6px;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% }
\n
"
"BODY {
\n
"
" background: white;
\n
"
" color: black;
\n
"
" margin-right: 20px;
\n
"
" margin-left: 20px;
\n
"
"}
\n
"
"TD.indexkey {
\n
"
" background-color: #eeeeff;
\n
"
" font-weight: bold;
\n
"
" padding-right : 10px;
\n
"
" padding-top : 2px;
\n
"
" padding-left : 10px;
\n
"
" padding-bottom : 2px;
\n
"
" margin-left : 0px;
\n
"
" margin-right : 0px;
\n
"
" margin-top : 2px;
\n
"
" margin-bottom : 2px;
\n
"
" border: 1px solid #CCCCCC;
\n
"
"}
\n
"
"TD.indexvalue {
\n
"
" background-color: #eeeeff;
\n
"
" font-style: italic;
\n
"
" padding-right : 10px;
\n
"
" padding-top : 2px;
\n
"
" padding-left : 10px;
\n
"
" padding-bottom : 2px;
\n
"
" margin-left : 0px;
\n
"
" margin-right : 0px;
\n
"
" margin-top : 2px;
\n
"
" margin-bottom : 2px;
\n
"
" border: 1px solid #CCCCCC;
\n
"
"}
\n
"
"TR.memlist {
\n
"
" background-color: #f0f0f0;
\n
"
"
\n
"
"DIV.tabs SPAN
\n
"
"{
\n
"
" float : left;
\n
"
" display : block;
\n
"
" background : url(
\"
tab_l.gif
\"
) no-repeat left top;
\n
"
" padding : 5px 9px;
\n
"
" white-space : nowrap;
\n
"
"}
\n
"
"P.formulaDsp { text-align: center; }
\n
"
"IMG.formulaDsp { }
\n
"
"IMG.formulaInl { vertical-align: middle; }
\n
"
"SPAN.keyword { color: #008000 }
\n
"
"SPAN.keywordtype { color: #604020 }
\n
"
"SPAN.keywordflow { color: #e08000 }
\n
"
"SPAN.comment { color: #800000 }
\n
"
"SPAN.preprocessor { color: #806020 }
\n
"
"SPAN.stringliteral { color: #002080 }
\n
"
"SPAN.charliteral { color: #008080 }
\n
"
".mdTable {
\n
"
" border: 1px solid #868686;
\n
"
" background-color: #F4F4FB;
\n
"
"
\n
"
"DIV.tabs INPUT
\n
"
"{
\n
"
" float : right;
\n
"
" display : inline;
\n
"
" font-size : 1em;
\n
"
"}
\n
"
".mdRow {
\n
"
" padding: 8px 10px;
\n
"
"
\n
"
"DIV.tabs TD
\n
"
"{
\n
"
" font-size : x-small;
\n
"
" font-weight : bold;
\n
"
" text-decoration : none;
\n
"
"}
\n
"
"
.mdescLeft {
\n
"
"
padding: 0px 8px 4px 8px;
\n
"
"
font-size: 80%;
\n
"
"
font-style: italic;
\n
"
"
background-color: #FAFAFA;
\n
"
"
border-top: 1px none #E0E0E0;
\n
"
"
border-right: 1px none #E0E0E0;
\n
"
"
border-bottom: 1px none #E0E0E0;
\n
"
"
border-left: 1px none #E0E0E0;
\n
"
"
margin:
0px;
\n
"
"
\n
"
"
\n
"
"
\n
"
"
/* Commented Backslash Hack hides rule from IE5-Mac
\\
*/
\n
"
"
DIV.tabs SPAN {float : none;}
\n
"
"
/* End IE5-Mac hack */
\n
"
"
\n
"
"
DIV.tabs A:hover SPAN
\n
"
"
{
\n
"
"
background-position: 0% -15
0px;
\n
"
"}
\n
"
".mdescRight {
\n
"
" padding: 0px 8px 4px 8px;
\n
"
" font-size: 80%;
\n
"
" font-style: italic;
\n
"
" background-color: #FAFAFA;
\n
"
" border-top: 1px none #E0E0E0;
\n
"
" border-right: 1px none #E0E0E0;
\n
"
" border-bottom: 1px none #E0E0E0;
\n
"
" border-left: 1px none #E0E0E0;
\n
"
" margin: 0px;
\n
"
"
\n
"
"DIV.tabs LI#current A
\n
"
"{
\n
"
" background-position: 100% -150px;
\n
"
" border-width : 0px;
\n
"
"}
\n
"
".memItemLeft {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"
\n
"
"DIV.tabs LI#current SPAN
\n
"
"{
\n
"
" background-position: 0% -150px;
\n
"
" padding-bottom : 6px;
\n
"
"}
\n
"
".memItemRight {
\n
"
" padding: 1px 8px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"
\n
"
"DIV.nav
\n
"
"{
\n
"
" background : none;
\n
"
" border : none;
\n
"
" border-bottom : 1px solid #84B0C7;
\n
"
"}
\n
"
".memTemplItemLeft {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: none;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memTemplItemRight {
\n
"
" padding: 1px 8px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: none;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".memTemplParams {
\n
"
" padding: 1px 0px 0px 8px;
\n
"
" margin: 4px;
\n
"
" border-top-width: 1px;
\n
"
" border-right-width: 1px;
\n
"
" border-bottom-width: 1px;
\n
"
" border-left-width: 1px;
\n
"
" border-top-color: #E0E0E0;
\n
"
" border-right-color: #E0E0E0;
\n
"
" border-bottom-color: #E0E0E0;
\n
"
" border-left-color: #E0E0E0;
\n
"
" border-top-style: solid;
\n
"
" border-right-style: none;
\n
"
" border-bottom-style: none;
\n
"
" border-left-style: none;
\n
"
" color: #606060;
\n
"
" background-color: #FAFAFA;
\n
"
" font-size: 80%;
\n
"
"}
\n
"
".search { color: #003399;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"FORM.search {
\n
"
" margin-bottom: 0px;
\n
"
" margin-top: 0px;
\n
"
"}
\n
"
"INPUT.search { font-size: 75%;
\n
"
" color: #000080;
\n
"
" font-weight: normal;
\n
"
" background-color: #eeeeff;
\n
"
"}
\n
"
"TD.tiny { font-size: 75%;
\n
"
"}
\n
"
"a {
\n
"
" color: #252E78;
\n
"
"}
\n
"
"a:visited {
\n
"
" color: #3D2185;
\n
"
"}
\n
"
".dirtab { padding: 4px;
\n
"
" border-collapse: collapse;
\n
"
" border: 1px solid #b0b0b0;
\n
"
"}
\n
"
"TH.dirtab { background: #eeeeff;
\n
"
" font-weight: bold;
\n
"
"}
\n
"
"HR { height: 1px;
\n
"
" border: none;
\n
"
" border-top: 1px solid black;
\n
"
"}
\n
"
;
;
struct
tab_data_item
{
const
char
*
name
;
unsigned
char
*
content
;
unsigned
int
len
;
};
static
tab_data_item
tab_data
[]
=
{
{
"tab_b.gif"
,
tab_b_gif
,
tab_b_gif_len
},
{
"tab_l.gif"
,
tab_l_gif
,
tab_l_gif_len
},
{
"tab_r.gif"
,
tab_r_gif
,
tab_r_gif_len
},
{
"tabs.css"
,
(
unsigned
char
*
)
tabs_css
,
0
},
{
0
,
0
,
0
}
};
static
QCString
g_header
;
static
QCString
g_footer
;
static
void
writeTabData
(
const
char
*
dir
)
{
tab_data_item
*
data
=
tab_data
;
while
(
data
->
name
)
{
QCString
fileName
;
fileName
=
(
QCString
)
dir
+
"/"
+
data
->
name
;
QFile
f
(
fileName
);
if
(
f
.
open
(
IO_WriteOnly
))
{
f
.
writeBlock
((
char
*
)
data
->
content
,
data
->
len
>
0
?
data
->
len
:
strlen
((
char
*
)
data
->
content
));
}
else
{
fprintf
(
stderr
,
"Warning: Cannot open file %s for writing
\n
"
,
data
->
name
);
}
data
++
;
}
}
const
char
search_script
[]
=
#include "search_php.h"
;
//-----------------------------------------------------------------------
HtmlGenerator
::
HtmlGenerator
()
:
OutputGenerator
()
{
...
...
@@ -400,6 +522,11 @@ void HtmlGenerator::init()
//printf("g_footer='%s'\n",g_footer.data());
}
createSubDirs
(
d
);
//if (Config_getBool("HTML_FANCY_TABS"))
{
writeTabData
(
dname
);
}
}
void
HtmlGenerator
::
writeStyleSheetFile
(
QFile
&
file
)
...
...
@@ -440,8 +567,10 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
}
t
<<
relPathStr
<<
cssfi
.
fileName
();
}
t
<<
"
\"
rel=
\"
stylesheet
\"
type=
\"
text/css
\"
>
\n
"
"</head><body>
\n
"
;
t
<<
"
\"
rel=
\"
stylesheet
\"
type=
\"
text/css
\"
>
\n
"
;
t
<<
"<link href=
\"
tabs.css
\"
rel=
\"
stylesheet
\"
type=
\"
text/css
\"
>
\n
"
;
t
<<
"</head><body>
\n
"
;
}
...
...
@@ -1425,27 +1554,81 @@ void HtmlGenerator::printDoc(DocNode *n,const char *langExt)
delete
visitor
;
}
static
void
startQuickIndexList
(
QTextStream
&
t
,
bool
compact
)
{
bool
fancyTabs
=
TRUE
;
if
(
compact
)
{
if
(
fancyTabs
)
{
t
<<
"<div class=
\"
tabs
\"
>
\n
"
;
t
<<
" <ul>
\n
"
;
}
else
{
t
<<
"<div class=
\"
qindex
\"
>"
;
}
}
else
{
t
<<
"<ul>"
;
}
}
static
void
endQuickIndexList
(
QTextStream
&
t
,
bool
compact
)
{
bool
fancyTabs
=
TRUE
;
if
(
compact
)
{
if
(
fancyTabs
)
{
t
<<
" </ul>"
;
}
t
<<
"</div>
\n
"
;
}
else
{
t
<<
"</ul>
\n
"
;
}
}
static
void
startQuickIndexItem
(
QTextStream
&
t
,
const
char
*
l
,
bool
hl
,
bool
compact
,
bool
&
first
,
const
QCString
&
relPath
)
{
if
(
!
first
&&
compact
)
t
<<
" | "
;
bool
fancyTabs
=
TRUE
;
if
(
!
first
&&
compact
&&
!
fancyTabs
)
t
<<
" | "
;
first
=
FALSE
;
if
(
!
compact
)
t
<<
"<li>"
;
if
(
hl
&&
compact
)
if
(
fancyTabs
)
{
t
<<
"<a class=
\"
qindexHL
\"
"
;
t
<<
" <li"
;
if
(
hl
)
t
<<
" id=
\"
current
\"
"
;
t
<<
"><a "
;
}
else
{
t
<<
"<a class=
\"
qindex
\"
"
;
if
(
!
compact
)
t
<<
"<li>"
;
if
(
hl
&&
compact
)
{
t
<<
"<a class=
\"
qindexHL
\"
"
;
}
else
{
t
<<
"<a class=
\"
qindex
\"
"
;
}
}
t
<<
"href=
\"
"
<<
relPath
<<
l
<<
"
\"
>"
;
if
(
fancyTabs
)
{
t
<<
"<span>"
;
}
}
static
void
endQuickIndexItem
(
QTextStream
&
t
)
{
bool
fancyTabs
=
TRUE
;
if
(
fancyTabs
)
t
<<
"</span>"
;
t
<<
"</a>"
;
if
(
fancyTabs
)
t
<<
"</li>
\n
"
;
}
static
QCString
fixSpaces
(
const
QCString
&
s
)
...
...
@@ -1457,16 +1640,10 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
HighlightedItem
hli
,
const
QCString
&
relPath
)
{
bool
first
=
TRUE
;
if
(
compact
)
{
t
<<
"<div class=
\"
qindex
\"
>"
;
}
else
{
t
<<
"<ul>"
;
}
bool
fancyTabs
=
TRUE
;
startQuickIndexList
(
t
,
compact
);
if
(
Config_getBool
(
"SEARCHENGINE"
))
if
(
Config_getBool
(
"SEARCHENGINE"
)
&&
!
fancyTabs
)
{
t
<<
" <form class=
\"
search
\"
action=
\"
"
<<
relPath
<<
"search.php
\"
method=
\"
get
\"
>
\n
"
;
...
...
@@ -1492,74 +1669,57 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
t
<<
fixSpaces
(
theTranslator
->
trModules
());
endQuickIndexItem
(
t
);
}
// --------------- Namespace indices
if
(
documentedNamespaces
>
0
)
{
startQuickIndexItem
(
t
,
"namespaces"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Namespaces
,
compact
,
first
,
relPath
);
hli
==
HLI_Namespaces
||
hli
==
HLI_NamespaceMembers
||
hli
==
HLI_NamespaceVisible
,
compact
,
first
,
relPath
);
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
t
<<
fixSpaces
(
theTranslator
->
trPackages
());
}
else
{
t
<<
theTranslator
->
trNamespace
List
();
t
<<
theTranslator
->
trNamespace
s
();
}
endQuickIndexItem
(
t
);
}
if
(
hierarchyClasses
>
0
)
{
startQuickIndexItem
(
t
,
"hierarchy"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Hierarchy
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trClassHierarchy
());
endQuickIndexItem
(
t
);
}
// -------------- Class indices
if
(
annotatedClasses
>
0
)
{
if
(
Config_getBool
(
"ALPHABETICAL_INDEX"
))
{
startQuickIndexItem
(
t
,
"classes"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Classes
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trAlphabeticalList
());
endQuickIndexItem
(
t
);
}
startQuickIndexItem
(
t
,
"annotated"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Annotated
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundList
());
hli
==
HLI_Hierarchy
||
hli
==
HLI_Classes
||
hli
==
HLI_Annotated
||
hli
==
HLI_Functions
||
hli
==
HLI_ClassVisible
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trClasses
());
endQuickIndexItem
(
t
);
}
if
(
Config_getBool
(
"SHOW_DIRECTORIES"
)
&&
documentedDirs
>
0
)
{
startQuickIndexItem
(
t
,
"dirs"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Directories
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trDirectories
());
endQuickIndexItem
(
t
);
}
}
// -------------- File
if
(
documentedHtmlFiles
>
0
)
{
startQuickIndexItem
(
t
,
"files"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Files
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileList
());
endQuickIndexItem
(
t
);
}
if
(
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_NamespaceMembers
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
endQuickIndexItem
(
t
);
}
if
(
documentedClassMembers
[
CMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"functions"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Functions
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundMembers
());
hli
==
HLI_Files
||
hli
==
HLI_Globals
||
hli
==
HLI_FileVisible
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFile
(
TRUE
,
FALSE
));
endQuickIndexItem
(
t
);
}
if
(
documentedFileMembers
[
FMHL_All
]
>
0
)
// ------------------------------------------------
if
(
Config_getBool
(
"SHOW_DIRECTORIES"
)
&&
documentedDirs
>
0
)
{
startQuickIndexItem
(
t
,
"
global
s"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_
Global
s
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
tr
FileMember
s
());
startQuickIndexItem
(
t
,
"
dir
s"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_
Directorie
s
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
tr
Directorie
s
());
endQuickIndexItem
(
t
);
}
if
(
indexedPages
>
0
)
...
...
@@ -1578,36 +1738,140 @@ static void writeDefaultQuickLinks(QTextStream &t,bool compact,
}
if
(
Config_getBool
(
"SEARCHENGINE"
))
{
if
(
compact
)
QCString
searchFor
=
fixSpaces
(
theTranslator
->
trSearchForIndex
());
if
(
searchFor
.
at
(
0
)
==
'S'
)
searchFor
=
"<u>S</u>"
+
searchFor
.
mid
(
1
);
if
(
fancyTabs
)
{
t
<<
" | "
;
t
<<
" <li>
\n
"
;
t
<<
" <form action=
\"
search.php
\"
method=
\"
get
\"
>
\n
"
;
t
<<
" <table cellspacing=
\"
0
\"
callpadding=
\"
0
\"
border=
\"
0
\"
>
\n
"
;
t
<<
" <tr>
\n
"
;
t
<<
" <td><label> "
<<
searchFor
<<
" </label></td>
\n
"
;
if
(
hli
!=
HLI_Search
)
{
t
<<
" <td><input type=
\"
text
\"
name=
\"
query
\"
value=
\"\"
size=
\"
20
\"
accesskey=
\"
s
\"
/></td>
\n
"
;
t
<<
" </tr>
\n
"
;
t
<<
" </table>
\n
"
;
t
<<
" </form>
\n
"
;
t
<<
" </li>
\n
"
;
}
}
else
{
t
<<
"<li>"
;
}
t
<<
"<span class=
\"
search"
;
if
(
hli
==
HLI_Search
)
t
<<
"HL"
;
QCString
searchFor
=
fixSpaces
(
theTranslator
->
trSearchForIndex
());
if
(
searchFor
.
at
(
0
)
==
'S'
)
searchFor
=
"<u>S</u>"
+
searchFor
.
mid
(
1
);
t
<<
"
\"
>"
<<
searchFor
<<
" "
;
if
(
hli
!=
HLI_Search
)
{
t
<<
"<input class=
\"
search
\"
type=
\"
text
\"
name=
\"
query
\"
value=
\"\"
size=
\"
20
\"
accesskey=
\"
s
\"
/>"
"</span></form>"
;
if
(
compact
)
{
t
<<
" | "
;
}
else
{
t
<<
"<li>"
;
}
t
<<
"<span class=
\"
search"
;
if
(
hli
==
HLI_Search
)
t
<<
"HL"
;
t
<<
"
\"
>"
<<
searchFor
<<
" "
;
if
(
hli
!=
HLI_Search
)
{
t
<<
"<input class=
\"
search
\"
type=
\"
text
\"
name=
\"
query
\"
value=
\"\"
size=
\"
20
\"
accesskey=
\"
s
\"
/>"
"</span></form>"
;
}
}
}
if
(
hli
!=
HLI_Search
)
if
(
hli
!=
HLI_Search
)
// on the search page the page will be ended by the
// page itself
{
if
(
compact
)
endQuickIndexList
(
t
,
compact
);
}
//-------------------------------------------------------------------------
// write sub indices
if
((
hli
==
HLI_Namespaces
||
hli
==
HLI_NamespaceMembers
||
hli
==
HLI_NamespaceVisible
)
&&
documentedNamespaces
>
0
&&
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
{
startQuickIndexList
(
t
,
compact
);
if
(
documentedNamespaces
>
0
)
{
t
<<
"</div>
\n
"
;
startQuickIndexItem
(
t
,
"namespaces"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Namespaces
,
compact
,
first
,
relPath
);
if
(
Config_getBool
(
"OPTIMIZE_OUTPUT_JAVA"
))
{
t
<<
fixSpaces
(
theTranslator
->
trPackages
());
}
else
{
t
<<
theTranslator
->
trNamespaceList
();
}
endQuickIndexItem
(
t
);
}
else
if
(
documentedNamespaceMembers
[
NMHL_All
]
>
0
)
{
t
<<
"</ul>
\n
"
;
startQuickIndexItem
(
t
,
"namespacemembers"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_NamespaceMembers
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trNamespaceMembers
());
endQuickIndexItem
(
t
);
}
endQuickIndexList
(
t
,
compact
);
}
else
if
((
hli
==
HLI_Hierarchy
||
hli
==
HLI_Classes
||
hli
==
HLI_Annotated
||
hli
==
HLI_Functions
||
hli
==
HLI_ClassVisible
)
&&
annotatedClasses
>
0
)
{
startQuickIndexList
(
t
,
compact
);
if
(
annotatedClasses
>
0
)
{
startQuickIndexItem
(
t
,
"annotated"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Annotated
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundList
());
endQuickIndexItem
(
t
);
if
(
Config_getBool
(
"ALPHABETICAL_INDEX"
))
{
startQuickIndexItem
(
t
,
"classes"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Classes
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trAlphabeticalList
());
endQuickIndexItem
(
t
);
}
}
if
(
hierarchyClasses
>
0
)
{
startQuickIndexItem
(
t
,
"hierarchy"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Hierarchy
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trClassHierarchy
());
endQuickIndexItem
(
t
);
}
if
(
documentedClassMembers
[
CMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"functions"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Functions
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trCompoundMembers
());
endQuickIndexItem
(
t
);
}
endQuickIndexList
(
t
,
compact
);
}
else
if
((
hli
==
HLI_Files
||
hli
==
HLI_Globals
||
hli
==
HLI_FileVisible
)
&&
documentedHtmlFiles
>
0
&&
documentedFileMembers
[
FMHL_All
]
>
0
)
{
startQuickIndexList
(
t
,
compact
);
if
(
documentedHtmlFiles
>
0
)
{
startQuickIndexItem
(
t
,
"files"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Files
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileList
());
endQuickIndexItem
(
t
);
}
if
(
documentedFileMembers
[
FMHL_All
]
>
0
)
{
startQuickIndexItem
(
t
,
"globals"
+
Doxygen
::
htmlFileExtension
,
hli
==
HLI_Globals
,
compact
,
first
,
relPath
);
t
<<
fixSpaces
(
theTranslator
->
trFileMembers
());
endQuickIndexItem
(
t
);
}
endQuickIndexList
(
t
,
compact
);
}
}
void
HtmlGenerator
::
writeQuickLinks
(
bool
compact
,
HighlightedItem
hli
)
...
...
@@ -1643,7 +1907,7 @@ void HtmlGenerator::writeSearchPage()
}
else
{
t
<<
"<div class=
\"
qindex
\"
>
\n
"
;
t
<<
"
\n
<div class=
\"
qindex
\"
>
\n
"
;
t
<<
" <form class=
\"
search
\"
action=
\"
search.php
\"
"
<<
"method=
\"
get
\"
>
\n
"
;
}
...
...
@@ -1674,6 +1938,18 @@ void HtmlGenerator::writeSearchPage()
t
<<
"{
\n
"
;
t
<<
" return
\"
"
<<
theTranslator
->
trSearchMatches
()
<<
"
\"
;
\n
"
;
t
<<
"}
\n
"
;
t
<<
"function end_form($value)
\n
"
;
t
<<
"{
\n
"
;
t
<<
" echo
\"
"
<<
" <td><input type=
\\\"
text
\\\"
name=
\\\"
query
\\\"
value=
\\\"
$value
\\\"
size=
\\\"
20
\\\"
accesskey=
\\\"
s
\\\"
/></td>
\\
n"
<<
" </tr>
\\
n"
<<
" </table>
\\
n"
<<
" </form>
\\
n"
<<
" </li>
\\
n"
<<
" </ul>
\\
n"
<<
"</div>
\\
n"
<<
"
\"
;
\n
"
;
t
<<
"}
\n
"
;
t
<<
"
\n
"
;
t
<<
search_script
;
t
<<
"
\n
"
;
...
...
src/index.cpp
View file @
3b98221d
...
...
@@ -175,28 +175,69 @@ QCString abbreviate(const char *s,const char *name)
//----------------------------------------------------------------------------
static
void
startQuickIndexList
(
OutputList
&
ol
)
{
bool
fancyTabs
=
TRUE
;
if
(
fancyTabs
)
{
ol
.
writeString
(
"<div class=
\"
tabs
\"
>
\n
"
);
ol
.
writeString
(
" <ul>
\n
"
);
}
else
{
ol
.
writeString
(
"<div class=
\"
qindex
\"
>"
);
}
}
static
void
endQuickIndexList
(
OutputList
&
ol
)
{
bool
fancyTabs
=
TRUE
;
if
(
fancyTabs
)
{
ol
.
writeString
(
" </ul>
\n
"
);
}
ol
.
writeString
(
"</div>
\n
"
);
}
static
void
startQuickIndexItem
(
OutputList
&
ol
,
const
char
*
l
,
bool
hl
,
bool
compact
,
bool
&
first
)
{
if
(
!
first
&&
compact
)
ol
.
writeString
(
" | "
);
bool
fancyTabs
=
TRUE
;
if
(
!
first
&&
compact
&&
!
fancyTabs
)
ol
.
writeString
(
" | "
);
first
=
FALSE
;
if
(
!
compact
)
ol
.
writeString
(
"<li>"
);
if
(
hl
&&
compact
)
if
(
fancyTabs
)
{
ol
.
writeString
(
"<a class=
\"
qindexHL
\"
"
);
ol
.
writeString
(
" <li"
);
if
(
hl
)
ol
.
writeString
(
" id=
\"
current
\"
"
);
ol
.
writeString
(
"><a "
);
}
else
{
ol
.
writeString
(
"<a class=
\"
qindex
\"
"
);
if
(
!
compact
)
ol
.
writeString
(
"<li>"
);
if
(
hl
&&
compact
)
{
ol
.
writeString
(
"<a class=
\"
qindexHL
\"
"
);
}
else
{
ol
.
writeString
(
"<a class=
\"
qindex
\"
"
);
}
}
ol
.
writeString
(
"href=
\"
"
);
ol
.
writeString
(
l
);
ol
.
writeString
(
"
\"
>"
);
if
(
fancyTabs
)
{
ol
.
writeString
(
"<span>"
);
}
}
static
void
endQuickIndexItem
(
OutputList
&
ol
)
{
bool
fancyTabs
=
TRUE
;
if
(
fancyTabs
)
ol
.
writeString
(
"</span>"
);
ol
.
writeString
(
"</a>"
);
if
(
fancyTabs
)
ol
.
writeString
(
"</li>
\n
"
);
}
...
...
@@ -284,7 +325,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
//printf("Passed...\n");
bool
hasChildren
=
!
cd
->
visited
&&
!
hideSuper
&&
classHasVisibleChildren
(
cd
);
//printf("tree4: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
()
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkable
())
{
//printf("Writing class %s\n",cd->displayName().data());
ol
.
writeIndexItem
(
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
cd
->
displayName
());
...
...
@@ -367,7 +408,7 @@ void writeClassTree(BaseClassList *cl,int level)
}
bool
hasChildren
=
!
cd
->
visited
&&
classHasVisibleChildren
(
cd
);
//printf("tree2: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
()
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkable
())
{
if
(
hasHtmlHelp
)
{
...
...
@@ -406,7 +447,7 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star
}
bool
hasChildren
=
classHasVisibleChildren
(
cd
);
//printf("node: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
()
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkable
())
{
if
(
hasHtmlHelp
)
{
...
...
@@ -499,7 +540,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
}
bool
hasChildren
=
!
cd
->
visited
&&
classHasVisibleChildren
(
cd
);
//printf("list: Has children %s: %d\n",cd->name().data(),hasChildren);
if
(
cd
->
isLinkable
()
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkable
())
{
//printf("Writing class %s isLinkable()=%d isLinkableInProject()=%d cd->templateMaster()=%p\n",
// cd->displayName().data(),cd->isLinkable(),cd->isLinkableInProject(),cd->templateMaster());
...
...
@@ -594,7 +635,8 @@ void writeHierarchicalIndex(OutputList &ol)
if
(
hierarchyClasses
==
0
)
return
;
ol
.
pushGeneratorState
();
ol
.
disable
(
OutputGenerator
::
Man
);
startFile
(
ol
,
"hierarchy"
,
0
,
theTranslator
->
trHierarchicalIndex
().
data
(),
HLI_Hierarchy
);
startFile
(
ol
,
"hierarchy"
,
0
,
theTranslator
->
trHierarchicalIndex
().
data
(),
HLI_Hierarchy
);
startTitle
(
ol
,
0
);
QCString
title
=
theTranslator
->
trClassHierarchy
();
QCString
htmlHelpTitle
=
title
;
...
...
@@ -646,7 +688,7 @@ void writeGraphicalClassHierarchy(OutputList &ol)
if
(
hierarchyClasses
==
0
)
return
;
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
QCString
title
=
theTranslator
->
trGraphicalHierarchy
();
startFile
(
ol
,
"inherits"
,
0
,
title
.
data
());
startFile
(
ol
,
"inherits"
,
0
,
title
.
data
()
,
HLI_Hierarchy
);
startTitle
(
ol
,
0
);
QCString
htmlHelpTitle
=
title
;
QCString
ftvHelpTitle
=
title
;
...
...
@@ -914,7 +956,7 @@ int countNamespaces()
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
isLinkableInProject
()
&&
!
nd
->
isHidden
()
)
count
++
;
if
(
nd
->
isLinkableInProject
())
count
++
;
}
return
count
;
}
...
...
@@ -979,7 +1021,7 @@ void writeNamespaceIndex(OutputList &ol)
NamespaceDef
*
nd
;
for
(
nli
.
toFirst
();(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
isLinkableInProject
()
&&
!
nd
->
isHidden
()
)
if
(
nd
->
isLinkableInProject
())
{
if
(
first
)
{
...
...
@@ -1042,7 +1084,7 @@ int countAnnotatedClasses()
ClassDef
*
cd
;
for
(;(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
//printf("Annotated class %s\n",cd->name().data());
count
++
;
...
...
@@ -1074,7 +1116,7 @@ void writeAnnotatedClassList(OutputList &ol)
// see which elements are in use
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
c
=
cd
->
displayName
().
at
(
0
);
g_classIndexLetterUsed
[
CHL_All
][
c
]
=
TRUE
;
...
...
@@ -1108,7 +1150,7 @@ void writeAnnotatedClassList(OutputList &ol)
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
QCString
type
=
cd
->
compoundTypeString
();
ol
.
startIndexKey
();
...
...
@@ -1159,7 +1201,7 @@ void writeAlphabeticalClassList(OutputList &ol)
QCString
alphaLinks
=
"<p><div class=
\"
qindex
\"
>"
;
for
(;(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
index
=
getPrefixIndex
(
cd
->
className
());
//printf("name=%s index=%d\n",cd->className().data(),index);
...
...
@@ -1201,7 +1243,7 @@ void writeAlphabeticalClassList(OutputList &ol)
startLetter
=
0
;
for
(
cli
.
toFirst
();(
cd
=
cli
.
current
());
++
cli
)
{
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
)
if
(
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
)
{
int
index
=
getPrefixIndex
(
cd
->
className
());
if
(
toupper
(
cd
->
className
().
at
(
index
))
!=
startLetter
)
...
...
@@ -1424,7 +1466,7 @@ void writeMemberList(OutputList &ol,bool useSections,
if
(
md
->
isLinkableInProject
()
&&
(
cd
=
md
->
getClassDef
())
&&
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
&&
cd
->
isLinkableInProject
()
&&
cd
->
templateMaster
()
==
0
&&
(
(
filter
==
CMHL_All
&&
!
(
md
->
isFriend
()
&&
isFriendToHide
))
||
(
filter
==
CMHL_Functions
&&
(
md
->
isFunction
()
||
md
->
isSlot
()
||
md
->
isSignal
()))
||
(
filter
==
CMHL_Variables
&&
md
->
isVariable
())
||
...
...
@@ -1481,7 +1523,7 @@ void writeMemberList(OutputList &ol,bool useSections,
if
(
md
->
isLinkableInProject
()
&&
prevName
!=
cd
->
displayName
()
&&
cd
->
templateMaster
()
==
0
&&
!
cd
->
isHidden
()
cd
->
templateMaster
()
==
0
)
{
if
(
count
==
0
)
...
...
@@ -1558,7 +1600,7 @@ void writeQuickMemberIndex(OutputList &ol,bool *charUsed,int page,
{
bool
first
=
TRUE
;
int
i
;
ol
.
writeString
(
"<div class=
\"
qindex
\"
>"
);
startQuickIndexList
(
ol
);
for
(
i
=
33
;
i
<
127
;
i
++
)
{
char
is
[
2
];
is
[
0
]
=
(
char
)
i
;
is
[
1
]
=
'\0'
;
...
...
@@ -1578,7 +1620,7 @@ void writeQuickMemberIndex(OutputList &ol,bool *charUsed,int page,
first
=
FALSE
;
}
}
ol
.
writeString
(
"</div>
\n
"
);
endQuickIndexList
(
ol
);
ol
.
newParagraph
();
}
...
...
@@ -1635,7 +1677,7 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
startFile
(
ol
,
fileName
+
extension
,
0
,
title
,
HLI_Functions
);
ol
.
writeString
(
"<div class=
\"
qindex
\"
>"
);
startQuickIndexList
(
ol
);
// index item for global member list
startQuickIndexItem
(
ol
,
...
...
@@ -1657,7 +1699,7 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
}
}
ol
.
writeString
(
"</div>
\n
"
);
endQuickIndexList
(
ol
);
// quick alphabetical index
bool
quickIndex
=
documentedClassMembers
[
hl
]
>
maxItemsBeforeQuickIndex
;
...
...
@@ -1670,6 +1712,12 @@ static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight h
{
ol
.
parseText
(
theTranslator
->
trCompoundMembersDescription
(
Config_getBool
(
"EXTRACT_ALL"
)));
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol
.
writeString
(
" "
);
}
ol
.
newParagraph
();
writeMemberList
(
ol
,
quickIndex
,
hl
,
page
);
endFile
(
ol
);
...
...
@@ -2032,7 +2080,7 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
startFile
(
ol
,
fileName
+
extension
,
0
,
title
.
data
(),
HLI_Globals
);
ol
.
writeString
(
"<div class=
\"
qindex
\"
>"
);
startQuickIndexList
(
ol
);
// index item for all member lists
startQuickIndexItem
(
ol
,
...
...
@@ -2053,7 +2101,7 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
}
}
ol
.
writeString
(
"</div>
\n
"
);
endQuickIndexList
(
ol
);
bool
quickIndex
=
documentedFileMembers
[
hl
]
>
maxItemsBeforeQuickIndex
;
if
(
quickIndex
)
...
...
@@ -2066,6 +2114,12 @@ static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
{
ol
.
parseText
(
theTranslator
->
trFileMembersDescription
(
Config_getBool
(
"EXTRACT_ALL"
)));
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol
.
writeString
(
" "
);
}
ol
.
newParagraph
();
writeFileMemberList
(
ol
,
quickIndex
,
hl
,
page
);
endFile
(
ol
);
...
...
@@ -2155,7 +2209,7 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
startFile
(
ol
,
fileName
+
extension
,
0
,
title
,
HLI_NamespaceMembers
);
ol
.
writeString
(
"<div class=
\"
qindex
\"
>"
);
startQuickIndexList
(
ol
);
startQuickIndexItem
(
ol
,
nmhlInfo
[
0
].
fname
+
Doxygen
::
htmlFileExtension
,
hl
==
NMHL_All
,
TRUE
,
first
);
...
...
@@ -2174,7 +2228,7 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
}
}
ol
.
writeString
(
"</div>
\n
"
);
endQuickIndexList
(
ol
);
bool
quickIndex
=
documentedNamespaceMembers
[
hl
]
>
maxItemsBeforeQuickIndex
;
if
(
quickIndex
)
...
...
@@ -2186,6 +2240,12 @@ static void writeNamespaceMemberIndexFiltered(OutputList &ol,
{
ol
.
parseText
(
theTranslator
->
trNamespaceMemberDescription
(
Config_getBool
(
"EXTRACT_ALL"
)));
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol
.
writeString
(
" "
);
}
ol
.
newParagraph
();
writeNamespaceMemberList
(
ol
,
quickIndex
,
hl
,
page
);
...
...
src/index.h
View file @
3b98221d
...
...
@@ -90,7 +90,11 @@ enum HighlightedItem
HLI_Globals
,
HLI_Pages
,
HLI_Examples
,
HLI_Search
HLI_Search
,
HLI_ClassVisible
,
HLI_NamespaceVisible
,
HLI_FileVisible
};
enum
ClassMemberHighlight
...
...
src/libdoxygen.pro.in
View file @
3b98221d
...
...
@@ -40,6 +40,7 @@ HEADERS = bufstr.h \
docvisitor.h \
dot.h \
doxygen.h \
doxygen_css.h \
entry.h \
example.h \
filedef.h \
...
...
src/libdoxygen.t
View file @
3b98221d
...
...
@@ -85,12 +85,17 @@ sub GenerateDep {
$
(
YACC
)
-
l
-
d
-
p
cppExpYY
constexp
.
y
-
o
ce_parse
.
c
-
rm
ce_parse
.
c
TO_C_CMD
=
sed
-
e
"s/\\\\/\\\\\\\\/g"
-
e
"s/\"/\\\\\"/g"
-
e
"s/^/\"/g"
-
e
"s/$$/\\\\n\"/g"
index_xsd
.
h:
index
.
xsd
cat
index
.
xsd
|
sed
-
e
"s/\\\\/\\\\\\\\/g"
-
e
"s/\"/\\\\\"/g"
-
e
"s/^/\"/g"
-
e
"s/$$/\\\\n\"/g"
>
index_xsd
.
h
cat
index
.
xsd
|
$
(
TO_C_CMD
)
>
index_xsd
.
h
compound_xsd
.
h:
compound
.
xsd
cat
compound
.
xsd
|
sed
-
e
"s/\\\\/\\\\\\\\/g"
-
e
"s/\"/\\\\\"/g"
-
e
"s/^/\"/g"
-
e
"s/$$/\\\\n\"/g"
>
compound_xsd
.
h
cat
compound
.
xsd
|
$
(
TO_C_CMD
)
>
compound_xsd
.
h
search_php
.
h:
search
.
php
cat
search
.
php
|
sed
-
e
"s/\\\\/\\\\\\\\/g"
-
e
"s/\"/\\\\\"/g"
-
e
"s/^/\"/g"
-
e
"s/$$/\\\\n\"/g"
>
search_php
.
h
cat
search
.
php
|
$
(
TO_C_CMD
)
>
search_php
.
h
doxygen_css
.
h:
doxygen
.
css
cat
doxygen
.
css
|
$
(
TO_C_CMD
)
>
doxygen_css
.
h
src/memberdef.cpp
View file @
3b98221d
...
...
@@ -1939,12 +1939,13 @@ void MemberDef::warnIfUndocumented()
t
=
"group"
,
d
=
gd
;
else
t
=
"file"
,
d
=
fd
;
static
bool
extractAll
=
Config_getBool
(
"EXTRACT_ALL"
);
//printf("warnIfUndoc: d->isLinkable()=%d isLinkable()=%d "
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot);
if
(
!
isLinkable
()
&&
if
(
(
!
hasUserDocumentation
()
&&
!
extractAll
)
&&
!
isFriendClass
()
&&
name
().
find
(
'@'
)
==-
1
&&
d
->
name
().
find
(
'@'
)
==-
1
&&
(
prot
!=
Private
||
Config_getBool
(
"EXTRACT_PRIVATE"
))
...
...
src/namespacedef.cpp
View file @
3b98221d
...
...
@@ -282,7 +282,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
{
pageTitle
=
theTranslator
->
trNamespaceReference
(
displayName
());
}
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
);
startFile
(
ol
,
getOutputFileBase
(),
name
(),
pageTitle
,
HLI_NamespaceVisible
);
if
(
getOuterScope
()
!=
Doxygen
::
globalScope
)
{
writeNavigationPath
(
ol
);
...
...
src/namespacedef.h
View file @
3b98221d
...
...
@@ -69,7 +69,7 @@ class NamespaceDef : public Definition
int
i
=
name
().
findRev
(
"::"
);
if
(
i
==-
1
)
i
=
0
;
else
i
+=
2
;
return
!
name
().
isEmpty
()
&&
name
().
at
(
i
)
!=
'@'
&&
hasDocumentation
()
&&
!
isReference
();
hasDocumentation
()
&&
!
isReference
()
&&
!
isHidden
()
;
}
bool
isLinkable
()
const
{
...
...
src/pre.l
View file @
3b98221d
...
...
@@ -2242,13 +2242,17 @@ void preprocessFile(const char *fileName,BufStr &output)
if (i<(int)tmp.length()) definition+=tmp.mid(i,tmp.length()-i);
// add define definition to the dictionary of defines for this file
Define *def = new Define;
def->name = ds.left(i_obrace);
def->definition = definition;
def->nargs = count;
def->isPredefined = TRUE;
def->nonRecursive = nonRecursive;
g_fileDefineDict->insert(def->name,def);
QCString dname = ds.left(i_obrace);
if (!dname.isEmpty())
{
Define *def = new Define;
def->name = dname;
def->definition = definition;
def->nargs = count;
def->isPredefined = TRUE;
def->nonRecursive = nonRecursive;
g_fileDefineDict->insert(def->name,def);
}
//printf("#define `%s' `%s' #nargs=%d\n",
// def->name.data(),def->definition.data(),def->nargs);
...
...
@@ -2270,10 +2274,17 @@ void preprocessFile(const char *fileName,BufStr &output)
def->name = ds.left(ine);
def->definition = ds.right(ds.length()-i_equals-1);
}
def->nargs = -1;
def->isPredefined = TRUE;
def->nonRecursive = nonRecursive;
g_fileDefineDict->insert(def->name,def);
if (!def->name.isEmpty())
{
def->nargs = -1;
def->isPredefined = TRUE;
def->nonRecursive = nonRecursive;
g_fileDefineDict->insert(def->name,def);
}
else
{
delete def;
}
//printf("#define `%s' `%s' #nargs=%d\n",
// def->name.data(),def->definition.data(),def->nargs);
...
...
src/pycode.h
View file @
3b98221d
...
...
@@ -15,11 +15,13 @@
*
*/
/* This code is based on the work done by the MoxyPyDoxy team
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada), executed
* as part of CS179e (Compiler design project) at the UC Riverside,
* under supervision of Peter H. Fröhlic.
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada)
* in Spring 2005 as part of CS 179E: Compiler Design Project
* at the University of California, Riverside; the course was
* taught by Peter H. Froehlich <phf@acm.org>.
*/
#ifndef PYCODE_H
#define PYCODE_H
...
...
src/pycode.l
View file @
3b98221d
...
...
@@ -15,11 +15,13 @@
*
*/
/* This code is based on the work done by the MoxyPyDoxy team
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada), executed
* as part of CS179e (Compiler design project) at the UC Riverside,
* under supervision of Peter H. Fröhlic
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada)
* in Spring 2005 as part of CS 179E: Compiler Design Project
* at the University of California, Riverside; the course was
* taught by Peter H. Froehlich <phf@acm.org>.
*/
%{
#include <stdio.h>
...
...
src/pyscanner.h
View file @
3b98221d
...
...
@@ -15,11 +15,13 @@
*
*/
/* This code is based on the work done by the MoxyPyDoxy team
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada), executed
* as part of CS179e (Compiler design project) at the UC Riverside,
* under supervision of Peter H. Fröhlic.
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada)
* in Spring 2005 as part of CS 179E: Compiler Design Project
* at the University of California, Riverside; the course was
* taught by Peter H. Froehlich <phf@acm.org>.
*/
#ifndef PYSCANNER_H
#define PYSCANNER_H
...
...
src/pyscanner.l
View file @
3b98221d
...
...
@@ -15,11 +15,13 @@
*
*/
/* This code is based on the work done by the MoxyPyDoxy team
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada), executed
* as part of CS179e (Compiler design project) at the UC Riverside,
* under supervision of Peter H. Fröhlic.
* (Linda Leong, Mike Rivera, Kim Truong, and Gabriel Estrada)
* in Spring 2005 as part of CS 179E: Compiler Design Project
* at the University of California, Riverside; the course was
* taught by Peter H. Froehlich <phf@acm.org>.
*/
%{
/*
...
...
@@ -80,6 +82,7 @@ static QCString docBlockName;
static bool docBlockInBody;
static bool docBlockJavaStyle;
static bool docBrief;
static bool docBlockSpecial;
static bool g_doubleQuote;
static bool g_specialBlock;
...
...
@@ -322,6 +325,7 @@ static void initTriDoubleQuoteBlock()
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = TRUE;
docBlockSpecial = yytext[3]=='!';
docBlock.resize(0);
g_doubleQuote = TRUE;
startCommentBlock(FALSE);
...
...
@@ -332,6 +336,7 @@ static void initTriSingleQuoteBlock()
docBlockContext = YY_START;
docBlockInBody = FALSE;
docBlockJavaStyle = TRUE;
docBlockSpecial = yytext[3]=='!';
docBlock.resize(0);
g_doubleQuote = FALSE;
startCommentBlock(FALSE);
...
...
@@ -390,8 +395,8 @@ PARAMNONEMPTY [^ \t\n():]
IDENTIFIER ({LETTER}|"_")({LETTER}|{DIGIT}|"_")*
BORDER ([^A-Za-z0-9])
TRISINGLEQUOTE "'''"
TRIDOUBLEQUOTE "\"\"\""
TRISINGLEQUOTE "'''"
(!)?
TRIDOUBLEQUOTE "\"\"\""
(!)?
LONGSTRINGCHAR [^\\"']
ESCAPESEQ ("\\")(.)
LONGSTRINGITEM ({LONGSTRINGCHAR}|{ESCAPESEQ})
...
...
@@ -1049,8 +1054,11 @@ STARTDOCSYMS ^{B}"##"/[^#]
if (g_specialBlock || g_expectModuleDocs)
{
QCString actualDoc=docBlock;
actualDoc.prepend("\\verbatim ");
actualDoc.append("\\endverbatim ");
if (!docBlockSpecial) // legacy unformatted docstring
{
actualDoc.prepend("\\verbatim ");
actualDoc.append("\\endverbatim ");
}
if (g_expectModuleDocs)
{
actualDoc.prepend("\\namespace "+g_moduleScope+"\\_linebr ");
...
...
@@ -1377,7 +1385,11 @@ static void parsePrototype(const QCString &text)
current->section = Entry::VARIABLEDOC_SEC;
// restore original scanner state
YY_BUFFER_STATE tmpBuf = YY_CURRENT_BUFFER;
yy_switch_to_buffer(orgState);
yy_delete_buffer(tmpBuf);
inputString = orgInputString;
inputPosition = orgInputPosition;
...
...
src/scanner.l
View file @
3b98221d
...
...
@@ -2142,6 +2142,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
{
current->type = current->type.mid(3);
}
if (isTypedef && current->type.left(8)!="typedef ")
{
current->type.prepend("typedef ");
}
bool needNewCurrent=FALSE;
if (!current->name.isEmpty() && current->section!=Entry::ENUM_SEC)
{
...
...
src/search.php
View file @
3b98221d
...
...
@@ -288,11 +288,8 @@ function main()
{
$query
=
$_GET
[
"query"
];
}
echo
"<input class=
\"
search
\"
type=
\"
text
\"
name=
\"
query
\"
value=
\"
$query
\"
size=
\"
20
\"
accesskey=
\"
s
\"
/>
\n
"
;
echo
"</span>
\n
"
;
echo
"</form>
\n
"
;
echo
"</div>
\n
"
;
echo
"<div class=
\"
searchresults
\"
>
\n
"
;
end_form
(
$query
);
echo
"
\n
<div class=
\"
searchresults
\"
>
\n
"
;
$results
=
array
();
$requiredWords
=
array
();
$forbiddenWords
=
array
();
...
...
src/search_php.h
View file @
3b98221d
...
...
@@ -288,11 +288,8 @@
" {
\n
"
" $query=$_GET[
\"
query
\"
];
\n
"
" }
\n
"
" echo
\"
<input class=
\\\"
search
\\\"
type=
\\\"
text
\\\"
name=
\\\"
query
\\\"
value=
\\\"
$query
\\\"
size=
\\\"
20
\\\"
accesskey=
\\\"
s
\\\"
/>
\\
n
\"
;
\n
"
" echo
\"
</span>
\\
n
\"
;
\n
"
" echo
\"
</form>
\\
n
\"
;
\n
"
" echo
\"
</div>
\\
n
\"
;
\n
"
" echo
\"
<div class=
\\\"
searchresults
\\\"
>
\\
n
\"
;
\n
"
" end_form($query);
\n
"
" echo
\"
\\
n<div class=
\\\"
searchresults
\\\"
>
\\
n
\"
;
\n
"
" $results = array();
\n
"
" $requiredWords = array();
\n
"
" $forbiddenWords = array();
\n
"
...
...
src/util.cpp
View file @
3b98221d
...
...
@@ -1136,35 +1136,38 @@ ClassDef *getResolvedClassRec(Definition *scope,
// see if we are dealing with a class or a typedef
if
(
d
->
definitionType
()
==
Definition
::
TypeClass
)
// d is a class
{
if
(
!
((
ClassDef
*
)
d
)
->
isArtificial
())
if
(
!
((
ClassDef
*
)
d
)
->
isTemplateArgument
())
// skip classes that
// are only there to
// represent a template
// argument
{
if
(
distance
<
minDistance
)
// found a definition that is "closer"
{
minDistance
=
distance
;
bestMatch
=
(
ClassDef
*
)
d
;
bestTypedef
=
0
;
bestTemplSpec
.
resize
(
0
);
}
else
if
(
distance
==
minDistance
&&
fileScope
&&
bestMatch
&&
fileScope
->
getUsedNamespaces
()
&&
d
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeNamespace
&&
bestMatch
->
getOuterScope
()
==
Doxygen
::
globalScope
)
{
// in case the distance is equal it could be that a class X
// is defined in a namespace and in the global scope. When searched
// in the global scope the distance is 0 in both cases. We have
// to choose one of the definitions: we choose the one in the
// namespace if the fileScope imports namespaces and the definition
// found was in a namespace while the best match so far isn't.
// Just a non-perfect heuristic but it could help in some situations
// (kdecore code is an example).
minDistance
=
distance
;
bestMatch
=
(
ClassDef
*
)
d
;
bestTypedef
=
0
;
bestTemplSpec
.
resize
(
0
);
}
if
(
distance
<
minDistance
)
// found a definition that is "closer"
{
minDistance
=
distance
;
bestMatch
=
(
ClassDef
*
)
d
;
bestTypedef
=
0
;
bestTemplSpec
.
resize
(
0
);
}
else
if
(
distance
==
minDistance
&&
fileScope
&&
bestMatch
&&
fileScope
->
getUsedNamespaces
()
&&
d
->
getOuterScope
()
->
definitionType
()
==
Definition
::
TypeNamespace
&&
bestMatch
->
getOuterScope
()
==
Doxygen
::
globalScope
)
{
// in case the distance is equal it could be that a class X
// is defined in a namespace and in the global scope. When searched
// in the global scope the distance is 0 in both cases. We have
// to choose one of the definitions: we choose the one in the
// namespace if the fileScope imports namespaces and the definition
// found was in a namespace while the best match so far isn't.
// Just a non-perfect heuristic but it could help in some situations
// (kdecore code is an example).
minDistance
=
distance
;
bestMatch
=
(
ClassDef
*
)
d
;
bestTypedef
=
0
;
bestTemplSpec
.
resize
(
0
);
}
}
}
else
if
(
d
->
definitionType
()
==
Definition
::
TypeMember
)
...
...
@@ -1173,32 +1176,49 @@ ClassDef *getResolvedClassRec(Definition *scope,
//printf(" member isTypedef()=%d\n",md->isTypedef());
if
(
md
->
isTypedef
())
// d is a typedef
{
//printf(" found typedef!\n");
// we found a symbol at this distance, but if it didn't
// resolve to a class, we still have to make sure that
// something at a greater distance does not match, since
// that symbol is hidden by this one.
if
(
distance
<
minDistance
)
QCString
args
=
md
->
argsString
();
if
(
args
.
isEmpty
())
// do not expand "typedef t a[4];"
{
QCString
spec
;
minDistance
=
distance
;
MemberDef
*
enumType
=
0
;
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
enumType
,
&
spec
);
if
(
cd
)
// shouldn't be 0, but could in some weird cases
//printf(" found typedef!\n");
// we found a symbol at this distance, but if it didn't
// resolve to a class, we still have to make sure that
// something at a greater distance does not match, since
// that symbol is hidden by this one.
if
(
distance
<
minDistance
)
{
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
bestMatch
=
cd
;
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
QCString
spec
;
minDistance
=
distance
;
MemberDef
*
enumType
=
0
;
ClassDef
*
cd
=
newResolveTypedef
(
fileScope
,
md
,
&
enumType
,
&
spec
);
if
(
cd
)
// shouldn't be 0, but could in some weird cases
{
//printf(" bestTypeDef=%p spec=%s\n",md,spec.data());
bestMatch
=
cd
;
bestTypedef
=
md
;
bestTemplSpec
=
spec
;
}
else
if
(
enumType
)
{
//printf(" is enum\n");
bestMatch
=
0
;
bestTypedef
=
enumType
;
bestTemplSpec
=
""
;
}
else
{
//printf(" no match\n");
}
}
else
if
(
enumType
)
else
{
bestMatch
=
0
;
bestTypedef
=
enumType
;
bestTemplSpec
=
""
;
//printf(" not the best match %d min=%d\n",distance,minDistance);
}
}
else
{
//printf(" not a simple typedef\n")
}
}
else
if
(
md
->
isEnumerate
())
{
...
...
@@ -1255,7 +1275,8 @@ ClassDef *getResolvedClass(Definition *scope,
const
char
*
n
,
MemberDef
**
pTypeDef
,
QCString
*
pTemplSpec
,
bool
mayBeUnlinkable
bool
mayBeUnlinkable
,
bool
mayBeHidden
)
{
g_resolvedTypedefs
.
clear
();
...
...
@@ -1276,7 +1297,10 @@ ClassDef *getResolvedClass(Definition *scope,
ClassDef
*
result
=
getResolvedClassRec
(
scope
,
fileScope
,
n
,
pTypeDef
,
pTemplSpec
);
if
(
!
mayBeUnlinkable
&&
result
&&
!
result
->
isLinkable
())
{
result
=
0
;
// don't link to artifical/hidden classes
if
(
!
mayBeHidden
||
!
result
->
isHidden
())
{
result
=
0
;
// don't link to artifical/hidden classes unless explicitly allowed
}
}
//printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>",
// n,result?result->name().data():"<none>");
...
...
src/util.h
View file @
3b98221d
...
...
@@ -151,7 +151,8 @@ ClassDef *getResolvedClass(Definition *scope,
const
char
*
key
,
MemberDef
**
pTypeDef
=
0
,
QCString
*
pTemplSpec
=
0
,
bool
mayBeUnlinkable
=
FALSE
);
bool
mayBeUnlinkable
=
FALSE
,
bool
mayBeHidden
=
FALSE
);
NamespaceDef
*
getResolvedNamespace
(
const
char
*
key
);
FileDef
*
findFileDef
(
const
FileNameDict
*
fnDict
,
const
char
*
n
,
bool
&
ambig
);
...
...
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