Commit b0cbd597 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3-rc3-20020215

parent 8fda55cd
DOXYGEN Version 1.3-rc3
DOXYGEN Version 1.3-rc3-20030215
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (01 February 2003)
Dimitri van Heesch (15 February 2003)
DOXYGEN Version 1.3_rc3
DOXYGEN Version 1.3_rc3_20030215
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (01 February 2003)
Dimitri van Heesch (dimitri@stack.nl) (15 February 2003)
1.3-rc3
1.3-rc3-20030215
......@@ -727,6 +727,12 @@ class ISection
virtual bool isProtected() const = 0;
};
class IUserDefined : public ISection
{
public:
virtual const IString * header() const = 0;
};
class ISectionIterator
{
public:
......
......@@ -727,6 +727,12 @@ class ISection
virtual bool isProtected() const = 0;
};
class IUserDefined : public ISection
{
public:
virtual const IString * header() const = 0;
};
class ISectionIterator
{
public:
......
......@@ -88,6 +88,8 @@ SectionHandler::SectionHandler(IBaseHandler *parent) : m_parent(parent)
m_members.setAutoDelete(TRUE);
addEndHandler("sectiondef",this,&SectionHandler::endSection);
addStartHandler("memberdef",this,&SectionHandler::startMember);
addStartHandler("header",this,&SectionHandler::startHeader);
addEndHandler("header",this,&SectionHandler::endHeader);
}
SectionHandler::~SectionHandler()
......@@ -115,6 +117,18 @@ void SectionHandler::startMember(const QXmlAttributes& attrib)
m_members.append(memHandler);
}
void SectionHandler::startHeader(const QXmlAttributes&)
{
m_header="";
m_curString="";
}
void SectionHandler::endHeader()
{
m_header = m_curString.stripWhiteSpace();
debug(2,"member header=`%s'\n",m_header.data());
}
void SectionHandler::initialize(CompoundHandler *ch)
{
QListIterator<MemberHandler> mli(m_members);
......
......@@ -34,12 +34,14 @@ class SectionIterator :
};
class SectionHandler : public ISection, public BaseHandler<SectionHandler>
class SectionHandler : public IUserDefined, public BaseHandler<SectionHandler>
{
public:
virtual void startMember(const QXmlAttributes& attrib);
virtual void startHeader(const QXmlAttributes& attrib);
virtual void startSection(const QXmlAttributes& attrib);
virtual void endSection();
virtual void endHeader();
SectionHandler(IBaseHandler *parent);
virtual ~SectionHandler();
......@@ -73,10 +75,17 @@ class SectionHandler : public ISection, public BaseHandler<SectionHandler>
void initialize(CompoundHandler *c);
// IUserDefined implementation
virtual const IString *header() const
{
return &m_header;
}
private:
IBaseHandler *m_parent;
SectionKind m_kind;
StringImpl m_kindString;
StringImpl m_header;
QList<MemberHandler> m_members;
};
......
......@@ -565,6 +565,11 @@ int main(int argc,char **argv)
printf(" Section kind=%s\n",sec->kindString()->latin1());
IMemberIterator *mli = sec->members();
IMember *mem;
if( sec->kind() == ISection::UserDefined )
{
IUserDefined *group = dynamic_cast<IUserDefined*>(sec);
printf(" Title=%s\n", group->header()->latin1() );
}
for (mli->toFirst();(mem=mli->current());mli->toNext())
{
ILinkedTextIterator *lti = mem->type();
......
......@@ -421,13 +421,6 @@ TMAKE_MOC = $QTDIR/bin/moc
EOF
fi
#if test "$f_platform" = "win32-g++"; then
# cat >> .tmakeconfig <<EOF
# TMAKE_LFLAGS += -D_WIN32
#EOF
#fi
if test "$f_english" = YES; then
cat >> .tmakeconfig <<EOF
TMAKE_CXXFLAGS += -DENGLISH_ONLY
......
......@@ -417,6 +417,8 @@ function's detailed documentation block.
comments) as a brief description. This used to be the default behaviour.
The new default is to treat a multi-line C++ comment block as a detailed
description. Set this tag to YES if you prefer the old behaviour instead.
Note that setting this tag to YES also means that rational rose comments
are not recognised any more.
\anchor cfg_details_at_top
<dt>\c DETAILS_AT_TOP <dd>
......
......@@ -25,10 +25,10 @@ to get the latest distribution, if you did not have it already.
This section is divided into the following sections:
<ul>
<li>\ref install_src_unix "Compiling from source on Unix"
<li>\ref install_bin_unix "Installating the binaries on Unix"
<li>\ref install_bin_unix "Installing the binaries on Unix"
<li>\ref unix_problems "Known compilation problems for Unix"
<li>\ref install_src_windows "Compiling from source on Windows"
<li>\ref install_bin_windows "Installating the binaries on Windows"
<li>\ref install_bin_windows "Installing the binaries on Windows"
<li>\ref build_tools "Tools used to develop doxygen"
</ul>
......@@ -158,7 +158,7 @@ Compilation is now done by performing the following steps:
</ol>
\section install_bin_unix Installating the binaries on Unix
\section install_bin_unix Installing the binaries on Unix
After the compilation of the source code do a <code>make install</code>
to install doxygen. If you downloaded the binary distribution for Unix,
......@@ -540,7 +540,7 @@ Compilation is now done by performing the following steps:
documentation can be generated.
</ol>
\section install_bin_windows Installating the binaries on Windows
\section install_bin_windows Installing the binaries on Windows
There is no fancy installation procedure at the moment (if anyone can
add it in a location independent way please let me know).
......
......@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.3-rc3), 28 languages
Currently (version 1.2.14-20020317), 28 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3_rc3
Version: 1.3_rc3_20030215
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -128,6 +128,8 @@
#define _OS_UNIXWARE7_
#elif !defined(_SCO_DS) && defined(__USLC__) && defined(__SCO_VERSION__)
#define _OS_UNIXWARE7_
#elif defined(__CYGWIN__)
#define _OS_CYGWIN_
#else
#error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
#endif
......
......@@ -74,6 +74,6 @@ win32:SOURCES += qfile_win32.cpp \
INCLUDEPATH = .
TMAKE_CXXFLAGS += -DQT_NO_CODECS -DQT_LITE_UNICODE
win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:TMAKE_CXXFLAGS += -D_WIN32 -D__CYGWIN__ -DALL_STATIC
win32-g++:TMAKE_CXXFLAGS += -D__CYGWIN__ -DALL_STATIC
OBJECTS_DIR = ../objects
DESTDIR = ../lib
......@@ -1171,7 +1171,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
addType();
g_code->codify(yytext);
}
<ClassName>{ID} {
<ClassName>{ID}("::"{ID})* {
g_curClassName=yytext;
addType();
generateClassOrGlobalLink(*g_code,yytext);
......
......@@ -543,12 +543,19 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
return tok;
}
while ((tok=doctokenizerYYlex()) &&
tok!=TK_WHITESPACE &&
tok!=TK_NEWPARA &&
tok!=TK_LISTITEM &&
tok!=TK_ENDLIST
tok!=TK_WHITESPACE &&
tok!=TK_NEWPARA &&
tok!=TK_LISTITEM &&
tok!=TK_ENDLIST
)
{
static QRegExp specialChar("[.,|()\\[\\]:;\\?]");
if (tok==TK_WORD && g_token->name.length()==1 &&
g_token->name.find(specialChar)!=-1)
{
// special character that ends the markup command
return tok;
}
if (!defaultHandleToken(parent,tok,children))
{
switch (tok)
......@@ -732,6 +739,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
DBG((" name=%s",g_token->name.data()));
}
DBG(("\n"));
reparsetoken:
QString tokenName = g_token->name;
switch (tok)
{
......@@ -767,8 +775,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
children.append(new DocWhiteSpace(parent," "));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
}
break;
case CMD_BOLD:
......@@ -776,8 +785,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,TRUE));
tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
children.append(new DocWhiteSpace(parent," "));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
}
break;
case CMD_CODE:
......@@ -785,8 +795,9 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,TRUE));
tok=handleStyleArgument(parent,children,tokenName);
children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE));
children.append(new DocWhiteSpace(parent," "));
if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," "));
if (tok==TK_NEWPARA) goto handlepara;
else if (tok==TK_WORD) goto reparsetoken;
}
break;
case CMD_HTMLONLY:
......@@ -1001,7 +1012,14 @@ handlepara:
return FALSE;
break;
case TK_URL:
children.append(new DocURL(parent,g_token->name,g_token->isEMailAddr));
if (g_insideHtmlLink)
{
children.append(new DocWord(parent,g_token->name));
}
else
{
children.append(new DocURL(parent,g_token->name,g_token->isEMailAddr));
}
break;
default:
return FALSE;
......@@ -1347,16 +1365,18 @@ void DocXRefItem::parse()
{
RefItem *item = refList->getRefItem(m_id);
ASSERT(item!=0);
m_file = refList->listName();
m_anchor = item->listAnchor;
m_title = refList->sectionTitle();
if (!item->text.isEmpty())
if (item)
{
docParserPushContext();
internalValidatingParseDoc(this,m_children,item->text);
docParserPopContext();
m_file = refList->listName();
m_anchor = item->listAnchor;
m_title = refList->sectionTitle();
if (!item->text.isEmpty())
{
docParserPushContext();
internalValidatingParseDoc(this,m_children,item->text);
docParserPopContext();
}
}
}
}
......@@ -3392,19 +3412,19 @@ int DocPara::handleCommand(const QString &cmdName)
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE));
retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE));
m_children.append(new DocWhiteSpace(this," "));
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break;
case CMD_BOLD:
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,TRUE));
retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,FALSE));
m_children.append(new DocWhiteSpace(this," "));
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break;
case CMD_CODE:
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,TRUE));
retval=handleStyleArgument(this,m_children,cmdName);
m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,FALSE));
m_children.append(new DocWhiteSpace(this," "));
if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," "));
break;
case CMD_BSLASH:
m_children.append(new DocSymbol(this,DocSymbol::BSlash));
......@@ -4255,7 +4275,7 @@ reparsetoken:
// the command ended normally, keep scanner for new tokens.
retval = 0;
}
else if (retval==TK_LISTITEM || retval==TK_ENDLIST)
else if (retval==TK_LISTITEM || retval==TK_ENDLIST || retval==TK_WORD)
{
tok = retval;
goto reparsetoken;
......
......@@ -1239,7 +1239,6 @@ static void findIncludedUsingDirectives()
{
fd->visited=FALSE;
}
fn=Doxygen::inputNameList.next();
}
// then recursively add using directives found in #include files
// to files that have not been visited.
......@@ -1247,11 +1246,14 @@ static void findIncludedUsingDirectives()
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
for (fni.toFirst();(fd=fni.current());++fni)
{
if (!fd->visited) fd->addIncludedUsingDirectives();
if (!fd->visited)
{
//printf("----- adding using directives for file %s\n",fd->name().data());
fd->addIncludedUsingDirectives();
}
}
fn=Doxygen::inputNameList.next();
}
}
......@@ -4419,6 +4421,10 @@ static void findMember(Entry *root,
{
Debug::print(Debug::FindMembers,0,
"1. funcName=`%s'\n",funcName.data());
if (funcName.left(9)=="operator ")
{
funcName = substitute(funcName,className+"::","");
}
if (!funcTempList.isEmpty()) // try with member specialization
{
mn=Doxygen::memberNameSDict[funcName+funcTempList];
......@@ -4677,9 +4683,10 @@ static void findMember(Entry *root,
{
warn_cont("%s ",md->typeString());
}
warn_cont("%s::%s%s\n",
cd->qualifiedNameWithTemplateParameters().data(),
md->name().data(),md->argsString());
QCString qScope = cd->qualifiedNameWithTemplateParameters();
if (!qScope.isEmpty()) warn_cont("%s::%s",qScope.data(),md->name().data());
if (md->argsString()) warn_cont("%s",md->argsString());
warn_cont("\n");
}
}
}
......
......@@ -27,7 +27,6 @@ win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\lib
win32-borland:LIBS += qtools.lib shell32.lib
win32-borland:TMAKE_LFLAGS += -L..\lib -L$(BCB)\lib\psdk
win32:TMAKE_CXXFLAGS += -DQT_NODLL
win32-g++:TMAKE_CXXFLAGS += -D_WIN32
INCLUDEPATH += ../qtools
OBJECTS_DIR = ../objects
TARGET = ../bin/doxytag
......@@ -651,26 +651,32 @@ void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local)
void FileDef::addIncludedUsingDirectives()
{
if (!visited)
if (visited) return;
visited=TRUE;
//printf("( FileDef::addIncludedUsingDirectives for file %s\n",name().data());
NamespaceList nl;
if (includeList) // file contains #includes
{
visited=TRUE;
NamespaceList nl;
if (includeList) // file contains #includes
{
QListIterator<IncludeInfo> iii(*includeList);
IncludeInfo *ii;
for (;(ii=iii.current());++iii) // foreach #include...
for (iii.toFirst();(ii=iii.current());++iii) // foreach #include...
{
if (ii->fileDef) // ...that is a known file
if (ii->fileDef && !ii->fileDef->visited) // ...that is a known file
{
// recurse into this file
ii->fileDef->addIncludedUsingDirectives();
}
}
}
{
QListIterator<IncludeInfo> iii(*includeList);
IncludeInfo *ii;
// iterate through list from last to first
for (iii.toLast();(ii=iii.current());--iii)
{
if (ii->fileDef)
if (ii->fileDef && ii->fileDef!=this)
{
NamespaceList *unl = ii->fileDef->usingDirList;
if (unl)
......@@ -681,14 +687,16 @@ void FileDef::addIncludedUsingDirectives()
{
// append each using directive found in a #include file
if (usingDirList==0) usingDirList = new NamespaceList;
//printf("Prepending used namespace %s to the list of file %s\n",
// nd->name().data(),name().data());
usingDirList->prepend(nd);
}
}
}
}
}
// add elements of nl to usingDirList
}
//printf(") end FileDef::addIncludedUsingDirectives for file %s\n",name().data());
}
......
......@@ -111,7 +111,6 @@ HEADERS = bufstr.h \
translator_sr.h \
translator_tw.h \
translator_ua.h \
treeview.h \
unistd.h \
util.h \
version.h \
......
......@@ -16,8 +16,10 @@
#!
#$ IncludeTemplate("lib.t");
LEX = flex
YACC = bison
LEX = flex
YACC = bison
PERL = perl
INCBUFSIZE = $(PERL) -n -e "s/YY_BUF_SIZE 16384/YY_BUF_SIZE 262144/g; print $$_;"
#${
sub GenerateDep {
......@@ -45,13 +47,13 @@ sub GenerateDep {
####################
#$ GenerateDep("scanner.cpp","scanner.l");
$(LEX) -PscanYY -t scanner.l >scanner.cpp
$(LEX) -PscanYY -t scanner.l | $(INCBUFSIZE) >scanner.cpp
#$ GenerateDep("code.cpp","code.l");
$(LEX) -PcodeYY -t code.l >code.cpp
$(LEX) -PcodeYY -t code.l | $(INCBUFSIZE) >code.cpp
#$ GenerateDep("pre.cpp","pre.l");
$(LEX) -PpreYY -t pre.l >pre.cpp
$(LEX) -PpreYY -t pre.l | $(INCBUFSIZE) >pre.cpp
#$ GenerateDep("declinfo.cpp","declinfo.l");
$(LEX) -PdeclinfoYY -t declinfo.l >declinfo.cpp
......@@ -75,6 +77,6 @@ sub GenerateDep {
$(YACC) -l -d -p cppExpYY constexp.y -o ce_parse.c
-rm ce_parse.c
treeview.h: treeview.js
cat treeview.js | sed -e "s/\\\\/\\\\\\\\/g" -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >treeview.h
#treeview.h: treeview.js
# cat treeview.js | sed -e "s/\\\\/\\\\\\\\/g" -e "s/\"/\\\\\"/g" -e "s/^/\"/g" -e "s/$$/\\\\n\"/g" >treeview.h
......@@ -1623,7 +1623,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defLitText+=' ';
BEGIN(SkipCPPComment);
}
<SkipCComment>"*/" {
<SkipCComment>[/]?"*/" {
if (yytext[0]=='/') outputChar('/');
outputChar('*');outputChar('/');
if (--g_commentCount<=0)
{
......@@ -1647,7 +1648,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<SkipCComment>. {
outputChar(*yytext);
}
<RemoveCComment>"*/" { BEGIN(g_lastCContext); }
<RemoveCComment>"*/" { BEGIN(g_lastCContext); }
<RemoveCComment>"//"
<RemoveCComment>"/*"
<RemoveCComment>[^*\n]+
......
......@@ -47,7 +47,7 @@
#define YY_NEVER_INTERACTIVE 1
/* -----------------------------------------------------------------
*
* statics
......@@ -181,6 +181,7 @@ static void initParser()
insideTryBlock = FALSE;
autoGroupStack.setAutoDelete(TRUE);
lastDefGroup.groupname.resize(0);
insideFormula = FALSE;
}
static void initEntry()
......@@ -959,7 +960,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
<FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ { // M$/Corba IDL interface
lineCount();
if (insideIDL || insideJava)
if (insideIDL || insideJava || insideCS)
{
isTypedef=FALSE;
current->section = Entry::INTERFACE_SEC;
......@@ -3899,6 +3900,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
<ReadFormulaShort>\n {
formulaText+=" ";
yyLineNr++;
if (lastFormulaContext==LineDoc ||
lastFormulaContext==AfterDocLine
)
......@@ -3922,7 +3924,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
insideFormula=FALSE;
BEGIN(lastFormulaContext);
}
<ReadFormulaLong>\n { formulaText+=*yytext; }
<ReadFormulaLong>\n { formulaText+=*yytext; yyLineNr++; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<ExampleDoc,PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs();
......@@ -4195,7 +4197,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
}
<ClassDocBrief>"<"{BR}{ATTR}">"
<ClassDocBrief>{BS}/{SECTIONCMD} {
<ClassDocBrief>{BS}/{SECTIONCMD} |
<ClassDocBrief>{B}*/{SECTIONCMD} {
current->brief=current->brief.stripWhiteSpace();
BEGIN( lastBriefContext );
}
......@@ -4445,12 +4448,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->doc += yytext;
yyLineNr++;
}
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->brief += "-";
}
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
current->brief += ".";
current->brief += "."; yyLineNr++;
}
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
......
/*-*- c-basic-offset: 2 -*-*/
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2003 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
......@@ -15,49 +16,93 @@
*
*/
/* OBS!
Til danskere og andet godtfolk:
Jeg har været i tvivl om (i hvert fald) følgende ord:
- Member
- Compound
- Namespace
- Interface
Jeg har besluttet (indtil videre) at lade følgende ord stå som de er,
da jeg selv overvejende bruger det engelske udtryk:
- Interface
- Typedef
- Union
(union ved jeg ikke engang, hvad jeg skal kalde på dansk...
udover måske 'union')
(Konstruktivt) input modtages med glæde!
/*
* Danish translation by
* Erik Søe Sørensen <eriksoe@daimi.au.dk>
*
* First version (not complete) for Doxygen 1.2.7
* Extended and revised for Doxygen 1.3
*/
/* Translator's notes:
Oversættelseskonventioner:
(Konventioner for konventioner:
'?' angiver oversættelser, jeg har været i tvivl om
'??' angiver tvivlsomme oversættelser
'..?' angiver ord, der endnu ikke er fundet en oversættelse til
'(do.)' angiver ord, der med vilje ikke er oversat, idet jeg selv
overvejende bruger det engelske udtryk
'(-> _) angiver ord, der er fundet en oversættelse til, men som jeg
vægrer mig ved at oversætte.
)
bug -> 'kendt fejl'
class -> klasse
compound -> 'sammensat type'
constructor -> konstruktør ?
destructor -> destruktør ?
event -> begivenhed ?
exception (-> undtagelse ?)
friend ..?
interface -> grænseflade ?
member -> medlem (TODO)
namespace -> (do.)
private -> privat
property -> egenskab?
protected -> beskyttet ??
public -> offentlig
slot ..?
source code -> kildekode
struct -> datastruktur
template (-> skabelon ?)
typedef -> typedefinition (?)
todo -> (do.)
union ..?
Specielle forbindelser:
'Inheritance diagram' -> Stamtræ (selvom Nedarvningsdiagram også gik an)
-----
(Konstruktivt) input modtages med glæde!
-- Erik Søe Sørensen <eriksoe@daimi.au.dk>
*/
#ifndef TRANSLATOR_DK_H
#define TRANSLATOR_DK_H
class TranslatorDanish : public TranslatorAdapter_1_2_7
class TranslatorDanish : public Translator
{
public:
// --- Language control methods -------------------
/*! Used for identification of the language. The identification
* should not be translated. It should be replaced by the name
/*! Used for identification of the language. The identification
* should not be translated. It should be replaced by the name
* of the language in English using lower-case characters only
* (e.g. "czech", "japanese", "russian", etc.). It should be equal to
* (e.g. "czech", "japanese", "russian", etc.). It should be equal to
* the identification used in language.cpp.
*/
virtual QCString idLanguage()
{ return "danish"; }
/*! Used to get the LaTeX command(s) for the language support. This method
* was designed for languages which do wish to use a babel package.
/*! Used to get the LaTeX command(s) for the language support.
* This method should return string with commands that switch
* LaTeX to the desired language. For example
* <pre>"\\usepackage[german]{babel}\n"
* </pre>
* or
* <pre>"\\usepackage{polski}\n"
* "\\usepackage[latin2]{inputenc}\n"
* "\\usepackage[T1]{fontenc}\n"
* </pre>
*/
virtual QCString latexLanguageSupportCommand()
{
return "danish";
return
"\\usepackage[danish]{babel}\n"
"\\usepackage[latin1]{inputenc}\n"
"\\usepackage[T1]{fontenc}\n";
}
/*! return the language charset. This will be used for the HTML output */
......@@ -76,37 +121,37 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trRelatedSubscript()
{ return "(Bemærk at disse ikke er medlems-funktioner.)"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
/*! header that is put before the detailed description of files,
* classes and namespaces. */
virtual QCString trDetailedDescription()
{ return "Detaljeret beskrivelse"; }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
{ return "Dokumentation af medlems-typedefs"; }
{ return "Dokumentation af medlems-typedefinitioner"; }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
{ return "Dokumentation af medlems-enumerationer"; }
// medlems-enumerationer -> 'indeholdte enumerationer'
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
{ return "Dokumentation af medlemsfunktioner"; }
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Felt-dokumentation";
}
else
{
return "Dokumentation af medlems-data";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Felt-dokumentation";
} else {
return "Dokumentation af feltvariable";
//medlems-data";
}
}
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
virtual QCString trMore()
{ return "Mere..."; }
/*! put in the class documentation */
......@@ -119,90 +164,85 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! this is the first part of a sentence that is followed by a class name */
virtual QCString trThisIsTheListOfAllMembers()
{ return "Dette er den komplette liste over medlemmer for "; }
{ return "Dette er den komplette liste over medlemmer i "; }
/*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers()
{ return ", inklusive alle nedarvede medlemmer."; }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="Automatisk genereret af Doxygen";
if (s) result+=(QCString)" for "+s;
result+=" ud fra kildekoden.";
result+=" ud fra kildekoden.";
return result;
}
/*! put after an enum name in the list of all members */
virtual QCString trEnumName()
{ return "enum-navn"; }
{ return "enumerationsnavn"; }
/*! put after an enum value in the list of all members */
virtual QCString trEnumValue()
{ return "enum-værdi"; }
{ return "enumerationsværdi"; }
/*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn()
{ return "defineret i"; }
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
/*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \\group command).
*/
virtual QCString trModules()
{ return "Moduler"; }
/*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy()
{ return "Klassehierarki"; }
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Datastrukturer";
}
else
{
return "Compound List";
} else {
return "Oversigt over sammensatte typer";
}
}
/*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList()
{ return "Filliste"; }
{ return "Filoversigt"; }
/*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles()
{ return "Header-filer"; }
{ return "Headerfiler"; }
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
{
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Data-felter";
return "Data-felter";
}
else
{
return "Compound Members";
return "Felter i sammensatte typer";
}
}
/*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Globale";
}
else
{
return "Fil-medlemmer";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Globale symboler";
} else {
return "Placering i filer"; // Fil-medlemmer"; //TODO
//"Globale definitioner" ?
}
}
......@@ -235,16 +275,13 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Her er datastrukturerne med korte beskrivelser:";
}
else
{
return "Her er klasserne, strukturerne, "
"unionerne og grænsefladerne med korte beskrivelser:";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Her er datastrukturerne med korte beskrivelser:";
} else {
return "Her er klasserne, datastrukturerne, "
"unionerne og grænsefladerne med korte beskrivelser:";
}
}
......@@ -252,39 +289,26 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trCompoundMembersDescription(bool extractAll)
{
QCString result="Her er en liste over alle ";
if (!extractAll)
{
if (!extractAll) {
result+="dokumenterede ";
}
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="felter i strukturer og unioner";
}
else
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
result+="felter i datastrukturer og unioner";
} else {
result+="klassemedlemmer";
}
result+=" med links til ";
if (!extractAll)
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="struktur/unions-dokumentationen for hvert felt:";
}
else
{
if (!extractAll) {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
result+="datastruktur/unions-dokumentationen for hvert felt:";
} else {
result+="klassedokumentationen for hvert medlem:";
}
}
else
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="de strukturer/unioner de hører til:";
}
else
{
result+="de klasser de hører til:";
} else {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
result+="de datastrukturer/unioner, de hører til:";
} else {
result+="de klasser, de hører til:";
}
}
return result;
......@@ -295,27 +319,24 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
{
QCString result="Her er en liste over alle ";
if (!extractAll) result+="dokumenterede ";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
result+="funktioner, variable, #defines, enumerationer "
"og typedefinitioner";
}
else
{
} else {
result+="fil-medlemmer";
}
result+=" med links til ";
if (extractAll)
result+="de filer de hører til:";
else
result+="dokumentationen:";
if (extractAll)
result+="de filer, de tilhører:";
else
result+="deres dokumentation:";
return result;
}
/*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription()
{ return "Her er de headerfiler der udgør API'en:"; }
{ return "Her er de headerfiler, der udgør API'en:"; }
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
......@@ -330,50 +351,47 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
{ return "Her er en liste over alle moduler:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
* description is given.
*/
virtual QCString trNoDescriptionAvailable()
{ return "Ikke beskrevet"; }
// index titles (the project name is prepended for these)
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
{ return "Dokumentation"; }
/*! This is used in LaTeX as the title of the chapter with the
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
virtual QCString trModuleIndex()
{ return "Modul-index"; }
{ return "Modul-indeks"; }
/*! This is used in LaTeX as the title of the chapter with the
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
virtual QCString trHierarchicalIndex()
{ return "Hierarkisk index"; }
{ return "Hierarkisk indeks"; }
/*! This is used in LaTeX as the title of the chapter with the
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
virtual QCString trCompoundIndex()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Indeks over datastrukturer";
}
else
{
return "Compound Index";
} else {
return "Indeks over sammensatte typer";
}
}
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
virtual QCString trFileIndex()
{ return "Fil-index"; }
virtual QCString trFileIndex()
{ return "Fil-indeks"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
......@@ -385,7 +403,13 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
* the documentation of all classes, structs and unions.
*/
virtual QCString trClassDocumentation()
{ return "Klasse-dokumentation"; }
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Datastruktur-documentation";
} else {
return "Klasse-dokumentation";
}
}
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
......@@ -407,53 +431,49 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
{ return "Reference-manual"; }
/*! This is used in the documentation of a file as a header before the
{ return "Referencemanual"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
virtual QCString trDefines()
{ return "#Defines"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
virtual QCString trFuncProtos()
{ return "Funktionsprototyper"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
virtual QCString trTypedefs()
{ return "Typedefs"; }
{ return "Typedefinitioner"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
{ return "Enumerationer"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
virtual QCString trFunctions()
{ return "Funktioner"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trVariables()
{ return "Variabler"; }
{ return "Variable"; }
/*! This is used in the documentation of a file as a header before the
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trEnumerationValues()
{ return "Enumerationsværdier"; }
/*! This is used in man pages as the author section. */
virtual QCString trAuthor()
{ return "Forfatter"; }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
......@@ -461,62 +481,59 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trDefineDocumentation()
{ return "#Define-dokumentation"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
{ return "Funktionsprototype-dokumentation"; }
{ return "Dokumentation af funktionsprototyper"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
{ return "Typedef-dokumentation"; }
{ return "Dokumentation af typedefinitioner"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
{ return "Dokumentation af enumerations-typer"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return "Dokumentation af enumerations-værdier"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
{ return "Funktions-dokumentation"; }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
{ return "Variabel-dokumentation"; }
/*! This is used in the documentation of a file/namespace/group before
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
virtual QCString trCompounds()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return "Datastrukturer";
}
else
{
return "Compounds";
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Datastrukturer";
} else {
return "Sammensatte typer";
}
}
/*! This is used in the standard footer of each page and indicates when
* the page was generated
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
virtual QCString trGeneratedAt(const char *date,const char *projName)
{
{
QCString result=(QCString)"Genereret "+date;
if (projName) result+=(QCString)" for "+projName;
result+=(QCString)" af";
......@@ -532,16 +549,16 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
return (QCString)"Nedarvningsdiagram for "+clName+":";
return (QCString)"Stamtræ for "+clName+":";
}
/*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly()
{ return "Kun til intern brug."; }
/*! this text is generated when the \\reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return "Metode overskrevet af interne grunde; "
{ return "Metoden er genimplementeret af interne grunde; "
"API'en er ikke påvirket."; }
/*! this text is generated when the \\warning command is used. */
......@@ -560,10 +577,6 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trDate()
{ return "Dato"; }
/*! this text is generated when the \\author command is used. */
virtual QCString trAuthors()
{ return "Forfatter(e)"; }
/*! this text is generated when the \\return command is used. */
virtual QCString trReturns()
{ return "Returnerer"; }
......@@ -579,7 +592,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions()
{ return "Exceptions"; }
/*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy()
{ return "Genereret af"; }
......@@ -587,10 +600,10 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
{ return "Namespace-liste"; }
{ return "Oversigt over namespaces"; }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
......@@ -606,17 +619,17 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
*/
virtual QCString trFriends()
{ return "Friends"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all
* related classes
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return "Friends og relateret funktions-dokumentation"; } //??
{ return "Dokumentation af friends og af relaterede funktioner"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
......@@ -630,9 +643,9 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
switch(compType)
{
case ClassDef::Class: result+=" Klasse-"; break;
case ClassDef::Struct: result+=" Struktur-"; break;
case ClassDef::Struct: result+=" Datastruktur-"; break;
case ClassDef::Union: result+=" Union-"; break;
case ClassDef::Interface: result+=" Interface-"; break;
case ClassDef::Interface: result+=" Grænseflade-"; break;
case ClassDef::Exception: result+=" Exception-"; break;
}
if (isTemplate) result+="template-";
......@@ -644,7 +657,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trFileReference(const char *fileName)
{
QCString result=fileName;
result+=" Fil-reference";
result+=" filreference";
return result;
}
......@@ -652,31 +665,31 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trNamespaceReference(const char *namespaceName)
{
QCString result=namespaceName;
result+=" Namespace-reference";
result+=" namespace-reference";
return result;
}
virtual QCString trPublicMembers()
{ return "Public Methods"; }
{ return "Offentlige metoder"; }
virtual QCString trPublicSlots()
{ return "Public Slots"; }
{ return "Offentlige slots"; }
virtual QCString trSignals()
{ return "Signals"; }
{ return "Signaler"; }
virtual QCString trStaticPublicMembers()
{ return "Static Public Methods"; }
{ return "Statiske, offentlige metoder"; }
virtual QCString trProtectedMembers()
{ return "Protected Methods"; }
{ return "Beskyttede metoder"; }
virtual QCString trProtectedSlots()
{ return "Protected Slots"; }
{ return "Beskyttede slots"; }
virtual QCString trStaticProtectedMembers()
{ return "Static Protected Methods"; }
{ return "Statiske, beskyttede metoder"; }
virtual QCString trPrivateMembers()
{ return "Private Methods"; }
{ return "Private metoder"; }
virtual QCString trPrivateSlots()
{ return "Private Slots"; }
{ return "Private slots"; }
virtual QCString trStaticPrivateMembers()
{ return "Static Private Methods"; }
{ return "Statiske, private metoder"; }
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
*/
......@@ -685,29 +698,27 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
QCString result;
int i;
// the inherits list contain `numEntries' classes
for (i=0;i<numEntries;i++)
{
for (i=0;i<numEntries;i++) {
// use generateMarker to generate placeholders for the class links!
result+=generateMarker(i); // generate marker for entry i in the list
result+=generateMarker(i); // generate marker for entry i in the list
// (order is left to right)
if (i!=numEntries-1) // not the last entry, so we need a separator
{
if (i<numEntries-2) // not the fore last entry
if (i!=numEntries-1) { // not the last entry, so we need a separator
if (i<numEntries-2) // not the fore last entry
result+=", ";
else // the fore last entry
result+=", and ";
result+=" og ";
}
}
return result;
return result;
}
/*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled.
*/
virtual QCString trInheritsList(int numEntries)
{
return "Inherits "+trWriteList(numEntries)+".";
return "Nedarver "+trWriteList(numEntries)+".";
}
/*! used in class documentation to produce a list of super classes,
......@@ -715,10 +726,10 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
*/
virtual QCString trInheritedByList(int numEntries)
{
return "Inherited by "+trWriteList(numEntries)+".";
return "Nedarvet af "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
/*! used in member documentation blocks to produce a list of
* members that are hidden by this one.
*/
virtual QCString trReimplementedFromList(int numEntries)
......@@ -731,7 +742,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
*/
virtual QCString trReimplementedInList(int numEntries)
{
return "Reimplemented in "+trWriteList(numEntries)+".";
return "Reimplementeret i "+trWriteList(numEntries)+".";
}
/*! This is put above each page as a link to all members of namespaces. */
......@@ -740,27 +751,27 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
{
QCString result="Her er en liste over alle ";
if (!extractAll) result+="dokumenterede ";
result+="namespace-medlemmer med links til ";
if (extractAll)
if (extractAll)
result+="namespace-dokumentationen for hvert medlem:";
else
result+="de namespaces, de hører til:";
else
result+="det namespace, de hører til:";
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
{ return "Namespace Index"; }
{ return "Namespace-indeks"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual QCString trNamespaceDocumentation()
{ return "Namespace Dokumentation"; }
{ return "Namespace-dokumentation"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
......@@ -783,17 +794,17 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"The documentation for this ";
QCString result=(QCString)"Dokumentationen for denne ";
switch(compType)
{
case ClassDef::Class: result+="class"; break;
case ClassDef::Struct: result+="struct"; break;
case ClassDef::Class: result+="klasse"; break;
case ClassDef::Struct: result+="datastruktur"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
case ClassDef::Interface: result+="grænseflade"; break;
case ClassDef::Exception: result+="exception"; break;
}
result+=" was generated from the following file";
if (single) result+=":"; else result+="s:";
result+=" blev genereret ud fra følgende fil";
if (single) result+=":"; else result+="er:";
return result;
}
......@@ -816,7 +827,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trMainPage()
{ return "Hovedside"; }
/*! This is used in references to page that are put in the LaTeX
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
......@@ -828,7 +839,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trSources()
{
return "Sources";
return "Kilder"; //??
}
virtual QCString trDefinedAtLineInSourceFile()
{
......@@ -845,7 +856,8 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
virtual QCString trDeprecated()
{
return "Deprecated";
return "Frarådes - fortidslevn"; // ?? - What is the context?
// "Ugleset" :)
}
//////////////////////////////////////////////////////////////////////////
......@@ -865,7 +877,8 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
return "Constructor & Destructor dokumentation";
return "Dokumentation af konstruktører og destruktører";
// "Constructor & Destructor dokumentation";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
......@@ -880,12 +893,12 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Text for the \\pre command */
virtual QCString trPrecondition()
{
return "Precondition";
return "Forudsætninger (precondition)";
}
/*! Text for the \\post command */
virtual QCString trPostcondition()
{
return "Postcondition";
return "Resultat (postcondition)";
}
/*! Text for the \\invariant command */
virtual QCString trInvariant()
......@@ -900,11 +913,11 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Text used the source code in the file index */
virtual QCString trCode()
{
return "code";
return "kildekode";
}
virtual QCString trGraphicalHierarchy()
{
return "Grafiske klassehierarki";
return "Grafisk klassehierarki";
}
virtual QCString trGotoGraphicalHierarchy()
{
......@@ -916,59 +929,56 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
}
virtual QCString trPageIndex()
{
return "Page Index";
return "Sideindeks";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
virtual QCString trNote()
{
return "Note";
}
virtual QCString trPublicTypes()
{
return "Public Typer";
return "Offentlige typer";
}
virtual QCString trPublicAttribs()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Datafelter";
}
else
{
return "Public Attributes";
} else {
return "Offentlige attributter";
}
}
virtual QCString trStaticPublicAttribs()
{
return "Static Public Attributes";
return "Statiske, offentlige attributter";
}
virtual QCString trProtectedTypes()
{
return "Protected Typer";
return "Beskyttede typer";
}
virtual QCString trProtectedAttribs()
{
return "Protected Attributes";
return "Beskyttede attributter";
}
virtual QCString trStaticProtectedAttribs()
{
return "Static Protected Attributes";
return "Statiske, beskyttede attributter";
}
virtual QCString trPrivateTypes()
{
return "Private Types";
return "Private typer";
}
virtual QCString trPrivateAttribs()
{
return "Private Attributes";
return "Private attributter";
}
virtual QCString trStaticPrivateAttribs()
{
return "Static Private Attributes";
return "Statiske, private attributter";
}
//////////////////////////////////////////////////////////////////////////
......@@ -983,7 +993,7 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
return "Todo List";
return "Todo-liste";
}
//////////////////////////////////////////////////////////////////////////
......@@ -1000,18 +1010,19 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
}
virtual QCString trAttention()
{
return "Attention";
return "OBS";
}
virtual QCString trInclByDepGraph()
{
return "Denne graf viser, hvilke filer der direkte eller "
"indirekte inkluderer denne fil:";
return
"Denne graf viser, hvilke filer der direkte eller "
"indirekte inkluderer denne fil:";
}
virtual QCString trSince()
{
return "Siden";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.5
//////////////////////////////////////////////////////////////////////////
......@@ -1022,60 +1033,71 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
return "Graf-forklaring";
}
/*! page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs()
virtual QCString trLegendDocs() //TODO
{
return
"Denne side forklarer, hvordan man skal fortolke de grafer, "
"der genereres af doxygen.<p>\n"
"Consider the following example:\n"
return
"Denne side forklarer, hvordan man skal fortolke de grafer, "
"der genereres af doxygen.<p>\n"
"Tag følgende eksempel:\n"
"\\code\n"
"/*! Invisible class because of truncation */\n"
"/*! Klasse der er usynlig pg.a. beskæring */\n"
"class Invisible { };\n\n"
"/*! Truncated class, inheritance relation is hidden */\n"
"/*! Beskåret klasse: nedarvningsrelation er skjult */\n"
"class Truncated : public Invisible { };\n\n"
"/* Class not documented with doxygen comments */\n"
"/* Klasse der ikke er dokumenteret med doxygen-kommentarer */\n"
"class Undocumented { };\n\n"
"/*! Class that is inherited using public inheritance */\n"
"/*! Klasse der nedarves fra offentligt */\n"
"class PublicBase : public Truncated { };\n\n"
"/*! Class that is inherited using protected inheritance */\n"
"/*! En template-klasse */\n"
"template<class T> class Templ { };\n\n"
"/*! Klasse der nedarves fra beskyttet */\n"
"class ProtectedBase { };\n\n"
"/*! Class that is inherited using private inheritance */\n"
"/*! Klasse der nedarves fra privat */\n"
"class PrivateBase { };\n\n"
"/*! Class that is used by the Inherited class */\n"
"/*! Klasse der bruges af Inherited-klassen */\n"
"class Used { };\n\n"
"/*! Super class that inherits a number of other classes */\n"
"/*! Klasse der nedarver en masse andre klasser */\n"
"class Inherited : public PublicBase,\n"
" protected ProtectedBase,\n"
" private PrivateBase,\n"
" public Undocumented\n"
" public Templ<int>\n"
"{\n"
" private:\n"
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
"If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
"is set to 200 this will result in the following graph:"
"Hvis \\c MAX_DOT_GRAPH_HEIGHT i konfigurationsfilen "
"er sat til 240, vil dette resultere i følgende graf:"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
"The boxes in the above graph have the following meaning:\n"
"De forskellige slags kasser i ovenstående graf har følgende "
"betydninger:\n"
"<ul>\n"
"<li>A filled black box represents the struct or class for which the "
"graph is generated.\n"
"<li>A box with a black border denotes a documented struct or class.\n"
"<li>A box with a grey border denotes an undocumented struct or class.\n"
"<li>A box with a red border denotes a documented struct or class for\n"
"which not all inheritance/containment relations are shown. A graph is "
"truncated if it does not fit within the specified boundaries."
"<li>%En udfyldt sort kasse repræsenterer den datastruktur eller "
"klasse, grafen er genereret for.\n"
"<li>%En kasse med sort kant betegner en dokumenteret datastruktur "
" eller klasse.\n"
"<li>%En kasse med grå kant betegner en udokumenteret datastruktur "
" eller klasse.\n"
"<li>%En kasse med rød kant betegner en dokumenteret datastruktur "
" eller klasse, for hvilken ikke alle "
"nedarvnings- og indeholdelses-relationer er vist. "
"%Grafer beskæres, hvis de fylder mere end de specificerede dimensioner.\n "
"</ul>\n"
"The arrows have the following meaning:\n"
"Pilene har følgende betydninger:\n"
"<ul>\n"
"<li>A dark blue arrow is used to visualize a public inheritance "
"relation between two classes.\n"
"<li>A dark green arrow is used for protected inheritance.\n"
"<li>A dark red arrow is used for private inheritance.\n"
"<li>A purple dashed arrow is used if a class is contained or used "
"by another class. The arrow is labeled with the variable(s) "
"through which the pointed class or struct is accessible. \n"
"<li>%En mørkeblå pil viser en offentlig nedarvningsrelation "
"mellem to klasser.\n"
"<li>%En mørkegrøn pil viser en beskyttet nedarvningsrelation.\n"
"<li>%En mørkerød pil viser en privat nedarvningsrelation.\n"
"<li>%En lilla, stiplet pil bruges, når en klasse er indeholdt i "
"eller benyttes af en anden klasse. "
"Ved pilen står navnet på den eller de variable, gennem hvilke(n) "
"den klasse, pilen peger på, er tilgængelig.\n"
"<li>%En gul, stiplet pil viser forholdet mellem en template-instans "
"og den template-klasse, den er instantieret fra."
"Ved pilen står template-parametrene brugt ved instantieringen.\n"
"</ul>\n";
}
/*! text for the link to the legend page */
......@@ -1083,11 +1105,11 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
{
return "forklaring til graf";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.0
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */
virtual QCString trTest()
{
......@@ -1116,12 +1138,12 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Used as a section header for IDL properties */
virtual QCString trProperties()
{
return "Properties";
return "Egenskaber";
}
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
return "Property-dokumentation";
return "Egenskabsdokumentation";
}
//////////////////////////////////////////////////////////////////////////
......@@ -1131,17 +1153,14 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return "Interfaces";
return "Grænseflader";
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) {
return "Datastrukturer";
}
else
{
} else {
return "Klasser";
}
}
......@@ -1153,37 +1172,39 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
/*! Title of the package index page */
virtual QCString trPackageList()
{
return "Pakkeliste";
return "Pakkeoversigt";
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
return "Here are the packages with brief descriptions (if available):";
return
"Her er en liste over pakkerne, med korte beskrivelser "
"(hvor en sådan findes):";
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
return "Packages";
return "Pakker";
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return "Package Dokumentation";
return "Pakke-dokumentation";
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
return "Værdi:";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.5
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \\bug item */
virtual QCString trBug()
{
return "Fejl";
return "Kendte fejl";
}
/*! Used as the header of the bug list */
virtual QCString trBugList()
......@@ -1195,12 +1216,19 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
// new since 1.2.6
//////////////////////////////////////////////////////////////////////////
/*! Used as ansicpg for RTF file */
/*! Used as ansicpg for RTF file
* (used table extract:)
* <pre>
* Charset Name Charset Value(hex) Codepage number
* ------------------------------------------------------
* ANSI_CHARSET 0 (x00) 1252
* </pre>
*/
virtual QCString trRTFansicp()
{
return "1252";
}
/*! Used as ansicpg for RTF fcharset */
virtual QCString trRTFCharSet()
{
......@@ -1212,96 +1240,204 @@ class TranslatorDanish : public TranslatorAdapter_1_2_7
{
return "Indeks";
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trClass(bool first_capital, bool singular)
{
QCString result((first_capital ? "Klasse" : "klasse"));
if (first_capital) toupper(result.at(0));
if (!singular) result+="r";
return result;
{
//QCString result(first_capital ? "Klasse" : "klasse");
//if (first_capital) result.at(0) = toupper(result.at(0));
//if (!singular) result+="r";
//return result;
return createNoun(first_capital, singular, "klasse", "r");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trFile(bool first_capital, bool singular)
{
QCString result((first_capital ? "Fil" : "fil"));
if (!singular) result+="er";
return result;
{
//QCString result((first_capital ? "Fil" : "fil"));
//if (!singular) result+="er";
//return result;
return createNoun(first_capital, singular, "fil", "er");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trNamespace(bool first_capital, bool singular)
{
QCString result((first_capital ? "Namespace" : "namespace"));
if (!singular) result+="s";
return result;
{
//QCString result((first_capital ? "Namespace" : "namespace"));
//if (!singular) result+="s";
//return result;
return createNoun(first_capital, singular, "namespace", "s");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trGroup(bool first_capital, bool singular)
{
QCString result((first_capital ? "Gruppe" : "gruppe"));
if (!singular) result+="r";
return result;
{
//QCString result((first_capital ? "Gruppe" : "gruppe"));
//if (!singular) result+="r";
//return result;
return createNoun(first_capital, singular, "gruppe", "r");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trPage(bool first_capital, bool singular)
{
QCString result((first_capital ? "Side" : "side"));
if (!singular) result+="r";
return result;
{
//QCString result((first_capital ? "Side" : "side"));
//if (!singular) result+="r";
//return result;
return createNoun(first_capital, singular, "side", "r");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trMember(bool first_capital, bool singular)
{
QCString result((first_capital ? "Medlem" : "medlem"));
if (!singular) result+="mer";
return result;
{
//QCString result((first_capital ? "Medlem" : "medlem"));
//if (!singular) result+="mer";
//return result;
return createNoun(first_capital, singular, "medlem", "mer");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trField(bool first_capital, bool singular)
{
QCString result((first_capital ? "Felt" : "felt"));
if (!singular) result+="er";
return result;
{
//QCString result((first_capital ? "Felt" : "felt"));
//if (!singular) result+="er";
//return result;
return createNoun(first_capital, singular, "felt", "er");
}
/*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names
* be followed by a single name or by a list of names
* of the category.
*/
virtual QCString trGlobal(bool first_capital, bool singular)
{
QCString result((first_capital ? "Global" : "global"));
if (!singular) result+="e";
return result;
{
//QCString result((first_capital ? "Global" : "global"));
//if (!singular) result+="e";
//return result;
return createNoun(first_capital, singular, "global", "e");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.7
//////////////////////////////////////////////////////////////////////////
/*! This text is generated when the \\author command is used and
* for the author section in man pages. */
virtual QCString trAuthor(bool first_capital, bool singular)
{
//QCString result((first_capital ? "Forfatter" : "forfatter"));
//if (!singular) result+="e";
//return result;
return createNoun(first_capital, singular, "forfatter", "e");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.11
//////////////////////////////////////////////////////////////////////////
/*! This text is put before the list of members referenced by a member
*/
virtual QCString trReferences()
{
return "Referencer";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual QCString trImplementedFromList(int numEntries)
{
return "Implementerer "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
* all members that implement this abstract member.
*/
virtual QCString trImplementedInList(int numEntries)
{
return "Implementeret i "+trWriteList(numEntries)+".";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual QCString trRTFTableOfContents()
{
return "Indholdsfortegnelse";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual QCString trDeprecatedList()
{
return "Liste over fortidslevn, hvis brug frarådes";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.18
//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual QCString trEvents()
{
return "Begivenheder";
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return "Begivenhedsdokumentation";
}
/*---------- For internal use: ----------------------------------------*/
protected:
/*! For easy flexible-noun implementation.
* \internal
*/
QCString createNoun(bool first_capital, bool singular,
const char* base, const char* plurSuffix)
{
QCString result(base);
if (first_capital) result.at(0) = toupper(result.at(0));
if (!singular) result+=plurSuffix;
return result;
}
};
#endif
......@@ -41,11 +41,13 @@
* -------------+------------------------------------------------------------
* 2002-10-22 | Update for new since 1.2.18
* -------------+------------------------------------------------------------
* 2003-02-04 | Corrected typo. Thanks to Bertrand M. :)
* -------------+------------------------------------------------------------
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
class TranslatorFrench : public TranslatorAdapter_1_2_17
class TranslatorFrench : public Translator
{
public:
QCString idLanguage()
......@@ -205,7 +207,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
/*! This is an introduction to the annotated compound list. */
QCString trCompoundListDescription()
{ return "Liste des classes, des strutures et des unions "
{ return "Liste des classes, des structures et des unions "
"avec une brève description :";
}
......@@ -384,7 +386,7 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
* of documentation blocks for enumeration types
*/
QCString trEnumerationTypeDocumentation()
{ return "Documentation du type de l'énumeration"; }
{ return "Documentation du type de l'énumération"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
......@@ -959,13 +961,13 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
"</ul>\n"
"Les flèches ont la signification suivante:\n"
"<ul>\n"
"<li>Une flèche bleu foncé est utilisée pour visuliser une relation d'héritage public "
"<li>Une flèche bleu foncé est utilisée pour visualiser une relation d'héritage public "
"entre deux classes.\n"
"<li>Une flèche vert foncé est utilisée pour une relation d'héritage protégé.\n"
"<li>Une flèche rouge foncé est utilisée pour une relation d'héritage privé.\n"
"<li>Une flèche violette en pointillés est utilisée si une classe est contenue ou "
"utilisée par une autre classe. La flèche est étiquetée avec la ou les variable(s) "
"qui permettent d'acceder à la classe ou structure pointée. \n"
"qui permettent d'accéder à la classe ou structure pointée. \n"
"</ul>\n";
}
/*! text for the link to the legend page */
......
"//**************************************************************** \n"
"// You are free to copy the \"Folder-Tree\" script as long as you \n"
"// keep this copyright notice: \n"
"// Script found in: http://www.geocities.com/Paris/LeftBank/2178/ \n"
"// Author: Marcelino Alves Martins (martins@hks.com) December '97. \n"
"//**************************************************************** \n"
" \n"
"//Log of changes: \n"
"// 17 Feb 98 - Fix initialization flashing problem with Netscape\n"
"// \n"
"// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS; \n"
"// make the ftien4 a js file \n"
"// \n"
"// DvH: Dec 2000 - Made some minor changes to support external \n"
"// references\n"
" \n"
"// Definition of class Folder \n"
"// ***************************************************************** \n"
" \n"
"function Folder(folderDescription, tagName, hreference) //constructor \n"
"{ \n"
" //constant data \n"
" this.desc = folderDescription \n"
" this.tagName = tagName\n"
" this.hreference = hreference \n"
" this.id = -1 \n"
" this.navObj = 0 \n"
" this.iconImg = 0 \n"
" this.nodeImg = 0 \n"
" this.isLastNode = 0 \n"
" \n"
" //dynamic data \n"
" this.isOpen = true \n"
" this.iconSrc = \"ftv2folderopen.png\" \n"
" this.children = new Array \n"
" this.nChildren = 0 \n"
" \n"
" //methods \n"
" this.initialize = initializeFolder \n"
" this.setState = setStateFolder \n"
" this.addChild = addChild \n"
" this.createIndex = createEntryIndex \n"
" this.hide = hideFolder \n"
" this.display = display \n"
" this.renderOb = drawFolder \n"
" this.totalHeight = totalHeight \n"
" this.subEntries = folderSubEntries \n"
" this.outputLink = outputFolderLink \n"
"} \n"
" \n"
"function setStateFolder(isOpen) \n"
"{ \n"
" var subEntries \n"
" var totalHeight \n"
" var fIt = 0 \n"
" var i=0 \n"
" \n"
" if (isOpen == this.isOpen) \n"
" return \n"
" \n"
" if (browserVersion == 2) \n"
" { \n"
" totalHeight = 0 \n"
" for (i=0; i < this.nChildren; i++) \n"
" totalHeight = totalHeight + this.children[i].navObj.clip.height \n"
" subEntries = this.subEntries() \n"
" if (this.isOpen) \n"
" totalHeight = 0 - totalHeight \n"
" for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) \n"
" indexOfEntries[fIt].navObj.moveBy(0, totalHeight) \n"
" } \n"
" this.isOpen = isOpen \n"
" propagateChangesInState(this) \n"
"} \n"
" \n"
"function propagateChangesInState(folder) \n"
"{ \n"
" var i=0 \n"
" \n"
" if (folder.isOpen) \n"
" { \n"
" if (folder.nodeImg) \n"
" if (folder.isLastNode) \n"
" folder.nodeImg.src = \"ftv2mlastnode.png\" \n"
" else \n"
" folder.nodeImg.src = \"ftv2mnode.png\" \n"
" folder.iconImg.src = \"ftv2folderopen.png\" \n"
" for (i=0; i<folder.nChildren; i++) \n"
" folder.children[i].display() \n"
" } \n"
" else \n"
" { \n"
" if (folder.nodeImg) \n"
" if (folder.isLastNode) \n"
" folder.nodeImg.src = \"ftv2plastnode.png\" \n"
" else \n"
" folder.nodeImg.src = \"ftv2pnode.png\" \n"
" folder.iconImg.src = \"ftv2folderclosed.png\" \n"
" for (i=0; i<folder.nChildren; i++) \n"
" folder.children[i].hide() \n"
" } \n"
"} \n"
" \n"
"function hideFolder() \n"
"{ \n"
" if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n"
" return \n"
" this.navObj.style.display = \"none\" \n"
" } else { \n"
" if (this.navObj.visibility == \"hidden\") \n"
" return \n"
" this.navObj.visibility = \"hidden\" \n"
" } \n"
" \n"
" this.setState(0) \n"
"} \n"
" \n"
"function initializeFolder(level, lastNode, leftSide) \n"
"{ \n"
"var j=0 \n"
"var i=0 \n"
"var numberOfFolders \n"
"var numberOfDocs \n"
"var nc \n"
" \n"
" nc = this.nChildren \n"
" \n"
" this.createIndex() \n"
" \n"
" var auxEv = \"\" \n"
" \n"
" if (browserVersion > 0) \n"
" auxEv = \"<a href='javascript:clickOnNode(\"+this.id+\")'>\" \n"
" else \n"
" auxEv = \"<a>\" \n"
" \n"
" if (level>0) \n"
" if (lastNode) //the last 'brother' in the children array \n"
" { \n"
" this.renderOb(leftSide + auxEv + \"<img name='nodeIcon\" + this.id + \"' src='ftv2mlastnode.png' width=16 height=22 border=0></a>\") \n"
" leftSide = leftSide + \"<img src='ftv2blank.png' width=16 height=22>\" \n"
" this.isLastNode = 1 \n"
" } \n"
" else \n"
" { \n"
" this.renderOb(leftSide + auxEv + \"<img name='nodeIcon\" + this.id + \"' src='ftv2mnode.png' width=16 height=22 border=0></a>\") \n"
" leftSide = leftSide + \"<img src='ftv2vertline.png' width=16 height=22>\" \n"
" this.isLastNode = 0 \n"
" } \n"
" else \n"
" this.renderOb(\"\") \n"
" \n"
" if (nc > 0) \n"
" { \n"
" level = level + 1 \n"
" for (i=0 ; i < this.nChildren; i++) \n"
" { \n"
" if (i == this.nChildren-1) \n"
" this.children[i].initialize(level, 1, leftSide) \n"
" else \n"
" this.children[i].initialize(level, 0, leftSide) \n"
" } \n"
" } \n"
"} \n"
" \n"
"function drawFolder(leftSide) \n"
"{ \n"
" if (browserVersion == 2) { \n"
" if (!doc.yPos) \n"
" doc.yPos=8 \n"
" doc.write(\"<layer id='folder\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" } \n"
" if (browserVersion == 3) \n"
" {\n"
" doc.write(\"<div id='folder\" + this.id + \"' style='visibility:hide;'>\") \n"
" }\n"
" \n"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
" doc.write(\" id='folder\" + this.id + \"' style='position:block;' \") \n"
" doc.write(\" border=0 cellspacing=0 cellpadding=0>\") \n"
" doc.write(\"\\n<tr><td>\") \n"
" doc.write(leftSide) \n"
" this.outputLink() \n"
" doc.write(\"<img name='folderIcon\" + this.id + \"' \") \n"
" doc.write(\"src='\" + this.iconSrc+\"' border=0></a>\") \n"
" doc.write(\"</td>\\n<td valign=middle nowrap>\") \n"
" if (USETEXTLINKS) \n"
" { \n"
" this.outputLink() \n"
" doc.write(this.desc + \"</a>\") \n"
" } \n"
" else \n"
" doc.write(this.desc) \n"
" if (this.tagName!=\"\")\n"
" {\n"
" doc.write(\" [external]\")\n"
" }\n"
" doc.write(\"</td>\") \n"
" doc.write(\"\\n</table>\\n\") \n"
" \n"
" if (browserVersion == 2) { \n"
" doc.write(\"</layer>\") \n"
" } \n"
" if (browserVersion == 3) { \n"
" doc.write(\"</div>\") \n"
" } \n"
" \n"
" if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"folder\"+this.id] \n"
" this.iconImg = doc.all[\"folderIcon\"+this.id] \n"
" this.nodeImg = doc.all[\"nodeIcon\"+this.id] \n"
" } else if (browserVersion == 2) { \n"
" this.navObj = doc.layers[\"folder\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"folderIcon\"+this.id] \n"
" this.nodeImg = this.navObj.document.images[\"nodeIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } else if (browserVersion == 3) {\n"
" this.navObj = doc.getElementById(\"folder\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"folderIcon\"+this.id)\n"
" this.nodeImg = doc.images.namedItem(\"nodeIcon\"+this.id)\n"
" }\n"
"} \n"
" \n"
"function outputFolderLink() \n"
"{ \n"
" if (this.hreference) \n"
" { \n"
" doc.write(\"<a \")\n"
" if (this.tagName)\n"
" {\n"
" doc.write(\"doxygen='\" + this.tagName + \"' \");\n"
" }\n"
" doc.write(\"href='\" + this.hreference + \"' TARGET=\\\"basefrm\\\" \") \n"
" if (browserVersion > 0) \n"
" doc.write(\"onClick='javascript:clickOnFolder(\"+this.id+\")'\") \n"
" doc.write(\">\") \n"
" } \n"
" else \n"
" doc.write(\"<a>\") \n"
"} \n"
" \n"
"function addChild(childNode) \n"
"{ \n"
" this.children[this.nChildren] = childNode \n"
" this.nChildren++ \n"
" return childNode \n"
"} \n"
" \n"
"function folderSubEntries() \n"
"{ \n"
" var i = 0 \n"
" var se = this.nChildren \n"
" \n"
" for (i=0; i < this.nChildren; i++){ \n"
" if (this.children[i].children) //is a folder \n"
" se = se + this.children[i].subEntries() \n"
" } \n"
" \n"
" return se \n"
"} \n"
" \n"
" \n"
"// Definition of class Item (a document or link inside a Folder) \n"
"// ************************************************************* \n"
" \n"
"function Item(itemDescription, tagName, itemLink) // Constructor \n"
"{ \n"
" // constant data \n"
" this.desc = itemDescription \n"
" this.tagName = tagName\n"
" this.link = itemLink \n"
" this.id = -1 //initialized in initalize() \n"
" this.navObj = 0 //initialized in render() \n"
" this.iconImg = 0 //initialized in render() \n"
" this.iconSrc = \"ftv2doc.png\" \n"
" \n"
" // methods \n"
" this.initialize = initializeItem \n"
" this.createIndex = createEntryIndex \n"
" this.hide = hideItem \n"
" this.display = display \n"
" this.renderOb = drawItem \n"
" this.totalHeight = totalHeight \n"
"} \n"
" \n"
"function hideItem() \n"
"{ \n"
" if (browserVersion == 1 || browserVersion == 3) { \n"
" if (this.navObj.style.display == \"none\") \n"
" return \n"
" this.navObj.style.display = \"none\" \n"
" } else { \n"
" if (this.navObj.visibility == \"hidden\") \n"
" return \n"
" this.navObj.visibility = \"hidden\" \n"
" } \n"
"} \n"
" \n"
"function initializeItem(level, lastNode, leftSide) \n"
"{ \n"
" this.createIndex() \n"
" \n"
" if (level>0) \n"
" if (lastNode) //the last 'brother' in the children array \n"
" { \n"
" this.renderOb(leftSide + \"<img src='ftv2lastnode.png' width=16 height=22>\") \n"
" leftSide = leftSide + \"<img src='ftv2blank.png' width=16 height=22>\" \n"
" } \n"
" else \n"
" { \n"
" this.renderOb(leftSide + \"<img src='ftv2node.png' width=16 height=22>\") \n"
" leftSide = leftSide + \"<img src='ftv2vertline.png' width=16 height=22>\" \n"
" } \n"
" else \n"
" this.renderOb(\"\") \n"
"} \n"
" \n"
"function drawItem(leftSide) \n"
"{ \n"
" if (browserVersion == 2) \n"
" doc.write(\"<layer id='item\" + this.id + \"' top=\" + doc.yPos + \" visibility=hidden>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"<div id='item\" + this.id + \"' style='display:block;'>\") \n"
" \n"
" doc.write(\"\\n<table \") \n"
" if (browserVersion == 1) \n"
" doc.write(\" id='item\" + this.id + \"' style='position:block;' \") \n"
" doc.write(\" border=0 cellspacing=0 cellpadding=0>\\n\") \n"
" doc.write(\"<tr><td>\") \n"
" doc.write(leftSide) \n"
" if (this.link!=\"\")\n"
" {\n"
" doc.write(\"<a href=\" + this.link + \">\") \n"
" }\n"
" doc.write(\"<img id='itemIcon\"+this.id+\"' \") \n"
" doc.write(\"src='\"+this.iconSrc+\"' border=0>\") \n"
" if (this.link!=\"\")\n"
" {\n"
" doc.write(\"</a>\")\n"
" } \n"
" doc.write(\"</td>\\n<td valign=middle nowrap>\") \n"
" if (USETEXTLINKS && this.link!=\"\") \n"
" doc.write(\"<a href=\" + this.link + \">\" + this.desc + \"</a>\") \n"
" else \n"
" doc.write(this.desc) \n"
" if (this.tagName!=\"\")\n"
" {\n"
" doc.write(\" [external]\");\n"
" }\n"
" doc.write(\"\\n</table>\\n\") \n"
" \n"
" if (browserVersion == 2) \n"
" doc.write(\"</layer>\") \n"
" if (browserVersion == 3) \n"
" doc.write(\"</div>\")\n"
" \n"
" if (browserVersion == 1) { \n"
" this.navObj = doc.all[\"item\"+this.id] \n"
" this.iconImg = doc.all[\"itemIcon\"+this.id] \n"
" } else if (browserVersion == 2) { \n"
" this.navObj = doc.layers[\"item\"+this.id] \n"
" this.iconImg = this.navObj.document.images[\"itemIcon\"+this.id] \n"
" doc.yPos=doc.yPos+this.navObj.clip.height \n"
" } else if (browserVersion == 3) {\n"
" this.navObj = doc.getElementById(\"item\"+this.id)\n"
" this.iconImg = doc.images.namedItem(\"itemIcon\"+this.id)\n"
" }\n"
"} \n"
" \n"
" \n"
"// Methods common to both objects (pseudo-inheritance) \n"
"// ******************************************************** \n"
" \n"
"function display() \n"
"{ \n"
" if (browserVersion == 1 || browserVersion == 3) \n"
" this.navObj.style.display = \"block\" \n"
" else \n"
" this.navObj.visibility = \"show\" \n"
"} \n"
" \n"
"function createEntryIndex() \n"
"{ \n"
" this.id = nEntries \n"
" indexOfEntries[nEntries] = this \n"
" nEntries++ \n"
"} \n"
" \n"
"// total height of subEntries open \n"
"function totalHeight() //used with browserVersion == 2 \n"
"{ \n"
" var h = this.navObj.clip.height \n"
" var i = 0 \n"
" \n"
" if (this.isOpen) //is a folder and _is_ open \n"
" for (i=0 ; i < this.nChildren; i++) \n"
" h = h + this.children[i].totalHeight() \n"
" \n"
" return h \n"
"} \n"
" \n"
" \n"
"// Events \n"
"// ********************************************************* \n"
" \n"
"function clickOnFolder(folderId) \n"
"{ \n"
" var clicked = indexOfEntries[folderId] \n"
" \n"
" if (!clicked.isOpen) \n"
" clickOnNode(folderId) \n"
" \n"
" return \n"
" \n"
" if (clicked.isSelected) \n"
" return \n"
"} \n"
" \n"
"function clickOnNode(folderId) \n"
"{ \n"
" var clickedFolder = 0 \n"
" var state = 0 \n"
" \n"
" clickedFolder = indexOfEntries[folderId] \n"
" state = clickedFolder.isOpen \n"
" \n"
" clickedFolder.setState(!state) //open<->close \n"
"} \n"
" \n"
"function initializeDocument() \n"
"{ \n"
" doc = document;\n"
" if (doc.all) \n"
" browserVersion = 1 //IE4 \n"
" else \n"
" if (doc.layers) \n"
" browserVersion = 2 //NS4 \n"
" else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)\n"
" browserVersion = 3 //mozilla\n"
" else \n"
" browserVersion = 0 //other \n"
"\n"
" foldersTree.initialize(0, 1, \"\") \n"
" foldersTree.display()\n"
" \n"
" if (browserVersion > 0) \n"
" { \n"
" if(browserVersion != 3)\n"
" doc.write(\"<layer top=\"+indexOfEntries[nEntries-1].navObj.top+\">&nbsp;</layer>\") \n"
" \n"
" // close the whole tree \n"
" clickOnNode(0) \n"
" // open the root folder \n"
" clickOnNode(0) \n"
" } \n"
"} \n"
" \n"
"// Auxiliary Functions for Folder-Treee backward compatibility \n"
"// ********************************************************* \n"
" \n"
"function gFld(description, tagName, hreference) \n"
"{ \n"
" folder = new Folder(description, tagName, hreference) \n"
" return folder \n"
"} \n"
" \n"
"function gLnk(description, tagName, linkData) \n"
"{ \n"
" fullLink = \"\" \n"
" \n"
" if (linkData!=\"\")\n"
" {\n"
" fullLink = \"'\"+linkData+\"' target=\\\"basefrm\\\"\" \n"
" } \n"
" \n"
" linkItem = new Item(description, tagName, fullLink) \n"
" return linkItem \n"
"} \n"
" \n"
"function insFld(parentFolder, childFolder) \n"
"{ \n"
" return parentFolder.addChild(childFolder) \n"
"} \n"
" \n"
"function insDoc(parentFolder, document) \n"
"{ \n"
" parentFolder.addChild(document) \n"
"} \n"
" \n"
"// Global variables \n"
"// **************** \n"
" \n"
"USETEXTLINKS = 1\n"
"indexOfEntries = new Array \n"
"nEntries = 0 \n"
"doc = document \n"
"browserVersion = 0 \n"
"selectedFolder=0\n"
//****************************************************************
// You are free to copy the "Folder-Tree" script as long as you
// keep this copyright notice:
// Script found in: http://www.geocities.com/Paris/LeftBank/2178/
// Author: Marcelino Alves Martins (martins@hks.com) December '97.
//****************************************************************
//Log of changes:
// 17 Feb 98 - Fix initialization flashing problem with Netscape
//
// 27 Jan 98 - Root folder starts open; support for USETEXTLINKS;
// make the ftien4 a js file
//
// DvH: Dec 2000 - Made some minor changes to support external
// references
// Definition of class Folder
// *****************************************************************
function Folder(folderDescription, tagName, hreference) //constructor
{
//constant data
this.desc = folderDescription
this.tagName = tagName
this.hreference = hreference
this.id = -1
this.navObj = 0
this.iconImg = 0
this.nodeImg = 0
this.isLastNode = 0
//dynamic data
this.isOpen = true
this.iconSrc = "ftv2folderopen.png"
this.children = new Array
this.nChildren = 0
//methods
this.initialize = initializeFolder
this.setState = setStateFolder
this.addChild = addChild
this.createIndex = createEntryIndex
this.hide = hideFolder
this.display = display
this.renderOb = drawFolder
this.totalHeight = totalHeight
this.subEntries = folderSubEntries
this.outputLink = outputFolderLink
}
function setStateFolder(isOpen)
{
var subEntries
var totalHeight
var fIt = 0
var i=0
if (isOpen == this.isOpen)
return
if (browserVersion == 2)
{
totalHeight = 0
for (i=0; i < this.nChildren; i++)
totalHeight = totalHeight + this.children[i].navObj.clip.height
subEntries = this.subEntries()
if (this.isOpen)
totalHeight = 0 - totalHeight
for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++)
indexOfEntries[fIt].navObj.moveBy(0, totalHeight)
}
this.isOpen = isOpen
propagateChangesInState(this)
}
function propagateChangesInState(folder)
{
var i=0
if (folder.isOpen)
{
if (folder.nodeImg)
if (folder.isLastNode)
folder.nodeImg.src = "ftv2mlastnode.png"
else
folder.nodeImg.src = "ftv2mnode.png"
folder.iconImg.src = "ftv2folderopen.png"
for (i=0; i<folder.nChildren; i++)
folder.children[i].display()
}
else
{
if (folder.nodeImg)
if (folder.isLastNode)
folder.nodeImg.src = "ftv2plastnode.png"
else
folder.nodeImg.src = "ftv2pnode.png"
folder.iconImg.src = "ftv2folderclosed.png"
for (i=0; i<folder.nChildren; i++)
folder.children[i].hide()
}
}
function hideFolder()
{
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
} else {
if (this.navObj.visibility == "hidden")
return
this.navObj.visibility = "hidden"
}
this.setState(0)
}
function initializeFolder(level, lastNode, leftSide)
{
var j=0
var i=0
var numberOfFolders
var numberOfDocs
var nc
nc = this.nChildren
this.createIndex()
var auxEv = ""
if (browserVersion > 0)
auxEv = "<a href='javascript:clickOnNode("+this.id+")'>"
else
auxEv = "<a>"
if (level>0)
if (lastNode) //the last 'brother' in the children array
{
this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.png' width=16 height=22 border=0></a>")
leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
this.isLastNode = 1
}
else
{
this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.png' width=16 height=22 border=0></a>")
leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
this.isLastNode = 0
}
else
this.renderOb("")
if (nc > 0)
{
level = level + 1
for (i=0 ; i < this.nChildren; i++)
{
if (i == this.nChildren-1)
this.children[i].initialize(level, 1, leftSide)
else
this.children[i].initialize(level, 0, leftSide)
}
}
}
function drawFolder(leftSide)
{
if (browserVersion == 2) {
if (!doc.yPos)
doc.yPos=8
doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
}
if (browserVersion == 3)
{
doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>")
}
doc.write("\n<table ")
if (browserVersion == 1)
doc.write(" id='folder" + this.id + "' style='position:block;' ")
doc.write(" border=0 cellspacing=0 cellpadding=0>")
doc.write("\n<tr><td>")
doc.write(leftSide)
this.outputLink()
doc.write("<img name='folderIcon" + this.id + "' ")
doc.write("src='" + this.iconSrc+"' border=0></a>")
doc.write("</td>\n<td valign=middle nowrap>")
if (USETEXTLINKS)
{
this.outputLink()
doc.write(this.desc + "</a>")
}
else
doc.write(this.desc)
if (this.tagName!="")
{
doc.write(" [external]")
}
doc.write("</td>")
doc.write("\n</table>\n")
if (browserVersion == 2) {
doc.write("</layer>")
}
if (browserVersion == 3) {
doc.write("</div>")
}
if (browserVersion == 1) {
this.navObj = doc.all["folder"+this.id]
this.iconImg = doc.all["folderIcon"+this.id]
this.nodeImg = doc.all["nodeIcon"+this.id]
} else if (browserVersion == 2) {
this.navObj = doc.layers["folder"+this.id]
this.iconImg = this.navObj.document.images["folderIcon"+this.id]
this.nodeImg = this.navObj.document.images["nodeIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion == 3) {
this.navObj = doc.getElementById("folder"+this.id)
this.iconImg = doc.images.namedItem("folderIcon"+this.id)
this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
}
}
function outputFolderLink()
{
if (this.hreference)
{
doc.write("<a ")
if (this.tagName)
{
doc.write("doxygen='" + this.tagName + "' ");
}
doc.write("href='" + this.hreference + "' TARGET=\"basefrm\" ")
if (browserVersion > 0)
doc.write("onClick='javascript:clickOnFolder("+this.id+")'")
doc.write(">")
}
else
doc.write("<a>")
}
function addChild(childNode)
{
this.children[this.nChildren] = childNode
this.nChildren++
return childNode
}
function folderSubEntries()
{
var i = 0
var se = this.nChildren
for (i=0; i < this.nChildren; i++){
if (this.children[i].children) //is a folder
se = se + this.children[i].subEntries()
}
return se
}
// Definition of class Item (a document or link inside a Folder)
// *************************************************************
function Item(itemDescription, tagName, itemLink) // Constructor
{
// constant data
this.desc = itemDescription
this.tagName = tagName
this.link = itemLink
this.id = -1 //initialized in initalize()
this.navObj = 0 //initialized in render()
this.iconImg = 0 //initialized in render()
this.iconSrc = "ftv2doc.png"
// methods
this.initialize = initializeItem
this.createIndex = createEntryIndex
this.hide = hideItem
this.display = display
this.renderOb = drawItem
this.totalHeight = totalHeight
}
function hideItem()
{
if (browserVersion == 1 || browserVersion == 3) {
if (this.navObj.style.display == "none")
return
this.navObj.style.display = "none"
} else {
if (this.navObj.visibility == "hidden")
return
this.navObj.visibility = "hidden"
}
}
function initializeItem(level, lastNode, leftSide)
{
this.createIndex()
if (level>0)
if (lastNode) //the last 'brother' in the children array
{
this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>")
leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"
}
else
{
this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>")
leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>"
}
else
this.renderOb("")
}
function drawItem(leftSide)
{
if (browserVersion == 2)
doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>")
if (browserVersion == 3)
doc.write("<div id='item" + this.id + "' style='display:block;'>")
doc.write("\n<table ")
if (browserVersion == 1)
doc.write(" id='item" + this.id + "' style='position:block;' ")
doc.write(" border=0 cellspacing=0 cellpadding=0>\n")
doc.write("<tr><td>")
doc.write(leftSide)
if (this.link!="")
{
doc.write("<a href=" + this.link + ">")
}
doc.write("<img id='itemIcon"+this.id+"' ")
doc.write("src='"+this.iconSrc+"' border=0>")
if (this.link!="")
{
doc.write("</a>")
}
doc.write("</td>\n<td valign=middle nowrap>")
if (USETEXTLINKS && this.link!="")
doc.write("<a href=" + this.link + ">" + this.desc + "</a>")
else
doc.write(this.desc)
if (this.tagName!="")
{
doc.write(" [external]");
}
doc.write("\n</table>\n")
if (browserVersion == 2)
doc.write("</layer>")
if (browserVersion == 3)
doc.write("</div>")
if (browserVersion == 1) {
this.navObj = doc.all["item"+this.id]
this.iconImg = doc.all["itemIcon"+this.id]
} else if (browserVersion == 2) {
this.navObj = doc.layers["item"+this.id]
this.iconImg = this.navObj.document.images["itemIcon"+this.id]
doc.yPos=doc.yPos+this.navObj.clip.height
} else if (browserVersion == 3) {
this.navObj = doc.getElementById("item"+this.id)
this.iconImg = doc.images.namedItem("itemIcon"+this.id)
}
}
// Methods common to both objects (pseudo-inheritance)
// ********************************************************
function display()
{
if (browserVersion == 1 || browserVersion == 3)
this.navObj.style.display = "block"
else
this.navObj.visibility = "show"
}
function createEntryIndex()
{
this.id = nEntries
indexOfEntries[nEntries] = this
nEntries++
}
// total height of subEntries open
function totalHeight() //used with browserVersion == 2
{
var h = this.navObj.clip.height
var i = 0
if (this.isOpen) //is a folder and _is_ open
for (i=0 ; i < this.nChildren; i++)
h = h + this.children[i].totalHeight()
return h
}
// Events
// *********************************************************
function clickOnFolder(folderId)
{
var clicked = indexOfEntries[folderId]
if (!clicked.isOpen)
clickOnNode(folderId)
return
if (clicked.isSelected)
return
}
function clickOnNode(folderId)
{
var clickedFolder = 0
var state = 0
clickedFolder = indexOfEntries[folderId]
state = clickedFolder.isOpen
clickedFolder.setState(!state) //open<->close
}
function initializeDocument()
{
doc = document;
if (doc.all)
browserVersion = 1 //IE4
else
if (doc.layers)
browserVersion = 2 //NS4
else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
browserVersion = 3 //mozilla
else
browserVersion = 0 //other
foldersTree.initialize(0, 1, "")
foldersTree.display()
if (browserVersion > 0)
{
if(browserVersion != 3)
doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>")
// close the whole tree
clickOnNode(0)
// open the root folder
clickOnNode(0)
}
}
// Auxiliary Functions for Folder-Treee backward compatibility
// *********************************************************
function gFld(description, tagName, hreference)
{
folder = new Folder(description, tagName, hreference)
return folder
}
function gLnk(description, tagName, linkData)
{
fullLink = ""
if (linkData!="")
{
fullLink = "'"+linkData+"' target=\"basefrm\""
}
linkItem = new Item(description, tagName, fullLink)
return linkItem
}
function insFld(parentFolder, childFolder)
{
return parentFolder.addChild(childFolder)
}
function insDoc(parentFolder, document)
{
parentFolder.addChild(document)
}
// Global variables
// ****************
USETEXTLINKS = 1
indexOfEntries = new Array
nEntries = 0
doc = document
browserVersion = 0
selectedFolder=0
......@@ -98,7 +98,7 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
if (command==0) return 1;
//#ifdef _OS_SOLARIS_
#ifdef _OS_SOLARIS // for Solaris we use vfork since it is more memory efficient
// on Solaris fork() duplicates the memory usage
// so we use vfork instead
......@@ -131,38 +131,36 @@ int iSystem(const char *command,const char *args,bool isBatchFile)
}
return status;
//#else /* Other unices where clients do copy on demand for the parent's pages
// * when forked.
// */
//
// pid = fork();
// if (pid==-1) return -1;
// if (pid==0)
// {
// char buf[4096];
// strcpy(buf,command);
// strcat(buf," ");
// strcat(buf,args);
// const char * argv[4];
// argv[0] = "sh";
// argv[1] = "-c";
// argv[2] = buf;
// argv[3] = 0;
// execve("/bin/sh",(char * const *)argv,environ);
// exit(127);
// }
// for (;;)
// {
// if (waitpid(pid,&status,0)==-1)
// {
// if (errno!=EINTR) return -1;
// }
// else
// {
// return status;
// }
// }
//#endif
#else // Other Unices just use fork
pid = fork();
if (pid==-1) return -1;
if (pid==0)
{
char buf[4096];
strcpy(buf,command);
strcat(buf," ");
strcat(buf,args);
const char * argv[4];
argv[0] = "sh";
argv[1] = "-c";
argv[2] = buf;
argv[3] = 0;
execve("/bin/sh",(char * const *)argv,environ);
exit(127);
}
for (;;)
{
if (waitpid(pid,&status,0)==-1)
{
if (errno!=EINTR) return -1;
}
else
{
return status;
}
}
#endif // _OS_SOLARIS
#else
if (isBatchFile)
......
......@@ -510,10 +510,17 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
ArgumentList *al = md->argumentList();
t << " const=\"";
if (al && al->constSpecifier) t << "yes"; else t << "no";
t << "\" volatile=\"";
t << "\"";
}
if (md->memberType() == MemberDef::Variable)
{
ArgumentList *al = md->argumentList();
t << " volatile=\"";
if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t << "\"";
}
t << ">" << endl;
if (md->memberType()!=MemberDef::Define &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment