summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp181
1 files changed, 178 insertions, 3 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 81c7916..f1fa9c6 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -40,7 +40,7 @@
#include "example.h"
#include "version.h"
#include "groupdef.h"
-//#include "xml.h"
+#include "reflist.h"
#include "page.h"
#ifndef _WIN32
@@ -2557,7 +2557,7 @@ bool generateRef(OutputDocInterface &od,const char *scName,
}
return TRUE;
}
- else if (inSeeBlock && !nameStr.isEmpty() && (gd=Doxygen::groupDict[nameStr]))
+ else if (inSeeBlock && !nameStr.isEmpty() && (gd=Doxygen::groupSDict[nameStr]))
{ // group link
od.startTextLink(gd->getOutputFileBase(),0);
if (rt) // explict link text
@@ -2636,7 +2636,7 @@ bool generateLink(OutputDocInterface &od,const char *clName,
}
return TRUE;
}
- else if ((gd=Doxygen::groupDict[linkRef])) // link to a group
+ else if ((gd=Doxygen::groupSDict[linkRef])) // link to a group
{
od.startTextLink(gd->getOutputFileBase(),0);
if (lt)
@@ -3431,3 +3431,178 @@ found:
return p;
}
+//----------------------------------------------------------------------------
+
+void addRelatedPage(const char *name,const QCString &ptitle,
+ const QCString &doc,QList<QCString> *anchors,
+ const char *fileName,int startLine,
+ int todoId,int testId,int bugId,GroupDef *gd=0,
+ TagInfo *tagInfo=0
+ )
+{
+ PageInfo *pi=0;
+ if ((pi=Doxygen::pageSDict->find(name)) && !tagInfo)
+ {
+ // append documentation block to the page.
+ pi->doc+="\n\n"+doc;
+ }
+ else // new page
+ {
+ QCString baseName=name;
+ if (baseName.right(4)==".tex")
+ baseName=baseName.left(baseName.length()-4);
+ else if (baseName.right(5)==".html")
+ baseName=baseName.left(baseName.length()-5);
+
+ QCString title=ptitle.stripWhiteSpace();
+ pi=new PageInfo(fileName,startLine,baseName,doc,title);
+ pi->todoId=todoId;
+ pi->testId=testId;
+ pi->bugId=bugId;
+ if (tagInfo)
+ {
+ pi->reference = tagInfo->tagName;
+ }
+
+ QCString pageName;
+ if (Config_getBool("CASE_SENSE_NAMES"))
+ pageName=pi->name.copy();
+ else
+ pageName=pi->name.lower();
+ //setFileNameForSections(anchors,pageName,pi);
+ pi->fileName = pageName;
+ pi->addSections(anchors);
+
+ Doxygen::pageSDict->append(baseName,pi);
+
+ if (gd) gd->addPage(pi);
+
+ if (!pi->title.isEmpty())
+ {
+ //outputList->writeTitle(pi->name,pi->title);
+
+ // a page name is a label as well!
+ SectionInfo *si=new SectionInfo(
+ pi->name,pi->title,SectionInfo::Section,pi->reference);
+ if (gd)
+ {
+ si->fileName=gd->getOutputFileBase();
+ }
+ else if (pi->inGroup)
+ {
+ si->fileName=pi->inGroup->getOutputFileBase().copy();
+ }
+ else
+ {
+ si->fileName=pageName;
+ }
+ //printf("si->label=`%s' si->definition=%s si->fileName=`%s'\n",
+ // si->label.data(),si->definition?si->definition->name().data():"<none>",
+ // si->fileName.data());
+ //printf(" SectionInfo: sec=%p sec->fileName=%s\n",si,si->fileName.data());
+ //printf("Adding section info %s\n",pi->name.data());
+ Doxygen::sectionDict.insert(pageName,si);
+ }
+ }
+}
+
+//----------------------------------------------------------------------------
+
+void addRefItem(int todoId,int testId,int bugId,const char *prefix,
+ const char *name,const char *title,const char *args=0)
+{
+
+ //printf("addRefItem(%s) todoId=%d testId=%d bugId=%d\n",name,todoId,testId,bugId);
+
+ ////////////////////////////////////////////////////////////
+ // add item to the todo list
+ ////////////////////////////////////////////////////////////
+
+ if (todoId>0 && Config_getBool("GENERATE_TODOLIST"))
+ {
+ RefItem *item = todoList.getRefItem(todoId);
+ ASSERT(item!=0);
+ if (item->written) return;
+
+ QCString doc;
+ doc += "<dl><dt>\\anchor ";
+ doc += item->listAnchor;
+ doc += "\n";
+ doc += prefix;
+ doc += " \\_internalref ";
+ doc += name;
+ doc += " \"";
+ doc += title;
+ doc += "\"";
+ if (args) doc += args;
+ doc += "</dt>\n<dd>";
+ doc += item->text;
+ doc += "</dd></dl>\n";
+ //printf("Todo page: %s\n",doc.data());
+ addRelatedPage("todo",theTranslator->trTodoList(),doc,0,"generated",1,0,0,0);
+
+ item->written=TRUE;
+ }
+
+ ////////////////////////////////////////////////////////////
+ // add item to the test list
+ ////////////////////////////////////////////////////////////
+
+ if (testId>0 && Config_getBool("GENERATE_TESTLIST"))
+ {
+ RefItem *item = testList.getRefItem(testId);
+ ASSERT(item!=0);
+ if (item->written) return;
+
+ QCString doc;
+ doc += "<dl><dt>\\anchor ";
+ doc += item->listAnchor;
+ doc += "\n";
+ doc += prefix;
+ doc += " \\_internalref ";
+ doc += name;
+ doc += " \"";
+ doc += title;
+ doc += "\"";
+ if (args) doc += args;
+ doc += "</dt>\n<dd>";
+ doc += item->text;
+ doc += "</dd></dl>\n";
+ //printf("Test page: %s\n",doc.data());
+ addRelatedPage("test",theTranslator->trTestList(),doc,0,"generated",1,0,0,0);
+
+ item->written=TRUE;
+ }
+
+ ////////////////////////////////////////////////////////////
+ // add item to the bug list
+ ////////////////////////////////////////////////////////////
+
+ if (bugId>0 && Config_getBool("GENERATE_BUGLIST"))
+ {
+ RefItem *item = bugList.getRefItem(bugId);
+ ASSERT(item!=0);
+ if (item->written) return;
+
+ QCString doc;
+ doc += "<dl><dt>\\anchor ";
+ doc += item->listAnchor;
+ doc += "\n";
+ doc += prefix;
+ doc += " \\_internalref ";
+ doc += name;
+ doc += " \"";
+ doc += title;
+ doc += "\"";
+ if (args) doc += args;
+ doc += "</dt>\n<dd>";
+ doc += item->text;
+ doc += "</dd></dl>\n";
+ //printf("Bug page: %s\n",doc.data());
+ addRelatedPage("bug",theTranslator->trBugList(),doc,0,"generated",1,0,0,0);
+
+ item->written=TRUE;
+ }
+}
+
+