diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2000-02-20 17:34:13 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2000-02-20 17:34:13 (GMT) |
commit | a81ce4743212122ae050e5efbc4bfda92e6a664e (patch) | |
tree | f122ed1db8000e070cab7f8ad4c4af87b89adbe5 /src/dot.cpp | |
parent | ddbc18f5fb336d3a83521404620b6734b13e5610 (diff) | |
download | Doxygen-a81ce4743212122ae050e5efbc4bfda92e6a664e.zip Doxygen-a81ce4743212122ae050e5efbc4bfda92e6a664e.tar.gz Doxygen-a81ce4743212122ae050e5efbc4bfda92e6a664e.tar.bz2 |
+ The graphical class hierarchy was not properly generated when
template classes were used.
+ Template specialization could not be documented using the
\class command. This is now fixed. Example:
/*!
* \class T<A,int>
* My template specialization of template T.
*/
+ Fixed a bug when parsing M$-IDL code, containing
helpstring("bla") attributes. The attributes of a method are no longer
shown in the documentation (the attributes of method arguments
still visible however).
+ Improved the search algorithm that tries to connect classes with their
base classes. It should now (hopefully) work correct in all cases
where nested classes and/or namespaces are used.
+ Fixed a scanner problem that could cause doxygen to get
confused after parsing struct initializers.
+ the DOTFONTPATH environment variable is now automatically set
for Windows. This should make any "missing doxfont.ttf"
messages disappear.
+ the extra LaTeX packages specified with EXTRA_PACKAGES can now
also be used when generating formulas for HTML.
+ The documentation of a parameters that is part of a member definition,
is now used in the documentation as well.
+ Fixed a HTML output bug in the class/file group-pages.
+ Links to example files generated with \link ... \endlink where not
correct.
+ made the bullet list generation more robust. A space is now required
after the - sign. A list can now start a paragraph.
+ the configure script now detects whether or not dot is installed.
+ The VERBATIM_HEADERS option didn't have any effect any more.
It should now works again as advertised.
+ The IGNORE_PREFIX option can now also deal with a list of prefixes.
+ @verbatim ... @endverbatim blocks did not work.
+ new option SHOW_INCLUDE_FILES, which can be set to NO to turn of the
list of include files that is generated for each documented file.
+ new option STRIP_CODE_COMMENTS, which can be set to NO to keep any
special comment blocks in the generated code fragments.
Diffstat (limited to 'src/dot.cpp')
-rw-r--r-- | src/dot.cpp | 119 |
1 files changed, 52 insertions, 67 deletions
diff --git a/src/dot.cpp b/src/dot.cpp index 56488bc..a0dca9b 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -259,10 +259,6 @@ void DotNode::deleteNode() // do not access cn after this! } } - //printf("delete node %s from memory (c=%d,p=%d)\n", - // m_label.data(), - // m_children?m_children->count():0, - // m_parents?m_parents->count():0); delete this; } @@ -413,73 +409,62 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) QDir::setCurrent(d.absPath()); QDir thisDir; - //QFile ind("inherit.html"); - //if (ind.open(IO_WriteOnly)) - //{ - // QTextStream ti(&ind); - //ti << "<html><head><title>Class Hierarchy</title></head>" << endl; - //ti << "<body bgcolor=#ffffff>" << endl; - out << "<table border=0 cellspacing=10 cellpadding=0>" << endl; + out << "<table border=0 cellspacing=10 cellpadding=0>" << endl; - QListIterator<DotNode> dnli(*m_rootSubgraphs); - DotNode *n; - for (dnli.toFirst();(n=dnli.current());++dnli) + QListIterator<DotNode> dnli(*m_rootSubgraphs); + DotNode *n; + for (dnli.toFirst();(n=dnli.current());++dnli) + { + QCString baseName; + QCString diskName=n->m_url.copy(); + int i=diskName.find('$'); /* should not return -1 */ + if (i!=-1) diskName=diskName.right(diskName.length()-i-1); + baseName.sprintf("inherit_graph_%s",diskName.data()); + QCString dotName=baseName+".dot"; + QCString gifName=baseName+".gif"; + QCString mapName=baseName+".map"; + + QFile f(dotName); + if (!f.open(IO_WriteOnly)) return; + QTextStream t(&f); + t << "digraph inheritance" << endl; + t << "{" << endl; + t << " rankdir=LR;" << endl; + QListIterator<DotNode> dnli2(*m_rootNodes); + DotNode *node; + for (;(node=dnli2.current());++dnli2) { - //printf("Node %s color=%d (c=%d,p=%d)\n", - // n->m_label.data(),n->m_subgraphId, - // n->m_children?n->m_children->count():0, - // n->m_parents?n->m_parents->count():0); - - QCString baseName; - baseName.sprintf("inherit_graph_%s",n->m_label.data()); - QCString dotName=baseName+".dot"; - QCString gifName=baseName+".gif"; - QCString mapName=baseName+".map"; - - QFile f(dotName); - if (!f.open(IO_WriteOnly)) return; - QTextStream t(&f); - t << "digraph inheritance" << endl; - t << "{" << endl; - t << " rankdir=LR;" << endl; - QListIterator<DotNode> dnli2(*m_rootNodes); - DotNode *node; - for (;(node=dnli2.current());++dnli2) - { - if (node->m_subgraphId==n->m_subgraphId) node->write(t); - } - t << "}" << endl; - f.close(); + if (node->m_subgraphId==n->m_subgraphId) node->write(t); + } + t << "}" << endl; + f.close(); - QCString dotCmd; - dotCmd.sprintf("dot -Tgif %s -o %s",dotName.data(),gifName.data()); - //printf("Running: dot -Tgif %s -o %s\n",dotName.data(),gifName.data()); - if (system(dotCmd)!=0) - { - err("Problems running dot. Check your installation!\n"); - out << "</table>" << endl; - return; - } - dotCmd.sprintf("dot -Timap %s -o %s",dotName.data(),mapName.data()); - //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); - if (system(dotCmd)!=0) - { - err("Problems running dot. Check your installation!\n"); - out << "</table>" << endl; - return; - } - out << "<tr><td><img src=\"" << gifName << "\" border=\"0\" usemap=\"#" - << n->m_label << "_map\"></td></tr>" << endl; - out << "<map name=\"" << n->m_label << "_map\">" << endl; - convertMapFile(out,mapName); - out << "</map>" << endl; - thisDir.remove(dotName); - thisDir.remove(mapName); + QCString dotCmd; + dotCmd.sprintf("dot -Tgif %s -o %s",dotName.data(),gifName.data()); + //printf("Running: dot -Tgif %s -o %s\n",dotName.data(),gifName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; } - out << "</table>" << endl; - // ti << "</body></html>" << endl; - // ind.close(); - //} + dotCmd.sprintf("dot -Timap %s -o %s",dotName.data(),mapName.data()); + //printf("Running: dot -Timap %s -o %s\n",dotName.data(),mapName.data()); + if (system(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + out << "</table>" << endl; + return; + } + out << "<tr><td><img src=\"" << gifName << "\" border=\"0\" usemap=\"#" + << n->m_label << "_map\"></td></tr>" << endl; + out << "<map name=\"" << n->m_label << "_map\">" << endl; + convertMapFile(out,mapName); + out << "</map>" << endl; + thisDir.remove(dotName); + thisDir.remove(mapName); + } + out << "</table>" << endl; QDir::setCurrent(oldDir); } |