Commit d20edf5d authored by dimitri's avatar dimitri

Release-1.3.3-20030904

parent 77a2ce8e
...@@ -10,7 +10,7 @@ OUTPUT_LANGUAGE = English ...@@ -10,7 +10,7 @@ OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = NO EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
......
DOXYGEN Version 1.3.3-20030824 DOXYGEN Version 1.3.3-20030904
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (24 August 2003) Dimitri van Heesch (04 September 2003)
...@@ -25,6 +25,7 @@ distclean: clean ...@@ -25,6 +25,7 @@ distclean: clean
-rm -f lib/lib* -rm -f lib/lib*
-rm -f bin/doxy* -rm -f bin/doxy*
-rm -f html -rm -f html
-rm -f latex
-rm -f objects/*.o -rm -f objects/*.o
-rm -f src/Makefile.doxygen src/Makefile.libdoxygen -rm -f src/Makefile.doxygen src/Makefile.libdoxygen
-rm -f src/Makefile.doxytag src/Makefile.libdoxycfg -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. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (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 ...@@ -27,7 +27,7 @@ f_prefix=/usr
f_insttool=NO f_insttool=NO
f_english=NO f_english=NO
f_wizard=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 while test -n "$1"; do
case $1 in case $1 in
...@@ -485,7 +485,7 @@ done ...@@ -485,7 +485,7 @@ done
echo -n " Generating src/lang_cfg.h..." echo -n " Generating src/lang_cfg.h..."
echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>); echo $f_langs | $f_perl -e '@l=split(/,/,<STDIN>);
chomp @l; 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); DK,SK,UA,GR,TW,SR,CA);
foreach my $elem (@l){ foreach my $elem (@l){
$elem =~ tr/a-z/A-Z/; $elem =~ tr/a-z/A-Z/;
......
...@@ -25,14 +25,14 @@ Doxygen has built-in support for multiple languages. This means ...@@ -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 that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. 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): are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish, Czech, Danish, Dutch, English, Finnish,
French, German, Greek, Hungarian, Italian, French, German, Greek, Hungarian, Italian,
Japanese, Korean, Norwegian, Polish, Portuguese, Japanese, JapaneseEn, Korean, Norwegian, Polish,
Romanian, Russian, Serbian, Slovak, Slovene, Portuguese, Romanian, Russian, Serbian, Slovak,
Spanish, Swedish, and Ukrainian. Slovene, Spanish, Swedish, and Ukrainian.
The table of information related to the supported languages follows. The table of information related to the supported languages follows.
It is sorted by language alphabetically. The <b>Status</b> column It is sorted by language alphabetically. The <b>Status</b> column
...@@ -85,7 +85,7 @@ when the translator was updated. ...@@ -85,7 +85,7 @@ when the translator was updated.
<TD>Czech</TD> <TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD> <TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD> <TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.3.3</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Danish</TD> <TD>Danish</TD>
...@@ -145,6 +145,12 @@ when the translator was updated. ...@@ -145,6 +145,12 @@ when the translator was updated.
<TD>Japanese</TD> <TD>Japanese</TD>
<TD>Ryunosuke Satoh<br>Kenji Nagamatsu</TD> <TD>Ryunosuke Satoh<br>Kenji Nagamatsu</TD>
<TD>sun594@NOSPAM.hotmail.com<br>naga@NOSPAM.joyful.club.ne.jp</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> <TD>obsolete</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -205,7 +211,7 @@ when the translator was updated. ...@@ -205,7 +211,7 @@ when the translator was updated.
<TD>Spanish</TD> <TD>Spanish</TD>
<TD>Francisco Oltra Thennet</TD> <TD>Francisco Oltra Thennet</TD>
<TD>foltra@NOSPAM.puc.cl</TD> <TD>foltra@NOSPAM.puc.cl</TD>
<TD>1.2.7</TD> <TD>1.3.3</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Swedish</TD> <TD>Swedish</TD>
...@@ -242,7 +248,7 @@ when the translator was updated. ...@@ -242,7 +248,7 @@ when the translator was updated.
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.3.1 \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & 1.3.1 \\
\hline \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 \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & strange \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & strange \\
\hline \hline
...@@ -263,9 +269,11 @@ when the translator was updated. ...@@ -263,9 +269,11 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.3.3 \\ Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & 1.3.3 \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\ & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline \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} & \\ & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline \hline
JapaneseEn & unknown & {\tt unknown} & obsolete \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & strange \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & strange \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\ Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
...@@ -285,7 +293,7 @@ when the translator was updated. ...@@ -285,7 +293,7 @@ when the translator was updated.
\hline \hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\ Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & 1.2.16 \\
\hline \hline
Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.2.7 \\ Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} & 1.3.3 \\
\hline \hline
Swedish & XeT Erixon & {\tt xet@hem.passagen.se} & 1.3.3 \\ Swedish & XeT Erixon & {\tt xet@hem.passagen.se} & 1.3.3 \\
\hline \hline
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.3_20030824 Version: 1.3.3_20030904
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -648,19 +648,17 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -648,19 +648,17 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
QCString className=clName; QCString className=clName;
if (className.isEmpty()) return; if (className.isEmpty()) return;
ClassDef *cd=0; ClassDef *cd=0;
MemberDef *md=0;
if (!g_theVarContext.findVariable(className)) // not a local variable if (!g_theVarContext.findVariable(className)) // not a local variable
{ {
Definition *d = g_currentDefinition; Definition *d = g_currentDefinition;
cd = getResolvedClass(d,g_sourceFileDef,className); cd = getResolvedClass(d,g_sourceFileDef,className,&md);
if (cd==0 && (i=className.find('<'))!=-1) 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 if (cd && cd->isLinkable()) // is it a linkable class
{ {
//printf("is linkable class %s\n",clName); //printf("is linkable class %s\n",clName);
...@@ -677,17 +675,33 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -677,17 +675,33 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
} }
} }
writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className); 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 else
{ {
//printf("class %s not linkable! cd=%p\n",clName,cd); //printf("class %s not linkable! cd=%p md=%p typeOnly=%d\n",clName,cd,md,typeOnly);
//printf("typeOnly=%d\n",typeOnly); if (md!=0 || (cd==0 && !typeOnly)) // not a class, see if it is a global enum/variable/typedef.
if (cd==0 && !typeOnly) // not a class, see if it is a global enum/variable/typedef.
{ {
MemberDef *md = setCallContextForVar(clName); if (md==0) // not found as a typedef
//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)) 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 ? Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope(); md->getBodyDef() : md->getOuterScope();
//printf("definition %s\n",d?d->name().data():"<none>"); //printf("definition %s\n",d?d->name().data():"<none>");
......
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
<xsd:attribute name="mutable" type="DoxBool" /> <xsd:attribute name="mutable" type="DoxBool" />
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="descriptionType"> <xsd:complexType name="descriptionType" mixed="true">
<xsd:sequence> <xsd:sequence>
<xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
...@@ -244,7 +244,7 @@ ...@@ -244,7 +244,7 @@
<xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="internal" type="docInternalS2Type" minOccurs="0" /> <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
</xsd:sequencee </xsd:sequence>
<xsd:attribute name="id" /> <xsd:attribute name="id" />
</xsd:complexType> </xsd:complexType>
......
...@@ -120,7 +120,7 @@ ...@@ -120,7 +120,7 @@
" <xsd:attribute name=\"mutable\" type=\"DoxBool\" />\n" " <xsd:attribute name=\"mutable\" type=\"DoxBool\" />\n"
" </xsd:complexType>\n" " </xsd:complexType>\n"
"\n" "\n"
" <xsd:complexType name=\"descriptionType\">\n" " <xsd:complexType name=\"descriptionType\" mixed=\"true\">\n"
" <xsd:sequence>\n" " <xsd:sequence>\n"
" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
...@@ -244,7 +244,7 @@ ...@@ -244,7 +244,7 @@
" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <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=\"sect3\" type=\"docSect3Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"internal\" type=\"docInternalS2Type\" minOccurs=\"0\" />\n" " <xsd:element name=\"internal\" type=\"docInternalS2Type\" minOccurs=\"0\" />\n"
" </xsd:sequencee\n" " </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n" " <xsd:attribute name=\"id\" />\n"
" </xsd:complexType>\n" " </xsd:complexType>\n"
"\n" "\n"
......
...@@ -1175,38 +1175,38 @@ void Config::check() ...@@ -1175,38 +1175,38 @@ void Config::check()
// } // }
// //
// } // }
// check perl path // // check perl path
bool found=FALSE; // bool found=FALSE;
QCString &perlPath = Config_getString("PERL_PATH"); // QCString &perlPath = Config_getString("PERL_PATH");
if (perlPath.isEmpty()) // if (perlPath.isEmpty())
{ // {
QFileInfo fi; // QFileInfo fi;
fi.setFile("/usr/bin/perl"); // fi.setFile("/usr/bin/perl");
if (fi.exists()) // if (fi.exists())
{ // {
perlPath="/usr/bin/perl"; // perlPath="/usr/bin/perl";
found=TRUE; // found=TRUE;
} // }
else // else
{ // {
fi.setFile("/usr/local/bin/perl"); // fi.setFile("/usr/local/bin/perl");
if (fi.exists()) // if (fi.exists())
{ // {
perlPath="/usr/local/bin/perl"; // perlPath="/usr/local/bin/perl";
found=TRUE; // found=TRUE;
} // }
} // }
} // }
if (!found) // if (!found)
{ // {
QFileInfo fi(perlPath); // QFileInfo fi(perlPath);
if (!fi.exists()) // if (!fi.exists())
{ // {
config_warn("Warning: tag PERL_PATH: perl interpreter not found at default or" // config_warn("Warning: tag PERL_PATH: perl interpreter not found at default or"
"user specified (%s) location\n", // "user specified (%s) location\n",
perlPath.data()); // perlPath.data());
} // }
} // }
#undef PUTENV #undef PUTENV
#undef SEP #undef SEP
......
...@@ -2257,6 +2257,11 @@ static void buildFunctionList(Entry *root) ...@@ -2257,6 +2257,11 @@ static void buildFunctionList(Entry *root)
matchArguments(md->argumentList(),root->argList,0,nsName,FALSE,unl,ucl) 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"); //printf("match!\n");
// see if we need to create a new member // see if we need to create a new member
found=(nd && rnd && nsName==rnsName) || // members are in the same namespace found=(nd && rnd && nsName==rnsName) || // members are in the same namespace
...@@ -2265,6 +2270,11 @@ static void buildFunctionList(Entry *root) ...@@ -2265,6 +2270,11 @@ static void buildFunctionList(Entry *root)
) )
); );
// otherwise, allow a duplicate global member with the same argument list // 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", //printf("combining function with prototype found=%d in namespace %s\n",
// found,nsName.data()); // found,nsName.data());
...@@ -2325,12 +2335,13 @@ static void buildFunctionList(Entry *root) ...@@ -2325,12 +2335,13 @@ static void buildFunctionList(Entry *root)
md->enableCallGraph(md->hasCallGraph() || root->callGraph); md->enableCallGraph(md->hasCallGraph() || root->callGraph);
// merge ingroup specifiers // 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 // if we do addMemberToGroups here an undocumented declaration may prevent
// the documented implementation below it from being added // the documented implementation below it from being added
//addMemberToGroups(root,md); //addMemberToGroups(root,md);
GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()]; //GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()];
if (gd) if (gd)
{ {
bool success = gd->insertMember(md); bool success = gd->insertMember(md);
...@@ -2342,8 +2353,13 @@ static void buildFunctionList(Entry *root) ...@@ -2342,8 +2353,13 @@ static void buildFunctionList(Entry *root)
} }
else if (md->getGroupDef()!=0 && root->groups->count()==0) 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())); 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( ...@@ -3338,12 +3354,12 @@ static bool findClassRelation(
} }
baseClassName=stripTemplateSpecifiersFromScope baseClassName=stripTemplateSpecifiersFromScope
(removeRedundantWhiteSpace(baseClassName)); (removeRedundantWhiteSpace(baseClassName));
bool baseClassIsTypeDef; MemberDef *baseClassTypeDef;
QCString templSpec; QCString templSpec;
ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? 0 : cd, ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? 0 : cd,
cd->getFileDef(), // todo: is this ok? cd->getFileDef(), // todo: is this ok?
baseClassName, baseClassName,
&baseClassIsTypeDef, &baseClassTypeDef,
&templSpec); &templSpec);
//printf("baseClassName=%s baseClass=%p cd=%p\n",baseClassName.data(),baseClass,cd); //printf("baseClassName=%s baseClass=%p cd=%p\n",baseClassName.data(),baseClass,cd);
//printf(" root->name=`%s' baseClassName=`%s' baseClass=%s templSpec=%s\n", //printf(" root->name=`%s' baseClassName=`%s' baseClass=%s templSpec=%s\n",
...@@ -3444,7 +3460,7 @@ static bool findClassRelation( ...@@ -3444,7 +3460,7 @@ static bool findClassRelation(
else if (mode==DocumentedOnly) else if (mode==DocumentedOnly)
{ {
QCString usedName; QCString usedName;
if (baseClassIsTypeDef) usedName=biName; if (baseClassTypeDef) usedName=biName;
cd->insertBaseClass(baseClass,usedName,bi->prot,bi->virt,templSpec); cd->insertBaseClass(baseClass,usedName,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class // add this class as super class to the base class
baseClass->insertSubClass(cd,bi->prot,bi->virt,templSpec); baseClass->insertSubClass(cd,bi->prot,bi->virt,templSpec);
......
...@@ -507,10 +507,9 @@ void usage(const char *name) ...@@ -507,10 +507,9 @@ void usage(const char *name)
fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2003\n\n", fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2003\n\n",
versionString); versionString);
fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n"); 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,"Options:\n");
fprintf(stderr," -t <tag_file> Generate tag file <tag_file>.\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" fprintf(stderr,"If no HTML files are given all files in the current dir that\n"
"have a .html extension are parsed.\n\n"); "have a .html extension are parsed.\n\n");
exit(1); exit(1);
......
...@@ -332,26 +332,27 @@ void HtmlHelp::initialize() ...@@ -332,26 +332,27 @@ void HtmlHelp::initialize()
*/ */
s_languageDict.setAutoDelete(TRUE); s_languageDict.setAutoDelete(TRUE);
s_languageDict.clear(); s_languageDict.clear();
s_languageDict.insert("czech", new QCString("0x405 Czech")); s_languageDict.insert("czech", new QCString("0x405 Czech"));
s_languageDict.insert("danish", new QCString("0x406 Danish")); s_languageDict.insert("danish", new QCString("0x406 Danish"));
s_languageDict.insert("dutch", new QCString("0x413 Dutch")); s_languageDict.insert("dutch", new QCString("0x413 Dutch"));
s_languageDict.insert("finnish", new QCString("0x40B Finnish")); s_languageDict.insert("finnish", new QCString("0x40B Finnish"));
s_languageDict.insert("french", new QCString("0x40C French")); s_languageDict.insert("french", new QCString("0x40C French"));
s_languageDict.insert("german", new QCString("0x407 German")); s_languageDict.insert("german", new QCString("0x407 German"));
s_languageDict.insert("greece", new QCString("0x408 Greece")); s_languageDict.insert("greece", new QCString("0x408 Greece"));
s_languageDict.insert("hungarian",new QCString("0x40E Hungarian")); s_languageDict.insert("hungarian", new QCString("0x40E Hungarian"));
s_languageDict.insert("italian", new QCString("0x410 Italian")); s_languageDict.insert("italian", new QCString("0x410 Italian"));
s_languageDict.insert("norwegian",new QCString("0x814 Norwegian")); s_languageDict.insert("norwegian", new QCString("0x814 Norwegian"));
s_languageDict.insert("polish", new QCString("0x415 Polish")); s_languageDict.insert("polish", new QCString("0x415 Polish"));
s_languageDict.insert("portugese",new QCString("0x816 Portuguese(Portugal)")); s_languageDict.insert("portugese", new QCString("0x816 Portuguese(Portugal)"));
s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)")); s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)"));
s_languageDict.insert("russian", new QCString("0x419 Russian")); s_languageDict.insert("russian", new QCString("0x419 Russian"));
s_languageDict.insert("spanish", new QCString("0x40A Spannish(Traditional Sort)")); s_languageDict.insert("spanish", new QCString("0x40A Spannish(Traditional Sort)"));
s_languageDict.insert("swedish", new QCString("0x41D Swedish")); s_languageDict.insert("swedish", new QCString("0x41D Swedish"));
s_languageDict.insert("turkey", new QCString("0x41F Turkey")); s_languageDict.insert("turkey", new QCString("0x41F Turkey"));
s_languageDict.insert("japanese", new QCString("0x411 Japanese")); s_languageDict.insert("japanese", new QCString("0x411 Japanese"));
s_languageDict.insert("korean", new QCString("0x412 Korean")); s_languageDict.insert("japanese-en", new QCString("0x411 Japanese"));
s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)")); s_languageDict.insert("korean", new QCString("0x412 Korean"));
s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)"));
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#define LANG_IT #define LANG_IT
#define LANG_DE #define LANG_DE
#define LANG_JP #define LANG_JP
#define LANG_JE
#define LANG_ES #define LANG_ES
#define LANG_FI #define LANG_FI
#define LANG_RU #define LANG_RU
......
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
#ifdef LANG_JP #ifdef LANG_JP
#include "translator_jp.h" #include "translator_jp.h"
#endif #endif
#ifdef LANG_JE
#include "translator_je.h"
#endif
#ifdef LANG_ES #ifdef LANG_ES
#include "translator_es.h" #include "translator_es.h"
#endif #endif
...@@ -297,11 +300,7 @@ bool setTranslator(const char *langName) ...@@ -297,11 +300,7 @@ bool setTranslator(const char *langName)
theTranslator=new TranslatorCatalan; theTranslator=new TranslatorCatalan;
} }
#endif #endif
// else if (L_EQUAL("japanese-sjis")) #endif // ENGLISH_ONLY
// {
// theTranslator=new TranslatorJapaneseSjis;
// }
#endif
else // use the default language (i.e. english) else // use the default language (i.e. english)
{ {
theTranslator=new TranslatorEnglish; theTranslator=new TranslatorEnglish;
......
...@@ -1211,7 +1211,8 @@ void LatexGenerator::docify(const char *str) ...@@ -1211,7 +1211,8 @@ void LatexGenerator::docify(const char *str)
void LatexGenerator::codify(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) if (str)
{ {
......
...@@ -99,6 +99,7 @@ HEADERS = bufstr.h \ ...@@ -99,6 +99,7 @@ HEADERS = bufstr.h \
translator_hr.h \ translator_hr.h \
translator_hu.h \ translator_hu.h \
translator_it.h \ translator_it.h \
translator_je.h \
translator_jp.h \ translator_jp.h \
translator_kr.h \ translator_kr.h \
translator_nl.h \ translator_nl.h \
......
...@@ -136,13 +136,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -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()); //printf("a->type=`%s' a->name=`%s'\n",a->type.data(),a->name.data());
QCString n=a->type.left(vp); QCString n=a->type.left(vp);
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); 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 else // non-function pointer type
{ {
QCString n=a->type; QCString n=a->type;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); 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()) if (!md->isDefine())
{ {
...@@ -167,7 +167,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -167,7 +167,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (vp!=-1) // write the part of the argument type if (vp!=-1) // write the part of the argument type
// that comes after the name // that comes after the name
{ {
linkifyText(TextGeneratorOLImpl(ol),cd, linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),
md->name(),a->type.right(a->type.length()-vp)); md->name(),a->type.right(a->type.length()-vp));
} }
if (!a->defval.isEmpty()) // write the default value if (!a->defval.isEmpty()) // write the default value
...@@ -175,7 +175,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -175,7 +175,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
QCString n=a->defval; QCString n=a->defval;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
ol.docify(" = "); ol.docify(" = ");
linkifyText(TextGeneratorOLImpl(ol),cd,md->name(),n); linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
} }
a=defArgList->next(); a=defArgList->next();
if (a) if (a)
...@@ -806,21 +806,21 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -806,21 +806,21 @@ void MemberDef::writeDeclaration(OutputList &ol,
{ {
if (getAnonymousEnumType()) // type is an anonymous enum 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); getAnonymousEnumType()->writeEnumDeclaration(ol,cd,nd,fd,gd);
//ol+=*getAnonymousEnumType()->enumDecl(); //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 else
{ {
ltype = ltype.left(i) + " { ... } " + ltype.right(ltype.length()-i-l); 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 else
{ {
linkifyText(TextGeneratorOLImpl(ol),d,name(),ltype,TRUE); linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),ltype,TRUE);
} }
bool htmlOn = ol.isEnabled(OutputGenerator::Html); bool htmlOn = ol.isEnabled(OutputGenerator::Html);
if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty()) if (htmlOn && Config_getBool("HTML_ALIGN_MEMBERS") && !ltype.isEmpty())
...@@ -891,7 +891,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -891,7 +891,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
{ {
if (!isDefine()) ol.writeString(" "); if (!isDefine()) ol.writeString(" ");
//ol.docify(argsString()); //ol.docify(argsString());
linkifyText(TextGeneratorOLImpl(ol),d,name(),argsString()); linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),argsString());
} }
if (excpString()) if (excpString())
...@@ -902,7 +902,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -902,7 +902,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!bitfields.isEmpty()) // add bitfields if (!bitfields.isEmpty()) // add bitfields
{ {
linkifyText(TextGeneratorOLImpl(ol),d,name(),bitfields.simplifyWhiteSpace()); linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),bitfields.simplifyWhiteSpace());
} }
else if (hasOneLineInitializer() else if (hasOneLineInitializer()
//!init.isEmpty() && initLines==0 && // one line initializer //!init.isEmpty() && initLines==0 && // one line initializer
...@@ -912,12 +912,12 @@ void MemberDef::writeDeclaration(OutputList &ol, ...@@ -912,12 +912,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
if (!isDefine()) if (!isDefine())
{ {
ol.writeString(" = "); ol.writeString(" = ");
linkifyText(TextGeneratorOLImpl(ol),d,name(),init.simplifyWhiteSpace()); linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),init.simplifyWhiteSpace());
} }
else else
{ {
ol.writeNonBreakableSpace(3); 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, ...@@ -1094,10 +1094,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{ {
htmlHelp->addIndexItem(cname,name(),cfname,anchor()); 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(); //ol+=*vmd->enumDecl();
vmd->writeEnumDeclaration(ol,getClassDef(),getNamespaceDef(),getFileDef(),getGroupDef()); 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; found=TRUE;
} }
...@@ -1122,7 +1122,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1122,7 +1122,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
// last ei characters of ldef contain pointer/reference specifiers // last ei characters of ldef contain pointer/reference specifiers
int ni=ldef.find("::",si); int ni=ldef.find("::",si);
if (ni>=ei) ei=ni+2; 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 else // not an enum value
...@@ -1184,25 +1184,25 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1184,25 +1184,25 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
} }
} }
ol.startMemberDocName(); ol.startMemberDocName();
linkifyText(TextGeneratorOLImpl(ol),container,name(),ldef); linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef);
writeDefArgumentList(ol,cd,scopeName,this); writeDefArgumentList(ol,cd,scopeName,this);
if (hasOneLineInitializer()) // add initializer if (hasOneLineInitializer()) // add initializer
{ {
if (!isDefine()) if (!isDefine())
{ {
ol.docify(" = "); ol.docify(" = ");
linkifyText(TextGeneratorOLImpl(ol),container,name(),init.simplifyWhiteSpace()); linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),init.simplifyWhiteSpace());
} }
else else
{ {
ol.writeNonBreakableSpace(3); ol.writeNonBreakableSpace(3);
linkifyText(TextGeneratorOLImpl(ol),container,name(),init); linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),init);
} }
} }
if (excpString()) // add exception list if (excpString()) // add exception list
{ {
ol.docify(" "); 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_;] ...@@ -2860,6 +2860,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START; lastCContext = YY_START;
BEGIN(SkipCxxComment); BEGIN(SkipCxxComment);
} }
<SkipInits,SkipCurly,SkipCurlyCpp>{CHARLIT} {
}
<SkipInits,SkipCurly,SkipCurlyCpp>. { <SkipInits,SkipCurly,SkipCurlyCpp>. {
//addToBody(yytext); //addToBody(yytext);
} }
......
...@@ -1342,6 +1342,55 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_3 ...@@ -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
This diff is collapsed.
...@@ -738,7 +738,7 @@ static QDict<MemberDef> g_resolvedTypedefs; ...@@ -738,7 +738,7 @@ static QDict<MemberDef> g_resolvedTypedefs;
ClassDef *getResolvedClassRec(Definition *scope, ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *n, const char *n,
bool *pIsTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec QCString *pTemplSpec
); );
int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item, int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
...@@ -1029,7 +1029,7 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item, ...@@ -1029,7 +1029,7 @@ int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item,
ClassDef *getResolvedClassRec(Definition *scope, ClassDef *getResolvedClassRec(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *n, const char *n,
bool *pIsTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec QCString *pTemplSpec
) )
{ {
...@@ -1057,7 +1057,7 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1057,7 +1057,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
DefinitionListIterator dli(*dl); DefinitionListIterator dli(*dl);
Definition *d; Definition *d;
ClassDef *bestMatch=0; ClassDef *bestMatch=0;
bool bestIsTypedef=FALSE; MemberDef *bestTypedef=0;
QCString bestTemplSpec; QCString bestTemplSpec;
int minDistance=10000; // init at "infinite" int minDistance=10000; // init at "infinite"
for (dli.toFirst();(d=dli.current());++dli) // foreach definition for (dli.toFirst();(d=dli.current());++dli) // foreach definition
...@@ -1078,7 +1078,7 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1078,7 +1078,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
{ {
minDistance=distance; minDistance=distance;
bestMatch = (ClassDef *)d; bestMatch = (ClassDef *)d;
bestIsTypedef = FALSE; bestTypedef = 0;
bestTemplSpec.resize(0); bestTemplSpec.resize(0);
} }
} }
...@@ -1087,6 +1087,7 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1087,6 +1087,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
MemberDef *md = (MemberDef *)d; MemberDef *md = (MemberDef *)d;
if (md->isTypedef()) // d is a typedef if (md->isTypedef()) // d is a typedef
{ {
//printf("found typedef!\n");
QCString spec; QCString spec;
ClassDef *typedefClass = newResolveTypedef(fileScope,md,&spec); ClassDef *typedefClass = newResolveTypedef(fileScope,md,&spec);
...@@ -1098,7 +1099,8 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1098,7 +1099,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
{ {
minDistance=distance; minDistance=distance;
bestMatch = typedefClass; bestMatch = typedefClass;
bestIsTypedef = TRUE; //printf("bestTypeDef=%p\n",md);
bestTypedef = md;
bestTemplSpec = spec; bestTemplSpec = spec;
} }
...@@ -1107,9 +1109,9 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1107,9 +1109,9 @@ ClassDef *getResolvedClassRec(Definition *scope,
} // if definition accessible } // if definition accessible
} // if definition is a class or member } // if definition is a class or member
} // foreach definition } // foreach definition
if (pIsTypeDef) if (pTypeDef)
{ {
*pIsTypeDef = bestIsTypedef; *pTypeDef = bestTypedef;
} }
if (pTemplSpec) if (pTemplSpec)
{ {
...@@ -1127,7 +1129,7 @@ ClassDef *getResolvedClassRec(Definition *scope, ...@@ -1127,7 +1129,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
ClassDef *getResolvedClass(Definition *scope, ClassDef *getResolvedClass(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *n, const char *n,
bool *pIsTypeDef, MemberDef **pTypeDef,
QCString *pTemplSpec QCString *pTemplSpec
) )
{ {
...@@ -1140,7 +1142,7 @@ ClassDef *getResolvedClass(Definition *scope, ...@@ -1140,7 +1142,7 @@ ClassDef *getResolvedClass(Definition *scope,
{ {
scope=Doxygen::globalScope; 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 if (result && !result->isLinkable()) result=0; // don't link to artifical classes
//printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>", //printf("getResolvedClass(%s,%s)=%s\n",scope?scope->name().data():"<global>",
// n,result?result->name().data():"<none>"); // n,result?result->name().data():"<none>");
...@@ -1258,14 +1260,17 @@ bool leftScopeMatch(const QCString &scope, const QCString &name) ...@@ -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); //printf("`%s'\n",text);
static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*"); static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*");
QCString txtStr=text; QCString txtStr=text;
QCString scopeName; QCString scopeName;
int strLen = txtStr.length(); 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 matchLen;
int index=0; int index=0;
int newIndex; int newIndex;
...@@ -1340,9 +1345,8 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n ...@@ -1340,9 +1345,8 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n
// fullName.prepend(prefix+"::"); // fullName.prepend(prefix+"::");
// } // }
// bool isTypeDef=FALSE; MemberDef *typeDef=0;
if ((cd=getResolvedClass(scope,0,word/*fullName,&isTypeDef*/))) if ((cd=getResolvedClass(scope,fileScope,word,&typeDef)))
// todo: fill in fileScope
{ {
// add link to the result // add link to the result
if (external ? cd->isLinkable() : cd->isLinkableInProject()) if (external ? cd->isLinkable() : cd->isLinkableInProject())
...@@ -1351,10 +1355,17 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n ...@@ -1351,10 +1355,17 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n
found=TRUE; found=TRUE;
} }
} }
// else if (isTypeDef) else if (typeDef)
// { {
// goto endloop; if (external ? typeDef->isLinkable() : typeDef->isLinkableInProject())
// } {
out.writeLink(typeDef->getReference(),
typeDef->getOutputFileBase(),
typeDef->anchor(),
word);
found=TRUE;
}
}
// if (curScope) curScope = curScope->getOuterScope(); // if (curScope) curScope = curScope->getOuterScope();
// } //while (!found && scopeOffset>=0); // } //while (!found && scopeOffset>=0);
...@@ -4499,7 +4510,8 @@ void filterLatexString(QTextStream &t,const char *str, ...@@ -4499,7 +4510,8 @@ void filterLatexString(QTextStream &t,const char *str,
bool insideTabbing,bool insidePre,bool insideItem) bool insideTabbing,bool insidePre,bool insideItem)
{ {
static bool isCzech = theTranslator->idLanguage()=="czech"; 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 isKorean = theTranslator->idLanguage()=="korean";
static bool isRussian = theTranslator->idLanguage()=="russian"; static bool isRussian = theTranslator->idLanguage()=="russian";
static bool isUkrainian = theTranslator->idLanguage()=="ukrainian"; static bool isUkrainian = theTranslator->idLanguage()=="ukrainian";
......
...@@ -77,8 +77,14 @@ class TextGeneratorOLImpl : public TextGeneratorIntf ...@@ -77,8 +77,14 @@ class TextGeneratorOLImpl : public TextGeneratorIntf
//-------------------------------------------------------------------- //--------------------------------------------------------------------
void linkifyText(const TextGeneratorIntf &ol,Definition *scope,const char *name, void linkifyText(const TextGeneratorIntf &ol,
const char *text,bool autoBreak=FALSE,bool external=TRUE); 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); void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1);
QCString fileToString(const char *name,bool filter=FALSE); QCString fileToString(const char *name,bool filter=FALSE);
QCString dateToString(bool); QCString dateToString(bool);
...@@ -131,7 +137,7 @@ ClassDef *getClass(const char *key); ...@@ -131,7 +137,7 @@ ClassDef *getClass(const char *key);
ClassDef *getResolvedClass(Definition *scope, ClassDef *getResolvedClass(Definition *scope,
FileDef *fileScope, FileDef *fileScope,
const char *key, const char *key,
bool *pIsTypeDef=0, MemberDef **pTypeDef=0,
QCString *pTemplSpec=0); QCString *pTemplSpec=0);
NamespaceDef *getResolvedNamespace(const char *key); NamespaceDef *getResolvedNamespace(const char *key);
FileDef *findFileDef(const FileNameDict *fnDict,const char *n, FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
......
...@@ -340,7 +340,11 @@ class XMLCodeGenerator : public BaseCodeDocInterface ...@@ -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; QCString indentStr;
indentStr.fill(' ',indent); indentStr.fill(' ',indent);
...@@ -355,7 +359,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition ...@@ -355,7 +359,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition
if (!a->type.isEmpty()) if (!a->type.isEmpty())
{ {
t << indentStr << " <type>"; t << indentStr << " <type>";
linkifyText(TextGeneratorXMLImpl(t),scope,0,a->type); linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->type);
t << "</type>" << endl; t << "</type>" << endl;
} }
if (!a->name.isEmpty()) if (!a->name.isEmpty())
...@@ -366,7 +370,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition ...@@ -366,7 +370,7 @@ static void writeTemplateArgumentList(ArgumentList *al,QTextStream &t,Definition
if (!a->defval.isEmpty()) if (!a->defval.isEmpty())
{ {
t << indentStr << " <defval>"; t << indentStr << " <defval>";
linkifyText(TextGeneratorXMLImpl(t),scope,0,a->defval); linkifyText(TextGeneratorXMLImpl(t),scope,fileScope,0,a->defval);
t << "</defval>" << endl; t << "</defval>" << endl;
} }
t << indentStr << " </param>" << endl; t << indentStr << " </param>" << endl;
...@@ -379,13 +383,13 @@ static void writeMemberTemplateLists(MemberDef *md,QTextStream &t) ...@@ -379,13 +383,13 @@ static void writeMemberTemplateLists(MemberDef *md,QTextStream &t)
{ {
if (md->templateArguments()) // function template prefix 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) 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, static void writeXMLDocBlock(QTextStream &t,
...@@ -574,7 +578,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -574,7 +578,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
} }
QCString typeStr = md->typeString(); //replaceAnonymousScopes(md->typeString()); QCString typeStr = md->typeString(); //replaceAnonymousScopes(md->typeString());
t << " <type>"; t << " <type>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),typeStr); linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),typeStr);
t << "</type>" << endl; t << "</type>" << endl;
t << " <definition>" << convertToXML(md->definition()) << "</definition>" << endl; t << " <definition>" << convertToXML(md->definition()) << "</definition>" << endl;
t << " <argsstring>" << convertToXML(md->argsString()) << "</argsstring>" << endl; t << " <argsstring>" << convertToXML(md->argsString()) << "</argsstring>" << endl;
...@@ -622,7 +626,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -622,7 +626,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!a->type.isEmpty()) if (!a->type.isEmpty())
{ {
t << " <type>"; t << " <type>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),a->type); linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),a->type);
t << "</type>" << endl; t << "</type>" << endl;
} }
if (!a->name.isEmpty()) if (!a->name.isEmpty())
...@@ -646,7 +650,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -646,7 +650,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!a->defval.isEmpty()) if (!a->defval.isEmpty())
{ {
t << " <defval>"; t << " <defval>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),a->defval); linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),a->defval);
t << "</defval>" << endl; t << "</defval>" << endl;
} }
if (defArg && defArg->hasDocumentation()) if (defArg && defArg->hasDocumentation())
...@@ -674,14 +678,14 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -674,14 +678,14 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
if (!md->initializer().isEmpty()) if (!md->initializer().isEmpty())
{ {
t << " <initializer>"; t << " <initializer>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),md->initializer()); linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),md->initializer());
t << "</initializer>" << endl; t << "</initializer>" << endl;
} }
if (md->excpString()) if (md->excpString())
{ {
t << " <exceptions>"; t << " <exceptions>";
linkifyText(TextGeneratorXMLImpl(t),def,md->name(),md->excpString()); linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md->name(),md->excpString());
t << "</exceptions>" << endl; 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