Commit 1688ab7e authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.6.0

parent 8c6ca308
DOXYGEN Version 1.5.9-20090814 DOXYGEN Version 1.6.0
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 (14 August 2009) Dimitri van Heesch (20 August 2009)
DOXYGEN Version 1.5.9_20090814 DOXYGEN Version 1.6.0
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) (14 August 2009) Dimitri van Heesch (dimitri@stack.nl) (20 August 2009)
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
# shell script to configure doxygen # shell script to configure doxygen
doxygen_version_major=1 doxygen_version_major=1
doxygen_version_minor=5 doxygen_version_minor=6
doxygen_version_revision=9 doxygen_version_revision=0
#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=20090814 doxygen_version_mmn=NO
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<type>void</type> <type>void</type>
<name>example</name> <name>example</name>
<anchorfile>class_test.html</anchorfile> <anchorfile>class_test.html</anchorfile>
<anchor>47b775f65718978f1ffcd96376f8ecfa</anchor> <anchor>a47b775f65718978f1ffcd96376f8ecfa</anchor>
<arglist>()</arglist> <arglist>()</arglist>
</member> </member>
</compound> </compound>
......
...@@ -3089,8 +3089,10 @@ void ClassDef::addListReferences() ...@@ -3089,8 +3089,10 @@ void ClassDef::addListReferences()
{ {
LockingPtr< QList<ListItemInfo> > xrefItems = xrefListItems(); LockingPtr< QList<ListItemInfo> > xrefItems = xrefListItems();
addRefItem(xrefItems.pointer(), addRefItem(xrefItems.pointer(),
fortranOpt?theTranslator->trType(TRUE,TRUE):theTranslator->trClass(TRUE,TRUE), fortranOpt?theTranslator->trType(TRUE,TRUE):
getOutputFileBase(),displayName() theTranslator->trClass(TRUE,TRUE),
getOutputFileBase(),
displayName()
); );
} }
if (m_impl->memberGroupSDict) if (m_impl->memberGroupSDict)
......
...@@ -117,7 +117,7 @@ StringDict Doxygen::namespaceAliasDict(257); // all namespace aliases ...@@ -117,7 +117,7 @@ StringDict Doxygen::namespaceAliasDict(257); // all namespace aliases
StringDict Doxygen::tagDestinationDict(257); // all tag locations StringDict Doxygen::tagDestinationDict(257); // all tag locations
QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be expanded QDict<void> Doxygen::expandAsDefinedDict(257); // all macros that should be expanded
QIntDict<MemberGroupInfo> Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading QIntDict<MemberGroupInfo> Doxygen::memGrpInfoDict(1009); // dictionary of the member groups heading
PageDef *Doxygen::mainPage = 0; PageDef *Doxygen::mainPage = 0;
bool Doxygen::insideMainPage = FALSE; // are we generating docs for the main page? bool Doxygen::insideMainPage = FALSE; // are we generating docs for the main page?
QTextStream Doxygen::tagFile; QTextStream Doxygen::tagFile;
NamespaceDef *Doxygen::globalScope = 0; NamespaceDef *Doxygen::globalScope = 0;
...@@ -2791,7 +2791,6 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2791,7 +2791,6 @@ static void buildFunctionList(EntryNav *rootNav)
QCString scope=rootNav->parent()->name(); //stripAnonymousNamespaceScope(root->parent->name); QCString scope=rootNav->parent()->name(); //stripAnonymousNamespaceScope(root->parent->name);
if (!rname.isEmpty() && scope.find('@')==-1) if (!rname.isEmpty() && scope.find('@')==-1)
{ {
ClassDef *cd=0; ClassDef *cd=0;
// check if this function's parent is a class // check if this function's parent is a class
scope=stripTemplateSpecifiersFromScope(scope,FALSE); scope=stripTemplateSpecifiersFromScope(scope,FALSE);
...@@ -2832,7 +2831,6 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2832,7 +2831,6 @@ static void buildFunctionList(EntryNav *rootNav)
{ {
isMember=memIndex<ts || memIndex>te; isMember=memIndex<ts || memIndex>te;
} }
} }
static QRegExp re("([a-z_A-Z0-9: ]*[ &*]+[ ]*"); static QRegExp re("([a-z_A-Z0-9: ]*[ &*]+[ ]*");
...@@ -2903,7 +2901,7 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2903,7 +2901,7 @@ static void buildFunctionList(EntryNav *rootNav)
sameNumTemplateArgs = FALSE; sameNumTemplateArgs = FALSE;
} }
} }
if ( if (
matchArguments2(md->getOuterScope(),mfd,mdAl.pointer(), matchArguments2(md->getOuterScope(),mfd,mdAl.pointer(),
rnd ? rnd : Doxygen::globalScope,rfd,root->argList, rnd ? rnd : Doxygen::globalScope,rfd,root->argList,
FALSE) && FALSE) &&
...@@ -2921,15 +2919,15 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2921,15 +2919,15 @@ static void buildFunctionList(EntryNav *rootNav)
found=(mnd && rnd && nsName==rnsName) || // members are in the same namespace found=(mnd && rnd && nsName==rnsName) || // members are in the same namespace
((mnd==0 && rnd==0 && mfd!=0 && // no external reference and ((mnd==0 && rnd==0 && mfd!=0 && // no external reference and
mfd->absFilePath()==root->fileName // prototype in the same file mfd->absFilePath()==root->fileName // prototype in the same file
) )
); );
// otherwise, allow a duplicate global member with the same argument list // otherwise, allow a duplicate global member with the same argument list
if (!found && gd && gd==md->getGroupDef()) if (!found && gd && gd==md->getGroupDef())
{ {
// member is already in the group, so we don't want to add it again. // member is already in the group, so we don't want to add it again.
found=TRUE; found=TRUE;
} }
//printf("combining function with prototype found=%d in namespace %s\n", //printf("combining function with prototype found=%d in namespace %s\n",
// found,nsName.data()); // found,nsName.data());
...@@ -2956,6 +2954,8 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2956,6 +2954,8 @@ static void buildFunctionList(EntryNav *rootNav)
md->setDocumentation(root->doc,root->docFile,root->docLine); md->setDocumentation(root->doc,root->docFile,root->docLine);
md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine);
md->setDocsForDefinition(!root->proto); md->setDocsForDefinition(!root->proto);
md->setBodySegment(root->bodyLine,root->endBodyLine);
md->setBodyDef(rfd);
if (md->briefDescription().isEmpty() && !root->brief.isEmpty()) if (md->briefDescription().isEmpty() && !root->brief.isEmpty())
{ {
...@@ -2982,6 +2982,13 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2982,6 +2982,13 @@ static void buildFunctionList(EntryNav *rootNav)
{ {
//printf("both members are grouped\n"); //printf("both members are grouped\n");
} }
// if md is a declaration and root is the corresponding
// definition, then turn md into a definition.
if (md->isPrototype() && !root->proto)
{
md->setPrototype(FALSE);
}
} }
} }
} }
...@@ -2991,7 +2998,7 @@ static void buildFunctionList(EntryNav *rootNav) ...@@ -2991,7 +2998,7 @@ static void buildFunctionList(EntryNav *rootNav)
Debug::print(Debug::Functions,0," --> new function %s found!\n",rname.data()); Debug::print(Debug::Functions,0," --> new function %s found!\n",rname.data());
//printf("New function type=`%s' name=`%s' args=`%s' bodyLine=%d\n", //printf("New function type=`%s' name=`%s' args=`%s' bodyLine=%d\n",
// root->type.data(),rname.data(),root->args.data(),root->bodyLine); // root->type.data(),rname.data(),root->args.data(),root->bodyLine);
// new global function // new global function
ArgumentList *tArgList = root->tArgLists ? root->tArgLists->last() : 0; ArgumentList *tArgList = root->tArgLists ? root->tArgLists->last() : 0;
QCString name=removeRedundantWhiteSpace(rname); QCString name=removeRedundantWhiteSpace(rname);
...@@ -3270,7 +3277,7 @@ static void transferArgumentDocumentation(ArgumentList *decAl,ArgumentList *defA ...@@ -3270,7 +3277,7 @@ static void transferArgumentDocumentation(ArgumentList *decAl,ArgumentList *defA
static void transferFunctionDocumentation() static void transferFunctionDocumentation()
{ {
//printf("transferFunctionDocumentation()\n"); //printf("---- transferFunctionDocumentation()\n");
// find matching function declaration and definitions. // find matching function declaration and definitions.
MemberNameSDict::Iterator mnli(*Doxygen::functionNameSDict); MemberNameSDict::Iterator mnli(*Doxygen::functionNameSDict);
...@@ -3283,6 +3290,7 @@ static void transferFunctionDocumentation() ...@@ -3283,6 +3290,7 @@ static void transferFunctionDocumentation()
/* find a matching function declaration and definition for this function */ /* find a matching function declaration and definition for this function */
for (;(mdec=mni1.current());++mni1) for (;(mdec=mni1.current());++mni1)
{ {
//printf("mdec=%s isPrototype()=%d\n",mdec->name().data(),mdec->isPrototype());
if (mdec->isPrototype() || if (mdec->isPrototype() ||
(mdec->isVariable() && mdec->isExternal()) (mdec->isVariable() && mdec->isExternal())
) )
...@@ -4660,6 +4668,18 @@ static void addListReferences() ...@@ -4660,6 +4668,18 @@ static void addListReferences()
} }
} }
//----------------------------------------------------------------------
static void generateXRefPages()
{
QDictIterator<RefList> di(*Doxygen::xrefLists);
RefList *rl;
for (di.toFirst();(rl=di.current());++di)
{
rl->generatePage();
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// Copy the documentation in entry `root' to member definition `md' and // Copy the documentation in entry `root' to member definition `md' and
// set the function declaration of the member to `funcDecl'. If the boolean // set the function declaration of the member to `funcDecl'. If the boolean
...@@ -4695,7 +4715,7 @@ static void addMemberDocs(EntryNav *rootNav, ...@@ -4695,7 +4715,7 @@ static void addMemberDocs(EntryNav *rootNav,
// TODO determine scope based on root not md // TODO determine scope based on root not md
Definition *rscope = md->getOuterScope(); Definition *rscope = md->getOuterScope();
LockingPtr<ArgumentList> mdAl = md->argumentList(); LockingPtr<ArgumentList> mdAl = md->argumentList();
if (al) if (al)
{ {
...@@ -4729,42 +4749,12 @@ static void addMemberDocs(EntryNav *rootNav, ...@@ -4729,42 +4749,12 @@ static void addMemberDocs(EntryNav *rootNav,
} }
else else
{ {
//printf("Adding docs md->docs=`%s' root->docs=`%s'!\n", //printf("overwrite!\n");
// md->documentation().data(),root->doc.data()); md->setDocumentation(root->doc,root->docFile,root->docLine);
// documentation outside a compound overrides the documentation inside it md->setDocsForDefinition(!root->proto);
#if 0
if ( /* !md->isStatic() && !root->stat && do not replace doc of a static */
(
md->documentation().isEmpty() || /* no docs yet */
(rootNav->parent()->name().isEmpty() && /* or overwrite prototype docs */
!root->proto && md->isPrototype() /* with member definition docs */
)
) && !root->doc.isEmpty()
)
#endif
{
//printf("overwrite!\n");
md->setDocumentation(root->doc,root->docFile,root->docLine);
md->setDocsForDefinition(!root->proto);
}
//printf("Adding brief md->brief=`%s' root->brief=`%s'!\n", //printf("overwrite!\n");
// md->briefDescription().data(),root->brief.data()); md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
// brief descriptions inside a compound override the documentation
// outside it
#if 0
if ( /* !md->isStatic() && !root->stat && do not replace doc of static */
(
md->briefDescription().isEmpty() || /* no docs yet */
!rootNav->parent()->name().isEmpty() /* member of a class */
) && !root->brief.isEmpty()
)
#endif
{
//printf("overwrite!\n");
md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
}
if ( if (
(md->inbodyDocumentation().isEmpty() || (md->inbodyDocumentation().isEmpty() ||
...@@ -4785,14 +4775,12 @@ static void addMemberDocs(EntryNav *rootNav, ...@@ -4785,14 +4775,12 @@ static void addMemberDocs(EntryNav *rootNav,
//printf("setInitializer\n"); //printf("setInitializer\n");
md->setInitializer(root->initializer); md->setInitializer(root->initializer);
} }
md->setMaxInitLines(root->initLines); md->setMaxInitLines(root->initLines);
if (rfd) if (rfd)
{ {
if ((md->getStartBodyLine()==-1 && root->bodyLine!=-1) if ((md->getStartBodyLine()==-1 && root->bodyLine!=-1)
// || (md->isVariable() && !root->explicitExternal)
) )
{ {
//printf("Setting new body segment [%d,%d]\n",root->bodyLine,root->endBodyLine); //printf("Setting new body segment [%d,%d]\n",root->bodyLine,root->endBodyLine);
...@@ -4904,7 +4892,7 @@ static bool findGlobalMember(EntryNav *rootNav, ...@@ -4904,7 +4892,7 @@ static bool findGlobalMember(EntryNav *rootNav,
NamespaceDef *rnd = 0; NamespaceDef *rnd = 0;
if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceSDict->find(namespaceName); if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceSDict->find(namespaceName);
LockingPtr<ArgumentList> mdAl = md->argumentList(); LockingPtr<ArgumentList> mdAl = md->argumentList();
bool matching= bool matching=
(mdAl==0 && root->argList->count()==0) || (mdAl==0 && root->argList->count()==0) ||
...@@ -4972,7 +4960,10 @@ static bool findGlobalMember(EntryNav *rootNav, ...@@ -4972,7 +4960,10 @@ static bool findGlobalMember(EntryNav *rootNav,
{ {
if (root->type!="friend class" && if (root->type!="friend class" &&
root->type!="friend struct" && root->type!="friend struct" &&
root->type!="friend union") root->type!="friend union" &&
(!Config_getBool("TYPEDEF_HIDES_STRUCT") ||
root->type.find("typedef ")==-1)
)
{ {
warn(root->fileName,root->startLine, warn(root->fileName,root->startLine,
"Warning: documented function `%s' was not declared or defined.",decl "Warning: documented function `%s' was not declared or defined.",decl
...@@ -6582,27 +6573,30 @@ static void addEnumValuesToEnums(EntryNav *rootNav) ...@@ -6582,27 +6573,30 @@ static void addEnumValuesToEnums(EntryNav *rootNav)
// enum // enum
e->loadEntry(g_storage); e->loadEntry(g_storage);
Entry *root = e->entry(); Entry *root = e->entry();
MemberDef *fmd=new MemberDef( if (md->qualifiedName()==rootNav->name()) // enum value scope matches that of the enum
root->fileName,root->startLine,
root->type,root->name,root->args,0,
Public, Normal,root->stat,Member,
MemberDef::EnumValue,0,0);
if (md->getClassDef()) fmd->setMemberClass(md->getClassDef());
else if (md->getNamespaceDef()) fmd->setNamespace(md->getNamespaceDef());
else if (md->getFileDef()) fmd->setFileDef(md->getFileDef());
fmd->setOuterScope(md->getOuterScope());
fmd->setTagInfo(e->tagInfo());
fmd->setDocumentation(root->doc,root->docFile,root->docLine);
fmd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
fmd->addSectionsToDefinition(root->anchors);
fmd->setInitializer(root->initializer);
fmd->setMaxInitLines(root->initLines);
fmd->setMemberGroupId(root->mGrpId);
fmd->setExplicitExternal(root->explicitExternal);
if (fmd)
{ {
md->insertEnumField(fmd); MemberDef *fmd=new MemberDef(
fmd->setEnumScope(md); root->fileName,root->startLine,
root->type,root->name,root->args,0,
Public, Normal,root->stat,Member,
MemberDef::EnumValue,0,0);
if (md->getClassDef()) fmd->setMemberClass(md->getClassDef());
else if (md->getNamespaceDef()) fmd->setNamespace(md->getNamespaceDef());
else if (md->getFileDef()) fmd->setFileDef(md->getFileDef());
fmd->setOuterScope(md->getOuterScope());
fmd->setTagInfo(e->tagInfo());
fmd->setDocumentation(root->doc,root->docFile,root->docLine);
fmd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
fmd->addSectionsToDefinition(root->anchors);
fmd->setInitializer(root->initializer);
fmd->setMaxInitLines(root->initLines);
fmd->setMemberGroupId(root->mGrpId);
fmd->setExplicitExternal(root->explicitExternal);
if (fmd)
{
md->insertEnumField(fmd);
fmd->setEnumScope(md);
}
} }
e->releaseEntry(); e->releaseEntry();
} }
...@@ -10190,8 +10184,9 @@ void parseInput() ...@@ -10190,8 +10184,9 @@ void parseInput()
msg("Adding source references...\n"); msg("Adding source references...\n");
addSourceReferences(); addSourceReferences();
msg("Adding todo/test/bug list items...\n"); msg("Adding xrefitems...\n");
addListReferences(); addListReferences();
generateXRefPages();
if (Config_getBool("SHOW_DIRECTORIES") && Config_getBool("DIRECTORY_GRAPH")) if (Config_getBool("SHOW_DIRECTORIES") && Config_getBool("DIRECTORY_GRAPH"))
{ {
......
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
* *
*/ */
#include <stdio.h>
#include "reflist.h" #include "reflist.h"
#include "util.h"
/*! Create a list of items that are cross referenced with documentation blocks /*! Create a list of items that are cross referenced with documentation blocks
* @param listName String representing the name of the list. * @param listName String representing the name of the list.
...@@ -27,7 +29,8 @@ RefList::RefList(const char *listName, ...@@ -27,7 +29,8 @@ RefList::RefList(const char *listName,
const char *pageTitle, const char *pageTitle,
const char *secTitle const char *secTitle
) )
{ {
m_itemList = 0;
m_dict = 0; m_dict = 0;
m_dictIterator = 0; m_dictIterator = 0;
m_id = 0; m_id = 0;
...@@ -37,10 +40,10 @@ RefList::RefList(const char *listName, ...@@ -37,10 +40,10 @@ RefList::RefList(const char *listName,
} }
/*! Destroy the todo list. Currently not called! */ /*! Destroy the todo list. Currently not called! */
RefList::~RefList() RefList::~RefList()
{ {
delete m_dictIterator; delete m_dictIterator;
delete m_dict; delete m_dict;
} }
/*! Adds a new item to the list. /*! Adds a new item to the list.
...@@ -50,7 +53,7 @@ int RefList::addRefItem() ...@@ -50,7 +53,7 @@ int RefList::addRefItem()
{ {
if (m_dict==0) if (m_dict==0)
{ {
m_dict = new QIntDict<RefItem>(1009); m_dict = new QIntDict<RefItem>(1009);
m_dict->setAutoDelete(TRUE); m_dict->setAutoDelete(TRUE);
m_dictIterator = new QIntDictIterator<RefItem>(*m_dict); m_dictIterator = new QIntDictIterator<RefItem>(*m_dict);
} }
...@@ -69,7 +72,7 @@ RefItem *RefList::getRefItem(int itemId) ...@@ -69,7 +72,7 @@ RefItem *RefList::getRefItem(int itemId)
return m_dict ? m_dict->find(itemId) : 0; return m_dict ? m_dict->find(itemId) : 0;
} }
/*! Returns the first item in the dictionary or 0 if /*! Returns the first item in the dictionary or 0 if
* non is available. * non is available.
* Items are not sorted. * Items are not sorted.
*/ */
...@@ -103,3 +106,56 @@ QCString RefList::sectionTitle() const ...@@ -103,3 +106,56 @@ QCString RefList::sectionTitle() const
return m_secTitle; return m_secTitle;
} }
void RefList::insertIntoList(const char *key,RefItem *item)
{
if (m_itemList==0)
{
m_itemList = new SortedRefItems(1009);
}
RefItem *ri = m_itemList->find(key);
if (ri==0)
{
m_itemList->append(key,item);
}
else // item already added to the list (i.e. multiple item for the same
// entity)
{
if (ri!=item)
{
ri->extraItems.append(item);
}
}
}
void RefList::generatePage()
{
if (m_itemList==0) return;
m_itemList->sort();
SDict<RefItem>::Iterator it(*m_itemList);
RefItem *item;
for (it.toFirst();(item=it.current());++it)
{
QCString doc;
doc = "\\anchor ";
doc += item->listAnchor;
doc += " <dl><dt>";
doc += item->prefix;
doc += " \\_internalref ";
doc += item->name;
doc += " \"";
doc += item->title;
doc += "\"";
if (!item->args.isEmpty()) doc += item->args;
doc += "</dt>\n<dd>";
doc += item->text;
QListIterator<RefItem> li(item->extraItems);
RefItem *extraItem;
for (li.toFirst();(extraItem=li.current());++li)
{
doc += "<p>" + extraItem->text;
}
doc += "</dd></dl>\n";
addRelatedPage(m_listName,m_pageTitle,doc,0,m_listName,1,0,0,0);
}
}
...@@ -21,15 +21,36 @@ ...@@ -21,15 +21,36 @@
#include "qtbc.h" #include "qtbc.h"
#include <qintdict.h> #include <qintdict.h>
//#include "outputgen.h" #include <qlist.h>
#include "sortdict.h"
/*! This struct represents an item in the list of references. */ /*! This struct represents an item in the list of references. */
struct RefItem struct RefItem
{ {
RefItem() : written(FALSE) {} RefItem() /*: written(FALSE)*/ {}
QCString text; //!< text of the item. QCString text; //!< text of the item.
QCString listAnchor; //!< anchor in the list QCString listAnchor; //!< anchor in the list
bool written;
QCString prefix; //!< type prefix for the name
QCString name; //!< name of the entity containing the reference
QCString title; //!< display name of the entity
QCString args; //!< optional arguments for the entity (if function)
//bool written;
QList<RefItem> extraItems; //!< more items belonging to the same entity
};
/*! List of items sorted by title */
class SortedRefItems : public SDict<RefItem>
{
public:
SortedRefItems(int size=17) : SDict<RefItem>(size) {}
virtual ~SortedRefItems() {}
int compareItems(GCI item1,GCI item2)
{
RefItem *r1 = (RefItem*)item1;
RefItem *r2 = (RefItem*)item2;
return stricmp(r1->title,r2->title);
}
}; };
/*! @brief List of cross-referenced items /*! @brief List of cross-referenced items
...@@ -57,12 +78,15 @@ class RefList ...@@ -57,12 +78,15 @@ class RefList
const char *pageTitle,const char *secTitle const char *pageTitle,const char *secTitle
); );
~RefList(); ~RefList();
void insertIntoList(const char *key,RefItem *item);
void generatePage();
private: private:
int m_id; int m_id;
QCString m_listName; QCString m_listName;
QCString m_pageTitle; QCString m_pageTitle;
QCString m_secTitle; QCString m_secTitle;
SortedRefItems *m_itemList;
QIntDict<RefItem> *m_dict; QIntDict<RefItem> *m_dict;
QIntDictIterator<RefItem> *m_dictIterator; QIntDictIterator<RefItem> *m_dictIterator;
}; };
......
/*---------------- Search Box */ /*---------------- Search Box */
#MSearchBox { #MSearchBox {
padding: 0px; padding: 0px;
margin: 0px; margin: 0px;
border: none; border: none;
...@@ -18,24 +18,14 @@ ...@@ -18,24 +18,14 @@
background-color: #FFFFFF; background-color: #FFFFFF;
font-style: normal; font-style: normal;
cursor: text; cursor: text;
padding: 0px 1px; padding: 1px 1px;
margin: 0px 6px 0px 0px; margin: 0px 6px 0px 0px;
border: none; border: none;
outline: none; outline: none;
vertical-align: middle; vertical-align: middle;
} }
#MSearchBox.MSearchBoxInactive:hover #MSearchField {
background-color: #FFFFFF;
padding: 0px 1px;
margin: 0px 6px 0px 0px;
border: none;
}
.MSearchBoxActive #MSearchField { .MSearchBoxActive #MSearchField {
background-color: #FFFFFF;
color: #000000; color: #000000;
padding: 0px 1px;
margin: 0px 6px 0px 0px;
border: none;
} }
#MSearchSelect { #MSearchSelect {
float : none; float : none;
......
"/*---------------- Search Box */\n" "/*---------------- Search Box */\n"
"\n" "\n"
"#MSearchBox { \n" "#MSearchBox {\n"
" padding: 0px;\n" " padding: 0px;\n"
" margin: 0px;\n" " margin: 0px;\n"
" border: none;\n" " border: none;\n"
...@@ -18,24 +18,14 @@ ...@@ -18,24 +18,14 @@
" background-color: #FFFFFF;\n" " background-color: #FFFFFF;\n"
" font-style: normal;\n" " font-style: normal;\n"
" cursor: text;\n" " cursor: text;\n"
" padding: 0px 1px;\n" " padding: 1px 1px;\n"
" margin: 0px 6px 0px 0px;\n" " margin: 0px 6px 0px 0px;\n"
" border: none;\n" " border: none;\n"
" outline: none;\n" " outline: none;\n"
" vertical-align: middle;\n" " vertical-align: middle;\n"
"}\n" "}\n"
"#MSearchBox.MSearchBoxInactive:hover #MSearchField {\n"
" background-color: #FFFFFF;\n"
" padding: 0px 1px;\n"
" margin: 0px 6px 0px 0px;\n"
" border: none;\n"
"}\n"
".MSearchBoxActive #MSearchField {\n" ".MSearchBoxActive #MSearchField {\n"
" background-color: #FFFFFF;\n"
" color: #000000;\n" " color: #000000;\n"
" padding: 0px 1px;\n"
" margin: 0px 6px 0px 0px;\n"
" border: none;\n"
"}\n" "}\n"
"#MSearchSelect {\n" "#MSearchSelect {\n"
" float : none;\n" " float : none;\n"
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
Translator class (by the local maintainer) when the localized Translator class (by the local maintainer) when the localized
translator is made up-to-date again. translator is made up-to-date again.
*/ */
class TranslatorKorean : public TranslatorAdapter_1_6_0 class TranslatorKorean : public Translator
{ {
protected: protected:
friend class TranslatorAdapterBase; friend class TranslatorAdapterBase;
...@@ -1794,6 +1794,40 @@ class TranslatorKorean : public TranslatorAdapter_1_6_0 ...@@ -1794,6 +1794,40 @@ class TranslatorKorean : public TranslatorAdapter_1_6_0
return "타입 한정자들"; return "타입 한정자들";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.6.0 (mainly for the new search engine)
//////////////////////////////////////////////////////////////////////////
/*! directory relation for \a name */
virtual QCString trDirRelation(const char *name)
{
return QCString(name)+" 관계";
}
/*! Loading message shown when loading search results */
virtual QCString trLoading()
{
return "로딩중...";
}
/*! Label used for search results in the global namespace */
virtual QCString trGlobalNamespace()
{
return "전역 이름공간";
}
/*! Message shown while searching */
virtual QCString trSearching()
{
return "검색중...";
}
/*! Text shown when no search results are found */
virtual QCString trNoMatches()
{
return "일치하는것 없음";
}
}; };
#endif #endif
...@@ -5822,8 +5822,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle, ...@@ -5822,8 +5822,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void addRefItem(const QList<ListItemInfo> *sli, void addRefItem(const QList<ListItemInfo> *sli,
const char *prefix, const char *prefix, const char *name,const char *title,const char *args)
const char *name,const char *title,const char *args)
{ {
//printf("addRefItem(sli=%p,prefix=%s,name=%s,title=%s,args=%s)\n",sli,prefix,name,title,args); //printf("addRefItem(sli=%p,prefix=%s,name=%s,title=%s,args=%s)\n",sli,prefix,name,title,args);
if (sli) if (sli)
...@@ -5833,22 +5832,35 @@ void addRefItem(const QList<ListItemInfo> *sli, ...@@ -5833,22 +5832,35 @@ void addRefItem(const QList<ListItemInfo> *sli,
for (slii.toFirst();(lii=slii.current());++slii) for (slii.toFirst();(lii=slii.current());++slii)
{ {
RefList *refList = Doxygen::xrefLists->find(lii->type); RefList *refList = Doxygen::xrefLists->find(lii->type);
if (refList && if (refList
#if 0
&&
( (
// either not a built-in list or the list is enabled // either not a built-in list or the list is enabled
(lii->type!="todo" || Config_getBool("GENERATE_TODOLIST")) && (lii->type!="todo" || Config_getBool("GENERATE_TODOLIST")) &&
(lii->type!="test" || Config_getBool("GENERATE_TESTLIST")) && (lii->type!="test" || Config_getBool("GENERATE_TESTLIST")) &&
(lii->type!="bug" || Config_getBool("GENERATE_BUGLIST")) && (lii->type!="bug" || Config_getBool("GENERATE_BUGLIST")) &&
(lii->type!="deprecated" || Config_getBool("GENERATE_DEPRECATEDLIST")) (lii->type!="deprecated" || Config_getBool("GENERATE_DEPRECATEDLIST"))
) )
#endif
) )
{ {
RefItem *item = refList->getRefItem(lii->itemId); RefItem *item = refList->getRefItem(lii->itemId);
ASSERT(item!=0); ASSERT(item!=0);
printf("anchor=%s written=%d\n",item->listAnchor.data(),item->written);
item->prefix = prefix;
item->name = name;
item->title = title;
item->args = args;
refList->insertIntoList(title,item);
#if 0
//printf("anchor=%s written=%d\n",item->listAnchor.data(),item->written);
//if (item->written) return; //if (item->written) return;
QCString doc(1000); QCString doc;
doc = "\\anchor "; doc = "\\anchor ";
doc += item->listAnchor; doc += item->listAnchor;
doc += " <dl><dt>"; doc += " <dl><dt>";
...@@ -5864,6 +5876,7 @@ void addRefItem(const QList<ListItemInfo> *sli, ...@@ -5864,6 +5876,7 @@ void addRefItem(const QList<ListItemInfo> *sli,
doc += "</dd></dl>\n"; doc += "</dd></dl>\n";
addRelatedPage(refList->listName(),refList->pageTitle(),doc,0,refList->listName(),1,0,0,0); addRelatedPage(refList->listName(),refList->pageTitle(),doc,0,refList->listName(),1,0,0,0);
//item->written=TRUE; //item->written=TRUE;
#endif
} }
} }
} }
......
...@@ -337,7 +337,7 @@ static void writeWord(const char *word,const char* curr_class=0,bool classLink=F ...@@ -337,7 +337,7 @@ static void writeWord(const char *word,const char* curr_class=0,bool classLink=F
static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE) static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE)
{ {
if (text==0) return; if (text==0) return;
printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
const char *p=text,*sp=p; const char *p=text,*sp=p;
char c; char c;
bool done=FALSE; bool done=FALSE;
......
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