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 = ...@@ -15,7 +15,7 @@ ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/ STRIP_FROM_PATH =
STRIP_FROM_INC_PATH = STRIP_FROM_INC_PATH =
SHORT_NAMES = NO SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES JAVADOC_AUTOBRIEF = YES
......
DOXYGEN Version 1.4.4-20050918 DOXYGEN Version 1.4.4-20050927
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 (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. 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) (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 ...@@ -19,7 +19,7 @@ config.h: ../../src/config.h
config.l: ../../src/config.l config.l: ../../src/config.l
$(CP) ../../src/config.l config.l $(CP) ../../src/config.l config.l
version.cpp: version.cpp: ../../src/version.cpp
$(CP) ../../src/version.cpp version.cpp $(CP) ../../src/version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro Makefile.doxywizard: doxywizard.pro
......
...@@ -13,15 +13,18 @@ ...@@ -13,15 +13,18 @@
all: config.h config.l unistd.h Makefile.doxywizard all: config.h config.l unistd.h Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@ $(MAKE) -f Makefile.doxywizard $@
unistd.h: unistd.h: ..\..\src\unistd.h
$(CP) ..\..\src\unistd.h unistd.h $(CP) ..\..\src\unistd.h unistd.h
config.h: config.h: ..\..\src\config.l
$(CP) ..\..\src\config.h config.h $(CP) ..\..\src\config.h config.h
config.l: config.l: ..\..\src\config.l
$(CP) ..\..\src\config.l config.l $(CP) ..\..\src\config.l config.l
version.cpp: ..\..\src\version.cpp
$(CP) ..\..\src\version.cpp version.cpp
Makefile.doxywizard: doxywizard.pro Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
......
...@@ -102,7 +102,19 @@ The special HTML character entities that are recognized by Doxygen: ...@@ -102,7 +102,19 @@ The special HTML character entities that are recognized by Doxygen:
<ul> <ul>
<li><tt>\&copy;</tt> the copyright symbol <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}, <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;). 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}, <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\-] ...@@ -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[0]);
addOutput(yytext[2]); 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) <Comment>(\n|\\_linebr)({B}*(\n|\\_linebr))+ { // at least one blank line (or blank line command)
if (inContext!=OutputBrief) if (inContext!=OutputBrief)
{ {
......
...@@ -351,6 +351,12 @@ ...@@ -351,6 +351,12 @@
<xsd:element name="copy" type="docEmptyType" /> <xsd:element name="copy" type="docEmptyType" />
<xsd:element name="trademark" type="docEmptyType" /> <xsd:element name="trademark" type="docEmptyType" />
<xsd:element name="registered" 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="umlaut" type="docCharType" />
<xsd:element name="acute" type="docCharType" /> <xsd:element name="acute" type="docCharType" />
<xsd:element name="grave" type="docCharType" /> <xsd:element name="grave" type="docCharType" />
......
...@@ -351,6 +351,12 @@ ...@@ -351,6 +351,12 @@
" <xsd:element name=\"copy\" type=\"docEmptyType\" />\n" " <xsd:element name=\"copy\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"trademark\" type=\"docEmptyType\" />\n" " <xsd:element name=\"trademark\" type=\"docEmptyType\" />\n"
" <xsd:element name=\"registered\" 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=\"umlaut\" type=\"docCharType\" />\n"
" <xsd:element name=\"acute\" type=\"docCharType\" />\n" " <xsd:element name=\"acute\" type=\"docCharType\" />\n"
" <xsd:element name=\"grave\" type=\"docCharType\" />\n" " <xsd:element name=\"grave\" type=\"docCharType\" />\n"
......
...@@ -2449,7 +2449,7 @@ void Config::create() ...@@ -2449,7 +2449,7 @@ void Config::create()
"EXPAND_ONLY_PREDEF", "EXPAND_ONLY_PREDEF",
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n" "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" "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 FALSE
); );
cb->addDependency("ENABLE_PREPROCESSING"); cb->addDependency("ENABLE_PREPROCESSING");
......
...@@ -1285,6 +1285,12 @@ DocSymbol::SymType DocSymbol::decodeSymbol(const QString &symName,char *letter) ...@@ -1285,6 +1285,12 @@ DocSymbol::SymType DocSymbol::decodeSymbol(const QString &symName,char *letter)
else if (symName=="&amp;") return DocSymbol::Amp; else if (symName=="&amp;") return DocSymbol::Amp;
else if (symName=="&apos;") return DocSymbol::Apos; else if (symName=="&apos;") return DocSymbol::Apos;
else if (symName=="&quot;") return DocSymbol::Quot; 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=="&szlig;") return DocSymbol::Szlig;
else if (symName=="&nbsp;") return DocSymbol::Nbsp; else if (symName=="&nbsp;") return DocSymbol::Nbsp;
else if (l==6 && symName.right(4)=="uml;") else if (l==6 && symName.right(4)=="uml;")
...@@ -2587,6 +2593,12 @@ int DocIndexEntry::parse() ...@@ -2587,6 +2593,12 @@ int DocIndexEntry::parse()
case DocSymbol::Percent: m_entry+='%'; break; case DocSymbol::Percent: m_entry+='%'; break;
case DocSymbol::Apos: m_entry+='\''; break; case DocSymbol::Apos: m_entry+='\''; break;
case DocSymbol::Quot: 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: default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected symbol found as argument of \\addindex"); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unexpected symbol found as argument of \\addindex");
break; break;
......
...@@ -322,8 +322,9 @@ class DocSymbol : public DocNode ...@@ -322,8 +322,9 @@ class DocSymbol : public DocNode
{ {
public: public:
enum SymType { Unknown=0, BSlash,At,Less,Greater,Amp,Dollar,Hash,Percent, enum SymType { Unknown=0, BSlash,At,Less,Greater,Amp,Dollar,Hash,Percent,
Copy, Tm, Reg, Apos, Quot, Uml, Acute, Grave, Circ, Tilde, Szlig, Copy, Tm, Reg, Apos, Quot, Uml, Acute, Grave, Circ, Tilde,
Cedil, Ring, Nbsp, Slash Szlig, Cedil, Ring, Nbsp, Slash, Lsquo, Rsquo, Ldquo, Rdquo,
Ndash, Mdash
}; };
DocSymbol(DocNode *parent,SymType s,char letter='\0') : DocSymbol(DocNode *parent,SymType s,char letter='\0') :
m_parent(parent), m_symbol(s), m_letter(letter) {} m_parent(parent), m_symbol(s), m_letter(letter) {}
......
...@@ -337,7 +337,7 @@ HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|" ...@@ -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" 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} HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
LABELID [a-z_A-Z][a-z_A-Z0-9\-]* LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"))*({ID}(":")?){FUNCARG}? REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"|"/"))*({ID}(":")?){FUNCARG}?
%option noyywrap %option noyywrap
%option yylineno %option yylineno
......
...@@ -8302,7 +8302,7 @@ void parseInput() ...@@ -8302,7 +8302,7 @@ void parseInput()
* Determine Input Files * * Determine Input Files *
**************************************************************************/ **************************************************************************/
msg("Reading input files...\n"); msg("Searching for files to process...\n");
QDict<void> *killDict = new QDict<void>(10007); QDict<void> *killDict = new QDict<void>(10007);
int inputSize=0; int inputSize=0;
QStrList &inputList=Config_getList("INPUT"); QStrList &inputList=Config_getList("INPUT");
......
...@@ -105,6 +105,12 @@ void HtmlDocVisitor::visit(DocSymbol *s) ...@@ -105,6 +105,12 @@ void HtmlDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "&reg;"; break; case DocSymbol::Reg: m_t << "&reg;"; break;
case DocSymbol::Apos: m_t << "'"; break; case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: 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::Uml: m_t << "&" << s->letter() << "uml;"; break;
case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break; case DocSymbol::Acute: m_t << "&" << s->letter() << "acute;"; break;
case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break; case DocSymbol::Grave: m_t << "&" << s->letter() << "grave;"; break;
......
...@@ -1188,34 +1188,60 @@ void writeAnnotatedClassList(OutputList &ol) ...@@ -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 // write an alphabetical index of all class with a header for each letter
void writeAlphabeticalClassList(OutputList &ol) void writeAlphabeticalClassList(OutputList &ol)
{ {
//ol.startAlphabeticalIndexList(); //ol.startAlphabeticalIndexList();
// What starting letters are used
bool indexLetterUsed[256];
memset (indexLetterUsed, 0, sizeof (indexLetterUsed));
// first count the number of headers // first count the number of headers
ClassSDict::Iterator cli(Doxygen::classSDict); ClassSDict::Iterator cli(Doxygen::classSDict);
ClassDef *cd; ClassDef *cd;
char startLetter=0; uint startLetter=0;
int headerItems=0; int headerItems=0;
QCString alphaLinks = "<p><div class=\"qindex\">";
for (;(cd=cli.current());++cli) for (;(cd=cli.current());++cli)
{ {
if (cd->isLinkableInProject() && cd->templateMaster()==0) if (cd->isLinkableInProject() && cd->templateMaster()==0)
{ {
int index = getPrefixIndex(cd->className()); int index = getPrefixIndex(cd->className());
//printf("name=%s index=%d\n",cd->className().data(),index); //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));
{ indexLetterUsed[startLetter] = true;
startLetter=toupper(cd->className().at(index)); }
if (headerItems) alphaLinks += "&nbsp;|&nbsp;"; }
headerItems++;
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" + QCString alphaLinks = "<p><div class=\"qindex\">";
startLetter + "\">" + for (int l = 0; l < 256; l++)
startLetter + "</a>"; {
} 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"; alphaLinks += "</div><p>\n";
ol.writeString(alphaLinks); ol.writeString(alphaLinks);
...@@ -1232,13 +1258,12 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1232,13 +1258,12 @@ void writeAlphabeticalClassList(OutputList &ol)
//printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n", //printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n",
// headerItems,totalItems,columns,rows,itemsInLastRow); // headerItems,totalItems,columns,rows,itemsInLastRow);
// create one class list for each column // Keep a list of classes for each starting letter
ClassList *colList = new ClassList[columns]; PrefixIgnoreClassList classesByLetter[256];
// fill the columns with the class list (row elements in each column, // fill the columns with the class list (row elements in each column,
// expect for the columns with number >= itemsInLastRow, which get on // expect for the columns with number >= itemsInLastRow, which get on
// item less. // item less.
int col=0,row=0;
//int icount=0; //int icount=0;
startLetter=0; startLetter=0;
for (cli.toFirst();(cd=cli.current());++cli) for (cli.toFirst();(cd=cli.current());++cli)
...@@ -1246,24 +1271,42 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1246,24 +1271,42 @@ void writeAlphabeticalClassList(OutputList &ol)
if (cd->isLinkableInProject() && cd->templateMaster()==0) if (cd->isLinkableInProject() && cd->templateMaster()==0)
{ {
int index = getPrefixIndex(cd->className()); int index = getPrefixIndex(cd->className());
if (toupper(cd->className().at(index))!=startLetter) startLetter=toupper(cd->className().at(index));
{ // Do some sorting again, since the classes are sorted by name with
// insert a new header using a dummy class pointer. // prefix, which should be ignored really.
startLetter=toupper(cd->className().at(index)); classesByLetter[startLetter].inSort (cd);
colList[col].append((ClassDef *)8); // insert dummy for the header }
row++; }
if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1))
{ // create one class list for each column
// if the header is the last item in the row, we add an extra ClassList *colList = new ClassList[columns];
// row to make it easier to find the text of the header (this
// is then contained in the next cell) // fill the columns with the class list (row elements in each column,
colList[col].append(cd); // expect for the columns with number >= itemsInLastRow, which get on
col++; // item less.
row=0; 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 // add the class definition to the correct column list
colList[col].append(cd); colList[col].append (classesByLetter[l].at (i));
row++; row++;
if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1)) { col++; row=0; } if ( row >= rows + ((col<itemsInLastRow) ? 0 : -1)) { col++; row=0; }
} }
......
...@@ -136,7 +136,13 @@ void LatexDocVisitor::visit(DocSymbol *s) ...@@ -136,7 +136,13 @@ void LatexDocVisitor::visit(DocSymbol *s)
case DocSymbol::Tm: m_t << "\\texttrademark"; break; case DocSymbol::Tm: m_t << "\\texttrademark"; break;
case DocSymbol::Reg: m_t << "\\textregistered"; break; case DocSymbol::Reg: m_t << "\\textregistered"; break;
case DocSymbol::Apos: m_t << "'"; 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: case DocSymbol::Uml:
if (s->letter()=='i') if (s->letter()=='i')
m_t << "\\\"{\\i}"; m_t << "\\\"{\\i}";
...@@ -167,7 +173,7 @@ void LatexDocVisitor::visit(DocSymbol *s) ...@@ -167,7 +173,7 @@ void LatexDocVisitor::visit(DocSymbol *s)
m_t << s->letter(); m_t << s->letter();
break; break;
case DocSymbol::Tilde: 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::Cedil: m_t << "\\c{" << s->letter() << "}"; break;
case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break; case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break;
case DocSymbol::Nbsp: m_t << "~"; break; case DocSymbol::Nbsp: m_t << "~"; break;
......
...@@ -87,7 +87,13 @@ void ManDocVisitor::visit(DocSymbol *s) ...@@ -87,7 +87,13 @@ void ManDocVisitor::visit(DocSymbol *s)
case DocSymbol::Tm: m_t << "(TM)"; break; case DocSymbol::Tm: m_t << "(TM)"; break;
case DocSymbol::Reg: m_t << "(R)"; break; case DocSymbol::Reg: m_t << "(R)"; break;
case DocSymbol::Apos: m_t << "'"; 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::Uml: m_t << s->letter() << "\\*(4"; break;
case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break; case DocSymbol::Acute: m_t << s->letter() << "\\*(`"; break;
case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break; case DocSymbol::Grave: m_t << s->letter() << "\\*:"; break;
......
...@@ -532,6 +532,12 @@ void PerlModDocVisitor::visit(DocSymbol *sy) ...@@ -532,6 +532,12 @@ void PerlModDocVisitor::visit(DocSymbol *sy)
case DocSymbol::Hash: c = '#'; break; case DocSymbol::Hash: c = '#'; break;
case DocSymbol::Percent: c = '%'; break; case DocSymbol::Percent: c = '%'; break;
case DocSymbol::Quot: 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::Nbsp: c = ''; break;
case DocSymbol::Uml: accent = "umlaut"; break; case DocSymbol::Uml: accent = "umlaut"; break;
case DocSymbol::Acute: accent = "acute"; break; case DocSymbol::Acute: accent = "acute"; break;
......
...@@ -68,6 +68,12 @@ class PrintDocVisitor : public DocVisitor ...@@ -68,6 +68,12 @@ class PrintDocVisitor : public DocVisitor
case DocSymbol::Copy: printf("&copy;"); break; case DocSymbol::Copy: printf("&copy;"); break;
case DocSymbol::Apos: printf("'"); break; case DocSymbol::Apos: printf("'"); break;
case DocSymbol::Quot: 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::Uml: printf("&%cuml;",s->letter()); break;
case DocSymbol::Acute: printf("&%cacute;",s->letter()); break; case DocSymbol::Acute: printf("&%cacute;",s->letter()); break;
case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break; case DocSymbol::Grave: printf("&%cgrave;",s->letter()); break;
......
...@@ -114,6 +114,12 @@ void RTFDocVisitor::visit(DocSymbol *s) ...@@ -114,6 +114,12 @@ void RTFDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "(R)"; break; case DocSymbol::Reg: m_t << "(R)"; break;
case DocSymbol::Apos: m_t << "'"; 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: switch(s->letter()) case DocSymbol::Uml: switch(s->letter())
{ {
case 'A' : m_t << '\304'; break; case 'A' : m_t << '\304'; break;
......
...@@ -296,6 +296,8 @@ static QCString stripQuotes(const char *s) ...@@ -296,6 +296,8 @@ static QCString stripQuotes(const char *s)
static void startCommentBlock(bool); static void startCommentBlock(bool);
static void handleCommentBlock(const QCString &doc,bool brief); static void handleCommentBlock(const QCString &doc,bool brief);
static void handleParametersCommentBlocks();
//----------------------------------------------------------------- //-----------------------------------------------------------------
static bool nameIsOperator(QCString &name) static bool nameIsOperator(QCString &name)
...@@ -2747,14 +2749,15 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -2747,14 +2749,15 @@ IDLATTR ("["[^\]]*"]"){BN}*
*copyArgString+=*yytext; *copyArgString+=*yytext;
fullArgString+=*yytext; fullArgString+=*yytext;
stringToArgumentList(fullArgString,current->argList); stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
/* remember the current documentation block, since /* remember the current documentation block, since
we could overwrite it with the documentation of we could overwrite it with the documentation of
a function argument, which we then have to correct later a function argument, which we then have to correct later
on on
*/ */
docBackup = current->doc.copy(); docBackup = current->doc;
briefBackup = current->brief.copy(); briefBackup = current->brief;
BEGIN( currentArgumentContext ); BEGIN( currentArgumentContext );
} }
...@@ -2769,9 +2772,10 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -2769,9 +2772,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
unput(yytext[i]); unput(yytext[i]);
} }
stringToArgumentList(fullArgString,current->argList); stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
BEGIN( currentArgumentContext ); BEGIN( currentArgumentContext );
} }
else else // not a define
{ {
// for functions we interpret a comment // for functions we interpret a comment
// as documentation for the argument // as documentation for the argument
...@@ -2820,6 +2824,7 @@ IDLATTR ("["[^\]]*"]"){BN}* ...@@ -2820,6 +2824,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
*copyArgString+=*yytext; *copyArgString+=*yytext;
fullArgString+=*yytext; fullArgString+=*yytext;
stringToArgumentList(fullArgString,current->argList); stringToArgumentList(fullArgString,current->argList);
handleParametersCommentBlocks();
BEGIN( currentArgumentContext ); BEGIN( currentArgumentContext );
} }
else else
...@@ -4298,6 +4303,62 @@ exit: ...@@ -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() //static void startGroupInDoc()
......
...@@ -70,6 +70,7 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd ...@@ -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) 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); //printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor);
QCString url=baseName+Config_getString("HTML_FILE_EXTENSION"); QCString url=baseName+Config_getString("HTML_FILE_EXTENSION");
if (anchor) url+=(QCString)"#"+anchor; if (anchor) url+=(QCString)"#"+anchor;
......
...@@ -661,12 +661,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9 ...@@ -661,12 +661,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
// (order is left to right) // (order is left to right)
if (i!=numEntries-1) // not the last entry, so we need a separator if (i!=numEntries-1) // not the last entry, so we need a separator
{ result+=decode("・");
if (i<numEntries-2) // not the fore last entry
result+=decode(", ");
else // the fore last entry
result+=decode(", と ");
}
} }
return result; return result;
} }
...@@ -1341,7 +1336,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9 ...@@ -1341,7 +1336,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
*/ */
virtual QCString trImplementedFromList(int numEntries) virtual QCString trImplementedFromList(int numEntries)
{ {
return trWriteList(numEntries)+decode("を実装しています")+"."; return trWriteList(numEntries)+decode("を実装しています。");
} }
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
...@@ -1349,7 +1344,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9 ...@@ -1349,7 +1344,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
*/ */
virtual QCString trImplementedInList(int numEntries) virtual QCString trImplementedInList(int numEntries)
{ {
return trWriteList(numEntries)+decode("で実装されています")+"."; return trWriteList(numEntries)+decode("で実装されています。");
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.16 // new since 1.2.16
...@@ -1509,5 +1504,63 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9 ...@@ -1509,5 +1504,63 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_9
{ {
return filename + decode(" ソースファイル"); 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 #endif
...@@ -3849,6 +3849,7 @@ bool resolveLink(/* in */ const char *scName, ...@@ -3849,6 +3849,7 @@ bool resolveLink(/* in */ const char *scName,
GroupDef *gd; GroupDef *gd;
PageDef *pd; PageDef *pd;
ClassDef *cd; ClassDef *cd;
DirDef *dir;
NamespaceDef *nd; NamespaceDef *nd;
bool ambig; bool ambig;
if (linkRef.isEmpty()) // no reference name! if (linkRef.isEmpty()) // no reference name!
...@@ -3902,6 +3903,12 @@ bool resolveLink(/* in */ const char *scName, ...@@ -3902,6 +3903,12 @@ bool resolveLink(/* in */ const char *scName,
*resContext=nd; *resContext=nd;
return TRUE; 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 else // probably a member reference
{ {
MemberDef *md; MemberDef *md;
......
...@@ -82,6 +82,12 @@ void XmlDocVisitor::visit(DocSymbol *s) ...@@ -82,6 +82,12 @@ void XmlDocVisitor::visit(DocSymbol *s)
case DocSymbol::Reg: m_t << "<registered/>"; break; case DocSymbol::Reg: m_t << "<registered/>"; break;
case DocSymbol::Apos: m_t << "'"; break; case DocSymbol::Apos: m_t << "'"; break;
case DocSymbol::Quot: 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::Uml: m_t << "<umlaut char=\"" << s->letter() << "\"/>"; break;
case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break; case DocSymbol::Acute: m_t << "<acute char=\"" << s->letter() << "\"/>"; break;
case DocSymbol::Grave: m_t << "<grave 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