|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "namespacedef.h"
|
|
Packit |
1c1d7e |
#include "outputlist.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
#include "language.h"
|
|
Packit |
1c1d7e |
#include "classdef.h"
|
|
Packit |
1c1d7e |
#include "classlist.h"
|
|
Packit |
1c1d7e |
#include "memberlist.h"
|
|
Packit |
1c1d7e |
#include "doxygen.h"
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "docparser.h"
|
|
Packit |
1c1d7e |
#include "searchindex.h"
|
|
Packit |
1c1d7e |
#include "vhdldocgen.h"
|
|
Packit |
1c1d7e |
#include "layout.h"
|
|
Packit |
1c1d7e |
#include "membergroup.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//------------------------------------------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
NamespaceDef::NamespaceDef(const char *df,int dl,int dc,
|
|
Packit |
1c1d7e |
const char *name,const char *lref,
|
|
Packit |
1c1d7e |
const char *fName, const char*type,
|
|
Packit |
1c1d7e |
bool isPublished) :
|
|
Packit |
1c1d7e |
Definition(df,dl,dc,name)
|
|
Packit |
1c1d7e |
,m_isPublished(isPublished)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (lref)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
fileName = stripExtension(fName);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
fileName = convertNameToFile(stripExtension(fName));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
setFileName(name);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
classSDict = new ClassSDict(17);
|
|
Packit |
1c1d7e |
namespaceSDict = new NamespaceSDict(17);
|
|
Packit |
1c1d7e |
m_innerCompounds = new SDict<Definition>(17);
|
|
Packit |
1c1d7e |
usingDirList = 0;
|
|
Packit |
1c1d7e |
usingDeclList = 0;
|
|
Packit |
1c1d7e |
m_allMembersDict = 0;
|
|
Packit |
1c1d7e |
setReference(lref);
|
|
Packit |
1c1d7e |
memberGroupSDict = new MemberGroupSDict;
|
|
Packit |
1c1d7e |
memberGroupSDict->setAutoDelete(TRUE);
|
|
Packit |
1c1d7e |
visited=FALSE;
|
|
Packit |
1c1d7e |
m_subGrouping=Config_getBool(SUBGROUPING);
|
|
Packit |
1c1d7e |
if (type && !strcmp("module", type))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_type = MODULE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (type && !strcmp("constants", type))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_type = CONSTANT_GROUP;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (type && !strcmp("library", type))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_type = LIBRARY;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_type = NAMESPACE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
NamespaceDef::~NamespaceDef()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
delete classSDict;
|
|
Packit |
1c1d7e |
delete namespaceSDict;
|
|
Packit |
1c1d7e |
delete m_innerCompounds;
|
|
Packit |
1c1d7e |
delete usingDirList;
|
|
Packit |
1c1d7e |
delete usingDeclList;
|
|
Packit |
1c1d7e |
delete memberGroupSDict;
|
|
Packit |
1c1d7e |
delete m_allMembersDict;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::setFileName(const QCString &fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
fileName = "namespace"+fn;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
fileName = convertNameToFile("namespace"+fn);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::distributeMemberGroupDocumentation()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mg->distributeMemberGroupDocumentation();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::findSectionsInDocumentation()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docFindSections(documentation(),this,0,docFile());
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mg->findSectionsInDocumentation();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()&MemberListType_declarationLists)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ml->findSectionsInDocumentation();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::insertUsedFile(FileDef *fd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fd==0) return;
|
|
Packit |
1c1d7e |
if (files.find(fd)==-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(SORT_MEMBER_DOCS))
|
|
Packit |
1c1d7e |
files.inSort(fd);
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
files.append(fd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addInnerCompound(Definition *d)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_innerCompounds->append(d->localName(),d);
|
|
Packit |
1c1d7e |
if (d->definitionType()==Definition::TypeNamespace)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
insertNamespace((NamespaceDef *)d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (d->definitionType()==Definition::TypeClass)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
insertClass((ClassDef *)d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::insertClass(ClassDef *cd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (classSDict->find(cd->name())==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(SORT_BRIEF_DOCS))
|
|
Packit |
1c1d7e |
classSDict->inSort(cd->name(),cd);
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
classSDict->append(cd->name(),cd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::insertNamespace(NamespaceDef *nd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (namespaceSDict->find(nd->name())==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(SORT_MEMBER_DOCS))
|
|
Packit |
1c1d7e |
namespaceSDict->inSort(nd->name(),nd);
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
namespaceSDict->append(nd->name(),nd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addMembersToMemberGroup()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()&MemberListType_declarationLists)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
::addMembersToMemberGroup(ml,&memberGroupSDict,this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// add members inside sections to their groups
|
|
Packit |
1c1d7e |
if (memberGroupSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (mg->allMembersInSameSection() && m_subGrouping)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("----> addToDeclarationSection(%s)\n",mg->header().data());
|
|
Packit |
1c1d7e |
mg->addToDeclarationSection();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::insertMember(MemberDef *md)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (md->isHidden()) return;
|
|
Packit |
1c1d7e |
MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
if (allMemberList==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
allMemberList = new MemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
m_memberLists.append(allMemberList);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
allMemberList->append(md);
|
|
Packit |
1c1d7e |
if (m_allMembersDict==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_allMembersDict = new MemberSDict;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//printf("%s::m_allMembersDict->append(%s)\n",name().data(),md->localName().data());
|
|
Packit |
1c1d7e |
m_allMembersDict->append(md->localName(),md);
|
|
Packit |
1c1d7e |
//::addNamespaceMemberNameToIndex(md);
|
|
Packit |
1c1d7e |
//static bool sortBriefDocs=Config_getBool(SORT_BRIEF_DOCS);
|
|
Packit |
1c1d7e |
switch(md->memberType())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case MemberType_Variable:
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_decVarMembers,md);
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_docVarMembers,md);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case MemberType_Function:
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_decFuncMembers,md);
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_docFuncMembers,md);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case MemberType_Typedef:
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_decTypedefMembers,md);
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_docTypedefMembers,md);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case MemberType_Enumeration:
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_decEnumMembers,md);
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_docEnumMembers,md);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case MemberType_EnumValue:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case MemberType_Define:
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_decDefineMembers,md);
|
|
Packit |
1c1d7e |
addMemberToList(MemberListType_docDefineMembers,md);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
err("NamespaceDef::insertMembers(): "
|
|
Packit |
1c1d7e |
"member `%s' with class scope `%s' inserted in namespace scope `%s'!\n",
|
|
Packit |
1c1d7e |
md->name().data(),
|
|
Packit |
1c1d7e |
md->getClassDef() ? md->getClassDef()->name().data() : "",
|
|
Packit |
1c1d7e |
name().data());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::computeAnchors()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
if (allMemberList) setAnchors(allMemberList);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool NamespaceDef::hasDetailedDescription() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
|
|
Packit |
1c1d7e |
return ((!briefDescription().isEmpty() && repeatBrief) ||
|
|
Packit |
1c1d7e |
!documentation().isEmpty());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeTagFile(FTextStream &tagFile)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
tagFile << " <compound kind=\"namespace\">" << endl;
|
|
Packit |
1c1d7e |
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
|
|
Packit |
1c1d7e |
tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
|
|
Packit |
1c1d7e |
QCString idStr = id();
|
|
Packit |
1c1d7e |
if (!idStr.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QListIterator<LayoutDocEntry> eli(
|
|
Packit |
1c1d7e |
LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace));
|
|
Packit |
1c1d7e |
LayoutDocEntry *lde;
|
|
Packit |
1c1d7e |
for (eli.toFirst();(lde=eli.current());++eli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch (lde->kind())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceNestedNamespaces:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (namespaceSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<NamespaceDef>::Iterator ni(*namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (ni.toFirst();(nd=ni.current());++ni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceClasses:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (classSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<ClassDef>::Iterator ci(*classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd;
|
|
Packit |
1c1d7e |
for (ci.toFirst();(cd=ci.current());++ci)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
tagFile << " <class kind=\"" << cd->compoundTypeString()
|
|
Packit |
1c1d7e |
<< "\">" << convertToXML(cd->name()) << "</class>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDecl:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
|
|
Packit |
1c1d7e |
MemberList * ml = getMemberList(lmd->type);
|
|
Packit |
1c1d7e |
if (ml)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ml->writeTagFile(tagFile);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberGroups:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (memberGroupSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mg->writeTagFile(tagFile);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
writeDocAnchorsToTagFile(tagFile);
|
|
Packit |
1c1d7e |
tagFile << " </compound>" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeDetailedDescription(OutputList &ol,const QCString &title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (hasDetailedDescription())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disable(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
ol.writeRuler();
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
ol.writeAnchor(0,"details");
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
ol.startGroupHeader();
|
|
Packit |
1c1d7e |
ol.parseText(title);
|
|
Packit |
1c1d7e |
ol.endGroupHeader();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ol.startTextBlock();
|
|
Packit |
1c1d7e |
if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.generateDoc(briefFile(),briefLine(),this,0,briefDescription(),FALSE,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
|
|
Packit |
1c1d7e |
!documentation().isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disable(OutputGenerator::Man);
|
|
Packit |
1c1d7e |
ol.disable(OutputGenerator::RTF);
|
|
Packit |
1c1d7e |
//ol.newParagraph(); // FIXME:PARA
|
|
Packit |
1c1d7e |
ol.enableAll();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Man);
|
|
Packit |
1c1d7e |
ol.enable(OutputGenerator::Latex);
|
|
Packit |
1c1d7e |
ol.writeString("\n\n");
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!documentation().isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.endTextBlock();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeBriefDescription(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (hasBriefDescription())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
|
|
Packit |
1c1d7e |
briefDescription(),TRUE,FALSE,0,TRUE,FALSE);
|
|
Packit |
1c1d7e |
if (rootNode && !rootNode->isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.startParagraph();
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Man);
|
|
Packit |
1c1d7e |
ol.writeString(" - ");
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
ol.writeDoc(rootNode,this,0);
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disable(OutputGenerator::RTF);
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
ol.enable(OutputGenerator::RTF);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (hasDetailedDescription())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
ol.startTextLink(0,"details");
|
|
Packit |
1c1d7e |
ol.parseText(theTranslator->trMore());
|
|
Packit |
1c1d7e |
ol.endTextLink();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
ol.endParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
delete rootNode;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// FIXME:PARA
|
|
Packit |
1c1d7e |
//ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
//ol.disable(OutputGenerator::RTF);
|
|
Packit |
1c1d7e |
//ol.newParagraph();
|
|
Packit |
1c1d7e |
//ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.writeSynopsis();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::startMemberDeclarations(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.startMemberSections();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::endMemberDeclarations(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.endMemberSections();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::startMemberDocumentation(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(SEPARATE_MEMBER_PAGES))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.disable(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
Doxygen::suppressDocWarnings = TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::endMemberDocumentation(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(SEPARATE_MEMBER_PAGES))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.enable(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
Doxygen::suppressDocWarnings = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeClassDeclarations(OutputList &ol,const QCString &title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (classSDict) classSDict->writeDeclaration(ol,0,title,TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeInlineClasses(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (classSDict) classSDict->writeDocumentation(ol,this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeNamespaceDeclarations(OutputList &ol,const QCString &title,
|
|
Packit |
1c1d7e |
bool const isConstantGroup)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (namespaceSDict) namespaceSDict->writeDeclaration(ol,title,isConstantGroup,TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeMemberGroups(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
/* write user defined member groups */
|
|
Packit |
1c1d7e |
if (memberGroupSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
memberGroupSDict->sort();
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if ((!mg->allMembersInSameSection() || !m_subGrouping)
|
|
Packit |
1c1d7e |
&& mg->header()!="[NOHEADER]")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mg->writeDeclarations(ol,0,this,0,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeAuthorSection(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// write Author section (Man only)
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Man);
|
|
Packit |
1c1d7e |
ol.startGroupHeader();
|
|
Packit |
1c1d7e |
ol.parseText(theTranslator->trAuthor(TRUE,TRUE));
|
|
Packit |
1c1d7e |
ol.endGroupHeader();
|
|
Packit |
1c1d7e |
ol.parseText(theTranslator->trGeneratedAutomatically(Config_getString(PROJECT_NAME)));
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeSummaryLinks(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
QListIterator<LayoutDocEntry> eli(
|
|
Packit |
1c1d7e |
LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace));
|
|
Packit |
1c1d7e |
LayoutDocEntry *lde;
|
|
Packit |
1c1d7e |
bool first=TRUE;
|
|
Packit |
1c1d7e |
SrcLangExt lang = getLanguage();
|
|
Packit |
1c1d7e |
for (eli.toFirst();(lde=eli.current());++eli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if ((lde->kind()==LayoutDocEntry::NamespaceClasses && classSDict && classSDict->declVisible()) ||
|
|
Packit |
1c1d7e |
(lde->kind()==LayoutDocEntry::NamespaceNestedNamespaces && namespaceSDict && namespaceSDict->declVisible())
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
|
|
Packit |
1c1d7e |
QCString label = lde->kind()==LayoutDocEntry::NamespaceClasses ? "nested-classes" : "namespaces";
|
|
Packit |
1c1d7e |
ol.writeSummaryLink(0,label,ls->title(lang),first);
|
|
Packit |
1c1d7e |
first=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (lde->kind()== LayoutDocEntry::MemberDecl)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
|
|
Packit |
1c1d7e |
MemberList * ml = getMemberList(lmd->type);
|
|
Packit |
1c1d7e |
if (ml && ml->declVisible())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.writeSummaryLink(0,MemberList::listTypeAsString(ml->listType()),lmd->title(lang),first);
|
|
Packit |
1c1d7e |
first=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!first)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addNamespaceAttributes(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// UNO IDL constant groups may be published
|
|
Packit |
1c1d7e |
if (getLanguage()==SrcLangExt_IDL && isConstantGroup() && m_isPublished)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
ol.startLabels();
|
|
Packit |
1c1d7e |
ol.writeLabel("published",false);
|
|
Packit |
1c1d7e |
ol.endLabels();
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeDocumentation(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
|
|
Packit |
1c1d7e |
//static bool outputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
|
|
Packit |
1c1d7e |
//static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString pageTitle = title();
|
|
Packit |
1c1d7e |
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,!generateTreeView);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (!generateTreeView)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (getOuterScope()!=Doxygen::globalScope)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeNavigationPath(ol);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.endQuickIndices();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
startTitle(ol,getOutputFileBase(),this);
|
|
Packit |
1c1d7e |
ol.parseText(pageTitle);
|
|
Packit |
1c1d7e |
addGroupListToTitle(ol,this);
|
|
Packit |
1c1d7e |
addNamespaceAttributes(ol);
|
|
Packit |
1c1d7e |
endTitle(ol,getOutputFileBase(),displayName());
|
|
Packit |
1c1d7e |
ol.startContents();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (Doxygen::searchIndex)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE);
|
|
Packit |
1c1d7e |
Doxygen::searchIndex->addWord(localName(),TRUE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Doxygen::indexList->addIndexItem(this,0);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//---------------------------------------- start flexible part -------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
SrcLangExt lang = getLanguage();
|
|
Packit |
1c1d7e |
QListIterator<LayoutDocEntry> eli(
|
|
Packit |
1c1d7e |
LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace));
|
|
Packit |
1c1d7e |
LayoutDocEntry *lde;
|
|
Packit |
1c1d7e |
for (eli.toFirst();(lde=eli.current());++eli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch (lde->kind())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case LayoutDocEntry::BriefDesc:
|
|
Packit |
1c1d7e |
writeBriefDescription(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDeclStart:
|
|
Packit |
1c1d7e |
startMemberDeclarations(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceClasses:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
|
|
Packit |
1c1d7e |
writeClassDeclarations(ol,ls->title(lang));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceNestedNamespaces:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
|
|
Packit |
1c1d7e |
writeNamespaceDeclarations(ol,ls->title(lang),false);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceNestedConstantGroups:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
|
|
Packit |
1c1d7e |
writeNamespaceDeclarations(ol,ls->title(lang),true);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberGroups:
|
|
Packit |
1c1d7e |
writeMemberGroups(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDecl:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
|
|
Packit |
1c1d7e |
writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDeclEnd:
|
|
Packit |
1c1d7e |
endMemberDeclarations(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::DetailedDesc:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
|
|
Packit |
1c1d7e |
writeDetailedDescription(ol,ls->title(lang));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDefStart:
|
|
Packit |
1c1d7e |
startMemberDocumentation(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::NamespaceInlineClasses:
|
|
Packit |
1c1d7e |
writeInlineClasses(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDef:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
|
|
Packit |
1c1d7e |
writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::MemberDefEnd:
|
|
Packit |
1c1d7e |
endMemberDocumentation(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::AuthorSection:
|
|
Packit |
1c1d7e |
writeAuthorSection(ol);
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassIncludes:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassInheritanceGraph:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassNestedClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassCollaborationGraph:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassAllMembersLink:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassUsedFiles:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::ClassInlineClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileNamespaces:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileConstantGroups:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileIncludes:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileIncludeGraph:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileIncludedByGraph:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileSourceLink:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::FileInlineClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupInlineClasses:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupNamespaces:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupDirs:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupNestedGroups:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupFiles:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupGraph:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::GroupPageDocs:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::DirSubDirs:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::DirFiles:
|
|
Packit |
1c1d7e |
case LayoutDocEntry::DirGraph:
|
|
Packit |
1c1d7e |
err("Internal inconsistency: member %d should not be part of "
|
|
Packit |
1c1d7e |
"LayoutDocManager::Namespace entry list\n",lde->kind());
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//---------------------------------------- end flexible part -------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ol.endContents();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
endFileWithNavPath(this,ol);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (Config_getBool(SEPARATE_MEMBER_PAGES))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
if (allMemberList) allMemberList->sort();
|
|
Packit |
1c1d7e |
writeMemberPages(ol);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeMemberPages(OutputList &ol)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.pushGeneratorState();
|
|
Packit |
1c1d7e |
ol.disableAllBut(OutputGenerator::Html);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()&MemberListType_documentationLists)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ml->writeDocumentationPage(ol,displayName(),this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.popGeneratorState();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
if (allMemberList)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberListIterator mli(*allMemberList);
|
|
Packit |
1c1d7e |
MemberDef *md;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(md=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (md->getNamespaceDef()==this && md->isLinkable() && !md->isEnumValue())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.writeString(" ");
|
|
Packit |
1c1d7e |
if (md->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (md==currentMd) // selected item => highlight
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.writeString("
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.writeString("
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.writeString("href=\"");
|
|
Packit |
1c1d7e |
if (createSubDirs) ol.writeString("../../");
|
|
Packit |
1c1d7e |
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
|
|
Packit |
1c1d7e |
ol.writeString("\">");
|
|
Packit |
1c1d7e |
ol.writeString(convertToHtml(md->localName()));
|
|
Packit |
1c1d7e |
ol.writeString("");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.writeString("\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
ol.writeString(" \n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
int NamespaceDef::countMembers()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
|
|
Packit |
1c1d7e |
if (allMemberList) allMemberList->countDocMembers();
|
|
Packit |
1c1d7e |
return (allMemberList ? allMemberList->numDocMembers() : 0)+classSDict->count();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addUsingDirective(NamespaceDef *nd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (usingDirList==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
usingDirList = new NamespaceSDict;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (usingDirList->find(nd->qualifiedName())==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
usingDirList->append(nd->qualifiedName(),nd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//printf("%p: NamespaceDef::addUsingDirective: %s:%d\n",this,name().data(),usingDirList->count());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
NamespaceSDict *NamespaceDef::getUsedNamespaces() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("%p: NamespaceDef::getUsedNamespace: %s:%d\n",this,name().data(),usingDirList?usingDirList->count():0);
|
|
Packit |
1c1d7e |
return usingDirList;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addUsingDeclaration(Definition *d)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (usingDeclList==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
usingDeclList = new SDict<Definition>(17);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (usingDeclList->find(d->qualifiedName())==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
usingDeclList->append(d->qualifiedName(),d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString NamespaceDef::getOutputFileBase() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return fileName;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Definition *NamespaceDef::findInnerCompound(const char *n) const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (n==0) return 0;
|
|
Packit |
1c1d7e |
Definition *d = m_innerCompounds->find(n);
|
|
Packit |
1c1d7e |
if (d==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (usingDirList)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
d = usingDirList->find(n);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (d==0 && usingDeclList)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
d = usingDeclList->find(n);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return d;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addListReferences()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QList<ListItemInfo> *xrefItems = xrefListItems();
|
|
Packit |
1c1d7e |
addRefItem(xrefItems,
|
|
Packit |
1c1d7e |
qualifiedName(),
|
|
Packit |
1c1d7e |
getLanguage()==SrcLangExt_Fortran ?
|
|
Packit |
1c1d7e |
theTranslator->trModule(TRUE,TRUE) :
|
|
Packit |
1c1d7e |
theTranslator->trNamespace(TRUE,TRUE),
|
|
Packit |
1c1d7e |
getOutputFileBase(),displayName(),
|
|
Packit |
1c1d7e |
0,
|
|
Packit |
1c1d7e |
this
|
|
Packit |
1c1d7e |
);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
|
|
Packit |
1c1d7e |
MemberGroup *mg;
|
|
Packit |
1c1d7e |
for (;(mg=mgli.current());++mgli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
mg->addListReferences(this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()&MemberListType_documentationLists)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ml->addListReferences(this);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString NamespaceDef::displayName(bool includeScope) const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString result=includeScope ? name() : localName();
|
|
Packit |
1c1d7e |
SrcLangExt lang = getLanguage();
|
|
Packit |
1c1d7e |
QCString sep = getLanguageSpecificSeparator(lang);
|
|
Packit |
1c1d7e |
if (sep!="::")
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result = substitute(result,"::",sep);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
//printf("NamespaceDef::displayName() %s->%s lang=%d\n",name().data(),result.data(),lang);
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString NamespaceDef::localName() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString result=name();
|
|
Packit |
1c1d7e |
int i=result.findRev("::");
|
|
Packit |
1c1d7e |
if (i!=-1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
result=result.mid(i+2);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return result;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::combineUsingRelations()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (visited) return; // already done
|
|
Packit |
1c1d7e |
visited=TRUE;
|
|
Packit |
1c1d7e |
if (usingDirList)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*usingDirList);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current());++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
nd->combineUsingRelations();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current());++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// add used namespaces of namespace nd to this namespace
|
|
Packit |
1c1d7e |
if (nd->getUsedNamespaces())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator unli(*nd->getUsedNamespaces());
|
|
Packit |
1c1d7e |
NamespaceDef *und;
|
|
Packit |
1c1d7e |
for (unli.toFirst();(und=unli.current());++unli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("Adding namespace %s to the using list of %s\n",und->qualifiedName().data(),qualifiedName().data());
|
|
Packit |
1c1d7e |
addUsingDirective(und);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
// add used classes of namespace nd to this namespace
|
|
Packit |
1c1d7e |
if (nd->getUsedClasses())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<Definition>::Iterator cli(*nd->getUsedClasses());
|
|
Packit |
1c1d7e |
Definition *ucd;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(ucd=cli.current());++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("Adding class %s to the using list of %s\n",cd->qualifiedName().data(),qualifiedName().data());
|
|
Packit |
1c1d7e |
addUsingDeclaration(ucd);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool NamespaceSDict::declVisible() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<NamespaceDef>::Iterator ni(*this);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
for (ni.toFirst();(nd=ni.current());++ni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkable())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceSDict::writeDeclaration(OutputList &ol,const char *title,
|
|
Packit |
1c1d7e |
bool const isConstantGroup,bool localName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (count()==0) return; // no namespaces in the list
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (Config_getBool(OPTIMIZE_OUTPUT_VHDL)) return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
SDict<NamespaceDef>::Iterator ni(*this);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (ni.toFirst();(nd=ni.current()) && !found;++ni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkable())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SrcLangExt lang = nd->getLanguage();
|
|
Packit |
1c1d7e |
if (SrcLangExt_IDL==lang)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isConstantGroup == nd->isConstantGroup())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (!isConstantGroup) // ensure we only get extra section in IDL
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isConstantGroup())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Internal inconsistency: constant group but not IDL?\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!found) return; // no linkable namespaces in the list
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// write list of namespaces
|
|
Packit |
1c1d7e |
ol.startMemberHeader("namespaces");
|
|
Packit |
1c1d7e |
//bool javaOpt = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
|
|
Packit |
1c1d7e |
//bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
|
|
Packit |
1c1d7e |
ol.parseText(title);
|
|
Packit |
1c1d7e |
ol.endMemberHeader();
|
|
Packit |
1c1d7e |
ol.startMemberList();
|
|
Packit |
1c1d7e |
for (ni.toFirst();(nd=ni.current());++ni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkable() && nd->hasDocumentation())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SrcLangExt lang = nd->getLanguage();
|
|
Packit |
1c1d7e |
if (lang==SrcLangExt_IDL && (isConstantGroup != nd->isConstantGroup()))
|
|
Packit |
1c1d7e |
continue; // will be output in another pass, see layout_default.xml
|
|
Packit |
1c1d7e |
ol.startMemberDeclaration();
|
|
Packit |
1c1d7e |
ol.startMemberItem(nd->getOutputFileBase(),0);
|
|
Packit |
1c1d7e |
QCString ct = nd->compoundTypeString();
|
|
Packit |
1c1d7e |
ol.docify(ct);
|
|
Packit |
1c1d7e |
ol.docify(" ");
|
|
Packit |
1c1d7e |
ol.insertMemberAlign();
|
|
Packit |
1c1d7e |
QCString name;
|
|
Packit |
1c1d7e |
if (localName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
name = nd->localName();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
name = nd->displayName();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),0,name);
|
|
Packit |
1c1d7e |
ol.endMemberItem();
|
|
Packit |
1c1d7e |
if (!nd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ol.startMemberDescription(nd->getOutputFileBase());
|
|
Packit |
1c1d7e |
ol.generateDoc(nd->briefFile(),nd->briefLine(),nd,0,nd->briefDescription(),FALSE,FALSE,0,TRUE);
|
|
Packit |
1c1d7e |
ol.endMemberDescription();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.endMemberDeclaration(0,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
ol.endMemberList();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberList *NamespaceDef::createMemberList(MemberListType lt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_memberLists.setAutoDelete(TRUE);
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()==lt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return ml;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
// not found, create a new member list
|
|
Packit |
1c1d7e |
ml = new MemberList(lt);
|
|
Packit |
1c1d7e |
m_memberLists.append(ml);
|
|
Packit |
1c1d7e |
return ml;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::addMemberToList(MemberListType lt,MemberDef *md)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
|
|
Packit |
1c1d7e |
static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
|
|
Packit |
1c1d7e |
MemberList *ml = createMemberList(lt);
|
|
Packit |
1c1d7e |
ml->setNeedsSorting(
|
|
Packit |
1c1d7e |
((ml->listType()&MemberListType_declarationLists) && sortBriefDocs) ||
|
|
Packit |
1c1d7e |
((ml->listType()&MemberListType_documentationLists) && sortMemberDocs));
|
|
Packit |
1c1d7e |
ml->append(md);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
if (ml->needsSorting())
|
|
Packit |
1c1d7e |
ml->inSort(md);
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
ml->append(md);
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (ml->listType()&MemberListType_declarationLists) md->setSectionList(this,ml);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::sortMemberLists()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (classSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
classSDict->sort();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (namespaceSDict)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
namespaceSDict->sort();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberList *NamespaceDef::getMemberList(MemberListType lt) const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<MemberList> mli(m_memberLists);
|
|
Packit |
1c1d7e |
MemberList *ml;
|
|
Packit |
1c1d7e |
for (mli.toFirst();(ml=mli.current());++mli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (ml->listType()==lt)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return ml;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return 0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList * ml = getMemberList(lt);
|
|
Packit |
1c1d7e |
if (ml) ml->writeDeclarations(ol,0,this,0,0,title,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void NamespaceDef::writeMemberDocumentation(OutputList &ol,MemberListType lt,const QCString &title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberList * ml = getMemberList(lt);
|
|
Packit |
1c1d7e |
if (ml) ml->writeDocumentation(ol,displayName(),this,title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool NamespaceDef::isLinkableInProject() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
int i = name().findRev("::");
|
|
Packit |
1c1d7e |
if (i==-1) i=0; else i+=2;
|
|
Packit |
1c1d7e |
static bool extractAnonNs = Config_getBool(EXTRACT_ANON_NSPACES);
|
|
Packit |
1c1d7e |
if (extractAnonNs && // extract anonymous ns
|
|
Packit |
1c1d7e |
name().mid(i,20)=="anonymous_namespace{" // correct prefix
|
|
Packit |
1c1d7e |
) // not disabled by config
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return !name().isEmpty() && name().at(i)!='@' && // not anonymous
|
|
Packit |
1c1d7e |
(hasDocumentation() || getLanguage()==SrcLangExt_CSharp) && // documented
|
|
Packit |
1c1d7e |
!isReference() && // not an external reference
|
|
Packit |
1c1d7e |
!isHidden() && // not hidden
|
|
Packit |
1c1d7e |
!isArtificial(); // or artificial
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool NamespaceDef::isLinkable() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return isLinkableInProject() || isReference();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
MemberDef * NamespaceDef::getMemberByName(const QCString &n) const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
MemberDef *md = 0;
|
|
Packit |
1c1d7e |
if (m_allMembersDict && !n.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
md = m_allMembersDict->find(n);
|
|
Packit |
1c1d7e |
//printf("%s::m_allMembersDict->find(%s)=%p\n",name().data(),n.data(),md);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return md;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString NamespaceDef::title() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SrcLangExt lang = getLanguage();
|
|
Packit |
1c1d7e |
QCString pageTitle;
|
|
Packit |
1c1d7e |
if (lang==SrcLangExt_Java)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
pageTitle = theTranslator->trPackage(displayName());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (lang==SrcLangExt_Fortran)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
pageTitle = theTranslator->trModuleReference(displayName());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (lang==SrcLangExt_IDL)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
pageTitle = isConstantGroup()
|
|
Packit |
1c1d7e |
? theTranslator->trConstantGroupReference(displayName())
|
|
Packit |
1c1d7e |
: theTranslator->trModuleReference(displayName());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
pageTitle = theTranslator->trNamespaceReference(displayName());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return pageTitle;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString NamespaceDef::compoundTypeString() const
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SrcLangExt lang = getLanguage();
|
|
Packit |
1c1d7e |
if (lang==SrcLangExt_Java)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "package";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if(lang==SrcLangExt_CSharp)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "namespace";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (lang==SrcLangExt_Fortran)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "module";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (lang==SrcLangExt_IDL)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isModule())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "module";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (isConstantGroup())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "constants";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (isLibrary())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
return "library";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err_full(getDefFileName(),getDefLine(),"Internal inconsistency: namespace in IDL not module, library or constant group");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
return "";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|