Commit 69ead65c authored by dimitri's avatar dimitri

Release-20000910

parent 92663f87
DOXYGEN Version 1.2.1-20000829
DOXYGEN Version 1.2.1-20000910
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (29 August 2000)
Dimitri van Heesch (10 September 2000)
DOXYGEN Version 1.2.1-20000829
DOXYGEN Version 1.2.1-20000910
Please read INSTALL for compilation instructions.
......@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (29 August 2000)
Dimitri van Heesch (10 September 2000)
1.2.1-20000829
1.2.1-20000910
......@@ -775,7 +775,7 @@ void init()
"information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n"
"Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"
"Spanish, Russian, Croatian, Polish, and Portuguese.\n"
"Korean, Hungarian, Spanish, Russian, Croatian, Polish, and Portuguese.\n"
);
ConfigString::addFixedValue("outputLanguage","English");
ConfigString::addFixedValue("outputLanguage","Dutch");
......@@ -785,7 +785,9 @@ void init()
ConfigString::addFixedValue("outputLanguage","Swedish");
ConfigString::addFixedValue("outputLanguage","German");
ConfigString::addFixedValue("outputLanguage","Finnish");
ConfigString::addFixedValue("outputLanguage","Hungarian");
ConfigString::addFixedValue("outputLanguage","Japanese");
ConfigString::addFixedValue("outputLanguage","Korean");
ConfigString::addFixedValue("outputLanguage","Spanish");
ConfigString::addFixedValue("outputLanguage","Russian");
ConfigString::addFixedValue("outputLanguage","Croatian");
......@@ -920,11 +922,11 @@ void init()
"CASE_SENSE_NAMES",
"TRUE",
"determines if output can be mixed case.",
"If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen \n"
"will only generate file names in lower case letters. If set to \n"
"YES upper case letters are also allowed. This is useful if you have \n"
"classes or files whose names only differ in case and if your file system \n"
"supports case sensitive file names. \n"
"If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
"file names in lower case letters. If set to YES upper case letters are also \n"
"allowed. This is useful if you have classes or files whose names only differ \n"
"in case and if your file system supports case sensitive file names. Windows \n"
"users are adviced to set this option to NO.\n"
);
ConfigBool::add( "hideScopeNames",
"HIDE_SCOPE_NAMES",
......@@ -983,6 +985,15 @@ void init()
"alphabetically by member name. If set to NO the members will appear in \n"
"declaration order. \n"
);
ConfigBool::add( "distributeDocFlag",
"DISTRIBUTE_GROUP_DOC",
"FALSE",
"distribute docs over member group?",
"If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"
"tag is set to YES, then doxygen will reuse the documentation of the first \n"
"member in the group (if any) for the other members of the group. By default \n"
"all members of a group must be documented explicitly.\n"
);
ConfigInt::add( "tabSize",
"TAB_SIZE",
"8",
......@@ -1019,7 +1030,7 @@ void init()
"",
"list of aliases",
"This tag can be used to specify a number of aliases that acts \n"
"as commands in the documentation. An alias has the form \"\\name=value\". \n"
"as commands in the documentation. An alias has the form \"name=value\". \n"
"For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"
"put the command \\sideeffect (or @sideeffect) in the documentation, which \n"
"will result in a user defined paragraph with heading \"Side Effects:\". \n"
......
......@@ -66,6 +66,7 @@ followed by the descriptions of the tags grouped by category.
\begin{multicols}{3}
\begin{CompactList}
\endlatexonly
<li> \refitem cfg_aliases ALIASES
<li> \refitem cfg_allexternals ALLEXTERNALS
<li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
<li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
......@@ -81,6 +82,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_compact_latex COMPACT_LATEX
<li> \refitem cfg_compact_rtf COMPACT_RTF
<li> \refitem cfg_disable_index DISABLE_INDEX
<li> \refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
<li> \refitem cfg_doc_abspath DOC_ABSPATH
<li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_dot_path DOT_PATH
......@@ -104,6 +106,8 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_generate_man GENERATE_MAN
<li> \refitem cfg_generate_rtf GENERATE_RTF
<li> \refitem cfg_generate_tagfile GENERATE_TAGFILE
<li> \refitem cfg_generate_testlist GENERATE_TESTLIST
<li> \refitem cfg_generate_todolist GENERATE_TODOLIST
<li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
<li> \refitem cfg_have_dot HAVE_DOT
<li> \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
......@@ -203,8 +207,8 @@ followed by the descriptions of the tags grouped by category.
documentation generated by doxygen is written. Doxygen will use this
information to generate all constant output in the proper language.
The default language is English, other supported languages are:
Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
Spanish, Russian, Croatian, Polish and Portuguese.
Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese,
Korean, Spanish, Russian, Croatian, Polish and Portuguese.
\anchor cfg_disable_index
<dt>\c DISABLE_INDEX <dd>
......@@ -392,6 +396,14 @@ followed by the descriptions of the tags grouped by category.
alphabetically by member name. If set to \c NO the members will appear in
declaration order.
\anchor cfg_distribute_group_doc
<dt>\c DISTRIBUTE_GROUP_DOC <dd>
\addindex DISTRIBUTE_GROUP_DOC
If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
tag is set to YES, then doxygen will reuse the documentation of the first
member in the group (if any) for the other members of the group. By default
all members of a group must be documented explicitly.
\anchor cfg_tab_size
<dt>\c TAB_SIZE <dd>
\addindex TAB_SIZE
......@@ -405,6 +417,39 @@ followed by the descriptions of the tags grouped by category.
documentation sections, marked by \ref cmdif "\\if" \<section-label\> ...
\ref cmdendif "\\endif" blocks.
\anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST
The GENERATE_TODOLIST tag can be used to enable (YES) or
disable (NO) the todo list. This list is created by
putting \ref cmdtodo "\\todo"
commands in the documentation.
\anchor cfg_generate_testlist
<dt>\c GENERATE_TESTLIST <dd>
\addindex GENERATE_TESTLIST
The GENERATE_TESTLIST tag can be used to enable (YES) or
disable (NO) the test list. This list is created by
putting \ref cmdtest "\\test" commands in the documentation.
\anchor cfg_aliases
<dt>\c ALIASES <dd>
\addindex ALIASES
This tag can be used to specify a number of aliases that acts
as commands in the documentation. An alias has the form
\verbatim
name=value
\endverbatim
For example adding
\verbatim
"sideeffect=\par Side Effects:\n"
\endverbatim
will allow you to
put the command \\sideeffect (or \@sideeffect) in the documentation, which
will result in a user defined paragraph with heading "Side Effects:".
You can put \\n's in the value part of an alias to insert newlines.
Predefined commands cannot be overwritten using aliases.
</dl>
\subsection messages_input Options related to warning and progress messages
......
......@@ -169,6 +169,16 @@ EXCLUDE_PATTERNS = */test/*
Put a \% in front of the class name. Like this: \%MyClass. Doxygen will then
remove the % and keep the word unlinked.
<li><b>Help! I get the cryptic message
"input buffer overflow, can't enlarge buffer because scanner uses REJECT"</b>
This error happens when doxygen lexical scanner has a rules that matches
more than 16K input character in one go. I've seen this happening
on a very large generated file (>16K lines), where the built-in preprocessor
converted it into an empty file (with >16K of newlines). Another case
where this might happen is if you have lines in you code with more than
16K characters.
</ol>
\htmlonly
......
......@@ -23,7 +23,7 @@
<li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used.
<li>Supports C++, (Corba and Microsoft) IDL and C sources.
<li>Supports C++, (Corba, Microsoft, and KDE-DCOP) IDL and C sources.
<li>Supports documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines.
<li>JavaDoc (1.1), Qt-Doc, and KDOC compatible.
......
......@@ -49,8 +49,8 @@ Documents produced by Doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
<h2>Introduction</h2>
Doxygen is a documentation system for C++, IDL (Corba and Microsoft flavors)
and C.
Doxygen is a documentation system for C++, IDL
(Corba, Microsoft and KDE-DCOP flavors) and C.
It can help you in three ways:
<ol>
......
......@@ -22,9 +22,9 @@ Doxygen has support for multiple languages. This means that the text fragments t
doxygen generates can changed into languages other than English
(the default) at configuration time.
<p>
Currently, supported languages are English, French, Czech, Dutch,
Swedish, Italian, German and Japanese. A number
of people have volunteered to add support for other languages as well.
Currently, supported languages are English, French, Czech, Dutch, Spannish,
Swedish, Russian, Czech, Croatian, Italian, Hungarian, Finnish, German and Japanese,
and Korean.
Here is a list of the languages and their current maintainers:
<p>
......@@ -155,6 +155,30 @@ Here is a list of the languages and their current maintainers:
snob@NOSPAM.int.spb.ru</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Korean
</TD>
<TD>
Richard Kim
</TD>
<TD>
<a href="mailto:ryk@NOSPAM.dspwiz.com">
ryk@NOSPAM.dspwiz.com</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Hungarian
</TD>
<TD>
Fldvri Gyrgy
</TD>
<TD>
<a href="mailto:foldvari@NOSPAM.diatronltd.com">
foldvari@NOSPAM.diatronltd.com</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Croatian
......@@ -167,7 +191,6 @@ Here is a list of the languages and their current maintainers:
boris.bralo@NOSPAM.zg.tel.hr</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Polish
......@@ -225,6 +248,10 @@ Here is a list of the languages and their current maintainers:
\hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
\hline
Korean & Richard Kim & {\\tt ryk@dspwiz.com} \\
\hline
Hungarian & Fldvri Gyrgy & {\\tt foldvari@diatronltd.com} \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\
\hline
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} \\
......
Name: doxygen
Version: 1.2.1-20000829
Version: 1.2.1-20000910
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
......
......@@ -178,6 +178,7 @@ void ClassDef::addMembersToMemberGroup()
addMemberListToGroup(&pubAttribs);
addMemberListToGroup(&pubSlots);
addMemberListToGroup(&signals);
addMemberListToGroup(&dcopMethods);
addMemberListToGroup(&pubStaticMembers);
addMemberListToGroup(&pubStaticAttribs);
addMemberListToGroup(&proTypes);
......@@ -219,11 +220,15 @@ void ClassDef::insertMember(MemberDef *md)
{
switch (md->memberType())
{
case MemberDef::Signal:
case MemberDef::Signal: // Qt specific
signals.append(md);
md->setSectionList(&signals);
break;
case MemberDef::Slot:
case MemberDef::DCOP: // KDE2 specific
dcopMethods.append(md);
md->setSectionList(&dcopMethods);
break;
case MemberDef::Slot: // Qt specific
switch (md->protection())
{
case Protected:
......@@ -358,7 +363,8 @@ void ClassDef::insertMember(MemberDef *md)
{
switch (md->memberType())
{
case MemberDef::Signal:
case MemberDef::Signal: // fall through
case MemberDef::DCOP:
if (Config::sortMembersFlag)
functionMembers.inSort(md);
else
......@@ -511,6 +517,7 @@ void ClassDef::computeAnchors()
setAnchors('s',&pubTypes);
setAnchors('t',&proTypes);
setAnchors('u',&priTypes);
setAnchors('v',&dcopMethods);
}
void ClassDef::distributeMemberGroupDocumentation()
......@@ -857,6 +864,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
pubAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicAttribs(),0);
pubSlots.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicSlots(),0);
signals.writeDeclarations(ol,this,0,0,0,theTranslator->trSignals(),0);
dcopMethods.writeDeclarations(ol,this,0,0,0,theTranslator->trDCOPMethods(),0);
// static public members
pubStaticMembers.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicMembers(),0);
pubStaticAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicAttribs(),0);
......@@ -1066,7 +1075,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.docify(stripFromPath(path));
}
if (fd->generateSource() || (!fd->isReference() && Config::sourceBrowseFlag))
if (fd->generateSourceFile())
{
ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
}
......@@ -1340,6 +1349,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
pubAttribs.writePlainDeclarations(ol,this,0,0,0);
pubSlots.writePlainDeclarations(ol,this,0,0,0);
signals.writePlainDeclarations(ol,this,0,0,0);
dcopMethods.writePlainDeclarations(ol,this,0,0,0);
pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
proTypes.writePlainDeclarations(ol,this,0,0,0);
......@@ -1856,7 +1866,8 @@ void ClassDef::generateXML(QTextStream &t)
}
int numMembers =
pubTypes.count()+pubMembers.count()+pubAttribs.count()+
pubSlots.count()+signals.count()+pubStaticMembers.count()+
pubSlots.count()+signals.count()+dcopMethods.count()+
pubStaticMembers.count()+
pubStaticAttribs.count()+proTypes.count()+proMembers.count()+
proAttribs.count()+proSlots.count()+proStaticMembers.count()+
proStaticAttribs.count()+priTypes.count()+priMembers.count()+
......@@ -1870,6 +1881,7 @@ void ClassDef::generateXML(QTextStream &t)
generateXMLSection(t,&pubAttribs,"public-attrib");
generateXMLSection(t,&pubSlots,"public-slot");
generateXMLSection(t,&signals,"signal");
generateXMLSection(t,&dcopMethods,"dcop-func");
generateXMLSection(t,&pubStaticMembers,"public-static-func");
generateXMLSection(t,&pubStaticAttribs,"public-static-attrib");
generateXMLSection(t,&proTypes,"protected-type");
......
......@@ -167,6 +167,7 @@ class ClassDef : public Definition
MemberList related;
MemberList signals;
MemberList friends;
MemberList dcopMethods;
/* member list by types */
MemberList constructors;
......
/* This file was generated by configgen on Fri Aug 25 21:22:11 2000
/* This file was generated by configgen on Sat Sep 2 10:51:52 2000
* from config_templ.h
*
* DO NOT EDIT!
......@@ -64,6 +64,7 @@ struct Config
static bool inheritDocsFlag; // inheritance of documentation enabled?
static bool inlineInfoFlag; // show info about inline members?
static bool sortMembersFlag; // sort members alphabetically?
static bool distributeDocFlag; // distribute docs over member group?
static int tabSize; // number of spaces in a tab
static QStrList sectionFilterList; // list of section filters that are enabled
static bool generateTodoList; // do we want a todo list?
......
/* This file was generated by configgen on Fri Aug 25 21:22:11 2000
/* This file was generated by configgen on Sat Sep 2 10:51:52 2000
* from config_templ.l
*
* DO NOT EDIT!
......@@ -101,6 +101,7 @@ bool Config::autoBriefFlag = TRUE;
bool Config::inheritDocsFlag = TRUE;
bool Config::inlineInfoFlag = TRUE;
bool Config::sortMembersFlag = TRUE;
bool Config::distributeDocFlag = FALSE;
int Config::tabSize = 8;
QStrList Config::sectionFilterList;
bool Config::generateTodoList = TRUE;
......@@ -357,6 +358,7 @@ static void readIncludeFile(const char *incName)
<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; }
<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; }
<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; }
<Start>"DISTRIBUTE_GROUP_DOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::distributeDocFlag; }
<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); }
<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; }
<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; }
......@@ -587,6 +589,7 @@ void dumpConfig()
printf("inheritDocsFlag=`%d'\n",Config::inheritDocsFlag);
printf("inlineInfoFlag=`%d'\n",Config::inlineInfoFlag);
printf("sortMembersFlag=`%d'\n",Config::sortMembersFlag);
printf("distributeDocFlag=`%d'\n",Config::distributeDocFlag);
printf("tabSize=`%d'\n",Config::tabSize);
{
char *is=Config::sectionFilterList.first();
......@@ -824,6 +827,7 @@ void Config::init()
Config::inheritDocsFlag = TRUE;
Config::inlineInfoFlag = TRUE;
Config::sortMembersFlag = TRUE;
Config::distributeDocFlag = FALSE;
Config::tabSize = 8;
Config::sectionFilterList.clear();
Config::generateTodoList = TRUE;
......@@ -1011,7 +1015,7 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# information to generate all constant output in the proper language. \n";
t << "# The default language is English, other supported languages are: \n";
t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n";
t << "# Spanish, Russian, Croatian, Polish, and Portuguese.\n";
t << "# Korean, Hungarian, Spanish, Russian, Croatian, Polish, and Portuguese.\n";
t << "\n";
}
t << "OUTPUT_LANGUAGE = ";
......@@ -1278,6 +1282,18 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::sortMembersFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n";
t << "# tag is set to YES, then doxygen will reuse the documentation of the first \n";
t << "# member in the group (if any) for the other members of the group. By default \n";
t << "# all members of a group must be documented explicitly.\n";
t << "\n";
}
t << "DISTRIBUTE_GROUP_DOC = ";
writeBoolValue(t,Config::distributeDocFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab. \n";
......@@ -1323,10 +1339,11 @@ void writeTemplateConfig(QFile *f,bool sl)
{
t << "\n";
t << "# This tag can be used to specify a number of aliases that acts \n";
t << "# as commands in the documentation. An alias has the form \"\\name=value\". \n";
t << "# as commands in the documentation. An alias has the form \"name=value\". \n";
t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n";
t << "# put the command \\sideeffect (or @sideeffect) in the documentation, which \n";
t << "# will result in a user defined paragraph with heading \"Side Effects:\". \n";
t << "# You can put \\n's in the value part of an alias to insert newlines. \n";
t << "# Predefined commands cannot be overwritten using aliases. \n";
t << "\n";
}
......
......@@ -69,7 +69,7 @@ class Definition
virtual bool isLinkableInProject() = 0;
virtual bool isLinkable() = 0;
bool isReference() { return !ref.isEmpty(); }
bool isReference() const { return !ref.isEmpty(); }
void setReference(const char *r) { ref=r; }
QCString getReference() { return ref; }
......
......@@ -2043,7 +2043,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
}
else
{
outDoc->newParagraph();
if (insidePre)
{
outDoc->docify(yytext);
}
else
{
outDoc->newParagraph();
}
}
if (inBlock()) endBlock();
}
......
......@@ -1205,7 +1205,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
{
in = bfd->absFilePath();
doc = bfd->isLinkableInProject();
src = bfd->generateSource() || (!bfd->isReference() && Config::sourceBrowseFlag);
src = bfd->generateSourceFile();
}
if (doc || src)
{
......
......@@ -90,6 +90,7 @@ FileNameDict *includeNameDict; // include names
FileNameDict *exampleNameDict; // examples
FileNameDict *imageNameDict; // images
StringDict typedefDict(1009); // all typedefs
StringDict namespaceAliasDict(257); // all namespace aliases
GroupDict groupDict(257); // all groups
FormulaDict formulaDict(1009); // all formulas
FormulaDict formulaNameDict(1009); // the label name of all formulas
......@@ -502,7 +503,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
// generate code for header
{
cd->setIncludeFile(fd,iName,local);
fd->setGenerateSource(TRUE);
//fd->setGenerateSource(TRUE);
}
else // put #include in the class documentation without link
{
......@@ -526,7 +527,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
//printf("addNameSpace() trying: %s\n",e->name.data());
QCString nsName = stripAnnonymousNamespaceScope(e->name);
if (!nsName.isEmpty() && nsName.at(0)!='@' &&
(nd=namespaceDict[nsName])
(nd=getResolvedNamespace(nsName))
)
{
cd->setNamespace(nd);
......@@ -688,7 +689,7 @@ static void buildClassList(Entry *root)
// namespace is part of the class name
if (!found && !namespaceName.isEmpty())
{
NamespaceDef *nd = namespaceDict[namespaceName];
NamespaceDef *nd = getResolvedNamespace(namespaceName);
if (nd)
{
cd->setNamespace(nd);
......@@ -850,7 +851,7 @@ static void findUsingDirectives(Entry *root)
nsName=root->parent->name.copy();
if (!nsName.isEmpty())
{
nd = namespaceDict[nsName];
nd = getResolvedNamespace(nsName);
}
}
......@@ -864,7 +865,7 @@ static void findUsingDirectives(Entry *root)
QCString scope=scopeOffset>0 ?
nsName.left(scopeOffset)+"::" : QCString();
//printf("Trying with scope=`%s'\n",scope.data());
usingNd = namespaceDict[scope+root->name];
usingNd = getResolvedNamespace(scope+root->name);
if (scopeOffset==0)
{
scopeOffset=-1;
......@@ -959,7 +960,7 @@ static void findUsingDeclarations(Entry *root)
scName=root->parent->name.copy();
if (!scName.isEmpty())
{
nd = namespaceDict[scName];
nd = getResolvedNamespace(scName);
}
}
......@@ -1175,7 +1176,7 @@ static MemberDef *addVariableToFile(
QCString nscope=removeAnnonymousScopes(scope);
if (!nscope.isEmpty())
{
nd = namespaceDict[nscope];
nd = getResolvedNamespace(nscope);
}
}
QCString def;
......@@ -1221,7 +1222,7 @@ static MemberDef *addVariableToFile(
NamespaceDef *nd=0;
if (!nscope.isEmpty())
{
nd = namespaceDict[nscope];
nd = getResolvedNamespace(nscope);
}
if (nd==0 || md->getNamespaceDef()==nd)
// variable already in the scope
......@@ -1540,10 +1541,11 @@ static void buildMemberList(Entry *root)
if (name.left(2)=="::") name=name.right(name.length()-2);
MemberDef::MemberType mtype;
if (isFriend) mtype=MemberDef::Friend;
else if (root->sig) mtype=MemberDef::Signal;
else if (root->slot) mtype=MemberDef::Slot;
else mtype=MemberDef::Function;
if (isFriend) mtype=MemberDef::Friend;
else if (root->mtype==Signal) mtype=MemberDef::Signal;
else if (root->mtype==Slot) mtype=MemberDef::Slot;
else if (root->mtype==DCOP) mtype=MemberDef::DCOP;
else mtype=MemberDef::Function;
// strip redundant template specifier for constructors
if ((i=name.find('<'))!=-1 && name.find('>')!=-1)
......@@ -1699,7 +1701,7 @@ static void buildMemberList(Entry *root)
NamespaceDef *rnd = 0;
if (!root->parent->name.isEmpty())
{
rnd = namespaceDict[root->parent->name];
rnd = getResolvedNamespace(root->parent->name);
}
FileDef *fd = md->getFileDef();
QCString nsName,rnsName;
......@@ -1811,7 +1813,7 @@ static void buildMemberList(Entry *root)
QCString nscope=removeAnnonymousScopes(root->parent->name);
if (!nscope.isEmpty())
{
nd = namespaceDict[nscope];
nd = getResolvedNamespace(nscope);
}
}
......@@ -3197,7 +3199,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
bool ambig;
FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
NamespaceDef *nd=0;
if (!namespaceName.isEmpty()) nd=namespaceDict[namespaceName];
if (!namespaceName.isEmpty()) nd=getResolvedNamespace(namespaceName);
tcd = findClassDefinition(fd,nd,scopeName,classTempList);
if (cd && tcd==cd) // member's classes match
......@@ -3367,8 +3369,9 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (unique)
{
MemberDef::MemberType mtype;
if (root->sig) mtype=MemberDef::Signal;
else if (root->slot) mtype=MemberDef::Slot;
if (root->mtype==Signal) mtype=MemberDef::Signal;
else if (root->mtype==Slot) mtype=MemberDef::Slot;
else if (root->mtype==DCOP) mtype=MemberDef::DCOP;
else mtype=MemberDef::Function;
// new overloaded member function
......@@ -3440,10 +3443,12 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (newMember) // need to create a new member
{
MemberDef::MemberType mtype;
if (root->sig)
if (root->mtype==Signal)
mtype=MemberDef::Signal;
else if (root->slot)
else if (root->mtype==Slot)
mtype=MemberDef::Slot;
else if (root->mtype==DCOP)
mtype=MemberDef::DCOP;
else
mtype=MemberDef::Function;
......@@ -3679,7 +3684,7 @@ static void findEnums(Entry *root)
{
QCString scope=root->name.left(i); // extract scope
name=root->name.right(root->name.length()-i-2); // extract name
if ((cd=getClass(scope))==0) nd=namespaceDict[scope];
if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
}
else // no scope, check the scope in which the docs where found
{
......@@ -3688,7 +3693,7 @@ static void findEnums(Entry *root)
) // found enum docs inside a compound
{
QCString scope=root->parent->name;
if ((cd=getClass(scope))==0) nd=namespaceDict[scope];
if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
}
name=root->name.copy();
}
......@@ -4103,7 +4108,9 @@ static void generateFileSources()
for (;(fd=fni.current());++fni)
{
bool src = !fd->isReference() &&
(fd->generateSource() || Config::sourceBrowseFlag);
(Config::verbatimHeaderFlag
//fd->generateSource()
|| Config::sourceBrowseFlag);
if (src)
{
msg("Generating code for file %s...\n",fd->name().data());
......@@ -5883,8 +5890,11 @@ int main(int argc,char **argv)
msg("Adding members to member groups.\n");
addMembersToMemberGroup();
msg("Distributing member group documentation.\n");
distributeMemberGroupDocumentation();
if (Config::distributeDocFlag)
{
msg("Distributing member group documentation.\n");
distributeMemberGroupDocumentation();
}
msg("Building full member lists recursively...\n");
buildCompleteMemberLists();
......
......@@ -91,6 +91,7 @@ extern QTextStream tagFile;
extern SectionDict sectionDict;
extern FileNameList inputNameList;
extern StringDict typedefDict;
extern StringDict namespaceAliasDict;
extern GroupList groupList;
extern GroupDict groupDict;
extern NamespaceList namespaceList;
......
......@@ -26,7 +26,7 @@ HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \
translator_nl.h translator_se.h translator_cz.h translator_fr.h \
translator_it.h formula.h debug.h membergroup.h htmlhelp.h \
translator_ru.h translator_pl.h dot.h rtfgen.h xml.h xml_dtd.h \
reflist.h page.h sortdict.h translator_hu.h
reflist.h page.h sortdict.h translator_hu.h translator_kr.h
SOURCES = doxygen.cpp scanner.cpp doc.cpp classdef.cpp classlist.cpp \
memberdef.cpp membername.cpp index.cpp memberlist.cpp \
entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \
......
......@@ -48,8 +48,7 @@ Entry::Entry(const Entry &e)
//printf("Copy New Entry %d\n",num);
section = e.section;
protection = e.protection;
sig = e.sig;
slot = e.slot;
mtype = e.mtype;
stat = e.stat;
explicitExternal = e.explicitExternal;
virt = e.virt;
......@@ -219,9 +218,8 @@ void Entry::reset()
todoId = 0;
testId = 0;
section = EMPTY_SEC;
sig = FALSE;
mtype = Method;
virt = Normal;
slot = FALSE;
stat = FALSE;
proto = FALSE;
explicitExternal = FALSE;
......
......@@ -23,6 +23,7 @@
enum Protection { Public, Protected, Private } ;
enum Specifier { Normal, Virtual, Pure } ;
enum MethodTypes { Method, Signal, Slot, DCOP };
struct BaseInfo
{
......@@ -161,8 +162,9 @@ class Entry
int section; // entry type (see Sections);
Protection protection; // class protection
bool sig; // a Qt signal ?
bool slot; // a Qt slot ?
//bool sig; // a Qt signal ?
//bool slot; // a Qt slot ?
MethodTypes mtype; // signal, slot or dcop method?
bool stat; // static ?
bool explicitExternal; // explicitly defined as external?
bool proto; // prototype ?
......
......@@ -164,9 +164,7 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.docify(ii->includeName);
ol.enableAll();
ol.disableAllBut(OutputGenerator::Html);
if (fd && fd->isLinkable() &&
(fd->generateSource() || Config::sourceBrowseFlag)
)
if (fd && fd->isLinkable() && fd->generateSourceFile())
{
ol.writeObjectLink(fd->getReference(),fd->includeName(),0,ii->includeName);
}
......@@ -222,7 +220,7 @@ void FileDef::writeDocumentation(OutputList &ol)
//incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase());
}
if (generateSource() || (!isReference() && Config::sourceBrowseFlag))
if (generateSourceFile())
{
ol.disableAllBut(OutputGenerator::Html);
ol.newParagraph();
......
......@@ -120,8 +120,11 @@ class FileDef : public Definition
void addUsingDeclaration(ClassDef *cd);
ClassList *getUsedClasses() const { return usingDeclList; }
void setGenerateSource(bool b) { isSource=b; }
bool generateSource() const { return isSource; }
//void setGenerateSource(bool b) { isSource=b; }
bool generateSourceFile() const
{ return !isReference() &&
(Config::sourceBrowseFlag || Config::verbatimHeaderFlag);
}
void addIncludeDependency(FileDef *fd,const char *incName,bool local);
void addIncludedByDependency(FileDef *fd,const char *incName,bool local);
......
......@@ -333,7 +333,7 @@ void countFiles(int &htmlFiles,int &files)
for (;(fd=fni.current());++fni)
{
bool doc = fd->isLinkableInProject();
bool src = fd->generateSource() || Config::sourceBrowseFlag;
bool src = fd->generateSourceFile();
if (doc || src)
{
htmlFiles++;
......@@ -415,7 +415,7 @@ void writeFileIndex(OutputList &ol)
{
//printf("Found filedef %s\n",fd->name().data());
bool doc = fd->isLinkableInProject();
bool src = fd->generateSource() || Config::sourceBrowseFlag;
bool src = fd->generateSourceFile();
if ((doc || src) && !fd->isReference())
{
QCString path;
......@@ -849,7 +849,7 @@ void writeAlphabeticalClassList(OutputList &ol)
if (!namesp.isEmpty())
{
ol.docify(" (");
NamespaceDef *nd = namespaceDict[namesp];
NamespaceDef *nd = getResolvedNamespace(namesp);
if (nd && nd->isLinkable())
{
ol.writeObjectLink(nd->getReference(),
......
......@@ -32,6 +32,7 @@
#include "translator_pl.h"
#include "translator_pt.h"
#include "translator_hu.h"
#include "translator_kr.h"
#endif
#define L_EQUAL(a) !stricmp(langName,a)
......@@ -105,6 +106,10 @@ bool setTranslator(const char *langName)
{
theTranslator=new TranslatorHungarian;
}
else if (L_EQUAL("korean"))
{
theTranslator=new TranslatorKorean;
}
#endif
else // use the default language (i.e. english)
{
......
......@@ -1134,6 +1134,7 @@ void LatexGenerator::docify(const char *str)
{
static bool isCzech = theTranslator->idLanguage()=="czech";
static bool isJapanese = theTranslator->idLanguage()=="japanese";
static bool isKorean = theTranslator->idLanguage()=="korean";
static bool isRussian = theTranslator->idLanguage()=="russian";
static bool isGerman = theTranslator->idLanguage()=="german";
if (str)
......@@ -1192,7 +1193,7 @@ void LatexGenerator::docify(const char *str)
break;
default:
if (isJapanese)
if (isJapanese || isKorean)
{ // Japanese language uses wide characters
if (c>=128)
{
......
......@@ -1414,6 +1414,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def)
case Signal: // fall through
case Prototype: // fall through
case Friend: // fall through
case DCOP: // fall through
case Slot: t << "functiondef"; xmlType=function_t; break;
}
t << " id=\"";
......@@ -1562,6 +1563,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def)
case Signal: // fall through
case Prototype: // fall through
case Friend: // fall through
case DCOP: // fall through
case Slot: t << "functiondef"; break;
}
t << ">" << endl;
......
......@@ -57,7 +57,8 @@ class MemberDef : public Definition
Prototype,
Signal,
Slot,
Friend
Friend,
DCOP
};
enum
......@@ -107,6 +108,7 @@ class MemberDef : public Definition
bool isFunction() const { return mtype==Function; }
bool isDefine() const { return mtype==Define; }
bool isFriend() const { return mtype==Friend; }
bool isDCOP() const { return mtype==DCOP; }
bool isRelated() const { return related; }
bool isStatic() const { return stat; }
bool isInline() const { return (memSpec&Entry::Inline)!=0; }
......
......@@ -73,6 +73,7 @@ void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPe
case MemberDef::Variable: varCnt++,m_count++; break;
case MemberDef::Function: // fall through
case MemberDef::Signal: // fall through
case MemberDef::DCOP: // fall through
case MemberDef::Slot: if (!md->isRelated() || md->getClassDef())
funcCnt++,m_count++;
break;
......@@ -409,7 +410,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
for ( ; (md=mli.current()) ; ++mli )
{
if (
( md->isFunction() || md->isSignal() || md->isSlot()) &&
( md->isFunction() || md->isSignal() || md->isSlot() || md->isDCOP()) &&
( !md->isRelated() || md->getClassDef() ) &&
inGroup==md->visibleMemberGroup(sectionPerType)
)
......
......@@ -326,19 +326,19 @@ static const struct
{ "ListEnum4",
"\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum4",
{ "ListEnum5",
"\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum5",
{ "ListEnum6",
"\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum6",
{ "ListEnum7",
"\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum7",
{ "ListEnum8",
"\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum8",
{ "ListEnum9",
"\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid "
},
{ 0,
......
......@@ -100,8 +100,7 @@ static int yyLineNr = 1 ;
static int anonCount = 0 ;
static char yyFileName[4096] ;
static int lastMemberGroupLine;
static bool sig;
static bool slot;
static MethodTypes mtype;
static bool gstat;
static bool removeSlashes;
static Specifier virt;
......@@ -119,6 +118,7 @@ static SectionInfo::SectionType
sectionType;
static QCString funcPtrType;
static QCString templateStr;
static QCString aliasName;
static QCString baseName;
static QCString* specName;
static QCString formulaText;
......@@ -157,8 +157,7 @@ static void initParser()
curlyCount = 0;
ifCount = 0;
memberGroupId = NOGROUP;
sig = FALSE;
slot = FALSE;
mtype = Method;
gstat = FALSE;
virt = Normal;
baseVirt = Normal;
......@@ -442,6 +441,8 @@ TITLE [tT][iI][tT][lL][eE]
%x CopyRound
%x CopyCurly
%x IDLUnionCase
%x NSAliasName
%x NSAliasArg
%%
......@@ -512,8 +513,16 @@ TITLE [tT][iI][tT][lL][eE]
unput(*yytext);
BEGIN( FindMembers ) ;
}
<FindMembers>{B}*"signals"{BN}*":"{BN}* { current->sig = sig = TRUE;
current->slot = slot = FALSE;
<FindMembers>{B}*"k_dcop"{BN}*":"{BN}* { current->mtype = mtype = DCOP;
current->protection = protection = Public ;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
current->argList->clear();
lineCount() ;
}
<FindMembers>{B}*"signals"{BN}*":"{BN}* { current->mtype = mtype = Signal;
current->protection = protection = Public ;
current->type.resize(0);
current->name.resize(0);
......@@ -524,8 +533,7 @@ TITLE [tT][iI][tT][lL][eE]
<FindMembers>{B}*"public"{BN}*"slots"{BN}*":"{BN}* {
current->protection = protection = Public ;
current->slot = slot = TRUE;
current->sig = sig = FALSE;
current->mtype = mtype = Slot;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -535,8 +543,7 @@ TITLE [tT][iI][tT][lL][eE]
<FindMembers>{B}*"protected"{BN}*"slots"{BN}*":"{BN}* {
current->protection = protection = Protected ;
current->slot = slot = TRUE;
current->sig = sig = FALSE;
current->mtype = mtype = Slot;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -546,8 +553,7 @@ TITLE [tT][iI][tT][lL][eE]
<FindMembers>{B}*"private"{BN}*"slots"{BN}*":"{BN}* {
current->protection = protection = Private ;
current->slot = slot = TRUE;
current->sig = sig = FALSE;
current->mtype = mtype = Slot;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -558,8 +564,7 @@ TITLE [tT][iI][tT][lL][eE]
<FindMembers>{B}*"methods"{B}":" { /* M$-IDL only: ignored */ }
<FindMembers>{B}*"public"{BN}*":"{BN}* {
current->protection = protection = Public ;
current->slot = slot = FALSE;
current->sig = sig = FALSE;
current->mtype = mtype = Method;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -568,8 +573,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<FindMembers>{B}*"protected"{BN}*":"{BN}* {
current->protection = protection = Protected ;
current->slot = slot = FALSE;
current->sig = sig = FALSE;
current->mtype = mtype = Method;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -578,8 +582,7 @@ TITLE [tT][iI][tT][lL][eE]
}
<FindMembers>{B}*"private"{BN}*":"{BN}* {
current->protection = protection = Private ;
current->slot = slot = FALSE;
current->sig = sig = FALSE;
current->mtype = mtype = Method;
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
......@@ -766,6 +769,20 @@ TITLE [tT][iI][tT][lL][eE]
//printf("Start template list\n");
BEGIN( ReadTempArgs );
}
<FindMembers>"namespace"{BN}+/{ID}{BN}*"=" { // namespace alias
lineCount();
BEGIN( NSAliasName );
}
<NSAliasName>{ID} {
aliasName = yytext;
BEGIN( NSAliasArg );
}
<NSAliasArg>({ID}"::")*{ID} {
namespaceAliasDict.insert(aliasName,new QCString(yytext));
}
<NSAliasArg>";" {
BEGIN( FindMembers );
}
<FindMembers>"using"{BN}+ {
current->startLine=yyLineNr;
lineCount();
......@@ -780,10 +797,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN(Using);
}
......@@ -794,10 +810,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN(Using);
}
......@@ -958,10 +973,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN(FindMembers);
}
......@@ -1258,8 +1272,7 @@ TITLE [tT][iI][tT][lL][eE]
// variable found
current->section = Entry::EMPTY_SEC ;
current->protection = protection;
current->slot = slot = FALSE;
current->sig = sig = FALSE;
current->mtype = Method;
current->virt = Normal;
current->stat = gstat;
current->mGrpId = memberGroupId;
......@@ -1355,10 +1368,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->parent->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
}
else // probably a redundant ,
......@@ -1429,10 +1441,9 @@ TITLE [tT][iI][tT][lL][eE]
{ // namespaces and interfaces ends with a closing bracket without semicolon
current->reset();
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN( FindMembers ) ;
}
......@@ -1457,10 +1468,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry( current ) ;
current = new Entry;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN(MemberSpecSkip);
}
......@@ -1509,10 +1519,9 @@ TITLE [tT][iI][tT][lL][eE]
{
Entry *varEntry=new Entry;
varEntry->protection = current->protection ;
varEntry->sig = current->sig;
varEntry->mtype = current->mtype;
varEntry->virt = current->virt;
varEntry->stat = current->stat;
varEntry->slot = current->slot;
varEntry->section = Entry::VARIABLE_SEC;
varEntry->name = msName.stripWhiteSpace();
varEntry->type = current->type.simplifyWhiteSpace()+" ";
......@@ -1548,10 +1557,9 @@ TITLE [tT][iI][tT][lL][eE]
isTypedef=FALSE;
current->reset();
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN( FindMembers );
}
......@@ -1962,10 +1970,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
lastCurlyContext = FindMembers;
if( *yytext == '{' )
......@@ -2564,6 +2571,12 @@ TITLE [tT][iI][tT][lL][eE]
}
<SkipHtmlComment>"--"[!]?">" { BEGIN(lastSkipHtmlCommentContext); }
<SkipHtmlComment>.
<AfterDoc,Doc,ClassDoc,PageDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] {
current->doc+=yytext;
}
<AfterDocLine,LineDoc,JavaDoc>("\\\\"|"@@")("todo"|"test")/[^a-z_A-Z0-9] {
current->brief+=yytext;
}
<AfterDoc,AfterDocLine,LineDoc,Doc,JavaDoc,ClassDoc,PageDoc>{CMD}"todo"/[^a-z_A-Z0-9] {
todoStartContext = YY_START;
lastBriefContext = TodoParam; // this is where we will continue at the end of the argument
......@@ -3019,10 +3032,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN( FindMembers );
}
......@@ -3300,10 +3312,9 @@ TITLE [tT][iI][tT][lL][eE]
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection ;
current->sig = sig;
current->mtype = mtype;
current->virt = virt;
current->stat = gstat;
current->slot = slot;
current->mGrpId = memberGroupId;
BEGIN( FindMembers );
}
......@@ -3399,8 +3410,7 @@ static void parseCompounds(Entry *rt)
current->protection = protection = ce->protection;
else // named struct, union, or interface
current->protection = protection = Public ;
sig = FALSE;
slot = FALSE;
mtype = Method;
gstat = FALSE;
virt = Normal;
current->mGrpId = memberGroupId = ce->mGrpId;
......@@ -3419,8 +3429,7 @@ void parseMain(Entry *rt)
initParser();
anonCount = 0;
protection = Public;
sig = FALSE;
slot = FALSE;
mtype = Method;
gstat = FALSE;
virt = Normal;
current_root = rt;
......
......@@ -24,6 +24,89 @@
class Translator
{
protected:
/*! Returns the string converted from windows-1250 to iso-8859-2. */
/* The method was designed initially for translator_cz.h.
It is used for on-line encoding conversion related to conditional
compilation in Unix/MS Windows environments (both use different
encoding). Later, the translator_hr.h (by Boris Bralo) used and
improved the same style. As the method with the translation table
was the same, the decision to move it to this base class was made.
The same holds for ISO88592ToWin1250() method. It is recommended
for possibly other similar methods in future.
*/
QCString Win1250ToISO88592(const QCString & sInput)
{
// The conversion table for characters >127
//
static const char WinToISOTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97',
'\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC',
'\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7',
'\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF',
'\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7',
'\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? WinToISOTab[c & 0x7F] : c;
}
return result;
}
/*! returns the string converted from iso-8859-2 to windows-1250 */
/* See the comments of the Win1250ToISO88592() method for details. */
QCString ISO88592ToWin1250(const QCString & sInput)
{
// The conversion table for characters >127
//
static const char ISOToWinTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
'\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
'\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7',
'\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF',
'\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7',
'\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? ISOToWinTab[c & 0x7F] : c;
}
return result;
}
public:
// --- Language contol methods -------------------
......@@ -993,6 +1076,16 @@ class Translator
return "Test List";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.1
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
return "DCOP Methods";
}
};
#endif
......@@ -48,105 +48,48 @@
// 2000/08/02 (Petr Prikryl)
// - Updated for 1.2.0
//
// 2000/08/24 (Petr Prikryl)
// - Changed trTodo() text from "Udelat" to "Planovane upravy"
// which seems more appropriate in the document context.
// - Typo corrected in trMemberTypedefDocumentation().
//
// 2000/08/30 (Petr Prikryl)
// - Macro DECODE replaced by the inline Decode() (proposed by
// Boris Bralo <boris.bralo@zg.tel.hr> in translator_hr.h).
//
// 2000/08/31 (Petr Prikryl)
// - Methods ISOToWin() and WinToISO() renamed and moved to the
// base class (in translator.h) to be shared with the Croatian
// translator.
//
// 2000/09/06 (Petr Prikryl)
// - Reimplementation of the method trInheritsList() which takes
// into account quantity of base classes.
//
// Notices:
// --------
// The conditional compilation ensures or the neutral functionality
// of the macro DECODE, or calling the WinToISO() method for
// on-line encoding conversion. If you want to maintain the source
// in the iso-8859-2, do convert the source, change the conditional
// definition of the DECODE macro using the method ISOToWin() --
// for conversion of strings for the Windows version. The version
// which does not call the function is slightly faster.
//
// Only one of the private method WinToISO() and ISOToWin() is
// necessary depending on whether this source is maintained in
// windows-1250 or iso-8859-2 encoding. However, there is not a
// big loose of space when both methods with the conversion tables
// are supported. The other (not used now) may be handy in future.
// Do not erase it.
// Here the DECODE macro assumes the source written in Windows encoding.
//
#ifdef _WIN32
#define DECODE(sInput) sInput
#else
#define DECODE(sInput) WinToISO(sInput)
#endif
// of the private inline Decode(), or calling the WinToISO() method
// for on-line encoding conversion. If you want to maintain the
// source in the iso-8859-2, do convert the source encoding, change
// the conditional definition of the inline Decode() using the
// method ISO88592ToWin1250() -- for conversion of strings for the
// Windows version. The version which does not call the function is
// probably slightly faster (if the inline is well optimized).
class TranslatorCzech : public Translator
{
private:
/*! returns the string converted from windows-1250 to iso-8859-2 */
QCString WinToISO(const QCString sInput)
{
// The conversion table for characters >127
//
static const char WinToISOTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97',
'\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC',
'\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7',
'\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF',
'\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7',
'\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? WinToISOTab[c & 0x7F] : c;
}
return result;
}
/*! returns the string converted from iso-8859-2 to windows-1250 */
QCString ISOToWin(const QCString sInput)
{
// The conversion table for characters >127
//
static const char ISOToWinTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
'\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
'\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7',
'\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF',
'\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7',
'\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? ISOToWinTab[c & 0x7F] : c;
}
return result;
/*! The Decode() inline assumes the source written in the
Windows encoding (maintainer dependent).
*/
inline QCString Decode(const QCString & sInput)
{
#ifdef _WIN32
return sInput;
#else
return Win1250ToISO88592(sInput);
#endif
}
public:
......@@ -176,51 +119,51 @@ class TranslatorCzech : public Translator
/*! used in the compound documentation before a list of related functions. */
virtual QCString trRelatedFunctions()
{ return DECODE("Související funkce"); }
{ return Decode("Související funkce"); }
/*! subscript for the related functions. */
virtual QCString trRelatedSubscript()
{ return DECODE("(Uvedené funkce nejsou èlenskými funkcemi.)"); }
{ return Decode("(Uvedené funkce nejsou èlenskými funkcemi.)"); }
/*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription()
{ return DECODE("Detailní popis"); }
{ return Decode("Detailní popis"); }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
{ return DECODE("Dokumentace k èlenských typùm"); }
{ return Decode("Dokumentace k èlenským typùm"); }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
{ return DECODE("Dokumentace k èlenským výètùm"); }
{ return Decode("Dokumentace k èlenským výètùm"); }
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
{ return DECODE("Dokumentace k metodám"); }
{ return Decode("Dokumentace k metodám"); }
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
{ return DECODE("Dokumentace k datovým èlenùm"); }
{ return Decode("Dokumentace k datovým èlenùm"); }
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
{ return DECODE("(...)"); }
{ return Decode("(...)"); }
/*! put in the class documentation */
virtual QCString trListOfAllMembers()
{ return DECODE("Seznam všech èlenù."); }
{ return Decode("Seznam všech èlenù."); }
/*! used as the title of the "list of all members" page of a class */
virtual QCString trMemberList()
{ return DECODE("Seznam èlenù tøídy"); }
{ return Decode("Seznam èlenù tøídy"); }
/*! this is the first part of a sentence that is followed by a class name */
virtual QCString trThisIsTheListOfAllMembers()
{ return DECODE("Zde naleznete úplný seznam èlenù tøídy "); }
{ return Decode("Zde naleznete úplný seznam èlenù tøídy "); }
/*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers()
{ return DECODE(", vèetnì všech zdìdìných èlenù."); }
{ return Decode(", vèetnì všech zdìdìných èlenù."); }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
......@@ -230,26 +173,26 @@ class TranslatorCzech : public Translator
"ze zdrojových textù";
if (s) result+=(QCString)" projektu "+s;
result+=".";
return DECODE(result);
return Decode(result);
}
/*! put after an enum name in the list of all members */
virtual QCString trEnumName()
{ return DECODE("jméno výètu"); }
{ return Decode("jméno výètu"); }
/*! put after an enum value in the list of all members */
virtual QCString trEnumValue()
{ return DECODE("hodnota výètu"); }
{ return Decode("hodnota výètu"); }
/*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn()
{ return DECODE("definován v"); }
{ return Decode("definován v"); }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
virtual QCString trVerbatimText(const char *f)
{ return DECODE((QCString)"Úplný text vkládaného souboru "+f+"."); }
{ return Decode((QCString)"Úplný text vkládaného souboru "+f+"."); }
// quick reference sections
......@@ -257,47 +200,47 @@ class TranslatorCzech : public Translator
* compounds or files (see the \group command).
*/
virtual QCString trModules()
{ return DECODE("Moduly"); }
{ return Decode("Moduly"); }
/*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy()
{ return DECODE("Hierarchie tøíd"); }
{ return Decode("Hierarchie tøíd"); }
/*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList()
{ return DECODE("Seznam tøíd"); }
{ return Decode("Seznam tøíd"); }
/*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList()
{ return DECODE("Seznam souborù"); }
{ return Decode("Seznam souborù"); }
/*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles()
{ return DECODE("Seznam hlavièkových souborù"); }
{ return Decode("Seznam hlavièkových souborù"); }
/*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers()
{ return DECODE("Seznam èlenù tøíd"); }
{ return Decode("Seznam èlenù tøíd"); }
/*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers()
{ return DECODE("Symboly v souborech"); }
{ return Decode("Symboly v souborech"); }
/*! This is put above each page as a link to all related pages. */
virtual QCString trRelatedPages()
{ return DECODE("Související stránky"); }
{ return Decode("Související stránky"); }
/*! This is put above each page as a link to all examples. */
virtual QCString trExamples()
{ return DECODE("Pøíklady"); }
{ return Decode("Pøíklady"); }
/*! This is put above each page as a link to the search engine. */
virtual QCString trSearch()
{ return DECODE("Hledat"); }
{ return Decode("Hledat"); }
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
{ return DECODE("Zde naleznete seznam, vyjadøující vztah dìdiènosti tøíd. "
{ return Decode("Zde naleznete seznam, vyjadøující vztah dìdiènosti tøíd. "
"Je seøazen pøibližnì (ale ne úplnì) podle abecedy:");
}
......@@ -307,12 +250,12 @@ class TranslatorCzech : public Translator
QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="dokumentovaných ";
result+="souborù se struènými popisy:";
return DECODE(result);
return Decode(result);
}
/*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription()
{ return DECODE("Následující seznam obsahuje pøedevším identifikace tøíd, "
{ return Decode("Následující seznam obsahuje pøedevším identifikace tøíd, "
"ale nachází se zde i další netriviální prvky, jako jsou "
"struktury (struct), unie (union) a rozhraní (interface). "
"V seznamu jsou uvedeny jejich struèné popisy:");
......@@ -328,7 +271,7 @@ class TranslatorCzech : public Translator
result+="dokumentaci tøíd, ke kterým pøíslušejí:";
else
result+="tøídy, ke kterým pøíslušejí:";
return DECODE(result);
return Decode(result);
}
/*! This is an introduction to the page with all file members. */
......@@ -349,197 +292,197 @@ class TranslatorCzech : public Translator
"Symbol mùže oznaèovat makro, typ, instanci tøídy, "
"promìnnou, konstantu, funkci, výèet, hodnotu výètu a podobnì:";
return DECODE(result);
return Decode(result);
}
/*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription()
{ return DECODE("Zde naleznete hlavièkové soubory, které tvoøí "
{ return Decode("Zde naleznete hlavièkové soubory, které tvoøí "
"aplikaèní programátorské rozhraní (API):"); }
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
{ return DECODE("Zde naleznete seznam všech pøíkladù:"); }
{ return Decode("Zde naleznete seznam všech pøíkladù:"); }
/*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription()
{ return DECODE("Zde naleznete seznam všech souvisejících stránek "
{ return Decode("Zde naleznete seznam všech souvisejících stránek "
"dokumentace:"); }
/*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription()
{ return DECODE("Zde naleznete seznam všech modulù:"); }
{ return Decode("Zde naleznete seznam všech modulù:"); }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
virtual QCString trNoDescriptionAvailable()
{ return DECODE("Popis není k dispozici"); }
{ return Decode("Popis není k dispozici"); }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
{ return DECODE("Dokumentace"); }
{ return Decode("Dokumentace"); }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
virtual QCString trModuleIndex()
{ return DECODE("Rejstøík modulù"); }
{ return Decode("Rejstøík modulù"); }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
virtual QCString trHierarchicalIndex()
{ return DECODE("Rejstøík hierarchie tøíd"); }
{ return Decode("Rejstøík hierarchie tøíd"); }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
virtual QCString trCompoundIndex()
{ return DECODE("Rejstøík tøíd"); }
{ return Decode("Rejstøík tøíd"); }
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
virtual QCString trFileIndex()
{ return DECODE("Rejstøík souborù"); }
{ return Decode("Rejstøík souborù"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
virtual QCString trModuleDocumentation()
{ return DECODE("Dokumentace modulù"); }
{ return Decode("Dokumentace modulù"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
virtual QCString trClassDocumentation()
{ return DECODE("Dokumentace tøíd"); }
{ return Decode("Dokumentace tøíd"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
virtual QCString trFileDocumentation()
{ return DECODE("Dokumentace souborù"); }
{ return Decode("Dokumentace souborù"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
{ return DECODE("Dokumentace pøíkladù"); }
{ return Decode("Dokumentace pøíkladù"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
virtual QCString trPageDocumentation()
{ return DECODE("Dokumentace souvisejících stránek"); }
{ return Decode("Dokumentace souvisejících stránek"); }
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
{ return DECODE("Referenèní pøíruèka"); }
{ return Decode("Referenèní pøíruèka"); }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
virtual QCString trDefines()
{ return DECODE("Definice maker"); }
{ return Decode("Definice maker"); }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
virtual QCString trFuncProtos()
{ return DECODE("Prototypy"); }
{ return Decode("Prototypy"); }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
virtual QCString trTypedefs()
{ return DECODE("Definice typù"); }
{ return Decode("Definice typù"); }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
{ return DECODE("Výèty"); }
{ return Decode("Výèty"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
virtual QCString trFunctions()
{ return DECODE("Funkce"); }
{ return Decode("Funkce"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trVariables()
{ return DECODE("Promìnné"); }
{ return Decode("Promìnné"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
virtual QCString trEnumerationValues()
{ return DECODE("Hodnoty výètù"); }
{ return Decode("Hodnoty výètù"); }
/*! This is used in man pages as the author section. */
virtual QCString trAuthor()
{ return DECODE("Autor"); }
{ return Decode("Autor"); }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
{ return DECODE("Dokumentace k definicím maker"); }
{ return Decode("Dokumentace k definicím maker"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
{ return DECODE("Dokumentace prototypù"); }
{ return Decode("Dokumentace prototypù"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
{ return DECODE("Dokumentace definic typù"); }
{ return Decode("Dokumentace definic typù"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
{ return DECODE("Dokumentace výètových typù"); }
{ return Decode("Dokumentace výètových typù"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return DECODE("Dokumentace výètových hodnot"); }
{ return Decode("Dokumentace výètových hodnot"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
{ return DECODE("Dokumentace funkcí"); }
{ return Decode("Dokumentace funkcí"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
{ return DECODE("Dokumentace promìnných"); }
{ return Decode("Dokumentace promìnných"); }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
virtual QCString trCompounds()
{ return DECODE("Tøídy"); }
{ return Decode("Tøídy"); }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
virtual QCString trFiles()
{ return DECODE("Soubory"); }
{ return Decode("Soubory"); }
/*! This is used in the standard footer of each page and indicates when
* the page was generated
......@@ -549,75 +492,75 @@ class TranslatorCzech : public Translator
QCString result=(QCString)"Generováno "+date;
if (projName) result+=(QCString)" pro projekt "+projName;
result+=(QCString)" programem";
return DECODE(result);
return Decode(result);
}
/*! This is part of the sentence used in the standard footer of each page.
*/
virtual QCString trWrittenBy()
{
return DECODE(" -- autor ");
return Decode(" -- autor ");
}
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
return DECODE((QCString)"Diagram dìdiènosti pro tøídu "+clName);
return Decode((QCString)"Diagram dìdiènosti pro tøídu "+clName);
}
/*! this text is generated when the \internal command is used. */
virtual QCString trForInternalUseOnly()
{ return DECODE("Pouze pro vnitøní použití."); }
{ return Decode("Pouze pro vnitøní použití."); }
/*! this text is generated when the \reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return DECODE("Reimplementováno z interních dùvodù; "
{ return Decode("Reimplementováno z interních dùvodù; "
"aplikaèní rozhraní zachováno."); }
/*! this text is generated when the \warning command is used. */
virtual QCString trWarning()
{ return DECODE("Pozor"); }
{ return Decode("Pozor"); }
/*! this text is generated when the \bug command is used. */
virtual QCString trBugsAndLimitations()
{ return DECODE("Chyby a omezení"); }
{ return Decode("Chyby a omezení"); }
/*! this text is generated when the \version command is used. */
virtual QCString trVersion()
{ return DECODE("Verze"); }
{ return Decode("Verze"); }
/*! this text is generated when the \date command is used. */
virtual QCString trDate()
{ return DECODE("Datum"); }
{ return Decode("Datum"); }
/*! this text is generated when the \author command is used. */
virtual QCString trAuthors()
{ return DECODE("Autor/autoøi"); }
{ return Decode("Autor/autoøi"); }
/*! this text is generated when the \return command is used. */
virtual QCString trReturns()
{ return DECODE("Návratová hodnota"); }
{ return Decode("Návratová hodnota"); }
/*! this text is generated when the \sa command is used. */
virtual QCString trSeeAlso()
{ return DECODE("Viz také"); }
{ return Decode("Viz také"); }
/*! this text is generated when the \param command is used. */
virtual QCString trParameters()
{ return DECODE("Parametry"); }
{ return Decode("Parametry"); }
/*! this text is generated when the \exception command is used. */
virtual QCString trExceptions()
{ return DECODE("Výjimky"); }
{ return Decode("Výjimky"); }
/*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy()
{ return DECODE("Generováno programem"); }
{ return Decode("Generováno programem"); }
// new since 0.49-990307
/*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
{ return DECODE("Seznam prostorù jmen"); }
{ return Decode("Seznam prostorù jmen"); }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
......@@ -625,14 +568,14 @@ class TranslatorCzech : public Translator
QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="dokumentovaných ";
result+="prostorù jmen se struèným popisem:";
return DECODE(result);
return Decode(result);
}
/*! used in the class documentation as a header before the list of all
* friends of a class
*/
virtual QCString trFriends()
{ return DECODE("Friends"); }
{ return Decode("Friends"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
......@@ -642,7 +585,7 @@ class TranslatorCzech : public Translator
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return DECODE("Dokumentace k friends"); }
{ return Decode("Dokumentace k friends"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
......@@ -664,7 +607,7 @@ class TranslatorCzech : public Translator
case ClassDef::Exception: result+="výjimky "; break;
}
result+=clName;
return DECODE(result);
return Decode(result);
}
/*! used as the title of the HTML page of a file */
......@@ -672,7 +615,7 @@ class TranslatorCzech : public Translator
{
QCString result("Dokumentace souboru ");
result+=fileName;
return DECODE(result);
return Decode(result);
}
/*! used as the title of the HTML page of a namespace */
......@@ -680,32 +623,32 @@ class TranslatorCzech : public Translator
{
QCString result("Dokumentace prostoru jmen ");
result+=namespaceName;
return DECODE(result);
return Decode(result);
}
/*! \mgroup Class sections
* these are for the member sections of a class, struct or union
*/
virtual QCString trPublicMembers()
{ return DECODE("Veøejné metody"); }
{ return Decode("Veøejné metody"); }
virtual QCString trPublicSlots()
{ return DECODE("Veøejné sloty"); }
{ return Decode("Veøejné sloty"); }
virtual QCString trSignals()
{ return DECODE("Signály"); }
{ return Decode("Signály"); }
virtual QCString trStaticPublicMembers()
{ return DECODE("Statické veøejné metody"); }
{ return Decode("Statické veøejné metody"); }
virtual QCString trProtectedMembers()
{ return DECODE("Chránìné metody"); }
{ return Decode("Chránìné metody"); }
virtual QCString trProtectedSlots()
{ return DECODE("Chránìné sloty"); }
{ return Decode("Chránìné sloty"); }
virtual QCString trStaticProtectedMembers()
{ return DECODE("Statické chránìné metody"); }
{ return Decode("Statické chránìné metody"); }
virtual QCString trPrivateMembers()
{ return DECODE("Privátní metody"); }
{ return Decode("Privátní metody"); }
virtual QCString trPrivateSlots()
{ return DECODE("Privátní sloty"); }
{ return Decode("Privátní sloty"); }
virtual QCString trStaticPrivateMembers()
{ return DECODE("Statické privátní metody"); }
{ return Decode("Statické privátní metody"); }
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
......@@ -730,7 +673,7 @@ class TranslatorCzech : public Translator
result+=" a ";
}
}
return DECODE(result);
return Decode(result);
}
/*! used in class documentation to produce a list of base classes,
......@@ -738,7 +681,10 @@ class TranslatorCzech : public Translator
*/
virtual QCString trInheritsList(int numEntries)
{
return DECODE("Dìdí "+trWriteList(numEntries)+".");
QCString result("Dìdí z ");
result += (numEntries == 1) ? "bázové tøídy " : "bázových tøíd ";
result += trWriteList(numEntries)+".";
return Decode(result);
}
/*! used in class documentation to produce a list of super classes,
......@@ -749,7 +695,7 @@ class TranslatorCzech : public Translator
QCString result("Zdìdìna ");
result += (numEntries == 1) ? "tøídou " : "tøídami ";
result += trWriteList(numEntries)+".";
return DECODE(result);
return Decode(result);
}
/*! used in member documentation blocks to produce a list of
......@@ -760,7 +706,7 @@ class TranslatorCzech : public Translator
QCString result("Reimplementuje ");
result += (numEntries == 1) ? "metodu tøídy " : "metody tøíd ";
result += trWriteList(numEntries)+".";
return DECODE(result);
return Decode(result);
}
/*! used in member documentation blocks to produce a list of
......@@ -771,12 +717,12 @@ class TranslatorCzech : public Translator
QCString result("Reimplementováno ");
result += (numEntries == 1) ? "tøídou " : "tøídami ";
result += trWriteList(numEntries)+".";
return DECODE(result);
return Decode(result);
}
/*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers()
{ return DECODE("Symboly v prostorech jmen"); }
{ return Decode("Symboly v prostorech jmen"); }
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
......@@ -789,19 +735,19 @@ class TranslatorCzech : public Translator
result+="dokumentaci pøíslušného prostoru jmen:";
else
result+="pøíslušný prostor jmen:";
return DECODE(result);
return Decode(result);
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
{ return DECODE("Rejstøík prostorù jmen"); }
{ return Decode("Rejstøík prostorù jmen"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual QCString trNamespaceDocumentation()
{ return DECODE("Dokumentace prostorù jmen"); }
{ return Decode("Dokumentace prostorù jmen"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
......@@ -811,7 +757,7 @@ class TranslatorCzech : public Translator
* namespaces in a file.
*/
virtual QCString trNamespaces()
{ return DECODE("Prostory jmen"); }
{ return Decode("Prostory jmen"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
......@@ -836,14 +782,14 @@ class TranslatorCzech : public Translator
result+=" byla generována z ";
if (single) result+="následujícího souboru:";
else result+="následujících souborù:";
return DECODE(result);
return Decode(result);
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
virtual QCString trAlphabeticalList()
{ return DECODE("Rejstøík tøíd"); }
{ return Decode("Rejstøík tøíd"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
......@@ -851,18 +797,18 @@ class TranslatorCzech : public Translator
/*! This is used as the heading text for the retval command. */
virtual QCString trReturnValues()
{ return DECODE("Vracené hodnoty"); }
{ return Decode("Vracené hodnoty"); }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
virtual QCString trMainPage()
{ return DECODE("Hlavní stránka"); }
{ return Decode("Hlavní stránka"); }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
virtual QCString trPageAbbreviation()
{ return DECODE("s."); }
{ return Decode("s."); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
......@@ -870,15 +816,15 @@ class TranslatorCzech : public Translator
virtual QCString trSources()
{
return DECODE("Zdroje");
return Decode("Zdroje");
}
virtual QCString trDefinedAtLineInSourceFile()
{
return DECODE("Definice je uvedena na øádku @0 v souboru @1.");
return Decode("Definice je uvedena na øádku @0 v souboru @1.");
}
virtual QCString trDefinedInSourceFile()
{
return DECODE("Definice v souboru @0.");
return Decode("Definice v souboru @0.");
}
//////////////////////////////////////////////////////////////////////////
......@@ -887,7 +833,7 @@ class TranslatorCzech : public Translator
virtual QCString trDeprecated()
{
return DECODE("Zastaralé");
return Decode("Zastaralé");
}
//////////////////////////////////////////////////////////////////////////
......@@ -897,69 +843,69 @@ class TranslatorCzech : public Translator
/*! this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
return DECODE((QCString)"Diagram tøíd pro "+clName+":");
return Decode((QCString)"Diagram tøíd pro "+clName+":");
}
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
return DECODE((QCString)"Graf závislostí na vkládaných souborech "
return Decode((QCString)"Graf závislostí na vkládaných souborech "
"pro "+fName+":");
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
return DECODE("Dokumentace konstruktoru a destruktoru");
return Decode("Dokumentace konstruktoru a destruktoru");
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
{
return DECODE("Zobrazit zdrojový text tohoto souboru.");
return Decode("Zobrazit zdrojový text tohoto souboru.");
}
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
return DECODE("Zobrazit dokumentaci tohoto souboru.");
return Decode("Zobrazit dokumentaci tohoto souboru.");
}
/*! Text for the \pre command */
virtual QCString trPrecondition()
{
return DECODE("Precondition");
return Decode("Precondition");
}
/*! Text for the \post command */
virtual QCString trPostcondition()
{
return DECODE("Postcondition");
return Decode("Postcondition");
}
/*! Text for the \invariant command */
virtual QCString trInvariant()
{
return DECODE("Invariant");
return Decode("Invariant");
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
{
return DECODE("Initializer:");
return Decode("Initializer:");
}
/*! Text used the source code in the file index */
virtual QCString trCode()
{
return DECODE("zdrojový text");
return Decode("zdrojový text");
}
virtual QCString trGraphicalHierarchy()
{
return DECODE("Grafické zobrazení hierarchie tøíd");
return Decode("Grafické zobrazení hierarchie tøíd");
}
virtual QCString trGotoGraphicalHierarchy()
{
return DECODE("Zobrazit grafickou podobu hierarchie tøíd");
return Decode("Zobrazit grafickou podobu hierarchie tøíd");
}
virtual QCString trGotoTextualHierarchy()
{
return DECODE("Zobrazit textovou podobu hierarchie tøíd");
return Decode("Zobrazit textovou podobu hierarchie tøíd");
}
virtual QCString trPageIndex()
{
return DECODE("Rejstøík stránek");
return Decode("Rejstøík stránek");
}
//////////////////////////////////////////////////////////////////////////
......@@ -968,43 +914,43 @@ class TranslatorCzech : public Translator
virtual QCString trNote()
{
return DECODE("Poznámka");
return Decode("Poznámka");
}
virtual QCString trPublicTypes()
{
return DECODE("Veøejné typy");
return Decode("Veøejné typy");
}
virtual QCString trPublicAttribs()
{
return DECODE("Veøejné atributy");
return Decode("Veøejné atributy");
}
virtual QCString trStaticPublicAttribs()
{
return DECODE("Statické veøejné atributy");
return Decode("Statické veøejné atributy");
}
virtual QCString trProtectedTypes()
{
return DECODE("Chránìné typy");
return Decode("Chránìné typy");
}
virtual QCString trProtectedAttribs()
{
return DECODE("Chránìné atributy");
return Decode("Chránìné atributy");
}
virtual QCString trStaticProtectedAttribs()
{
return DECODE("Statické chránìné atributy");
return Decode("Statické chránìné atributy");
}
virtual QCString trPrivateTypes()
{
return DECODE("Privátní typy");
return Decode("Privátní typy");
}
virtual QCString trPrivateAttribs()
{
return DECODE("Privátní atributy");
return Decode("Privátní atributy");
}
virtual QCString trStaticPrivateAttribs()
{
return DECODE("Statické privátní atributy");
return Decode("Statické privátní atributy");
}
//////////////////////////////////////////////////////////////////////////
......@@ -1014,12 +960,12 @@ class TranslatorCzech : public Translator
/*! Used as a marker that is put before a todo item */
virtual QCString trTodo()
{
return DECODE("Udìlat");
return Decode("Plánované úpravy");
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
return DECODE("Seznam plánovaných úprav");
return Decode("Seznam plánovaných úprav");
}
//////////////////////////////////////////////////////////////////////////
......@@ -1028,24 +974,24 @@ class TranslatorCzech : public Translator
virtual QCString trReferencedBy()
{
return DECODE("Používá se v");
return Decode("Používá se v");
}
virtual QCString trRemarks()
{
return DECODE("Poznámky"); // ??? not checked in a context
return Decode("Poznámky"); // ??? not checked in a context
}
virtual QCString trAttention()
{
return DECODE("Upozornìní"); // ??? not checked in a context
return Decode("Upozornìní"); // ??? not checked in a context
}
virtual QCString trInclByDepGraph()
{
return DECODE("Následující graf ukazuje, které soubory pøímo nebo "
return Decode("Následující graf ukazuje, které soubory pøímo nebo "
"nepøímo vkládají tento soubor:");
}
virtual QCString trSince()
{
return DECODE("Od"); // ??? not checked in a context
return Decode("Od"); // ??? not checked in a context
}
////////////////////////////////////////////////////////////////////////////
......@@ -1055,7 +1001,7 @@ class TranslatorCzech : public Translator
/*! title of the graph legend page */
virtual QCString trLegendTitle()
{
return DECODE("Vysvìtlivky ke grafu");
return Decode("Vysvìtlivky ke grafu");
}
/*! page explaining how the dot graph's should be interpreted */
virtual QCString trLegendDocs()
......@@ -1124,12 +1070,12 @@ class TranslatorCzech : public Translator
"je tøída nebo struktura zpøístupnìna.\n"
"</ul>\n");
return DECODE(result);
return Decode(result);
}
/*! text for the link to the legend page */
virtual QCString trLegend()
{
return DECODE("vysvìtlivky");
return Decode("vysvìtlivky");
}
//////////////////////////////////////////////////////////////////////////
......@@ -1139,13 +1085,13 @@ class TranslatorCzech : public Translator
/*! Used as a marker that is put before a test item */
virtual QCString trTest()
{
return "Test";
return Decode("Test");
}
/*! Used as the header of the test list */
virtual QCString trTestList()
{
return "Seznam testù";
return Decode("Seznam testù");
}
};
......
......@@ -31,96 +31,27 @@
class TranslatorCroatian : public Translator
{
private:
/*! to avoid macro redefinition from translator_cz.h */
/* Speed loss is actualy less than in Czech version due to
fewer QCString copying.
*/
inline QCString& decode(const QCString& sInput)
{
/*! to avoid macro redefinition from translator_cz.h */
/* Speed loss is actualy less than in Czech version due to
fewer QCString copying.
*/
inline QCString decode(const QCString& sInput)
{
#ifdef _WIN32
return ISOToWin(sInput);
return ISO88592ToWin1250(sInput);
#else
return const_cast<QCString&>(sInput);
return sInput;
#endif
}
/*! returns the string converted from windows-1250 to iso-8859-2 */
QCString WinToISO(const QCString& sInput)
{
// The conversion table for characters >127
//
static const char WinToISOTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97',
'\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC',
'\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7',
'\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF',
'\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7',
'\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? WinToISOTab[c & 0x7F] : c;
}
return result;
}
/*! returns the string converted from iso-8859-2 to windows-1250 */
QCString ISOToWin(const QCString& sInput)
{
// The conversion table for characters >127
//
static const char ISOToWinTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
'\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
'\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7',
'\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF',
'\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7',
'\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? ISOToWinTab[c & 0x7F] : c;
}
return result;
}
}
public:
QCString idLanguage()
{ return "croatian"; }
QCString idLanguageCharset()
#ifdef _WIN32
{ return "windows-1250"; }
{ return "windows-1250"; }
#else
{ return "iso-8859-2"; }
{ return "iso-8859-2"; }
#endif
QCString latexBabelPackage()
{ return "croatian"; }
......@@ -137,7 +68,7 @@ class TranslatorCroatian : public Translator
QCString trEnumerationValueDocumentation()
{ return decode("Dokumentacija enum vrijednosti"); }
QCString trMemberFunctionDocumentation()
{ return decode("Dokumentacija funkcija"); }
{ return decode("Dokumentacija funkcija"); }
QCString trMemberDataDocumentation()
{ return decode("Documentacija varijabli"); }
QCString trGeneratedFrom(const char *s,bool single)
......@@ -145,9 +76,9 @@ class TranslatorCroatian : public Translator
QCString result= decode("Dokumentacija za ")+s+
decode("je generirana iz ");
if (single)
result+= decode("datoteke :");
else
result+= decode("slijedeih datoteka:");
result+= decode("datoteke :");
else
result+= decode("slijedeih datoteka:");
return result;
}
QCString trMore()
......@@ -196,7 +127,7 @@ class TranslatorCroatian : public Translator
{ return decode("Trai"); }
QCString trClassHierarchyDescription()
{ return decode("Stablo naslijeivanja je posloeno "
"priblino po abecedi:");
"priblino po abecedi:");
}
QCString trFileListDescription(bool extractAll)
{
......@@ -207,7 +138,7 @@ class TranslatorCroatian : public Translator
}
QCString trCompoundListDescription()
{ return decode("Popis svih klasa, unija i struktura "
"s kratkim opisom :");
"s kratkim opisom :");
}
QCString trCompoundMembersDescription(bool extractAll)
{
......@@ -311,8 +242,8 @@ class TranslatorCroatian : public Translator
QCString trForInternalUseOnly()
{ return decode("Iskljuivo za internu uporabu."); }
QCString trReimplementedForInternalReasons()
{ return decode("Reimplementirano zbog internih razloga; "
"Nema utjecaja na API.");
{ return decode("Reimplementirano zbog internih razloga; "
"Nema utjecaja na API.");
}
QCString trWarning()
{ return decode("Upozorenje"); }
......@@ -376,7 +307,7 @@ class TranslatorCroatian : public Translator
case ClassDef::Interface: result+=decode(" suelja (interface) "); break;
case ClassDef::Exception: result+=decode(" iznimke (exception) "); break;
}
result += (QCString)clName;
result += (QCString)clName;
return result;
}
......@@ -384,14 +315,14 @@ class TranslatorCroatian : public Translator
// used as the title of the HTML page of a file
{
QCString result=decode("Opis datoteke ");
result+=fileName;
return result;
result+=fileName;
return result;
}
QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace
{
QCString result =decode("Opis namespace-a ");
result+=namespaceName;
result+=namespaceName;
return result;
}
......@@ -712,12 +643,12 @@ class TranslatorCroatian : public Translator
}
virtual QCString trAttention()
{
return decode("Panja");
return decode("Panja");
}
virtual QCString trInclByDepGraph()
{
return decode("Ovaj graf pokazuje koje datoteke izravno "
"ili neizravno ukljuuju ovu datoteku:");
"ili neizravno ukljuuju ovu datoteku:");
}
virtual QCString trSince()
{
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2000 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef TRANSLATOR_KR_H
#define TRANSLATOR_KR_H
#include "translator.h"
class TranslatorKorean : public Translator
{
public:
QCString idLanguage()
{ return "korean"; }
/*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage()
{ return ""; } // What is the correct value here?
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
{
return "euc-kr";
}
/*! used in the compound documentation before a list of related functions. */
QCString trRelatedFunctions()
{ return "관련된 함수들"; }
/*! subscript for the related functions. */
QCString trRelatedSubscript()
{ return "관련주석"; }
/*! header that is put before the detailed description of files, classes and namespaces. */
QCString trDetailedDescription()
{ return "상세한 내용"; }
/*! header that is put before the list of typedefs. */
QCString trMemberTypedefDocumentation()
{ return "멤버 타입정의 문서화"; }
/*! header that is put before the list of enumerations. */
QCString trMemberEnumerationDocumentation()
{ return "구성원(member) 열거 문서화"; }
/*! header that is put before the list of member functions. */
QCString trMemberFunctionDocumentation()
{ return "멤버 함수 문서화"; }
/*! header that is put before the list of member attributes. */
QCString trMemberDataDocumentation()
{ return "멤서 데이타 문서화"; }
/*! this is the text of a link put after brief descriptions. */
QCString trMore()
{ return "More..."; }
/*! put in the class documentation */
QCString trListOfAllMembers()
{ return "모든 구성원들(members)의 명단"; }
/*! used as the title of the "list of all members" page of a class */
QCString trMemberList()
{ return "구성원(member) 명단"; }
/*! this is the first part of a sentence that is followed by a class name */
QCString trThisIsTheListOfAllMembers()
{ return "완전한 구성원들(members)의 명단 " ; } // "This is the complete list of members for "
/*! this is the remainder of the sentence after the class name */
QCString trIncludingInheritedMembers()
{ return ", 상속받은 모든 구성원(members)들도 포함"; } // ", including all inherited members."
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
QCString trGeneratedAutomatically(const char *s)
{ QCString result="";
if (s) result+=(QCString)s+"에 ";
result+="source 코드로 부터 Doxygen에 의해 자동적으로 생성";
return result;
}
/*! put after an enum name in the list of all members */
QCString trEnumName()
{ return "열거체 이름"; }
/*! put after an enum value in the list of all members */
QCString trEnumValue()
{ return "열거체 값"; }
/*! put after an undocumented member in the list of all members */
QCString trDefinedIn()
{ return "에서 정의된"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
QCString trVerbatimText(const char *f)
{ return (QCString)"이것은 "+f+" 포함 파일의 축약적인 문서이다"; }
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \group command).
*/
QCString trModules()
{ return "모듈들"; }
/*! This is put above each page as a link to the class hierarchy */
QCString trClassHierarchy()
{ return "클래스 계층(도)"; } // "클래스 조직" or "클래스 분류체계"
/*! This is put above each page as a link to the list of annotated classes */
QCString trCompoundList()
{ return "혼합 목록"; } //"혼합 목록", "합성(집합) 명단(리스트)"
/*! This is put above each page as a link to the list of documented files */
QCString trFileList()
{ return "파일 목록"; } //"파일 목록", "파일 리스트"
/*! This is put above each page as a link to the list of all verbatim headers */
QCString trHeaderFiles()
{ return "헤더 파일들"; }
/*! This is put above each page as a link to all members of compounds. */
QCString trCompoundMembers()
{ return "혼합 멤버들"; } // "합성(집합) 명단(멤버들)"
/*! This is put above each page as a link to all members of files. */
QCString trFileMembers()
{ return "파일 멤버들"; }
/*! This is put above each page as a link to all related pages. */
QCString trRelatedPages()
{ return "관련된 페이지들"; }
/*! This is put above each page as a link to all examples. */
QCString trExamples()
{ return "예제들"; }
/*! This is put above each page as a link to the search engine. */
QCString trSearch()
{ return "검색"; }
/*! This is an introduction to the class hierarchy. */
QCString trClassHierarchyDescription()
{ return "이 상속 목록은 완전하지는 않지만 알파벳순으로 분류되었습니다.";}
/*! This is an introduction to the list with all files. */
QCString trFileListDescription(bool extractAll)
{
QCString result="이것은 간략한 설명을 가진 모든 "; // "Here is a list of all "
if (!extractAll) result+="문서화된 "; // "documented "
result+="파일들에 대한 목록입니다."; // "files with brief descriptions:"
return result;
}
/*! This is an introduction to the annotated compound list. */
QCString trCompoundListDescription()
{ return "이것은 간략한 설명을 가진 클래스들, "
"구조체들, 공용체들, 그리고 인터페이스들입니다.";
}
/*! This is an introduction to the page with all class members. */
QCString trCompoundMembersDescription(bool extractAll)
{
QCString result="이곳에 모든 리스트가 있습니다"; //"Here is a list of all "
if (!extractAll) result+="문서화된 "; //"documented "
result+="링크가 된 클래스 멤버들 "; //"class members with links to "
if (extractAll)
result+="각각의 멤버를 위한 클래스 문서:"; //"the class documentation for each member:"
else
result+="이하로 속한 클래스들:"; //"the classes they belong to:"
return result;
}
/*! This is an introduction to the page with all file members. */
QCString trFileMembersDescription(bool extractAll)
{
QCString result="이곳에 모든 리스트가 있습니다";
if (!extractAll) result+="문서화된 ";
result+="링크가 된 파일 멤버들 ";
if (extractAll)
result+="각 멤버들에 대한 파일 문서화"; // "the file documentation for each member:"
else
result+="그것들이 속해있는 파일들"; // "the files they belong to:"
return result;
}
/*! This is an introduction to the page with the list of all header files. */
QCString trHeaderFilesDescription()
{ return "이것은 API를 구성하는 헤더 파일들입니다."; } // "Here are the header files that make up the API:"
/*! This is an introduction to the page with the list of all examples */
QCString trExamplesDescription()
{ return "이것은 모든 예제들의 목록입니다."; } // "Here is a list of all examples:"
/*! This is an introduction to the page with the list of related pages */
QCString trRelatedPagesDescription()
{ return "이것은 모든 관련된 문서화 페이지들의 목록입니다."; }
// "Here is a list of all related documentation pages:"
/*! This is an introduction to the page with the list of class/file groups */
QCString trModulesDescription()
{ return "이것은 모든 모듈들의 목록입니다."; } // "Here is a list of all modules:"
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
QCString trNoDescriptionAvailable()
{ return "유용한 설명이 없습니다."; } // "No description available"
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
QCString trDocumentation()
{ return "문서화"; }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
QCString trModuleIndex()
{ return "모듈 색인"; }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
QCString trHierarchicalIndex()
{ return "분류체계 색인"; } // "조직 색인", "계층적 인덱스"
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
QCString trCompoundIndex()
{ return "합성 인덱스"; } // "혼합 색인"
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
QCString trFileIndex()
{ return "파일 색인"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
QCString trModuleDocumentation()
{ return "모듈 문서화"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
QCString trClassDocumentation()
{ return "클래스 문서화"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
QCString trFileDocumentation()
{ return "파일 문서화"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
QCString trExampleDocumentation()
{ return "예제 문서화"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
QCString trPageDocumentation()
{ return "페이지 문서화"; }
/*! This is used in LaTeX as the title of the document */
QCString trReferenceManual()
{ return "참고서"; } // "참고서","참고 매뉴얼", "참조 메뉴얼"
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
QCString trDefines()
{ return "정의들"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
QCString trFuncProtos()
{ return "함수 원형들"; }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
QCString trTypedefs()
{ return "타입 정의들"; }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
QCString trEnumerations()
{ return "Enumerations"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
QCString trFunctions()
{ return "함수들"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
QCString trVariables()
{ return "변수들"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
QCString trEnumerationValues()
{ return "열거체 값들"; }
/*! This is used in man pages as the author section. */
QCString trAuthor()
{ return "저자"; }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
QCString trDefineDocumentation()
{ return "정의 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
QCString trFunctionPrototypeDocumentation()
{ return "함수 원형 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
QCString trTypedefDocumentation()
{ return "타입 정의 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
QCString trEnumerationTypeDocumentation()
{ return "열거체 타입 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
QCString trEnumerationValueDocumentation()
{ return "열거체 값 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
QCString trFunctionDocumentation()
{ return "함수 문서화"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
QCString trVariableDocumentation()
{ return "변수 문서화"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
QCString trCompounds()
{ return "혼합들"; }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
QCString trFiles()
{ return "파일들"; }
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
QCString trGeneratedAt(const char *date,const char *projName)
{
QCString result="";
if (projName) result+=(QCString)projName+"에 대해 ";
result += (QCString)date+" 생성 by";
return result;
}
/*! This is part of the sentence used in the standard footer of each page.
*/
QCString trWrittenBy()
{
return "written by"; // "에 의해 쓰여진?"
}
/*! this text is put before a class diagram */
QCString trClassDiagram(const char *clName)
{
return (QCString)clName+"에 대한 상속 도표"; // "Inheritance diagram for "+clName
}
/*! this text is generated when the \internal command is used. */
QCString trForInternalUseOnly()
{ return "내부 사용만을 위해"; }
/*! this text is generated when the \reimp command is used. */
QCString trReimplementedForInternalReasons()
{ return "내부적 이유를 위해 재구현된: API가 영향을 받지않았다."; }
// "Reimplemented for internal reasons; the API is not affected."
/*! this text is generated when the \warning command is used. */
QCString trWarning()
{ return "경고"; }
/*! this text is generated when the \bug command is used. */
QCString trBugsAndLimitations()
{ return "버그들과 한계들"; }
/*! this text is generated when the \version command is used. */
QCString trVersion()
{ return "버전"; }
/*! this text is generated when the \date command is used. */
QCString trDate()
{ return "날짜"; }
/*! this text is generated when the \author command is used. */
QCString trAuthors()
{ return "저자(들)"; }
/*! this text is generated when the \return command is used. */
QCString trReturns()
{ return "반환"; }
/*! this text is generated when the \sa command is used. */
QCString trSeeAlso()
{ return "참조하시요"; }
/*! this text is generated when the \param command is used. */
QCString trParameters()
{ return "매개변수들"; }
/*! this text is generated when the \exception command is used. */
QCString trExceptions()
{ return "예외들"; }
/*! this text is used in the title page of a LaTeX document. */
QCString trGeneratedBy()
{ return "에 의해 생성된"; }
// new since 0.49-990307
/*! used as the title of page containing all the index of all namespaces. */
QCString trNamespaceList()
{ return "이름공간 목록"; }
/*! used as an introduction to the namespace list */
QCString trNamespaceListDescription(bool extractAll)
{
QCString result="이것은 모든 간략한 설명을 가진 ";
if (!extractAll) result+="문서화된 ";
result+="이름공간의 목록입니다:";
return result;
}
/*! used in the class documentation as a header before the list of all
* friends of a class
*/
QCString trFriends()
{ return "프렌드"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return "프렌드, 그리고 관련된 함수 문서화"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */
QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType,
bool isTemplate)
{
QCString result=(QCString)clName+" ";
if (isTemplate) result+=" 템플릿";
switch(compType)
{
case ClassDef::Class: result+=" 클래스"; break;
case ClassDef::Struct: result+=" 구조체"; break;
case ClassDef::Union: result+=" 공용체"; break;
case ClassDef::Interface: result+=" 인터페이스"; break;
case ClassDef::Exception: result+=" 예외"; break;
}
result+=" 참조";
return result;
}
/*! used as the title of the HTML page of a file */
QCString trFileReference(const char *fileName)
{
QCString result=fileName;
result+=" 파일 참조";
return result;
}
/*! used as the title of the HTML page of a namespace */
QCString trNamespaceReference(const char *namespaceName)
{
QCString result=namespaceName;
result+=" 이름 공간 참조";
return result;
}
/*! \mgroup Class sections
* these are for the member sections of a class, struct or union
*/
QCString trPublicMembers()
{ return "공용 메소드"; }
QCString trPublicSlots()
{ return "공용 Slots"; }
QCString trSignals()
{ return "신호"; }
QCString trStaticPublicMembers()
{ return "정적 공용 메소드"; }
QCString trProtectedMembers()
{ return "프로텍티드 메소드"; }
QCString trProtectedSlots()
{ return "Protected Slots"; }
QCString trStaticProtectedMembers()
{ return "정적 프로텍티드 메소드"; }
QCString trPrivateMembers()
{ return "프라이베이트 메소드"; }
QCString trPrivateSlots()
{ return "Private Slots"; }
QCString trStaticPrivateMembers()
{ return "정적 프라이베이트 메소드"; }
/*! \endmgroup */
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
*/
QCString trWriteList(int numEntries)
{
QCString result;
int i;
// the inherits list contain `numEntries' classes
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
// (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
result+=", ";
else // the fore last entry
result+=", and ";
}
}
return result;
}
/*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled.
*/
QCString trInheritsList(int numEntries)
{
return trWriteList(numEntries)+" 들을 상속하다.";
}
/*! used in class documentation to produce a list of super classes,
* if class diagrams are disabled.
*/
QCString trInheritedByList(int numEntries)
{
return trWriteList(numEntries)+"에 의해 상속된.";
}
/*! used in member documentation blocks to produce a list of
* members that are hidden by this one.
*/
QCString trReimplementedFromList(int numEntries)
{
return trWriteList(numEntries)+"으로부터 재구현된.";
}
/*! used in member documentation blocks to produce a list of
* all member that overwrite the implementation of this member.
*/
QCString trReimplementedInList(int numEntries)
{
return trWriteList(numEntries)+"에서 재구현된.";
}
/*! This is put above each page as a link to all members of namespaces. */
QCString trNamespaceMembers()
{ return "이름공간 멤버들"; }
/*! This is an introduction to the page with all namespace members */
QCString trNamespaceMemberDescription(bool extractAll)
{
QCString result="이것은 모든 ";
if (!extractAll) result+="문서화된 ";
result+="이름공간 멤버들의 목록입니다.";
if (extractAll)
result+="각 멤버들에 대한 문서화에 ";
else
result+="속해있는 이름공간에 ";
result+="링크도있읍니다.";
return result;
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
QCString trNamespaceIndex()
{ return "이름공간 색인"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
QCString trNamespaceDocumentation()
{ return "이름공간 문서화"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
//////////////////////////////////////////////////////////////////////////
/*! This is used in the documentation before the list of all
* namespaces in a file.
*/
QCString trNamespaces()
{ return "이름공간"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
//////////////////////////////////////////////////////////////////////////
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
QCString result=(QCString)"이 ";
switch(compType)
{
case ClassDef::Class: result+="클래스"; break;
case ClassDef::Struct: result+="구조체"; break;
case ClassDef::Union: result+="공용체"; break;
case ClassDef::Interface: result+="인터페이스"; break;
case ClassDef::Exception: result+="예외"; break;
}
result+="을 위한 문서화는 다음의 파일";
if (!single) result+="들";
result+="로부터 생성되었습니다:";
return result;
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
QCString trAlphabeticalList()
{ return "알파벳순서의 목록"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
QCString trReturnValues()
{ return "반환값"; }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
QCString trMainPage()
{ return "주요 페이지"; }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
QCString trPageAbbreviation()
{ return "페이지"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
QCString trSources()
{
return "출처";
}
QCString trDefinedAtLineInSourceFile()
{
return "파일 @1. 의 @0 번째 라인에서 정의"; // "Definition at line @0 of file @1."
}
QCString trDefinedInSourceFile()
{
return "파일 @0. 에서 정의"; // "Definition in file @0."
}
//////////////////////////////////////////////////////////////////////////
// new since 1.0.0
//////////////////////////////////////////////////////////////////////////
QCString trDeprecated()
{
return "Deprecated"; // "비난받은(??)","반대하는"
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */
QCString trCollaborationDiagram(const char *clName)
{
return (QCString)clName+"에 대한 원조 도표:";
}
/*! this text is put before an include dependency graph */
QCString trInclDepGraph(const char *fName)
{
return (QCString)fName+"에 대한 include 의존 그래프";
}
/*! header that is put before the list of constructor/destructors. */
QCString trConstructorDocumentation()
{
return "생성자 & 소멸자 문서화";
}
/*! Used in the file documentation to point to the corresponding sources. */
QCString trGotoSourceCode()
{
return "이 파일에 대한 소스 코드로 가시오";
}
/*! Used in the file sources to point to the corresponding documentation. */
QCString trGotoDocumentation()
{
return "이 파일의 문서화로 가시오";
}
/*! Text for the \pre command */
QCString trPrecondition()
{
return "전제 조건";
}
/*! Text for the \post command */
QCString trPostcondition()
{
return "후미 조건"; // "후치조건"
}
/*! Text for the \invariant command */
QCString trInvariant()
{
return "변하지 않는";
}
/*! Text shown before a multi-line variable/enum initialization */
QCString trInitialValue()
{
return "초기화기";
}
/*! Text used the source code in the file index */
QCString trCode()
{
return "코드";
}
QCString trGraphicalHierarchy()
{
return "도표의 클래스 분류체계"; // "도표의 클래스 조직"
}
QCString trGotoGraphicalHierarchy()
{
return "도표의 클래스 분류체계로 가시오"; // "도표의 클래스 조직으로 가시오"
}
QCString trGotoTextualHierarchy()
{
return "문자의 클래스 분류체계로 가시오"; // "문자의 클래스 조직으로 가시오"
}
QCString trPageIndex()
{
return "페이지 색인";
}
};
#endif
......@@ -314,6 +314,31 @@ ClassDef *getClass(const char *name)
return classDict[name];
}
NamespaceDef *getResolvedNamespace(const char *name)
{
if (name==0 || name[0]=='\0') return 0;
QCString *subst = namespaceAliasDict[name];
if (subst)
{
int count=0; // recursion detection guard
QCString *newSubst;
while ((newSubst=namespaceAliasDict[*subst]) && count<10)
{
subst=newSubst;
count++;
}
if (count==10)
{
warn_cont("Warning: possible recursive namespace alias detected for %s!\n",name);
}
return namespaceDict[subst->data()];
}
else
{
return namespaceDict[name];
}
}
ClassDef *getResolvedClass(const char *name)
{
if (name==0 || name[0]=='\0') return 0;
......@@ -2434,9 +2459,10 @@ void extractNamespaceName(const QCString &scopeName,
{
QCString clName=scopeName.copy();
//QCString nsName;
if (!clName.isEmpty() && namespaceDict[clName] && getClass(clName)==0)
NamespaceDef *nd;
if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0)
{ // the whole name is a namespace (and not a class)
namespaceName=clName.copy();
namespaceName=nd->name().copy();
className.resize(0);
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
// className.data(),namespaceName.data());
......@@ -2446,9 +2472,9 @@ void extractNamespaceName(const QCString &scopeName,
while (p>=0 && (i=clName.findRev("::",p))!=-1)
// see if the first part is a namespace (and not a class)
{
if (i>0 && namespaceDict[clName.left(i)] && getClass(clName.left(i))==0)
if (i>0 && (nd=getResolvedNamespace(clName.left(i))) && getClass(clName.left(i))==0)
{
namespaceName=clName.left(i);
namespaceName=nd->name().copy();
className=clName.right(clName.length()-i-2);
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
// className.data(),namespaceName.data());
......
......@@ -107,6 +107,7 @@ extern QCString substitute(const char *s,const char *src,const char *dst);
extern QCString resolveDefines(const char *n);
extern ClassDef *getClass(const char *key);
extern ClassDef *getResolvedClass(const char *key);
extern NamespaceDef *getResolvedNamespace(const char *key);
extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
bool &ambig);
extern QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
......
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