summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2005-10-10 19:22:31 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2005-10-10 19:22:31 (GMT)
commitb7ae07dc2e3b4b635cc59a49d326a88d45f9206b (patch)
tree30215767ee72661b15eae6b66e51b409feff64cf
parent22eb9881c15ad001246cfcde1c727a2f98f472df (diff)
downloadDoxygen-b7ae07dc2e3b4b635cc59a49d326a88d45f9206b.zip
Doxygen-b7ae07dc2e3b4b635cc59a49d326a88d45f9206b.tar.gz
Doxygen-b7ae07dc2e3b4b635cc59a49d326a88d45f9206b.tar.bz2
Release-1.4.5-20051010
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--doc/language.doc10
-rw-r--r--doc/starting.doc13
-rw-r--r--doc/translator_report.txt67
-rw-r--r--examples/example.tag2
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/commentscan.l16
-rw-r--r--src/dirdef.cpp52
-rw-r--r--src/dot.cpp4
-rw-r--r--src/doxygen.cpp98
-rw-r--r--src/htmlgen.cpp2
-rw-r--r--src/scanner.l30
-rw-r--r--src/xmlgen.cpp6
-rwxr-xr-xtmake/lib/macosx-c++/tmake.conf5
16 files changed, 187 insertions, 130 deletions
diff --git a/INSTALL b/INSTALL
index 9959bc8..eadcd9f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-DOXYGEN Version 1.4.5
+DOXYGEN Version 1.4.5-20051010
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
-Dimitri van Heesch (04 October 2005)
+Dimitri van Heesch (10 October 2005)
diff --git a/README b/README
index 066cf4b..2d46951 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.4.5
+DOXYGEN Version 1.4.5_20051010
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) (04 October 2005)
+Dimitri van Heesch (dimitri@stack.nl) (10 October 2005)
diff --git a/VERSION b/VERSION
index e516bb9..c8b030a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.4.5
+1.4.5-20051010
diff --git a/doc/language.doc b/doc/language.doc
index 061c788..c9cce06 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -23,7 +23,7 @@ text fragments, generated by doxygen, can be produced in languages other
than English (the default). The output language is chosen through the
configuration file (with default name and known as Doxyfile).
-Currently (version 1.4.4), 31 languages
+Currently (version 1.4.5), 31 languages
are supported (sorted alphabetically):
Afrikaans, Brazilian Portuguese, Catalan, Chinese, Chinese
Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, French,
@@ -156,7 +156,7 @@ when the translator was updated.
<td>Japanese</td>
<td>Ryunosuke Satoh<br>Kenji Nagamatsu<br>Iwasa Kazmi</td>
<td>sun594 at hotmail dot com<br>naga at joyful dot club dot ne dot jp<br>iwasa at cosmo-system dot jp</td>
- <td>1.3.9</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>JapaneseEn</td>
@@ -228,7 +228,7 @@ when the translator was updated.
<td>Slovene</td>
<td>Matja&#x017e; Ostrover&#x0161;nik</td>
<td>matjaz.ostroversnik at ztm dot si</td>
- <td>1.2.16</td>
+ <td>up-to-date</td>
</tr>
<tr bgcolor="#ffffff">
<td>Spanish</td>
@@ -302,7 +302,7 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt\tiny alessandro@falappa.net} & up-to-date \\
~ & Ahmed Aldo Faisal & {\tt\tiny aaf23@cam.ac.uk} & ~ \\
\hline
- Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & 1.3.9 \\
+ Japanese & Ryunosuke Satoh & {\tt\tiny sun594@hotmail.com} & up-to-date \\
~ & Kenji Nagamatsu & {\tt\tiny naga@joyful.club.ne.jp} & ~ \\
~ & Iwasa Kazmi & {\tt\tiny iwasa@cosmo-system.jp} & ~ \\
\hline
@@ -332,7 +332,7 @@ when the translator was updated.
\hline
Slovak & Stanislav Kudl\'{a}\v{c} & {\tt\tiny skudlac@pobox.sk} & 1.2.18 \\
\hline
- Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ztm.si} & 1.2.16 \\
+ Slovene & Matja\v{z} Ostrover\v{s}nik & {\tt\tiny matjaz.ostroversnik@ztm.si} & up-to-date \\
\hline
Spanish & Francisco Oltra Thennet & {\tt\tiny foltra@puc.cl} & 1.3.8 \\
\hline
diff --git a/doc/starting.doc b/doc/starting.doc
index d0af1ec..92b5577 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -170,9 +170,11 @@ The generated \f$\mbox{\LaTeX}\f$ documentation must first be compiled by
a \f$\mbox{\LaTeX}\f$ compiler (I use a recent teTeX distribution).
To simplify the process of compiling the generated
documentation, \c doxygen writes a \c Makefile into the \c latex directory.
-By typing \c make in the \c latex directory the dvi file \c refman.dvi
-will be generated (provided that you have a make tool called
-<code>make</code> of course). This file can then be viewed using \c xdvi or
+
+The contents and targets in the \c Makefile depend on the setting of
+\ref cfg_use_pdflatex "USE_PDFLATEX". If it is disabled (set to \c NO), then
+typing \c make in the \c latex directory a dvi file called \c refman.dvi
+will be generated. This file can then be viewed using \c xdvi or
converted into a PostScript file \c refman.ps by
typing <code>make ps</code> (this requires <code>dvips</code>).
@@ -183,9 +185,12 @@ ghostscript to convert PostScript into something your printer understands.
Conversion to PDF is also possible if you have installed the ghostscript
interpreter; just type <code>make pdf</code> (or <code>make pdf_2on1</code>).
+
To get the best results for PDF output you should set
the \ref cfg_pdf_hyperlinks "PDF_HYPERLINKS"
-and \ref cfg_use_pdflatex "USE_PDFLATEX" tags to \c YES.
+and \ref cfg_use_pdflatex "USE_PDFLATEX" tags to \c YES.
+In this case the \c Makefile will only contain a target to build
+\c refman.pdf directly.
\subsection rtf_out RTF output
\addindex RTF
diff --git a/doc/translator_report.txt b/doc/translator_report.txt
index dc2c164..7106e5a 100644
--- a/doc/translator_report.txt
+++ b/doc/translator_report.txt
@@ -1,4 +1,4 @@
-(1.4.4)
+(1.4.5)
Doxygen supports the following 31 languages (sorted alphabetically):
@@ -8,7 +8,7 @@ German, Greek, Hungarian, Indonesian, Italian, Japanese (+En), Korean
(+En), Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-Of them, 18 translators are up-to-date, 13 translators are based on
+Of them, 20 translators are up-to-date, 11 translators are based on
some adapter class, and 2 are English based.
----------------------------------------------------------------------
@@ -30,10 +30,12 @@ still may be some details listed even for them:
TranslatorHungarian
TranslatorIndonesian -- Remove the obsolete methods (never used).
TranslatorItalian
+ TranslatorJapanese -- Change the base class to Translator.
TranslatorKorean
TranslatorLithuanian
TranslatorPolish -- Remove the obsolete methods (never used).
TranslatorRussian
+ TranslatorSlovene
TranslatorSwedish
----------------------------------------------------------------------
@@ -47,12 +49,10 @@ must be implemented to become up-to-date:
TranslatorRomanian 1.4.1 1 method to implement
TranslatorChinese 1.4.1 1 method to implement
TranslatorNorwegian 1.3.9 7 methods to implement
- TranslatorJapanese 1.3.9 7 methods to implement
TranslatorDanish 1.3.9 7 methods to implement
TranslatorSpanish 1.3.8 8 methods to implement
TranslatorPortuguese 1.3.3 12 methods to implement
TranslatorSlovak 1.2.18 21 methods to implement
- TranslatorSlovene 1.2.16 23 methods to implement
TranslatorGreek 1.2.11 26 methods to implement
TranslatorFinnish obsolete 95 methods to implement
@@ -387,20 +387,10 @@ TranslatorIndonesian (Translator)
virtual QCString trNoDescriptionAvailable()
-TranslatorJapanese (TranslatorAdapter_1_3_9) 7 methods to implement
+TranslatorJapanese (TranslatorAdapter_1_3_9)
------------------
- Implements 185 of the required methods.
-
- Missing methods (should be implemented):
-
- virtual QCString trOverloadText()
- virtual QCString trDirIndex()
- virtual QCString trDirDocumentation()
- virtual QCString trDirectories()
- virtual QCString trDirDescription()
- virtual QCString trDirReference(const char * dirName)
- virtual QCString trDir(bool first_capital, bool singular)
+ Implements 192 of the required methods.
Obsolete methods (should be removed, never used):
@@ -615,51 +605,6 @@ TranslatorSlovak (TranslatorAdapter_1_2_18) 21 methods to implement
virtual QCString trNoDescriptionAvailable()
-TranslatorSlovene (TranslatorAdapter_1_2_16) 23 methods to implement
------------------
-
- Implements 169 of the required methods.
-
- Missing methods (should be implemented):
-
- virtual QCString trOverloadText()
- virtual QCString trEventDocumentation()
- virtual QCString trDirIndex()
- virtual QCString trPackageMembers()
- virtual QCString trStaticPackageMembers()
- virtual QCString trDirDocumentation()
- virtual QCString trSearchResultsTitle()
- virtual QCString trDirectories()
- virtual QCString trDeprecatedList()
- virtual QCString trDirDescription()
- virtual QCString trStaticPackageAttribs()
- virtual QCString trCallGraph()
- virtual QCString trPackageTypes()
- virtual QCString trSearchResults(int numDocuments)
- virtual QCString trPackageAttribs()
- virtual QCString trSearchMatches()
- virtual QCString trEvents()
- virtual QCString trSourceFile(QCString & filename)
- virtual QCString trDirReference(const char * dirName)
- virtual QCString trDir(bool first_capital, bool singular)
- virtual QCString trSearchForIndex()
- virtual QCString trAll()
- virtual QCString trRTFTableOfContents()
-
- Obsolete methods (should be removed, never used):
-
- QCString trHeaderFilesDescription()
- virtual QCString trField(bool first_capital, bool singular)
- virtual QCString trPackageDocumentation()
- QCString trSources()
- QCString trReimplementedForInternalReasons()
- virtual QCString trInterfaces()
- QCString trHeaderFiles()
- QCString trBugsAndLimitations()
- QCString trEnumerationValueDocumentation()
- QCString trNoDescriptionAvailable()
-
-
TranslatorSpanish (TranslatorAdapter_1_3_8) 8 methods to implement
-----------------
diff --git a/examples/example.tag b/examples/example.tag
index c67e49a..085ed5e 100644
--- a/examples/example.tag
+++ b/examples/example.tag
@@ -7,7 +7,7 @@
<type>void</type>
<name>example</name>
<anchorfile>class_test.html</anchorfile>
- <anchor>example_28_29</anchor>
+ <anchor>f7c9e353df7549b5697c934fb0331252</anchor>
<arglist>()</arglist>
</member>
</compound>
diff --git a/src/commentcnv.l b/src/commentcnv.l
index a3d62a4..cb065ec 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -320,7 +320,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'"))
copyToOutput(yytext,yyleng);
BEGIN(CComment);
}
-<CComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{")/[^a-z_A-Z0-9] { /* start of a verbatim block */
+<CComment,ReadLine>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{")/[^a-z_A-Z0-9] { /* start of a verbatim block */
copyToOutput(yytext,yyleng);
if (yytext[2]=='[')
{
diff --git a/src/commentscan.l b/src/commentscan.l
index 161b766..fe7f171 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -293,7 +293,7 @@ static void groupAddDocs(Entry *e,const char *fileName);
*/
static ParserInterface *langParser; // the language parser that is calling us
-static const char * inputString; // input string
+static QCString inputString; // input string
static int inputPosition; // read pointer
static QCString yyFileName; // file name that is read from
static int yyLineNr; // line number in the input
@@ -2215,8 +2215,9 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
guards.clear();
langParser = parser;
current = curEntry;
+ if (comment.isEmpty()) return FALSE; // avoid empty strings
inputString = comment;
- if (inputString==0) return FALSE; // avoid empty strings
+ inputString.append(" ");
inputPosition = position;
yyLineNr = lineNr;
yyFileName = fileName;
@@ -2229,6 +2230,12 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
outputXRef.resize(0);
setOutput( isBrief || isJavaDocStyle ? OutputBrief : OutputDoc );
briefEndsAtDot = isJavaDocStyle;
+
+
+ Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n"
+ "input=[%s]\n",fileName.data(),lineNr,comment.data()
+ );
+
commentScanYYrestart( commentScanYYin );
BEGIN( Comment );
commentScanYYlex();
@@ -2253,9 +2260,8 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
openGroup(current,yyFileName,yyLineNr);
}
- Debug::print(Debug::CommentScan,0,"CommentScanner\n%s:%d\n"
- "input=[%s]\nbrief=[%s]\ndocs=[%s]\n------------\n",
- fileName.data(),lineNr,comment.data(),
+ Debug::print(Debug::CommentScan,0,
+ "brief=[%s]\ndocs=[%s]\n===========\n",
current->brief.data(),current->doc.data()
);
diff --git a/src/dirdef.cpp b/src/dirdef.cpp
index 0e9a898..8452f0b 100644
--- a/src/dirdef.cpp
+++ b/src/dirdef.cpp
@@ -1,3 +1,5 @@
+#include <md5.h>
+
#include "dirdef.h"
#include "filename.h"
#include "doxygen.h"
@@ -66,32 +68,42 @@ void DirDef::addFile(FileDef *fd)
fd->setDirDef(this);
}
-static QCString escapeDirName(const QCString &anchor)
+static QCString encodeDirName(const QCString &anchor)
{
QCString result;
- int l = anchor.length(),i;
- for (i=0;i<l;i++)
- {
- char c = anchor.at(i);
- if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9'))
- {
- result+=c;
- }
- else
- {
- static char hexStr[]="0123456789ABCDEF";
- char escChar[]={ '_', 0, 0, 0 };
- escChar[1]=hexStr[c>>4];
- escChar[2]=hexStr[c&0xf];
- result+=escChar;
- }
- }
- return result;
+
+ // convert to md5 hash
+ uchar md5_sig[16];
+ QCString sigStr(33);
+ MD5Buffer((const unsigned char *)anchor.data(),anchor.length(),md5_sig);
+ MD5SigToString(md5_sig,sigStr.data(),33);
+ return sigStr;
+
+ // old algorithm
+
+// int l = anchor.length(),i;
+// for (i=0;i<l;i++)
+// {
+// char c = anchor.at(i);
+// if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9'))
+// {
+// result+=c;
+// }
+// else
+// {
+// static char hexStr[]="0123456789ABCDEF";
+// char escChar[]={ '_', 0, 0, 0 };
+// escChar[1]=hexStr[c>>4];
+// escChar[2]=hexStr[c&0xf];
+// result+=escChar;
+// }
+// }
+// return result;
}
QCString DirDef::getOutputFileBase() const
{
- return "dir_"+escapeDirName(name());
+ return "dir_"+encodeDirName(name());
//return QCString().sprintf("dir_%06d",m_dirCount);
}
diff --git a/src/dot.cpp b/src/dot.cpp
index a304788..3cc7e2f 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -1958,7 +1958,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
if (bfd)
{
in = bfd->absFilePath();
- doc = bfd->isLinkable() && bfd->isHidden();
+ doc = bfd->isLinkable() && !bfd->isHidden();
src = bfd->generateSourceFile();
}
if (doc || src || !Config_getBool("HIDE_UNDOC_RELATIONS"))
@@ -1967,7 +1967,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
if (bfd) url=bfd->getOutputFileBase().copy();
if (!doc && src)
{
- url+="-source";
+ url=bfd->getSourceFileBase();
}
DotNode *bn = m_usedNodes->find(in);
if (bn) // file is already a node in the graph
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 95cce31..ff2606a 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -3511,6 +3511,85 @@ static bool isRecursiveBaseClass(const QCString &scope,const QCString &name)
return result;
}
+/*! Searches for the end of a template in prototype \a s starting from
+ * character position \a startPos. If the end was found the position
+ * of the closing \> is returned, otherwise -1 is returned.
+ *
+ * Handles exotic cases such as
+ * \code
+ * Class<(id<0)>
+ * Class<bits<<2>
+ * Class<"<">
+ * Class<'<'>
+ * Class<(")<")>
+ * \endcode
+ */
+static int findEndOfTemplate(const QCString &s,int startPos)
+{
+ // locate end of template
+ int e=startPos;
+ int brCount=1;
+ int roundCount=0;
+ int len = s.length();
+ bool insideString=FALSE;
+ bool insideChar=FALSE;
+ char pc = 0;
+ while (e<len && brCount!=0)
+ {
+ char c=s.at(e);
+ switch(c)
+ {
+ case '<':
+ if (!insideString && !insideChar)
+ {
+ if (e<len-1 && s.at(e+1)=='<')
+ e++;
+ else if (roundCount==0)
+ brCount++;
+ }
+ break;
+ case '>':
+ if (!insideString && !insideChar)
+ {
+ if (e<len-1 && s.at(e+1)=='>')
+ e++;
+ else if (roundCount==0)
+ brCount--;
+ }
+ break;
+ case '(':
+ if (!insideString && !insideChar)
+ roundCount++;
+ break;
+ case ')':
+ if (!insideString && !insideChar)
+ roundCount--;
+ break;
+ case '"':
+ if (!insideChar)
+ {
+ if (insideString && pc!='\\')
+ insideString=FALSE;
+ else
+ insideString=TRUE;
+ }
+ break;
+ case '\'':
+ if (!insideString)
+ {
+ if (insideChar && pc!='\\')
+ insideChar=FALSE;
+ else
+ insideChar=TRUE;
+ }
+ break;
+ }
+ pc = c;
+ e++;
+ }
+ return brCount==0 ? e : -1;
+}
+
static bool findClassRelation(
Entry *root,
Definition *context,
@@ -3603,23 +3682,8 @@ static bool findClassRelation(
{
// TODO: here we should try to find the correct template specialization
// but for now, we only look for the unspecializated base class.
- // locate end of template
- int e=i+1;
- int brCount=1;
- int typeLen = baseClassName.length();
- while (e<typeLen && brCount!=0)
- {
- if (baseClassName.at(e)=='<')
- {
- if (e<typeLen-1 && baseClassName.at(e+1)=='<') e++; else brCount++;
- }
- if (baseClassName.at(e)=='>')
- {
- if (e<typeLen-1 && baseClassName.at(e+1)=='>') e++; else brCount--;
- }
- e++;
- }
- if (brCount==0) // end of template was found at e
+ int e=findEndOfTemplate(baseClassName,i+1);
+ if (e!=-1) // end of template was found at e
{
templSpec=baseClassName.mid(i,e-i);
baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e);
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 8391e3c..64166e0 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -569,7 +569,7 @@ static void writeDefaultHeaderFile(QTextStream &t, const char *title,
}
t << "\" rel=\"stylesheet\" type=\"text/css\">\n";
- t << "<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\">\n";
+ t << "<link href=\"" << relPathStr << "tabs.css\" rel=\"stylesheet\" type=\"text/css\">\n";
t << "</head><body>\n";
}
diff --git a/src/scanner.l b/src/scanner.l
index 4e510d9..d037938 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -655,6 +655,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
%x CopyArgSharp
%x CopyArgComment
%x CopyArgCommentLine
+%x CopyArgVerbatim
/** Prototype scanner states */
@@ -2855,10 +2856,35 @@ IDLATTR ("["[^\]]*"]"){BN}*
unput(lastCopyArgChar);
BEGIN( lastCommentInArgContext );
}
+<CopyArgCommentLine>{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!)
+ docBlockName=&yytext[1];
+ fullArgString+=yytext;
+ BEGIN(CopyArgVerbatim);
+ }
+<CopyArgCommentLine>{CMD}("f$"|"f["|"f{") {
+ docBlockName=&yytext[1];
+ if (docBlockName.at(1)=='{')
+ {
+ docBlockName.at(1)='}';
+ }
+ fullArgString+=yytext;
+ BEGIN(CopyArgVerbatim);
+ }
+<CopyArgVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddot"|"endcode"|"f$"|"f]"|"f}")/[^a-z_A-Z0-9] { // end of verbatim block
+ fullArgString+=yytext;
+ if (yytext[1]=='f') // end of formula
+ {
+ BEGIN(CopyArgCommentLine);
+ }
+ if (&yytext[4]==docBlockName)
+ {
+ BEGIN(CopyArgCommentLine);
+ }
+ }
<CopyArgCommentLine>[^\\\@\n]+ { fullArgString+=yytext; }
<CopyArgCommentLine>. { fullArgString+=*yytext; }
-<CopyArgComment>\n { fullArgString+=*yytext; yyLineNr++; }
-<CopyArgComment>. { fullArgString+=*yytext; }
+<CopyArgComment,CopyArgVerbatim>\n { fullArgString+=*yytext; yyLineNr++; }
+<CopyArgComment,CopyArgVerbatim>. { fullArgString+=*yytext; }
<CopyArgComment>{CMD}("brief"|"short"){B}+ {
warn(yyFileName,yyLineNr,
"Warning: Ignoring %cbrief command inside argument documentation",*yytext
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 0126cc6..3126adc 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -1112,14 +1112,14 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
t << "\">";
if (!bcd->templSpecifiers.isEmpty())
{
- convertToXML(
- insertTemplateSpecifierInScope(
+ t << convertToXML(
+ insertTemplateSpecifierInScope(
bcd->classDef->displayName(),bcd->templSpecifiers)
);
}
else
{
- convertToXML(bcd->classDef->displayName());
+ t << convertToXML(bcd->classDef->displayName());
}
t << "</basecompoundref>" << endl;
}
diff --git a/tmake/lib/macosx-c++/tmake.conf b/tmake/lib/macosx-c++/tmake.conf
index 9bbf8bc..ef24a31 100755
--- a/tmake/lib/macosx-c++/tmake.conf
+++ b/tmake/lib/macosx-c++/tmake.conf
@@ -36,13 +36,12 @@ TMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
TMAKE_LINK = c++
TMAKE_LINK_SHLIB = c++
-TMAKE_LFLAGS =
+TMAKE_LFLAGS = -Wl,-search_paths_first
TMAKE_LFLAGS_RELEASE =
TMAKE_LFLAGS_DEBUG =
TMAKE_LFLAGS_SHLIB = -shared
-# soname does not work on fbsd 2.x
-#TMAKE_LFLAGS_SONAME = -Wl,-soname
+TMAKE_LFLAGS_SONAME = -dynamiclib -install_name
TMAKE_LIBS =
TMAKE_LIBS_X11 =