summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doxyfile2
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--addon/doxywizard/Makefile.in2
-rw-r--r--addon/doxywizard/Makefile.win_nmake.in9
-rw-r--r--doc/htmlcmds.doc14
-rw-r--r--src/commentscan.l3
-rw-r--r--src/compound.xsd6
-rw-r--r--src/compound_xsd.h6
-rw-r--r--src/config.l2
-rw-r--r--src/docparser.cpp12
-rw-r--r--src/docparser.h5
-rw-r--r--src/doctokenizer.l2
-rw-r--r--src/doxygen.cpp2
-rw-r--r--src/htmldocvisitor.cpp6
-rw-r--r--src/index.cpp105
-rw-r--r--src/latexdocvisitor.cpp10
-rw-r--r--src/mandocvisitor.cpp8
-rw-r--r--src/perlmodgen.cpp6
-rw-r--r--src/printdocvisitor.h6
-rw-r--r--src/rtfdocvisitor.cpp6
-rw-r--r--src/scanner.l67
-rw-r--r--src/searchindex.cpp1
-rw-r--r--src/translator_jp.h69
-rw-r--r--src/util.cpp7
-rw-r--r--src/xmldocvisitor.cpp6
27 files changed, 311 insertions, 61 deletions
diff --git a/Doxyfile b/Doxyfile
index 43ddaf8..a5f3531 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -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
diff --git a/INSTALL b/INSTALL
index 3cd278a..904537a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-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)
diff --git a/README b/README
index d474ced..cee78dd 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-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)
diff --git a/VERSION b/VERSION
index 944cb20..65e8bd3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.4.4-20050918
+1.4.4-20050927
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
index 42d5871..69e46c2 100644
--- a/addon/doxywizard/Makefile.in
+++ b/addon/doxywizard/Makefile.in
@@ -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
diff --git a/addon/doxywizard/Makefile.win_nmake.in b/addon/doxywizard/Makefile.win_nmake.in
index 7ebcdf8..256177b 100644
--- a/addon/doxywizard/Makefile.win_nmake.in
+++ b/addon/doxywizard/Makefile.win_nmake.in
@@ -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
diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc
index 0c8cd3b..18422de 100644
--- a/doc/htmlcmds.doc
+++ b/doc/htmlcmds.doc
@@ -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},
diff --git a/src/commentscan.l b/src/commentscan.l
index 1b50cb2..161b766 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -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)
{
diff --git a/src/compound.xsd b/src/compound.xsd
index 2e3ec01..e737939 100644
--- a/src/compound.xsd
+++ b/src/compound.xsd
@@ -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" />
diff --git a/src/compound_xsd.h b/src/compound_xsd.h
index d2ba0bf..a35c4fa 100644
--- a/src/compound_xsd.h
+++ b/src/compound_xsd.h
@@ -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"
diff --git a/src/config.l b/src/config.l
index d4e64e6..4860177 100644
--- a/src/config.l
+++ b/src/config.l
@@ -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");
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 02fb086..f90b545 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -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;
diff --git a/src/docparser.h b/src/docparser.h
index 0c74d5d..338f3c3 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -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) {}
diff --git a/src/doctokenizer.l b/src/doctokenizer.l
index 86889dc..6b5db59 100644
--- a/src/doctokenizer.l
+++ b/src/doctokenizer.l
@@ -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
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index c92aa51..2da775f 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -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");
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 3a2f222..b310412 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -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;
diff --git a/src/index.cpp b/src/index.cpp
index e4120ae..7bae11a 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -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; }
}
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index c8a172c..1af9ae4 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -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;
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 706a4eb..56ed4c7 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -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;
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index e501428..7e772ec 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -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;
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index 2cdd390..eedceea 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -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;
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index 1989800..04f32ad 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -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;
diff --git a/src/scanner.l b/src/scanner.l
index 3a2bddc..4e510d9 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -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()
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index 0a9e9c5..02671e6 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -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;
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 48a3c9e..f6216df 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -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
diff --git a/src/util.cpp b/src/util.cpp
index 8cf4ba5..e07536a 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -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;
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 04bfbe3..058f9ba 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -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;