summaryrefslogtreecommitdiffstats
path: root/src/htmldocvisitor.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2009-10-27 20:10:16 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2009-10-27 20:10:16 (GMT)
commit0c751ba9f9a73ad649bf64cef4c9fdb82743b2f6 (patch)
tree7b31e0941321a116a730c80e26726da9202178c3 /src/htmldocvisitor.cpp
parent1042ef3a191bd0f399f1a2a20fe259c14fe6faf9 (diff)
downloadDoxygen-0c751ba9f9a73ad649bf64cef4c9fdb82743b2f6.zip
Doxygen-0c751ba9f9a73ad649bf64cef4c9fdb82743b2f6.tar.gz
Doxygen-0c751ba9f9a73ad649bf64cef4c9fdb82743b2f6.tar.bz2
Release-1.6.1-20091027
Diffstat (limited to 'src/htmldocvisitor.cpp')
-rw-r--r--src/htmldocvisitor.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index fa25951..49a0de2 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -34,6 +34,34 @@
static const int NUM_HTML_LIST_TYPES = 4;
static const char types[][NUM_HTML_LIST_TYPES] = {"1", "a", "i", "A"};
+static QCString convertIndexWordToAnchor(const QString &word)
+{
+ static char hex[] = "0123456789abcdef";
+ uint i;
+ QCString result;
+ for (i=0;i<word.length();i++)
+ {
+ int c = word.at(i);
+ if (isId(c))
+ {
+ result+=c;
+ }
+ else if (isspace(c))
+ {
+ result+="_";
+ }
+ else
+ {
+ char cs[3];
+ cs[0]=hex[c>>4];
+ cs[1]=hex[c&0xf];
+ cs[2]=0;
+ result+=cs;
+ }
+ }
+ return result;
+}
+
static bool mustBeOutsideParagraph(DocNode *n)
{
switch (n->kind())
@@ -293,7 +321,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
case DocVerbatim::XmlOnly:
/* nothing */
break;
-
+
case DocVerbatim::Dot:
{
static int dotindex = 1;
@@ -470,8 +498,20 @@ void HtmlDocVisitor::visit(DocFormula *f)
}
}
-void HtmlDocVisitor::visit(DocIndexEntry *)
+void HtmlDocVisitor::visit(DocIndexEntry *e)
{
+ QCString anchor = convertIndexWordToAnchor(e->entry());
+ if (e->member())
+ {
+ anchor.prepend(e->member()->anchor()+"_");
+ }
+ m_t << "<a name=\"" << anchor << "\"></a>";
+ //printf("*** DocIndexEntry: word='%s' scope='%s' member='%s'\n",
+ // e->entry().data(),
+ // e->scope() ? e->scope()->name().data() : "<null>",
+ // e->member() ? e->member()->name().data() : "<null>"
+ // );
+ Doxygen::indexList.addIndexItem(e->scope(),e->member(),anchor,e->entry());
}
void HtmlDocVisitor::visit(DocSimpleSectSep *)