summaryrefslogtreecommitdiffstats
path: root/src/dot.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2000-02-20 17:34:13 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2000-02-20 17:34:13 (GMT)
commita81ce4743212122ae050e5efbc4bfda92e6a664e (patch)
treef122ed1db8000e070cab7f8ad4c4af87b89adbe5 /src/dot.cpp
parentddbc18f5fb336d3a83521404620b6734b13e5610 (diff)
downloadDoxygen-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.cpp119
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);
}