diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2005-09-27 19:20:12 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2005-09-27 19:20:12 (GMT) |
commit | 22dc10cfbe5042f21b9d706e5e8bb41749f65786 (patch) | |
tree | 5485e95b8a8a758f2d0d0a39e611d4d9b1ad519b | |
parent | db36de70fc9090e26c22ab288492407becb3a95e (diff) | |
download | Doxygen-22dc10cfbe5042f21b9d706e5e8bb41749f65786.zip Doxygen-22dc10cfbe5042f21b9d706e5e8bb41749f65786.tar.gz Doxygen-22dc10cfbe5042f21b9d706e5e8bb41749f65786.tar.bz2 |
Release-1.4.4-20050927
-rw-r--r-- | Doxyfile | 2 | ||||
-rw-r--r-- | INSTALL | 4 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | addon/doxywizard/Makefile.in | 2 | ||||
-rw-r--r-- | addon/doxywizard/Makefile.win_nmake.in | 9 | ||||
-rw-r--r-- | doc/htmlcmds.doc | 14 | ||||
-rw-r--r-- | src/commentscan.l | 3 | ||||
-rw-r--r-- | src/compound.xsd | 6 | ||||
-rw-r--r-- | src/compound_xsd.h | 6 | ||||
-rw-r--r-- | src/config.l | 2 | ||||
-rw-r--r-- | src/docparser.cpp | 12 | ||||
-rw-r--r-- | src/docparser.h | 5 | ||||
-rw-r--r-- | src/doctokenizer.l | 2 | ||||
-rw-r--r-- | src/doxygen.cpp | 2 | ||||
-rw-r--r-- | src/htmldocvisitor.cpp | 6 | ||||
-rw-r--r-- | src/index.cpp | 105 | ||||
-rw-r--r-- | src/latexdocvisitor.cpp | 10 | ||||
-rw-r--r-- | src/mandocvisitor.cpp | 8 | ||||
-rw-r--r-- | src/perlmodgen.cpp | 6 | ||||
-rw-r--r-- | src/printdocvisitor.h | 6 | ||||
-rw-r--r-- | src/rtfdocvisitor.cpp | 6 | ||||
-rw-r--r-- | src/scanner.l | 67 | ||||
-rw-r--r-- | src/searchindex.cpp | 1 | ||||
-rw-r--r-- | src/translator_jp.h | 69 | ||||
-rw-r--r-- | src/util.cpp | 7 | ||||
-rw-r--r-- | src/xmldocvisitor.cpp | 6 |
27 files changed, 311 insertions, 61 deletions
@@ -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 @@ -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) @@ -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) @@ -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>\©</tt> the copyright symbol -<li><tt>\"</tt> a double quote +<li><tt>\&tm;</tt> the trade mark symbol +<li><tt>\®</tt> the registered trade mark symbol +<li><tt>\<</tt> less-than symbol +<li><tt>\></tt> greater-than symbol +<li><tt>\&</tt> ampersand +<li><tt>\'</tt> single quotation mark (straight) +<li><tt>\"</tt> double quotation mark (straight) +<li><tt>\‘</tt> left single quotation mark +<li><tt>\’</tt> right single quotation mark +<li><tt>\“</tt> left double quotation mark +<li><tt>\”</tt> right double quotation mark +<li><tt>\–</tt> n-dash (for numeric ranges, eg. 2–8) +<li><tt>\—</tt> m-dash (for parenthetical punctuation — 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 ä). <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=="&") return DocSymbol::Amp; else if (symName=="'") return DocSymbol::Apos; else if (symName==""") return DocSymbol::Quot; + else if (symName=="‘") return DocSymbol::Lsquo; + else if (symName=="’") return DocSymbol::Rsquo; + else if (symName=="“") return DocSymbol::Ldquo; + else if (symName=="”") return DocSymbol::Rdquo; + else if (symName=="–") return DocSymbol::Ndash; + else if (symName=="—") return DocSymbol::Mdash; else if (symName=="ß") return DocSymbol::Szlig; else if (symName==" ") 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 << "®"; 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: 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 += " | "; - 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 += " | "; + 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("©"); break; case DocSymbol::Apos: printf("'"); break; case DocSymbol::Quot: printf("\""); break; + case DocSymbol::Lsquo: printf("‘"); break; + case DocSymbol::Rsquo: printf("’"); break; + case DocSymbol::Ldquo: printf("“"); break; + case DocSymbol::Rdquo: printf("”"); break; + case DocSymbol::Ndash: printf("–"); break; + case DocSymbol::Mdash: printf("—"); 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; |