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

Release-1.5.5-20080325

parent 5b23c957
DOXYGEN Version 1.5.5-20080316 DOXYGEN Version 1.5.5-20080325
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 (16 March 2008) Dimitri van Heesch (25 March 2008)
DOXYGEN Version 1.5.5_20080316 DOXYGEN Version 1.5.5_20080325
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) (16 March 2008) Dimitri van Heesch (dimitri@stack.nl) (25 March 2008)
...@@ -20,7 +20,7 @@ doxygen_version_minor=5 ...@@ -20,7 +20,7 @@ doxygen_version_minor=5
doxygen_version_revision=5 doxygen_version_revision=5
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20080316 doxygen_version_mmn=20080325
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -53,6 +53,8 @@ documentation: ...@@ -53,6 +53,8 @@ documentation:
\refitem cmdclass \\class \refitem cmdclass \\class
\refitem cmdcode \\code \refitem cmdcode \\code
\refitem cmdcond \\cond \refitem cmdcond \\cond
\refitem cmdcopybrief \\copybrief
\refitem cmdcopydefails \\copydetails
\refitem cmdcopydoc \\copydoc \refitem cmdcopydoc \\copydoc
\refitem cmddate \\date \refitem cmddate \\date
\refitem cmddef \\def \refitem cmddef \\def
...@@ -1778,6 +1780,23 @@ Make sure you have first read \ref intro "the introduction". ...@@ -1778,6 +1780,23 @@ Make sure you have first read \ref intro "the introduction".
The copydoc command can be used recursively, but cycles in the copydoc The copydoc command can be used recursively, but cycles in the copydoc
relation will be broken and flagged as an error. relation will be broken and flagged as an error.
Note that both the brief description and the detailed documentation
will be copied. See \ref cmdcopybrief "\\cmdcopybrief" and
\ref cmdcopydetails "\\cmdcopydetails" for copying only the brief or
detailed part of the comment block.
<hr>
\section cmdcopybrief \\copybrief <link-object>
Works in a similar way as \ref cmdcopydoc "\\copydoc" but will
only copy the brief description, not the detailed documentation.
<hr>
\section cmdcopydetails \\copydetails <link-object>
Works in a similar way as \ref cmdcopydoc "\\copydoc" but will
only copy the detailed documentation, not the brief description.
<hr> <hr>
\section cmddot \\dot \section cmddot \\dot
......
...@@ -81,6 +81,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -81,6 +81,8 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC \refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
\refitem cfg_docset_bundle_id DOCSET_BUNDLE_ID \refitem cfg_docset_bundle_id DOCSET_BUNDLE_ID
\refitem cfg_docset_feedname DOCSET_FEEDNAME \refitem cfg_docset_feedname DOCSET_FEEDNAME
\refitem cfg_dot_fontname DOT_FONTNAME
\refitem cfg_dot_fontpath DOT_FONTPATH
\refitem cfg_dot_graph_max_nodes DOT_GRAPH_MAX_NODES \refitem cfg_dot_graph_max_nodes DOT_GRAPH_MAX_NODES
\refitem cfg_dot_image_format DOT_IMAGE_FORMAT \refitem cfg_dot_image_format DOT_IMAGE_FORMAT
\refitem cfg_dot_multi_targets DOT_MULTI_TARGETS \refitem cfg_dot_multi_targets DOT_MULTI_TARGETS
...@@ -1814,6 +1816,24 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre> ...@@ -1814,6 +1816,24 @@ TAGFILES = file1=loc1 "file2 = loc2" ... </pre>
visualization toolkit from AT\&T and Lucent Bell Labs. The other options in visualization toolkit from AT\&T and Lucent Bell Labs. The other options in
this section have no effect if this option is set to \c NO (the default) this section have no effect if this option is set to \c NO (the default)
<dt>\c DOT_FONTNAME <dd>
\addindex DOT_FONTNAME
By default doxygen will write a font called FreeSans.ttf to the output
directory and reference it in all dot files that doxygen generates. This
font does not include all possible unicode characters however, so when you need
these (or just want a differently looking font) you can specify the font name
using \c DOT_FONTNAME. You need need to make sure dot is able to find the font,
which can be done by putting it in a standard location or by setting the \c DOTFONTPATH
environment variable or by setting \c DOT_FONTPATH to the directory containing
the font.
<dt>\c DOT_FONTPATH <dd>
\addindex DOT_FONTPATH
By default doxygen will tell dot to use the output directory to look for the
FreeSans.ttf font (which doxygen will put there itself). If you specify a
different font using \c DOT_FONTNAME you can set the path where dot
can find it using this tag.
\anchor cfg_class_graph \anchor cfg_class_graph
<dt>\c CLASS_GRAPH <dd> <dt>\c CLASS_GRAPH <dd>
\addindex CLASS_GRAPH \addindex CLASS_GRAPH
......
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
<td>Catalan</td> <td>Catalan</td>
<td>Maximiliano Pin<br>Albert Mora</td> <td>Maximiliano Pin<br>Albert Mora</td>
<td>mcpin at emtesistemas dot com<br>amora at iua dot upf dot es</td> <td>max.pin at bitroit dot com<br>amora at iua dot upf dot es</td>
<td>1.5.4</td> <td>1.5.4</td>
</tr> </tr>
<tr bgcolor="#ffffff"> <tr bgcolor="#ffffff">
...@@ -288,7 +288,7 @@ when the translator was updated. ...@@ -288,7 +288,7 @@ when the translator was updated.
\hline \hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\ Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt\tiny jun-chino@uol.com.br} & up-to-date \\
\hline \hline
Catalan & Maximiliano Pin & {\tt\tiny mcpin@emtesistemas.com} & 1.5.4 \\ Catalan & Maximiliano Pin & {\tt\tiny max.pin@bitroit.com} & 1.5.4 \\
~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\ ~ & Albert Mora & {\tt\tiny amora@iua.upf.es} & ~ \\
\hline \hline
Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\ Chinese & Li Daobing & {\tt\tiny lidaobing@gmail.com} & up-to-date \\
......
...@@ -19,7 +19,7 @@ TranslatorBrazilian ...@@ -19,7 +19,7 @@ TranslatorBrazilian
Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br Fabio "FJTC" Jun Takada Chino: jun-chino@uol.com.br
TranslatorCatalan TranslatorCatalan
Maximiliano Pin: mcpin@emtesistemas.com Maximiliano Pin: max.pin@bitroit.com
Albert Mora: amora@iua.upf.es Albert Mora: amora@iua.upf.es
TranslatorChinese TranslatorChinese
......
...@@ -31,6 +31,8 @@ CommandMap cmdMap[] = ...@@ -31,6 +31,8 @@ CommandMap cmdMap[] =
{ "c", CMD_CODE }, { "c", CMD_CODE },
{ "code", CMD_STARTCODE }, { "code", CMD_STARTCODE },
{ "copydoc", CMD_COPYDOC }, { "copydoc", CMD_COPYDOC },
{ "copybrief", CMD_COPYBRIEF },
{ "copydetails", CMD_COPYDETAILS },
{ "date", CMD_DATE }, { "date", CMD_DATE },
{ "dontinclude", CMD_DONTINCLUDE }, { "dontinclude", CMD_DONTINCLUDE },
{ "dotfile", CMD_DOTFILE }, { "dotfile", CMD_DOTFILE },
......
...@@ -110,7 +110,9 @@ enum CommandType ...@@ -110,7 +110,9 @@ enum CommandType
CMD_ENDMANONLY = 76, CMD_ENDMANONLY = 76,
CMD_INCWITHLINES = 77, CMD_INCWITHLINES = 77,
CMD_INHERITDOC = 78, CMD_INHERITDOC = 78,
CMD_TPARAM = 79 | SIMPLESECT_BIT CMD_TPARAM = 79 | SIMPLESECT_BIT,
CMD_COPYBRIEF = 80,
CMD_COPYDETAILS = 81
}; };
enum HtmlTagType enum HtmlTagType
......
...@@ -410,7 +410,8 @@ static void popScope() ...@@ -410,7 +410,8 @@ static void popScope()
static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="")
{ {
static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); static bool searchEngineEnabled=Config_getBool("SEARCHENGINE") &&
Config_getBool("SOURCE_BROWSER");
if (searchEngineEnabled) if (searchEngineEnabled)
{ {
Doxygen::searchIndex->setCurrentDoc(name,base,anchor); Doxygen::searchIndex->setCurrentDoc(name,base,anchor);
...@@ -419,7 +420,8 @@ static void setCurrentDoc(const QCString &name,const QCString &base,const QCStri ...@@ -419,7 +420,8 @@ static void setCurrentDoc(const QCString &name,const QCString &base,const QCStri
static void addToSearchIndex(const char *text) static void addToSearchIndex(const char *text)
{ {
static bool searchEngineEnabled=Config_getBool("SEARCHENGINE"); static bool searchEngineEnabled=Config_getBool("SEARCHENGINE") &&
Config_getBool("SOURCE_BROWSER");
if (searchEngineEnabled) if (searchEngineEnabled)
{ {
Doxygen::searchIndex->addWord(text,FALSE); Doxygen::searchIndex->addWord(text,FALSE);
......
...@@ -201,6 +201,9 @@ static DocCmdMap docCmdMap[] = ...@@ -201,6 +201,9 @@ static DocCmdMap docCmdMap[] =
{ "attention", 0, TRUE }, { "attention", 0, TRUE },
{ "author", 0, TRUE }, { "author", 0, TRUE },
{ "authors", 0, TRUE }, { "authors", 0, TRUE },
{ "copydoc", 0, TRUE },
{ "copybrief", 0, TRUE },
{ "copydetails", 0, TRUE },
{ "date", 0, TRUE }, { "date", 0, TRUE },
{ "dotfile", 0, TRUE }, { "dotfile", 0, TRUE },
{ "htmlinclude", 0, TRUE }, { "htmlinclude", 0, TRUE },
......
...@@ -1250,14 +1250,22 @@ void Config::check() ...@@ -1250,14 +1250,22 @@ void Config::check()
if (Config_getBool("HAVE_DOT")) if (Config_getBool("HAVE_DOT"))
{ {
QCString curFontPath = portable_getenv("DOTFONTPATH"); QCString curFontPath = Config_getString("DOT_FONTPATH");
QCString newFontPath = "."; if (curFontPath.isEmpty())
if (!curFontPath.isEmpty()) {
portable_getenv("DOTFONTPATH");
QCString newFontPath = ".";
if (!curFontPath.isEmpty())
{
newFontPath+=portable_pathListSeparator();
newFontPath+=curFontPath;
}
portable_setenv("DOTFONTPATH",newFontPath);
}
else
{ {
newFontPath+=portable_pathListSeparator(); portable_setenv("DOTFONTPATH",curFontPath);
newFontPath+=curFontPath;
} }
portable_setenv("DOTFONTPATH",newFontPath);
} }
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO")) if (Config_getBool("OPTIMIZE_OUTPUT_JAVA") && Config_getBool("INLINE_INFO"))
...@@ -2933,6 +2941,23 @@ void Config::create() ...@@ -2933,6 +2941,23 @@ void Config::create()
"have no effect if this option is set to NO (the default) \n", "have no effect if this option is set to NO (the default) \n",
FALSE FALSE
); );
cs = addString( "DOT_FONTNAME",
"By default doxygen will write a font called FreeSans.ttf to the output \n"
"directory and reference it in all dot files that doxygen generates. This \n"
"font does not include all possible unicode characters however, so when you need \n"
"these (or just want a differently looking font) you can specify the font name \n"
"using DOT_FONTNAME. You need need to make sure dot is able to find the font, \n"
"which can be done by putting it in a standard location or by setting the \n"
"DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory \n"
"containing the font. \n"
);
cs->setDefaultValue("FreeSans");
cs = addString( "DOT_FONTPATH",
"By default doxygen will tell dot to use the output directory to look for the \n"
"FreeSans.ttf font (which doxygen will put there itself). If you specify a \n"
"different font using DOT_FONTNAME you can set the path where dot \n"
"can find it using this tag. \n"
);
cb = addBool( cb = addBool(
"CLASS_GRAPH", "CLASS_GRAPH",
"If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \n" "If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen \n"
......
...@@ -1020,7 +1020,7 @@ QCString Definition::qualifiedName() const ...@@ -1020,7 +1020,7 @@ QCString Definition::qualifiedName() const
if (m_impl->outerScope->name()=="<globalScope>") if (m_impl->outerScope->name()=="<globalScope>")
{ {
m_impl->qualifiedName = m_impl->localName.copy(); m_impl->qualifiedName = m_impl->localName;
} }
else else
{ {
......
...@@ -81,8 +81,8 @@ static QString g_relPath; ...@@ -81,8 +81,8 @@ static QString g_relPath;
static bool g_hasParamCommand; static bool g_hasParamCommand;
static bool g_hasReturnCommand; static bool g_hasReturnCommand;
static MemberDef * g_memberDef;
static QDict<void> g_paramsFound; static QDict<void> g_paramsFound;
static MemberDef * g_memberDef;
static bool g_isExample; static bool g_isExample;
static QCString g_exampleName; static QCString g_exampleName;
static SectionDict * g_sectionDict; static SectionDict * g_sectionDict;
...@@ -125,7 +125,7 @@ static QStack<DocParserContext> g_parserStack; ...@@ -125,7 +125,7 @@ static QStack<DocParserContext> g_parserStack;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
static void docParserPushContext() static void docParserPushContext(bool saveParamInfo=TRUE)
{ {
//QCString indent; //QCString indent;
//indent.fill(' ',g_parserStack.count()*2+2); //indent.fill(' ',g_parserStack.count()*2+2);
...@@ -143,10 +143,14 @@ static void docParserPushContext() ...@@ -143,10 +143,14 @@ static void docParserPushContext()
ctx->fileName = g_fileName; ctx->fileName = g_fileName;
ctx->relPath = g_relPath; ctx->relPath = g_relPath;
ctx->hasParamCommand = g_hasParamCommand; if (saveParamInfo)
ctx->hasReturnCommand = g_hasReturnCommand; {
ctx->hasParamCommand = g_hasParamCommand;
ctx->hasReturnCommand = g_hasReturnCommand;
ctx->paramsFound = g_paramsFound;
}
ctx->memberDef = g_memberDef; ctx->memberDef = g_memberDef;
ctx->paramsFound = g_paramsFound;
ctx->isExample = g_isExample; ctx->isExample = g_isExample;
ctx->exampleName = g_exampleName; ctx->exampleName = g_exampleName;
ctx->sectionDict = g_sectionDict; ctx->sectionDict = g_sectionDict;
...@@ -1744,7 +1748,13 @@ void DocCopy::parse() ...@@ -1744,7 +1748,13 @@ void DocCopy::parse()
{ {
if (g_copyStack.findRef(def)==-1) // definition not parsed earlier if (g_copyStack.findRef(def)==-1) // definition not parsed earlier
{ {
docParserPushContext(); bool hasParamCommand = g_hasParamCommand;
bool hasReturnCommand = g_hasReturnCommand;
QDict<void> paramsFound = g_paramsFound;
//printf("..1 hasParamCommand=%d hasReturnCommand=%d paramsFound=%d\n",
// g_hasParamCommand,g_hasReturnCommand,g_paramsFound.count());
docParserPushContext(FALSE);
if (def->definitionType()==Definition::TypeMember && def->getOuterScope()) if (def->definitionType()==Definition::TypeMember && def->getOuterScope())
{ {
g_context=def->getOuterScope()->name(); g_context=def->getOuterScope()->name();
...@@ -1760,14 +1770,49 @@ void DocCopy::parse() ...@@ -1760,14 +1770,49 @@ void DocCopy::parse()
// handle them in all cases. // handle them in all cases.
//printf("doc='%s'\n",doc.data()); //printf("doc='%s'\n",doc.data());
//printf("brief='%s'\n",brief.data()); //printf("brief='%s'\n",brief.data());
brief+='\n'; if (m_copyBrief)
doc+='\n'; {
internalValidatingParseDoc(this,m_children,brief); brief+='\n';
internalValidatingParseDoc(this,m_children,doc); internalValidatingParseDoc(this,m_children,brief);
//printf("..2 hasParamCommand=%d hasReturnCommand=%d paramsFound=%d\n",
// g_hasParamCommand,g_hasReturnCommand,g_paramsFound.count());
hasParamCommand = hasParamCommand || g_hasParamCommand;
hasReturnCommand = hasReturnCommand || g_hasReturnCommand;
QDictIterator<void> it(g_paramsFound);
void *item;
for (;(item=it.current());++it)
{
paramsFound.insert(it.currentKey(),it.current());
}
}
if (m_copyDetails)
{
doc+='\n';
internalValidatingParseDoc(this,m_children,doc);
//printf("..3 hasParamCommand=%d hasReturnCommand=%d paramsFound=%d\n",
// g_hasParamCommand,g_hasReturnCommand,g_paramsFound.count());
hasParamCommand = hasParamCommand || g_hasParamCommand;
hasReturnCommand = hasReturnCommand || g_hasReturnCommand;
QDictIterator<void> it(g_paramsFound);
void *item;
for (;(item=it.current());++it)
{
paramsFound.insert(it.currentKey(),it.current());
}
}
g_copyStack.remove(def); g_copyStack.remove(def);
ASSERT(g_styleStack.isEmpty()); ASSERT(g_styleStack.isEmpty());
ASSERT(g_nodeStack.isEmpty()); ASSERT(g_nodeStack.isEmpty());
docParserPopContext(TRUE); docParserPopContext(TRUE);
g_hasParamCommand = hasParamCommand;
g_hasReturnCommand = hasReturnCommand;
g_paramsFound = paramsFound;
//printf("..4 hasParamCommand=%d hasReturnCommand=%d paramsFound=%d\n",
// g_hasParamCommand,g_hasReturnCommand,g_paramsFound.count());
} }
else // oops, recursion else // oops, recursion
{ {
...@@ -4437,7 +4482,8 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -4437,7 +4482,8 @@ int DocPara::handleCommand(const QString &cmdName)
{ {
DBG(("handleCommand(%s)\n",cmdName.data())); DBG(("handleCommand(%s)\n",cmdName.data()));
int retval = RetVal_OK; int retval = RetVal_OK;
switch (Mappers::cmdMapper->map(cmdName)) int cmdId = Mappers::cmdMapper->map(cmdName);
switch (cmdId)
{ {
case CMD_UNKNOWN: case CMD_UNKNOWN:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Found unknown command `\\%s'",cmdName.data()); warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Found unknown command `\\%s'",cmdName.data());
...@@ -4702,7 +4748,9 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -4702,7 +4748,9 @@ int DocPara::handleCommand(const QString &cmdName)
case CMD_INTERNAL: case CMD_INTERNAL:
retval = RetVal_Internal; retval = RetVal_Internal;
break; break;
case CMD_COPYDOC: case CMD_COPYDOC: // fall through
case CMD_COPYBRIEF: // fall through
case CMD_COPYDETAILS:
{ {
int tok=doctokenizerYYlex(); int tok=doctokenizerYYlex();
if (tok!=TK_WHITESPACE) if (tok!=TK_WHITESPACE)
...@@ -4724,7 +4772,9 @@ int DocPara::handleCommand(const QString &cmdName) ...@@ -4724,7 +4772,9 @@ int DocPara::handleCommand(const QString &cmdName)
tokToString(tok),cmdName.data()); tokToString(tok),cmdName.data());
break; break;
} }
DocCopy *cpy = new DocCopy(this,g_token->name); DocCopy *cpy = new DocCopy(this,g_token->name,
cmdId==CMD_COPYDOC || cmdId==CMD_COPYBRIEF,
cmdId==CMD_COPYDOC || cmdId==CMD_COPYDETAILS);
m_children.append(cpy); m_children.append(cpy);
cpy->parse(); cpy->parse();
} }
...@@ -5983,8 +6033,9 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, ...@@ -5983,8 +6033,9 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
bool isExample, const char *exampleName, bool isExample, const char *exampleName,
bool singleLine, bool linkFromIndex) bool singleLine, bool linkFromIndex)
{ {
//printf("validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>", //printf("validatingParseDoc(%s,%s)=[%s]\n",ctx?ctx->name().data():"<none>",
// md?md->name().data():"<none>"); // md?md->name().data():"<none>",
// input);
//printf("========== validating %s at line %d\n",fileName,startLine); //printf("========== validating %s at line %d\n",fileName,startLine);
//printf("---------------- input --------------------\n%s\n----------- end input -------------------\n",input); //printf("---------------- input --------------------\n%s\n----------- end input -------------------\n",input);
//g_token = new TokenInfo; //g_token = new TokenInfo;
...@@ -6145,6 +6196,9 @@ DocNode *validatingParseDoc(const char *fileName,int startLine, ...@@ -6145,6 +6196,9 @@ DocNode *validatingParseDoc(const char *fileName,int startLine,
// restore original parser state // restore original parser state
docParserPopContext(); docParserPopContext();
//printf("end validatingParseDoc(%s,%s)\n",ctx?ctx->name().data():"<none>",
// md?md->name().data():"<none>");
return root; return root;
} }
......
...@@ -500,12 +500,13 @@ class DocIndexEntry : public DocNode ...@@ -500,12 +500,13 @@ class DocIndexEntry : public DocNode
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/*! @brief Node representing a entry in the index. */ /*! @brief Node representing a copy of documentation block. */
class DocCopy : public CompAccept<DocCopy>, public DocNode class DocCopy : public CompAccept<DocCopy>, public DocNode
{ {
public: public:
DocCopy(DocNode *parent,const QString &link) DocCopy(DocNode *parent,const QString &link,bool copyBrief,bool copyDetails)
: m_parent(parent), m_link(link) { } : m_parent(parent), m_link(link),
m_copyBrief(copyBrief), m_copyDetails(copyDetails) { }
Kind kind() const { return Kind_IndexEntry; } Kind kind() const { return Kind_IndexEntry; }
QString link() const { return m_link; } QString link() const { return m_link; }
DocNode *parent() const { return m_parent; } DocNode *parent() const { return m_parent; }
...@@ -515,6 +516,8 @@ class DocCopy : public CompAccept<DocCopy>, public DocNode ...@@ -515,6 +516,8 @@ class DocCopy : public CompAccept<DocCopy>, public DocNode
private: private:
DocNode *m_parent; DocNode *m_parent;
QString m_link; QString m_link;
bool m_copyBrief;
bool m_copyDetails;
}; };
/*! @brief Node representing an auto List */ /*! @brief Node representing an auto List */
......
...@@ -43,7 +43,8 @@ ...@@ -43,7 +43,8 @@
#define MAP_CMD "cmap" #define MAP_CMD "cmap"
#define FONTNAME "FreeSans" //#define FONTNAME "FreeSans"
#define FONTNAME getDotFontName()
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -76,6 +77,13 @@ static const char *edgeStyleMap[] = ...@@ -76,6 +77,13 @@ static const char *edgeStyleMap[] =
"dashed" // usage "dashed" // usage
}; };
static QCString getDotFontName()
{
static QCString dotFontName = Config_getString("DOT_FONTNAME");
if (dotFontName.isEmpty()) dotFontName="FreeSans";
return dotFontName;
}
static void writeGraphHeader(QTextStream &t) static void writeGraphHeader(QTextStream &t)
{ {
t << "digraph G" << endl; t << "digraph G" << endl;
......
...@@ -874,7 +874,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name,int level) ...@@ -874,7 +874,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name,int level)
else if (nd==0 && cd==0) // scope is not known! else if (nd==0 && cd==0) // scope is not known!
{ {
// introduce bogus namespace // introduce bogus namespace
//printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data()); //printf("++ adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
nd=new NamespaceDef( nd=new NamespaceDef(
"[generated]",1,fullScope); "[generated]",1,fullScope);
...@@ -1409,6 +1409,7 @@ static void buildNamespaceList(EntryNav *rootNav) ...@@ -1409,6 +1409,7 @@ static void buildNamespaceList(EntryNav *rootNav)
tagName=rootNav->tagInfo()->tagName; tagName=rootNav->tagInfo()->tagName;
tagFileName=rootNav->tagInfo()->fileName; tagFileName=rootNav->tagInfo()->fileName;
} }
//printf("++ new namespace %d\n",fullName.data());
NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,fullName,tagName,tagFileName); NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,fullName,tagName,tagFileName);
nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); nd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
...@@ -1576,6 +1577,7 @@ static void findUsingDirectives(EntryNav *rootNav) ...@@ -1576,6 +1577,7 @@ static void findUsingDirectives(EntryNav *rootNav)
} }
else // unknown namespace, but add it anyway. else // unknown namespace, but add it anyway.
{ {
//printf("++ new unknown namespace %s\n",name.data());
NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,name); NamespaceDef *nd=new NamespaceDef(root->fileName,root->startLine,name);
nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); nd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
......
...@@ -4944,7 +4944,8 @@ QCString stripScope(const char *name) ...@@ -4944,7 +4944,8 @@ QCString stripScope(const char *name)
count=1; count=1;
//printf("pos < = %d\n",p); //printf("pos < = %d\n",p);
p--; p--;
while (p>=0) bool foundMatch=false;
while (p>=0 && !foundMatch)
{ {
c=result.at(p--); c=result.at(p--);
switch (c) switch (c)
...@@ -4962,6 +4963,7 @@ QCString stripScope(const char *name) ...@@ -4962,6 +4963,7 @@ QCString stripScope(const char *name)
} }
} }
count--; count--;
foundMatch = count==0;
break; break;
default: default:
//printf("c=%c count=%d\n",c,count); //printf("c=%c count=%d\n",c,count);
......
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