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

Release-1.4.4-20050927

parent ba7233b1
......@@ -15,7 +15,7 @@ ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
......
DOXYGEN Version 1.4.4-20050918
DOXYGEN Version 1.4.4-20050927
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (18 September 2005)
Dimitri van Heesch (27 September 2005)
DOXYGEN Version 1.4.4_20050918
DOXYGEN Version 1.4.4_20050927
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) (18 September 2005)
Dimitri van Heesch (dimitri@stack.nl) (27 September 2005)
1.4.4-20050918
1.4.4-20050927
......@@ -19,7 +19,7 @@ config.h: ../../src/config.h
config.l: ../../src/config.l
$(CP) ../../src/config.l config.l
version.cpp:
version.cpp: ../../src/version.cpp
$(CP) ../../src/version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro
......
......@@ -13,15 +13,18 @@
all: config.h config.l unistd.h Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@
unistd.h:
unistd.h: ..\..\src\unistd.h
$(CP) ..\..\src\unistd.h unistd.h
config.h:
config.h: ..\..\src\config.l
$(CP) ..\..\src\config.h config.h
config.l:
config.l: ..\..\src\config.l
$(CP) ..\..\src\config.l config.l
version.cpp: ..\..\src\version.cpp
$(CP) ..\..\src\version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
......
......@@ -102,7 +102,19 @@ The special HTML character entities that are recognized by Doxygen:
<ul>
<li><tt>\&copy;</tt> the copyright symbol
<li><tt>\&quot;</tt> a double quote
<li><tt>\&tm;</tt> the trade mark symbol
<li><tt>\&reg;</tt> the registered trade mark symbol
<li><tt>\&lt;</tt> less-than symbol
<li><tt>\&gt;</tt> greater-than symbol
<li><tt>\&amp;</tt> ampersand
<li><tt>\&apos;</tt> single quotation mark (straight)
<li><tt>\&quot;</tt> double quotation mark (straight)
<li><tt>\&lsquo;</tt> left single quotation mark
<li><tt>\&rsquo;</tt> right single quotation mark
<li><tt>\&ldquo;</tt> left double quotation mark
<li><tt>\&rdquo;</tt> right double quotation mark
<li><tt>\&ndash;</tt> n-dash (for numeric ranges, eg. 2&ndash;8)
<li><tt>\&mdash;</tt> m-dash (for parenthetical punctuation &mdash; like this)
<li><tt>\&?uml;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
writes a character with a diaeresis accent (like &auml;).
<li><tt>\&?acute;</tt> where ? is one of {A,E,I,O,U,Y,a,e,i,o,u,y},
......
......@@ -909,6 +909,9 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
addOutput(yytext[0]);
addOutput(yytext[2]);
}
<Comment>".," { // . with comma such as "e.g.,"
addOutput(yytext);
}
<Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
if (inContext!=OutputBrief)
{
......
......@@ -351,6 +351,12 @@
<xsd:element name="copy" type="docEmptyType" />
<xsd:element name="trademark" type="docEmptyType" />
<xsd:element name="registered" type="docEmptyType" />
<xsd:element name="lsquo" type="docEmptyType" />
<xsd:element name="rsquo" type="docEmptyType" />
<xsd:element name="ldquo" type="docEmptyType" />
<xsd:element name="rdquo" type="docEmptyType" />
<xsd:element name="ndash" type="docEmptyType" />
<xsd:element name="mdash" type="docEmptyType" />
<xsd:element name="umlaut" type="docCharType" />
<xsd:element name="acute" type="docCharType" />
<xsd:element name="grave" type="docCharType" />
......
......@@ -351,6 +351,12 @@
" <xsd:element name=\"copy\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"trademark\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"registered\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"lsquo\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"rsquo\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"ldquo\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"rdquo\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"ndash\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"mdash\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"umlaut\" type=\"docCharType\" />\n"
" <xsd:element name=\"acute\" type=\"docCharType\" />\n"
" <xsd:element name=\"grave\" type=\"docCharType\" />\n"
......
......@@ -2449,7 +2449,7 @@ void Config::create()
"EXPAND_ONLY_PREDEF",
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n"
"then the macro expansion is limited to the macros specified with the \n"
"PREDEFINED and EXPAND_AS_PREDEFINED tags. \n",
"PREDEFINED and EXPAND_AS_DEFINED tags. \n",
FALSE
);
cb->addDependency("ENABLE_PREPROCESSING");
......
......@@ -1285,6 +1285,12 @@ DocSymbol::SymType DocSymbol::decodeSymbol(const QString &symName,char *letter)
else if (symName=="&amp;") return DocSymbol::Amp;
else if (symName=="&apos;") return DocSymbol::Apos;
else if (symName=="&quot;") return DocSymbol::Quot;
else if (symName=="&lsquo;") return DocSymbol::Lsquo;
else if (symName=="&rsquo;") return DocSymbol::Rsquo;
else if (symName=="&ldquo;") return DocSymbol::Ldquo;
else if (symName=="&rdquo;") return DocSymbol::Rdquo;
else if (symName=="&ndash;") return DocSymbol::Ndash;
else if (symName=="&mdash;") return DocSymbol::Mdash;
else if (symName=="&szlig;") return DocSymbol::Szlig;
else if (symName=="&nbsp;") return DocSymbol::Nbsp;
else if (l==6 && symName.right(4)=="uml;")
......@@ -2587,6 +2593,12 @@ int DocIndexEntry::parse()
case DocSymbol::Percent: m_entry+='%'; break;
case DocSymbol::Apos: m_entry+='\''; break;
case DocSymbol::Quot: m_entry+='"'; break;
case DocSymbol::Lsquo: m_entry+='`'; break;
case DocSymbol::Rsquo: m_entry+='\''; break;
case DocSymbol::Ldquo: m_entry+="``"; break;
case DocSymbol::Rdquo: m_entry+="''"; break;
case DocSymbol::Ndash: m_entry+="--"; break;
case DocSymbol::Mdash: m_entry+="---"; break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected symbol found as argument of \\addindex");
break;
......
......@@ -322,8 +322,9 @@ class DocSymbol : public DocNode
{
public:
enum SymType { Unknown=0, BSlash,At,Less,Greater,Amp,Dollar,Hash,Percent,
Copy, Tm, Reg, Apos, Quot, Uml, Acute, Grave, Circ, Tilde, Szlig,
Cedil, Ring, Nbsp, Slash
Copy, Tm, Reg, Apos, Quot, Uml, Acute, Grave, Circ, Tilde,
Szlig, Cedil, Ring, Nbsp, Slash, Lsquo, Rsquo, Ldquo, Rdquo,
Ndash, Mdash
};
DocSymbol(DocNode *parent,SymType s,char letter='\0') :
m_parent(parent), m_symbol(s), m_letter(letter) {}
......
......@@ -337,7 +337,7 @@ HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"
HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"))*({ID}(":")?){FUNCARG}?
REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCARG}?
%option noyywrap
%option yylineno
......
......@@ -8302,7 +8302,7 @@ void parseInput()
* Determine Input Files *
**************************************************************************/
msg("Reading input files...\n");
msg("Searching for files to process...\n");
QDict<void> *killDict = new QDict<void>(10007);
int inputSize=0;
QStrList &inputList=Config_getList("INPUT");
......
......@@ -105,6 +105,12 @@ void HtmlDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "&reg;"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "&lsquo;"; break;
case DocSymbol::Rsquo: m_t << "&rsquo;"; break;
case DocSymbol::Ldquo: m_t << "&ldquo;"; break;
case DocSymbol::Rdquo: m_t << "&rdquo;"; break;
case DocSymbol::Ndash: m_t << "&ndash;"; break;
case DocSymbol::Mdash: m_t << "&mdash;"; break;
case DocSymbol::Uml: m_t << "&" << s->letter() << "uml;"; break;
case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
......
......@@ -1188,34 +1188,60 @@ void writeAnnotatedClassList(OutputList &ol)
//----------------------------------------------------------------------------
class PrefixIgnoreClassList : public ClassList
{
public:
virtual int compareItems(GCI item1, GCI item2)
{
ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2;
QCString n1 = c1->className();
n1.remove (0, getPrefixIndex(n1));
QCString n2 = c2->className();
n2.remove (0, getPrefixIndex(n2));
return stricmp (n1, n2);
}
};
// write an alphabetical index of all class with a header for each letter
void writeAlphabeticalClassList(OutputList &ol)
{
//ol.startAlphabeticalIndexList();
// What starting letters are used
bool indexLetterUsed[256];
memset (indexLetterUsed, 0, sizeof (indexLetterUsed));
// first count the number of headers
ClassSDict::Iterator cli(Doxygen::classSDict);
ClassDef *cd;
char startLetter=0;
uint startLetter=0;
int headerItems=0;
QCString alphaLinks = "<p><div class=\"qindex\">";
for (;(cd=cli.current());++cli)
{
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
int index = getPrefixIndex(cd->className());
//printf("name=%s index=%d\n",cd->className().data(),index);
if (toupper(cd->className().at(index))!=startLetter) // new begin letter => new header
{
startLetter=toupper(cd->className().at(index));
if (headerItems) alphaLinks += "&nbsp;|&nbsp;";
headerItems++;
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
startLetter + "\">" +
startLetter + "</a>";
}
startLetter=toupper(cd->className().at(index));
indexLetterUsed[startLetter] = true;
}
}
QCString alphaLinks = "<p><div class=\"qindex\">";
for (int l = 0; l < 256; l++)
{
if (indexLetterUsed[l])
{
if (headerItems) alphaLinks += "&nbsp;|&nbsp;";
headerItems++;
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
(char)l + "\">" +
(char)l + "</a>";
}
}
alphaLinks += "</div><p>\n";
ol.writeString(alphaLinks);
......@@ -1232,13 +1258,12 @@ void writeAlphabeticalClassList(OutputList &ol)
//printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n",
// headerItems,totalItems,columns,rows,itemsInLastRow);
// create one class list for each column
ClassList *colList = new ClassList[columns];
// Keep a list of classes for each starting letter
PrefixIgnoreClassList classesByLetter[256];
// fill the columns with the class list (row elements in each column,
// expect for the columns with number >= itemsInLastRow, which get on
// item less.
int col=0,row=0;
//int icount=0;
startLetter=0;
for (cli.toFirst();(cd=cli.current());++cli)
......@@ -1246,24 +1271,42 @@ void writeAlphabeticalClassList(OutputList &ol)
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
int index = getPrefixIndex(cd->className());
if (toupper(cd->className().at(index))!=startLetter)
{
// insert a new header using a dummy class pointer.
startLetter=toupper(cd->className().at(index));
colList[col].append((ClassDef *)8); // insert dummy for the header
row++;
if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1))
{
// if the header is the last item in the row, we add an extra
// row to make it easier to find the text of the header (this
// is then contained in the next cell)
colList[col].append(cd);
col++;
row=0;
}
}
startLetter=toupper(cd->className().at(index));
// Do some sorting again, since the classes are sorted by name with
// prefix, which should be ignored really.
classesByLetter[startLetter].inSort (cd);
}
}
// create one class list for each column
ClassList *colList = new ClassList[columns];
// fill the columns with the class list (row elements in each column,
// expect for the columns with number >= itemsInLastRow, which get on
// item less.
int col=0,row=0;
//int icount=0;
startLetter=0;
for (int l = 0; l < 256; l++)
{
if (!indexLetterUsed[l]) continue;
// insert a new header using a dummy class pointer.
colList[col].append((ClassDef *)8); // insert dummy for the header
row++;
if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1))
{
// if the header is the last item in the row, we add an extra
// row to make it easier to find the text of the header (this
// is then contained in the next cell)
colList[col].append(classesByLetter[l].at (0));
col++;
row=0;
}
for (uint i = 0; i < classesByLetter[l].count(); i++)
{
// add the class definition to the correct column list
colList[col].append(cd);
colList[col].append (classesByLetter[l].at (i));
row++;
if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1)) { col++; row=0; }
}
......
......@@ -136,7 +136,13 @@ void LatexDocVisitor::visit(DocSymbol *s)
case DocSymbol::Tm: m_t << "\\texttrademark"; break;
case DocSymbol::Reg: m_t << "\\textregistered"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "''"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "`"; break;
case DocSymbol::Rsquo: m_t << "'"; break;
case DocSymbol::Ldquo: m_t << "``"; break;
case DocSymbol::Rdquo: m_t << "''"; break;
case DocSymbol::Ndash: m_t << "--"; break;
case DocSymbol::Mdash: m_t << "---"; break;
case DocSymbol::Uml:
if (s->letter()=='i')
m_t << "\\\"{\\i}";
......@@ -167,7 +173,7 @@ void LatexDocVisitor::visit(DocSymbol *s)
m_t << s->letter();
break;
case DocSymbol::Tilde: m_t << "\\~{" << s->letter() << "}"; break;
case DocSymbol::Szlig: m_t << "\"s"; break;
case DocSymbol::Szlig: m_t << "{\\ss}"; break;
case DocSymbol::Cedil: m_t << "\\c{" << s->letter() << "}"; break;
case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break;
case DocSymbol::Nbsp: m_t << "~"; break;
......
......@@ -87,7 +87,13 @@ void ManDocVisitor::visit(DocSymbol *s)
case DocSymbol::Tm: m_t << "(TM)"; break;
case DocSymbol::Reg: m_t << "(R)"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "''"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "`"; break;
case DocSymbol::Rsquo: m_t << "'"; break;
case DocSymbol::Ldquo: m_t << "``"; break;
case DocSymbol::Rdquo: m_t << "''"; break;
case DocSymbol::Ndash: m_t << "--"; break;
case DocSymbol::Mdash: m_t << "---"; break;
case DocSymbol::Uml: m_t << s->letter() << "\\*(4"; break;
case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break;
case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break;
......
......@@ -532,6 +532,12 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
case DocSymbol::Hash: c = '#'; break;
case DocSymbol::Percent: c = '%'; break;
case DocSymbol::Quot: c = '"'; break;
case DocSymbol::Lsquo: s = "\\\'"; break;
case DocSymbol::Rsquo: s = "\\\'"; break;
case DocSymbol::Ldquo: c = '"'; break;
case DocSymbol::Rdquo: c = '"'; break;
case DocSymbol::Ndash: c = '-'; break;
case DocSymbol::Mdash: s = "--"; break;
case DocSymbol::Nbsp: c = ''; break;
case DocSymbol::Uml: accent = "umlaut"; break;
case DocSymbol::Acute: accent = "acute"; break;
......
......@@ -68,6 +68,12 @@ class PrintDocVisitor : public DocVisitor
case DocSymbol::Copy: printf("&copy;"); break;
case DocSymbol::Apos: printf("'"); break;
case DocSymbol::Quot: printf("\""); break;
case DocSymbol::Lsquo: printf("&lsquo;"); break;
case DocSymbol::Rsquo: printf("&rsquo;"); break;
case DocSymbol::Ldquo: printf("&ldquo;"); break;
case DocSymbol::Rdquo: printf("&rdquo;"); break;
case DocSymbol::Ndash: printf("&ndash;"); break;
case DocSymbol::Mdash: printf("&mdash;"); break;
case DocSymbol::Uml: printf("&%cuml;",s->letter()); break;
case DocSymbol::Acute: printf("&%cacute;",s->letter()); break;
case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break;
......
......@@ -114,6 +114,12 @@ void RTFDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "(R)"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "`"; break;
case DocSymbol::Rsquo: m_t << "'"; break;
case DocSymbol::Ldquo: m_t << "\""; break;
case DocSymbol::Rdquo: m_t << "\""; break;
case DocSymbol::Ndash: m_t << "-"; break;
case DocSymbol::Mdash: m_t << "--"; break;
case DocSymbol::Uml: switch(s->letter())
{
case 'A' : m_t << '\304'; break;
......
......@@ -296,6 +296,8 @@ static QCString stripQuotes(const char *s)
static void startCommentBlock(bool);
static void handleCommentBlock(const QCString &doc,bool brief);
static void handleParametersCommentBlocks();
//-----------------------------------------------------------------
static bool nameIsOperator(QCString &name)
......@@ -2747,14 +2749,15 @@ IDLATTR ("["[^\]]*"]"){BN}*
*copyArgString+=*yytext;
fullArgString+=*yytext;
stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
/* remember the current documentation block, since
we could overwrite it with the documentation of
a function argument, which we then have to correct later
on
*/
docBackup = current->doc.copy();
briefBackup = current->brief.copy();
docBackup = current->doc;
briefBackup = current->brief;
BEGIN( currentArgumentContext );
}
......@@ -2769,9 +2772,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
unput(yytext[i]);
}
stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
BEGIN( currentArgumentContext );
}
else
else // not a define
{
// for functions we interpret a comment
// as documentation for the argument
......@@ -2820,6 +2824,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
*copyArgString+=*yytext;
fullArgString+=*yytext;
stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
BEGIN( currentArgumentContext );
}
else
......@@ -4298,6 +4303,62 @@ exit:
}
}
static void handleParametersCommentBlocks()
{
//printf(">>>>>>> handleParametersCommentBlocks()\n");
ArgumentListIterator ali(*current->argList);
Argument *a;
for (ali.toFirst();(a=ali.current());++ali)
{
//printf(" Param %s docs=%s\n",a->name.data(),a->docs.data());
if (!a->docs.isEmpty())
{
int position=0;
bool needsEntry;
// save context
QCString orgDoc = current->doc;
QCString orgBrief = current->brief;
int orgDocLine = current->docLine;
int orgBriefLine = current->briefLine;
current->doc.resize(0);
current->brief.resize(0);
//printf("handleParametersCommentBlock [%s]\n",doc.data());
while (parseCommentBlock(
g_thisParser,
current,
a->docs, // text
yyFileName, // file
current->docLine, // line of block start
FALSE,
FALSE,
protection,
position,
needsEntry
)
)
{
//printf("handleParametersCommentBlock position=%d [%s]\n",position,doc.data()+position);
if (needsEntry) newEntry();
}
if (needsEntry)
{
newEntry();
}
a->docs = current->doc;
// restore context
current->doc = orgDoc;
current->brief = orgBrief;
current->docLine = orgDocLine;
current->briefLine = orgBriefLine;
}
}
}
//----------------------------------------------------------------------------
//static void startGroupInDoc()
......
......@@ -70,6 +70,7 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd
void SearchIndex::setCurrentDoc(const char *name,const char *baseName,const char *anchor)
{
if (name==0 || baseName==0) return;
//printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor);
QCString url=baseName+Config_getString("HTML_FILE_EXTENSION");
if (anchor) url+=(QCString)"#"+anchor;
......
......@@ -661,12 +661,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
// (order is left to right)
if (i!=numEntries-1) // not the last entry, so we need a separator
{
if (i<numEntries-2) // not the fore last entry
result+=decode(", ");
else // the fore last entry
result+=decode(", と ");
}
result+=decode("・");
}
return result;
}
......@@ -1341,7 +1336,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
*/
virtual QCString trImplementedFromList(int numEntries)
{
return trWriteList(numEntries)+decode("を実装しています")+".";
return trWriteList(numEntries)+decode("を実装しています。");
}
/*! used in member documentation blocks to produce a list of
......@@ -1349,7 +1344,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
*/
virtual QCString trImplementedInList(int numEntries)
{
return trWriteList(numEntries)+decode("で実装されています")+".";
return trWriteList(numEntries)+decode("で実装されています。");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
......@@ -1509,5 +1504,63 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
{
return filename + decode(" ソースファイル");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.9
//////////////////////////////////////////////////////////////////////////
/*! This is used as the name of the chapter containing the directory
* hierarchy.
*/
virtual QCString trDirIndex()
{ return decode("ディレクトリ索引"); }
/*! This is used as the name of the chapter containing the documentation
* of the directories.
*/
virtual QCString trDirDocumentation()
{ return decode("ディレクトリ構成"); }
/*! This is used as the title of the directory index and also in the
* Quick links of an HTML page, to link to the directory hierarchy.
*/
virtual QCString trDirectories()
{ return decode("ディレクトリ"); }
/*! This returns a sentences that introduces the directory hierarchy.
* and the fact that it is sorted alphabetically per level
*/
virtual QCString trDirDescription()
{ return decode("このディレクトリ一覧はおおまかにはソートされていますが、"
"完全にアルファベット順でソートされてはいません。");
}
/*! This returns the title of a directory page. The name of the
* directory is passed via \a dirName.
*/
virtual QCString trDirReference(const char *dirName)
{ QCString result=dirName; result+=decode(" ディレクトリリファレンス"); return result; }
/*! This returns the word directory with or without starting capital
* (\a first_capital) and in sigular or plural form (\a singular).
*/
virtual QCString trDir(bool, bool)
{
return decode("ディレクトリ");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.4.1
//////////////////////////////////////////////////////////////////////////
/*! This text is added to the documentation when the \\overload command
* is used for a overloaded function.
*/
virtual QCString trOverloadText()
{
return decode("これはオーバーロードされたメンバ関数です。"
"利便性のために用意されています。"
"元の関数との違いは引き数のみです。");
}
};
#endif
......@@ -3849,6 +3849,7 @@ bool resolveLink(/* in */ const char *scName,
GroupDef *gd;
PageDef *pd;
ClassDef *cd;
DirDef *dir;
NamespaceDef *nd;
bool ambig;
if (linkRef.isEmpty()) // no reference name!
......@@ -3902,6 +3903,12 @@ bool resolveLink(/* in */ const char *scName,
*resContext=nd;
return TRUE;
}
else if ((dir=Doxygen::directories.find(QFileInfo(linkRef).absFilePath()+"/"))
&& dir->isLinkable()) // TODO: make this location independent like filedefs
{
*resContext=dir;
return TRUE;
}
else // probably a member reference
{
MemberDef *md;
......
......@@ -82,6 +82,12 @@ void XmlDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "<registered/>"; break;
case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: m_t << "\""; break;
case DocSymbol::Lsquo: m_t << "<lsquo/>"; break;
case DocSymbol::Rsquo: m_t << "<rsquo/>"; break;
case DocSymbol::Ldquo: m_t << "<ldquo/>"; break;
case DocSymbol::Rdquo: m_t << "<rdquo/>"; break;
case DocSymbol::Ndash: m_t << "<ndash/>"; break;
case DocSymbol::Mdash: m_t << "<mdash/>"; break;
case DocSymbol::Uml: m_t << "<umlaut char=\"" << s->letter() << "\"/>"; break;
case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break;
case DocSymbol::Grave: m_t << "<grave char=\"" << s->letter() << "\"/>"; break;
......
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