Commit d20edf5d authored by dimitri's avatar dimitri

Release-1.3.3-20030904

parent 77a2ce8e
......@@ -10,7 +10,7 @@ OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES
......
DOXYGEN Version 1.3.3-20030824
DOXYGEN Version 1.3.3-20030904
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (24 August 2003)
Dimitri van Heesch (04 September 2003)
......@@ -25,6 +25,7 @@ distclean: clean
-rm -f lib/lib*
-rm -f bin/doxy*
-rm -f html
-rm -f latex
-rm -f objects/*.o
-rm -f src/Makefile.doxygen src/Makefile.libdoxygen
-rm -f src/Makefile.doxytag src/Makefile.libdoxycfg
......
DOXYGEN Version 1.3.3_20030824
DOXYGEN Version 1.3.3_20030904
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (24 August 2003)
Dimitri van Heesch (dimitri@stack.nl) (04 September 2003)
1.3.3-20030824
1.3.3-20030904
......@@ -27,7 +27,7 @@ f_prefix=/usr
f_insttool=NO
f_english=NO
f_wizard=NO
f_langs=nl,se,cz,fr,it,de,jp,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca
f_langs=nl,se,cz,fr,it,de,jp,je,es,fi,ru,hr,pl,pt,hu,kr,ro,si,cn,no,br,dk,sk,ua,gr,tw,sr,ca
while test -n "$1"; do
case $1 in
......@@ -485,7 +485,7 @@ done
echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l;
@allowed=(NL,SE,CZ,FR,IT,DE,JP,ES,FI,RU,HR,PL,PT,HU,KR,RO,SI,CN,NO,BR,
@allowed=(NL,SE,CZ,FR,IT,DE,JP,JE,ES,FI,RU,HR,PL,PT,HU,KR,RO,SI,CN,NO,BR,
DK,SK,UA,GR,TW,SR,CA);
foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/;
......
......@@ -25,14 +25,14 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.3.3), 28 languages
Currently (version 1.3.3-20030824), 29 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
French, German, Greek, Hungarian, Italian,
Japanese, Korean, Norwegian, Polish, Portuguese,
Romanian, Russian, Serbian, Slovak, Slovene,
Spanish, Swedish, and Ukrainian.
Japanese, JapaneseEn, Korean, Norwegian, Polish,
Portuguese, Romanian, Russian, Serbian, Slovak,
Slovene, Spanish, Swedish, and Ukrainian.
The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column
......@@ -85,7 +85,7 @@ when the translator was updated.
<TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.3.3</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Danish</TD>
......@@ -145,6 +145,12 @@ when the translator was updated.
<TD>Japanese</TD>
<TD>Ryunosuke Satoh<br>Kenji Nagamatsu</TD>
<TD>sun594@NOSPAM.hotmail.com<br>naga@NOSPAM.joyful.club.ne.jp</TD>
<TD>1.3.3</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>JapaneseEn</TD>
<TD>unknown</TD>
<TD>unknown</TD>
<TD>obsolete</TD>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -205,7 +211,7 @@ when the translator was updated.
<TD>Spanish</TD>
<TD>Francisco Oltra Thennet</TD>
<TD>foltra@NOSPAM.puc.cl</TD>
<TD>1.2.7</TD>
<TD>1.3.3</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Swedish</TD>
......@@ -242,7 +248,7 @@ when the translator was updated.
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.3.1 \\
\hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & 1.3.3 \\
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & strange \\
\hline
......@@ -263,9 +269,11 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.3.3 \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline
Japanese & Ryunosuke Satoh & {\tt sun594@hotmail.com} & obsolete \\
Japanese & Ryunosuke Satoh & {\tt sun594@hotmail.com} & 1.3.3 \\
& Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline
JapaneseEn & unknown & {\tt unknown} & obsolete \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & strange \\
\hline
Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
......@@ -285,7 +293,7 @@ when the translator was updated.
\hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.2.7 \\
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.3.3 \\
\hline
Swedish & XeT Erixon & {\tt xet@hem.passagen.se} & 1.3.3 \\
\hline
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.3_20030824
Version: 1.3.3_20030904
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -648,19 +648,17 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
QCString className=clName;
if (className.isEmpty()) return;
ClassDef *cd=0;
MemberDef *md=0;
if (!g_theVarContext.findVariable(className)) // not a local variable
{
Definition *d = g_currentDefinition;
cd = getResolvedClass(d,g_sourceFileDef,className);
if (cd==0 && (i=className.find('<'))!=-1)
cd = getResolvedClass(d,g_sourceFileDef,className,&md);
if (cd==0 && md==0 && (i=className.find('<'))!=-1)
{
cd=getResolvedClass(d,g_sourceFileDef,className.left(i));
cd=getResolvedClass(d,g_sourceFileDef,className.left(i),&md);
}
}
else
{
}
if (cd && cd->isLinkable()) // is it a linkable class
{
//printf("is linkable class %s\n",clName);
......@@ -677,17 +675,33 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
}
}
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className);
if (md)
{
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable() && md->isLinkable() && g_currentMemberDef)
{
addDocCrossReference(g_currentMemberDef,md);
}
}
}
else
{
//printf("class %s not linkable! cd=%p\n",clName,cd);
//printf("typeOnly=%d\n",typeOnly);
if (cd==0 && !typeOnly) // not a class, see if it is a global enum/variable/typedef.
//printf("class %s not linkable! cd=%p md=%p typeOnly=%d\n",clName,cd,md,typeOnly);
if (md!=0 || (cd==0 && !typeOnly)) // not a class, see if it is a global enum/variable/typedef.
{
MemberDef *md = setCallContextForVar(clName);
//printf("is a global md=%p g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>");
if (md && (g_currentDefinition==0 || isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)!=-1))
if (md==0) // not found as a typedef
{
md = setCallContextForVar(clName);
if (md && g_currentDefinition!=0 && !isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)==-1)
{
md=0; // variable not accessible
}
}
if (md)
{
//printf("is a global md=%p g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>");
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
//printf("definition %s\n",d?d->name().data():"<none>");
......
......@@ -120,7 +120,7 @@
<xsd:attribute name="mutable" type="DoxBool" />
</xsd:complexType>
<xsd:complexType name="descriptionType">
<xsd:complexType name="descriptionType" mixed="true">
<xsd:sequence>
<xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
......@@ -244,7 +244,7 @@
<xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
</xsd:sequencee
</xsd:sequence>
<xsd:attribute name="id" />
</xsd:complexType>
......
......@@ -120,7 +120,7 @@
" <xsd:attribute name=\"mutable\" type=\"DoxBool\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"descriptionType\">\n"
" <xsd:complexType name=\"descriptionType\" mixed=\"true\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
......@@ -244,7 +244,7 @@
" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"sect3\" type=\"docSect3Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"internal\" type=\"docInternalS2Type\" minOccurs=\"0\" />\n"
" </xsd:sequencee\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n"
" </xsd:complexType>\n"
"\n"
......
......@@ -1175,38 +1175,38 @@ void Config::check()
// }
//
// }
// check perl path
bool found=FALSE;
QCString &perlPath = Config_getString("PERL_PATH");
if (perlPath.isEmpty())
{
QFileInfo fi;
fi.setFile("/usr/bin/perl");
if (fi.exists())
{
perlPath="/usr/bin/perl";
found=TRUE;
}
else
{
fi.setFile("/usr/local/bin/perl");
if (fi.exists())
{
perlPath="/usr/local/bin/perl";
found=TRUE;
}
}
}
if (!found)
{
QFileInfo fi(perlPath);
if (!fi.exists())
{
config_warn("Warning: tag PERL_PATH: perl interpreter not found at default or"
"user specified (%s) location\n",
perlPath.data());
}
}
// // check perl path
// bool found=FALSE;
// QCString &perlPath = Config_getString("PERL_PATH");
// if (perlPath.isEmpty())
// {
// QFileInfo fi;
// fi.setFile("/usr/bin/perl");
// if (fi.exists())
// {
// perlPath="/usr/bin/perl";
// found=TRUE;
// }
// else
// {
// fi.setFile("/usr/local/bin/perl");
// if (fi.exists())
// {
// perlPath="/usr/local/bin/perl";
// found=TRUE;
// }
// }
// }
// if (!found)
// {
// QFileInfo fi(perlPath);
// if (!fi.exists())
// {
// config_warn("Warning: tag PERL_PATH: perl interpreter not found at default or"
// "user specified (%s) location\n",
// perlPath.data());
// }
// }
#undef PUTENV
#undef SEP
......
......@@ -2257,6 +2257,11 @@ static void buildFunctionList(Entry *root)
matchArguments(md->argumentList(),root->argList,0,nsName,FALSE,unl,ucl)
)
{
GroupDef *gd=0;
if (root->groups->first()!=0)
{
gd = Doxygen::groupSDict[root->groups->first()->groupname.data()];
}
//printf("match!\n");
// see if we need to create a new member
found=(nd && rnd && nsName==rnsName) || // members are in the same namespace
......@@ -2265,6 +2270,11 @@ static void buildFunctionList(Entry *root)
)
);
// otherwise, allow a duplicate global member with the same argument list
if (!found && gd && gd==md->getGroupDef())
{
// member is already in the group, so we don't want to add it again.
found=TRUE;
}
//printf("combining function with prototype found=%d in namespace %s\n",
// found,nsName.data());
......@@ -2325,12 +2335,13 @@ static void buildFunctionList(Entry *root)
md->enableCallGraph(md->hasCallGraph() || root->callGraph);
// merge ingroup specifiers
if (md->getGroupDef()==0 && root->groups->first())
if (md->getGroupDef()==0 && root->groups->first()!=0)
{
//printf("new member is grouped, existing member not\n");
// if we do addMemberToGroups here an undocumented declaration may prevent
// the documented implementation below it from being added
//addMemberToGroups(root,md);
GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()];
//GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()];
if (gd)
{
bool success = gd->insertMember(md);
......@@ -2342,8 +2353,13 @@ static void buildFunctionList(Entry *root)
}
else if (md->getGroupDef()!=0 && root->groups->count()==0)
{
//printf("existing member is grouped, new member not\n");
root->groups->append(new Grouping(md->getGroupDef()->name(), md->getGroupPri()));
}
else if (md->getGroupDef()!=0 && root->groups->first()!=0)
{
//printf("both members are grouped\n");
}
}
}
}
......@@ -3338,12 +3354,12 @@ static bool findClassRelation(
}
baseClassName=stripTemplateSpecifiersFromScope
(removeRedundantWhiteSpace(baseClassName));
bool baseClassIsTypeDef;
MemberDef *baseClassTypeDef;
QCString templSpec;
ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? 0 : cd,
cd->getFileDef(), // todo: is this ok?
baseClassName,
&baseClassIsTypeDef,
&baseClassTypeDef,
&templSpec);
//printf("baseClassName=%s baseClass=%p cd=%p\n",baseClassName.data(),baseClass,cd);
//printf(" root->name=`%s' baseClassName=`%s' baseClass=%s templSpec=%s\n",
......@@ -3444,7 +3460,7 @@ static bool findClassRelation(
else if (mode==DocumentedOnly)
{
QCString usedName;
if (baseClassIsTypeDef) usedName=biName;
if (baseClassTypeDef) usedName=biName;
cd->insertBaseClass(baseClass,usedName,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSubClass(cd,bi->prot,bi->virt,templSpec);
......
......@@ -507,10 +507,9 @@ void usage(const char *name)
fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2003\n\n",
versionString);
fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n");
fprintf(stderr,"Usage: %s [-t tag_file] [-s index_file] [ html_file [html_file...] ]\n",name);
fprintf(stderr,"Usage: %s [-t tag_file] [ html_file [html_file...] ]\n",name);
fprintf(stderr,"Options:\n");
fprintf(stderr," -t <tag_file> Generate tag file <tag_file>.\n");
fprintf(stderr," -s <index_file> Generate search index <index_file>.\n\n");
fprintf(stderr,"If no HTML files are given all files in the current dir that\n"
"have a .html extension are parsed.\n\n");
exit(1);
......
......@@ -332,26 +332,27 @@ void HtmlHelp::initialize()
*/
s_languageDict.setAutoDelete(TRUE);
s_languageDict.clear();
s_languageDict.insert("czech", new QCString("0x405 Czech"));
s_languageDict.insert("danish", new QCString("0x406 Danish"));
s_languageDict.insert("dutch", new QCString("0x413 Dutch"));
s_languageDict.insert("finnish", new QCString("0x40B Finnish"));
s_languageDict.insert("french", new QCString("0x40C French"));
s_languageDict.insert("german", new QCString("0x407 German"));
s_languageDict.insert("greece", new QCString("0x408 Greece"));
s_languageDict.insert("hungarian",new QCString("0x40E Hungarian"));
s_languageDict.insert("italian", new QCString("0x410 Italian"));
s_languageDict.insert("norwegian",new QCString("0x814 Norwegian"));
s_languageDict.insert("polish", new QCString("0x415 Polish"));
s_languageDict.insert("portugese",new QCString("0x816 Portuguese(Portugal)"));
s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)"));
s_languageDict.insert("russian", new QCString("0x419 Russian"));
s_languageDict.insert("spanish", new QCString("0x40A Spannish(Traditional Sort)"));
s_languageDict.insert("swedish", new QCString("0x41D Swedish"));
s_languageDict.insert("turkey", new QCString("0x41F Turkey"));
s_languageDict.insert("japanese", new QCString("0x411 Japanese"));
s_languageDict.insert("korean", new QCString("0x412 Korean"));
s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)"));
s_languageDict.insert("czech", new QCString("0x405 Czech"));
s_languageDict.insert("danish", new QCString("0x406 Danish"));
s_languageDict.insert("dutch", new QCString("0x413 Dutch"));
s_languageDict.insert("finnish", new QCString("0x40B Finnish"));
s_languageDict.insert("french", new QCString("0x40C French"));
s_languageDict.insert("german", new QCString("0x407 German"));
s_languageDict.insert("greece", new QCString("0x408 Greece"));
s_languageDict.insert("hungarian", new QCString("0x40E Hungarian"));
s_languageDict.insert("italian", new QCString("0x410 Italian"));
s_languageDict.insert("norwegian", new QCString("0x814 Norwegian"));
s_languageDict.insert("polish", new QCString("0x415 Polish"));
s_languageDict.insert("portugese", new QCString("0x816 Portuguese(Portugal)"));
s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)"));
s_languageDict.insert("russian", new QCString("0x419 Russian"));
s_languageDict.insert("spanish", new QCString("0x40A Spannish(Traditional Sort)"));
s_languageDict.insert("swedish", new QCString("0x41D Swedish"));
s_languageDict.insert("turkey", new QCString("0x41F Turkey"));
s_languageDict.insert("japanese", new QCString("0x411 Japanese"));
s_languageDict.insert("japanese-en", new QCString("0x411 Japanese"));
s_languageDict.insert("korean", new QCString("0x412 Korean"));
s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)"));
}
......
......@@ -5,6 +5,7 @@
#define LANG_IT
#define LANG_DE
#define LANG_JP
#define LANG_JE
#define LANG_ES
#define LANG_FI
#define LANG_RU
......
......@@ -43,6 +43,9 @@
#ifdef LANG_JP
#include "translator_jp.h"
#endif
#ifdef LANG_JE
#include "translator_je.h"
#endif
#ifdef LANG_ES
#include "translator_es.h"
#endif
......@@ -297,11 +300,7 @@ bool setTranslator(const char *langName)
theTranslator=new TranslatorCatalan;
}
#endif
// else if (L_EQUAL("japanese-sjis"))
// {
// theTranslator=new TranslatorJapaneseSjis;
// }
#endif
#endif // ENGLISH_ONLY
else // use the default language (i.e. english)
{
theTranslator=new TranslatorEnglish;
......
......@@ -1211,7 +1211,8 @@ void LatexGenerator::docify(const char *str)
void LatexGenerator::codify(const char *str)
{
static bool isJapanese = theTranslator->idLanguage()=="japanese";
static bool isJapanese = theTranslator->idLanguage()=="japanese" ||
theTranslator->idLanguage()=="japanese-en";
if (str)
{
......
......@@ -99,6 +99,7 @@ HEADERS = bufstr.h \
translator_hr.h \
translator_hu.h \
translator_it.h \
translator_je.h \
translator_jp.h \
translator_kr.h \
translator_nl.h \
......
......@@ -136,13 +136,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
//printf("a->type=`%s' a->name=`%s'\n",a->type.data(),a->name.data());
QCString n=a->type.left(vp);
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->name(),n);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
}
else // non-function pointer type
{
QCString n=a->type;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->name(),n);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
}
if (!md->isDefine())
{
......@@ -167,7 +167,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (vp!=-1) // write the part of the argument type
// that comes after the name
{
linkifyText(TextGeneratorOLImpl(ol),cd,
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),
md->name(),a->type.right(a->type.length()-vp));
}
if (!a->defval.isEmpty()) // write the default value
......@@ -175,7 +175,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
QCString n=a->defval;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
ol.docify(" = ");
linkifyText(TextGeneratorOLImpl(ol),cd,md->name(),n);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
}
a=defArgList->next();
if (a)
......@@ -806,21 +806,21 @@ void MemberDef::writeDeclaration(OutputList &ol,
{
if (getAnonymousEnumType()) // type is an anonymous enum
{
linkifyText(TextGeneratorOLImpl(ol),d,name(),ltype.left(i),TRUE);
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),ltype.left(i),TRUE);
getAnonymousEnumType()->writeEnumDeclaration(ol,cd,nd,fd,gd);
//ol+=*getAnonymousEnumType()->enumDecl();
linkifyText(TextGeneratorOLImpl(ol),d,name(),ltype.right(ltype.length()-i-l),TRUE);
linkifyText(TextGeneratorOLImpl(ol),d,fileDef,name(),ltype.right(ltype.length()-i-l),TRUE);
}
else
{
ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l);
linkifyText(TextGeneratorOLImpl(ol),d,name(),ltype,TRUE);
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),ltype,TRUE);
}
}
}
else
{
linkifyText(TextGeneratorOLImpl(ol),d,name(),ltype,TRUE);
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),ltype,TRUE);
}
bool htmlOn = ol.isEnabled(OutputGenerator::Html);
if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
......@@ -891,7 +891,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
{
if (!isDefine()) ol.writeString(" ");
//ol.docify(argsString());
linkifyText(TextGeneratorOLImpl(ol),d,name(),argsString());
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),argsString());
}
if (excpString())
......@@ -902,7 +902,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!bitfields.isEmpty()) // add bitfields
{
linkifyText(TextGeneratorOLImpl(ol),d,name(),bitfields.simplifyWhiteSpace());
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),bitfields.simplifyWhiteSpace());
}
else if (hasOneLineInitializer()
//!init.isEmpty() && initLines==0 && // one line initializer
......@@ -912,12 +912,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!isDefine())
{
ol.writeString(" = ");
linkifyText(TextGeneratorOLImpl(ol),d,name(),init.simplifyWhiteSpace());
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),init.simplifyWhiteSpace());
}
else
{
ol.writeNonBreakableSpace(3);
linkifyText(TextGeneratorOLImpl(ol),d,name(),init);
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),init);
}
}
......@@ -1094,10 +1094,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{
htmlHelp->addIndexItem(cname,name(),cfname,anchor());
}
linkifyText(TextGeneratorOLImpl(ol),container,name(),ldef.left(i));
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.left(i));
//ol+=*vmd->enumDecl();
vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef());
linkifyText(TextGeneratorOLImpl(ol),container,name(),ldef.right(ldef.length()-i-l));
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.right(ldef.length()-i-l));
found=TRUE;
}
......@@ -1122,7 +1122,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
// last ei characters of ldef contain pointer/reference specifiers
int ni=ldef.find("::",si);
if (ni>=ei) ei=ni+2;
linkifyText(TextGeneratorOLImpl(ol),container,name(),ldef.right(ldef.length()-ei));
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef.right(ldef.length()-ei));
}
}
else // not an enum value
......@@ -1184,25 +1184,25 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
}
ol.startMemberDocName();
linkifyText(TextGeneratorOLImpl(ol),container,name(),ldef);
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef);
writeDefArgumentList(ol,cd,scopeName,this);
if (hasOneLineInitializer()) // add initializer
{
if (!isDefine())
{
ol.docify(" = ");
linkifyText(TextGeneratorOLImpl(ol),container,name(),init.simplifyWhiteSpace());
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),init.simplifyWhiteSpace());
}
else
{
ol.writeNonBreakableSpace(3);
linkifyText(TextGeneratorOLImpl(ol),container,name(),init);
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),init);
}
}
if (excpString()) // add exception list
{
ol.docify(" ");
linkifyText(TextGeneratorOLImpl(ol),container,name(),excpString());
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),excpString());
}
}
......
......@@ -2860,6 +2860,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START;
BEGIN(SkipCxxComment);
}
<SkipInits,SkipCurly,SkipCurlyCpp>{CHARLIT} {
}
<SkipInits,SkipCurly,SkipCurlyCpp>. {
//addToBody(yytext);
}
......
......@@ -1342,6 +1342,55 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the index
* of each page before the search field.
*/
virtual QCString trSearchForIndex()
{
return "Buscar";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
return "Resultados de la Búsqueda";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual QCString trSearchResults(int numDocuments)
{
if (numDocuments==0)
{
return "Disculpe, no se encontraron documentos que coincidan con su búsqueda.";
}
else if (numDocuments==1)
{
return "Se encontró <b>1</b> documento que coincide con su búsqueda.";
}
else
{
return "Se encontraron <b>$num</b> documentos que coinciden con su búsqueda. "
"Se muestran los mejores resultados primero.";
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual QCString trSearchMatches()
{
return "Coincidencias:";
}
};
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2003 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* 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.
*
*/
/*
* translator_jp.h
*
* 1.2.5)
* First Translation
* by Kenji Nagamatsu
* 1.2.12)
* Update and Shift-Jis(_WIN32)
* by Ryunosuke Sato (30-Dec-2001)
*/
#ifndef TRANSLATOR_JE_H
#define TRANSLATOR_JE_H
class TranslatorJapaneseEn : public TranslatorEnglish
{
public:
virtual QCString idLanguage()
{ return "japanese-en"; }
virtual QCString latexLanguageSupportCommand()
{
return "platex";
}
/*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset()
{
if (Config_getBool("USE_WINDOWS_ENCODING"))
{
return "Shift_JIS";
}
else
{
return "euc-jp";
}
}
virtual QCString trRTFansicp()
{
return "932";
}
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values.
*/
virtual QCString trRTFCharSet()
{
return "128";
}
};
#endif
......@@ -29,42 +29,7 @@
#ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H
class TranslatorJapaneseEn : public TranslatorEnglish
{
public:
virtual QCString idLanguage()
{ return "japanese"; }
virtual QCString latexLanguageSupportCommand()
{
return "";
}
/*! returns the name of the package that is included by LaTeX */
virtual QCString idLanguageCharset()
{
if (Config_getBool("USE_WINDOWS_ENCODING"))
{
return "Shift_JIS";
}
else
{
return "euc-jp";
}
}
virtual QCString trRTFansicp()
{
return "932";
}
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values.
*/
virtual QCString trRTFCharSet()
{
return "128";
}
};
class TranslatorJapanese : public TranslatorEnglish
class TranslatorJapanese : public TranslatorAdapter_1_3_3
{
private:
/*! The decode() can change euc into sjis */
......@@ -109,30 +74,39 @@ class TranslatorJapanese : public TranslatorEnglish
/*! header that is put before the detailed description of files, classes and namespaces. */
virtual QCString trDetailedDescription()
{ return decode("解説"); }
{ return decode("説明"); }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
{ return decode("Typedef の解説"); }
{ return decode("型定義"); }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
{ return decode("Enum の解説"); }
{ return decode("列挙型"); }
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
{ return decode("メソッドの解説"); }
{
if( Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
{
return decode("メソッド");
}
else
{
return decode("関数");
}
}
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
{
if( Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("構造体の解説");
return decode("構造体");
}
else
{
return decode("変数の解説");
return decode("変数");
}
}
......@@ -267,11 +241,11 @@ class TranslatorJapanese : public TranslatorEnglish
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("データ構造の解説です。");
return decode("データ構造の説明です。");
}
else
{
return decode("クラス、構造体、共用体、インタフェースの解説です。");
return decode("クラス、構造体、共用体、インタフェースの説明です。");
}
}
......@@ -289,7 +263,7 @@ class TranslatorJapanese : public TranslatorEnglish
result+=decode("クラスメンバの一覧で、それぞれ");
if (extractAll) result+=decode("が属しているクラス");
}
result+=decode("の解説へリンクしています。");
result+=decode("の説明へリンクしています。");
return result;
}
......@@ -305,7 +279,7 @@ class TranslatorJapanese : public TranslatorEnglish
{
result+=decode("ファイルメンバの");
}
result+=decode("一覧です。それぞれが属しているファイルの解説へリンクしています。");
result+=decode("一覧です。それぞれが属しているファイルの説明へリンクしています。");
return result;
}
......@@ -375,7 +349,7 @@ class TranslatorJapanese : public TranslatorEnglish
* the documentation of all groups.
*/
virtual QCString trModuleDocumentation()
{ return decode("モジュールの解説"); }
{ return decode("モジュール"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
......@@ -384,11 +358,11 @@ class TranslatorJapanese : public TranslatorEnglish
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("データ構造の解説");
return decode("データ構造");
}
else
{
return decode("クラスの解説");
return decode("クラス");
}
}
......@@ -396,19 +370,19 @@ class TranslatorJapanese : public TranslatorEnglish
* the documentation of all files.
*/
virtual QCString trFileDocumentation()
{ return decode("ファイルの解説"); }
{ return decode("ファイル"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
{ return decode("例の解説"); }
{ return decode("例"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
virtual QCString trPageDocumentation()
{ return decode("ページの解説"); }
{ return decode("ページ"); }
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
......@@ -430,13 +404,13 @@ class TranslatorJapanese : public TranslatorEnglish
* list of typedefs
*/
virtual QCString trTypedefs()
{ return decode("Typedef"); }
{ return decode("型定義"); }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
{ return decode("Enum"); }
{ return decode("列挙型"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
......@@ -454,48 +428,48 @@ class TranslatorJapanese : public TranslatorEnglish
* list of (global) variables
*/
virtual QCString trEnumerationValues()
{ return decode("Enum 値"); }
{ return decode("列挙型の値"); }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
{ return decode("マクロ定義の解説"); }
{ return decode("マクロ定義"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
{ return decode("関数プロトタイプの解説"); }
{ return decode("関数プロトタイプ"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
{ return decode("Typedef の解説"); }
{ return decode("型定義"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
{ return decode("Enum の解説"); }
{ return decode("列挙型"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return decode("Enum 値の解説"); }
{ return decode("列挙型の値"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
{ return decode("関数の解説"); }
{ return decode("関数"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
{ return decode("変数の解説"); }
{ return decode("変数"); }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
......@@ -585,13 +559,13 @@ class TranslatorJapanese : public TranslatorEnglish
/*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList()
{ return decode("名前空間一覧"); }
{ return decode("ネームスペース一覧"); }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool /*extractAll*/)
{
QCString result=decode("");
result+=decode("名前空間の一覧です。");
result+=decode("ネームスペースの一覧です。");
return result;
}
......@@ -609,7 +583,7 @@ class TranslatorJapanese : public TranslatorEnglish
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return decode("フレンドと関連する関数の解説"); }
{ return decode("フレンドと関連する関数"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
......@@ -630,21 +604,21 @@ class TranslatorJapanese : public TranslatorEnglish
case ClassDef::Exception: result+=decode("例外"); break; //TODO:fixme
}
if (isTemplate) result+=decode(" テンプレート");
result+=(QCString)clName+decode(" の解説");
result+=(QCString)clName;
return result;
}
/*! used as the title of the HTML page of a file */
virtual QCString trFileReference(const char *fileName)
{
QCString result=decode("")+(QCString)fileName+decode(" の解説");
QCString result=decode("")+(QCString)fileName;
return result;
}
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
QCString result=decode("名前空間 ")+(QCString)namespaceName+decode(" の解説");
QCString result=decode("ネームスペース ")+(QCString)namespaceName;
return result;
}
......@@ -729,17 +703,17 @@ class TranslatorJapanese : public TranslatorEnglish
/*! This is put above each page as a link to all members of namespaces. */
virtual QCString trNamespaceMembers()
{ return decode("名前空間メンバ"); }
{ return decode("ネームスペースメンバ"); }
/*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll)
{
QCString result=decode("これは");
result+=decode("名前空間の一覧です。それぞれ");
result+=decode("ネームスペースの一覧です。それぞれ");
if (extractAll)
result+=decode("の名前空間の解説");
result+=decode("のネームスペース");
else
result+=decode("が属している名前空間");
result+=decode("が属しているネームスペース");
result+=decode("へリンクしています。");
return result;
}
......@@ -747,13 +721,13 @@ class TranslatorJapanese : public TranslatorEnglish
* index of all namespaces.
*/
virtual QCString trNamespaceIndex()
{ return decode("名前空間索引"); }
{ return decode("ネームスペース索引"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
virtual QCString trNamespaceDocumentation()
{ return decode("名前空間の解説"); }
{ return decode("ネームスペース"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
......@@ -763,7 +737,7 @@ class TranslatorJapanese : public TranslatorEnglish
* namespaces in a file.
*/
virtual QCString trNamespaces()
{ return decode("名前空間"); }
{ return decode("ネームスペース"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
......@@ -785,7 +759,7 @@ class TranslatorJapanese : public TranslatorEnglish
case ClassDef::Interface: result+=decode("インタフェース"); break;
case ClassDef::Exception: result+=decode("例外"); break; //TODO:fixme
}
result+=decode("の解説は次のファイルから生成されました:");
result+=decode("の説明は次のファイルから生成されました:");
return result;
}
......@@ -857,7 +831,7 @@ class TranslatorJapanese : public TranslatorEnglish
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
return decode("コンストラクタとデストラクタの解説");
return decode("コンストラクタとデストラクタ");
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
......@@ -867,7 +841,7 @@ class TranslatorJapanese : public TranslatorEnglish
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
return decode("解説を見る。");
return decode("説明を見る。");
}
/*! Text for the \\pre command */
virtual QCString trPrecondition()
......@@ -984,7 +958,7 @@ class TranslatorJapanese : public TranslatorEnglish
virtual QCString trReferencedBy()
{
return decode("呼出");
return decode("参照元");
}
virtual QCString trRemarks()
{
......@@ -1112,7 +1086,7 @@ class TranslatorJapanese : public TranslatorEnglish
/*! Used as a section header for IDL property documentation */
virtual QCString trPropertyDocumentation()
{
return decode("プロパティの解説");
return decode("プロパティ");
}
......@@ -1160,7 +1134,7 @@ class TranslatorJapanese : public TranslatorEnglish
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
return decode("パッケージの解説");
return decode("パッケージ");
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
......@@ -1265,7 +1239,7 @@ class TranslatorJapanese : public TranslatorEnglish
{
first_capital = first_capital;
singular = singular;
QCString result(decode("名前空間"));
QCString result(decode("ネームスペース"));
return result;
}
......@@ -1351,7 +1325,7 @@ class TranslatorJapanese : public TranslatorEnglish
*/
virtual QCString trReferences()
{
return decode("参照");
return decode("参照");
}
//////////////////////////////////////////////////////////////////////////
......@@ -1411,7 +1385,7 @@ class TranslatorJapanese : public TranslatorEnglish
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return decode("イベントの解説");
return decode("イベント");
}
//////////////////////////////////////////////////////////////////////////
......
......@@ -738,7 +738,7 @@ static QDict<MemberDef> g_resolvedTypedefs;
ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope,
const char *n,
bool *pIsTypeDef,
MemberDef **pTypeDef,
QCString *pTemplSpec
);
int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
......@@ -1029,7 +1029,7 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope,
const char *n,
bool *pIsTypeDef,
MemberDef **pTypeDef,
QCString *pTemplSpec
)
{
......@@ -1057,7 +1057,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
DefinitionListIterator dli(*dl);
Definition *d;
ClassDef *bestMatch=0;
bool bestIsTypedef=FALSE;
MemberDef *bestTypedef=0;
QCString bestTemplSpec;
int minDistance=10000; // init at "infinite"
for (dli.toFirst();(d=dli.current());++dli) // foreach definition
......@@ -1078,7 +1078,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
{
minDistance=distance;
bestMatch = (ClassDef *)d;
bestIsTypedef = FALSE;
bestTypedef = 0;
bestTemplSpec.resize(0);
}
}
......@@ -1087,6 +1087,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
MemberDef *md = (MemberDef *)d;
if (md->isTypedef()) // d is a typedef
{
//printf("found typedef!\n");
QCString spec;
ClassDef *typedefClass = newResolveTypedef(fileScope,md,&spec);
......@@ -1098,7 +1099,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
{
minDistance=distance;
bestMatch = typedefClass;
bestIsTypedef = TRUE;
//printf("bestTypeDef=%p\n",md);
bestTypedef = md;
bestTemplSpec = spec;
}
......@@ -1107,9 +1109,9 @@ ClassDef *getResolvedClassRec(Definition *scope,
} // if definition accessible
} // if definition is a class or member
} // foreach definition
if (pIsTypeDef)
if (pTypeDef)
{
*pIsTypeDef = bestIsTypedef;
*pTypeDef = bestTypedef;
}
if (pTemplSpec)
{
......@@ -1127,7 +1129,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
ClassDef *getResolvedClass(Definition *scope,
FileDef *fileScope,
const char *n,
bool *pIsTypeDef,
MemberDef **pTypeDef,
QCString *pTemplSpec
)
{
......@@ -1140,7 +1142,7 @@ ClassDef *getResolvedClass(Definition *scope,
{
scope=Doxygen::globalScope;
}
ClassDef *result = getResolvedClassRec(scope,fileScope,n,pIsTypeDef,pTemplSpec);
ClassDef *result = getResolvedClassRec(scope,fileScope,n,pTypeDef,pTemplSpec);
if (result && !result->isLinkable()) result=0; // don't link to artifical classes
//printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>",
// n,result?result->name().data():"<none>");
......@@ -1258,14 +1260,17 @@ bool leftScopeMatch(const QCString &scope, const QCString &name)
}
void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*name*/,const char *text,bool autoBreak,bool external)
void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileScope,const char * /*name*/,const char *text,bool autoBreak,bool external)
{
//printf("`%s'\n",text);
static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*");
QCString txtStr=text;
QCString scopeName;
int strLen = txtStr.length();
//printf("linkifyText scope=%s strtxt=%s strlen=%d\n",scope?scope->name().data():"<none>",txtStr.data(),strLen);
//printf("linkifyText scope=%s fileScope=%s strtxt=%s strlen=%d\n",
// scope?scope->name().data():"<none>",
// fileScope?fileScope->name().data():"<none>",
// txtStr.data(),strLen);
int matchLen;
int index=0;
int newIndex;
......@@ -1340,9 +1345,8 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n
// fullName.prepend(prefix+"::");
// }
// bool isTypeDef=FALSE;
if ((cd=getResolvedClass(scope,0,word/*fullName,&isTypeDef*/)))
// todo: fill in fileScope
MemberDef *typeDef=0;
if ((cd=getResolvedClass(scope,fileScope,word,&typeDef)))
{
// add link to the result
if (external ? cd->isLinkable() : cd->isLinkableInProject())
......@@ -1351,10 +1355,17 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n
found=TRUE;
}
}
// else if (isTypeDef)
// {
// goto endloop;
// }
else if (typeDef)
{
if (external ? typeDef->isLinkable() : typeDef->isLinkableInProject())
{
out.writeLink(typeDef->getReference(),
typeDef->getOutputFileBase(),
typeDef->anchor(),
word);
found=TRUE;
}
}
// if (curScope) curScope = curScope->getOuterScope();
// } //while (!found && scopeOffset>=0);
......@@ -4499,7 +4510,8 @@ void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing,bool insidePre,bool insideItem)
{
static bool isCzech = theTranslator->idLanguage()=="czech";
static bool isJapanese = theTranslator->idLanguage()=="japanese";
static bool isJapanese = theTranslator->idLanguage()=="japanese" ||
theTranslator->idLanguage()=="japanese-en";
static bool isKorean = theTranslator->idLanguage()=="korean";
static bool isRussian = theTranslator->idLanguage()=="russian";
static bool isUkrainian = theTranslator->idLanguage()=="ukrainian";
......
......@@ -77,8 +77,14 @@ class TextGeneratorOLImpl : public TextGeneratorIntf
//--------------------------------------------------------------------
void linkifyText(const TextGeneratorIntf &ol,Definition *scope,const char *name,
const char *text,bool autoBreak=FALSE,bool external=TRUE);
void linkifyText(const TextGeneratorIntf &ol,
Definition *scope,
FileDef *fileScope,
const char *name,
const char *text,
bool autoBreak=FALSE,
bool external=TRUE
);
void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1);
QCString fileToString(const char *name,bool filter=FALSE);
QCString dateToString(bool);
......@@ -131,7 +137,7 @@ ClassDef *getClass(const char *key);
ClassDef *getResolvedClass(Definition *scope,
FileDef *fileScope,
const char *key,
bool *pIsTypeDef=0,
MemberDef **pTypeDef=0,
QCString *pTemplSpec=0);
NamespaceDef *getResolvedNamespace(const char *key);
FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
......
......@@ -340,7 +340,11 @@ class XMLCodeGenerator : public BaseCodeDocInterface
};
static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition *scope,int indent)
static void writeTemplateArgumentList(ArgumentList *al,
QTextStream &t,
Definition *scope,
FileDef *fileScope,
int indent)
{
QCString indentStr;
indentStr.fill(' ',indent);
......@@ -355,7 +359,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition
if (!a->type.isEmpty())
{
t << indentStr << " <type>";
linkifyText(TextGeneratorXMLImpl(t),scope,0,a->type);
linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->type);
t << "</type>" << endl;
}
if (!a->name.isEmpty())
......@@ -366,7 +370,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition
if (!a->defval.isEmpty())
{
t << indentStr << " <defval>";
linkifyText(TextGeneratorXMLImpl(t),scope,0,a->defval);
linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->defval);
t << "</defval>" << endl;
}
t << indentStr << " </param>" << endl;
......@@ -379,13 +383,13 @@ static void writeMemberTemplateLists(MemberDef *md,QTextStream &t)
{
if (md->templateArguments()) // function template prefix
{
writeTemplateArgumentList(md->templateArguments(),t,md->getClassDef(),8);
writeTemplateArgumentList(md->templateArguments(),t,md->getClassDef(),md->getFileDef(),8);
}
}
static void writeTemplateList(ClassDef *cd,QTextStream &t)
{
writeTemplateArgumentList(cd->templateArguments(),t,cd,4);
writeTemplateArgumentList(cd->templateArguments(),t,cd,0,4);
}
static void writeXMLDocBlock(QTextStream &t,
......@@ -574,7 +578,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
}
QCString typeStr = md->typeString(); //replaceAnonymousScopes(md->typeString());
t << " <type>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),typeStr);
linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),typeStr);
t << "</type>" << endl;
t << " <definition>" << convertToXML(md->definition()) << "</definition>" << endl;
t << " <argsstring>" << convertToXML(md->argsString()) << "</argsstring>" << endl;
......@@ -622,7 +626,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!a->type.isEmpty())
{
t << " <type>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),a->type);
linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),a->type);
t << "</type>" << endl;
}
if (!a->name.isEmpty())
......@@ -646,7 +650,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!a->defval.isEmpty())
{
t << " <defval>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),a->defval);
linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),a->defval);
t << "</defval>" << endl;
}
if (defArg && defArg->hasDocumentation())
......@@ -674,14 +678,14 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!md->initializer().isEmpty())
{
t << " <initializer>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),md->initializer());
linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),md->initializer());
t << "</initializer>" << endl;
}
if (md->excpString())
{
t << " <exceptions>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),md->excpString());
linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),md->excpString());
t << "</exceptions>" << endl;
}
......
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