My Project
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ClassDef Class Reference

#include <classdef.h>

Inheritance diagram for ClassDef:
Definition DefinitionIntf

Public Types

enum  CompoundType {
  Class, Struct, Union, Interface,
  Protocol, Category, Exception, Service,
  Singleton
}
 

Public Member Functions

 ClassDef (const char *fileName, int startLine, int startColumn, const char *name, CompoundType ct, const char *ref=0, const char *fName=0, bool isSymbol=TRUE, bool isJavaEnum=FALSE)
 
 ~ClassDef ()
 
DefType definitionType () const
 
QCString getOutputFileBase () const
 
QCString getInstanceOutputFileBase () const
 
QCString getSourceFileBase () const
 
QCString getReference () const
 
bool isReference () const
 
bool isLocal () const
 
ClassSDictgetClassSDict ()
 
bool hasDocumentation () const
 
bool hasDetailedDescription () const
 
QCString collaborationGraphFileName () const
 
QCString inheritanceGraphFileName () const
 
QCString displayName (bool includeScope=TRUE) const
 
CompoundType compoundType () const
 
QCString compoundTypeString () const
 
BaseClassListbaseClasses () const
 
BaseClassListsubClasses () const
 
MemberNameInfoSDictmemberNameInfoSDict () const
 
Protection protection () const
 
bool isLinkableInProject () const
 
bool isLinkable () const
 
bool isVisibleInHierarchy ()
 
bool visibleInParentsDeclList () const
 
ArgumentListtemplateArguments () const
 
NamespaceDefgetNamespaceDef () const
 
FileDefgetFileDef () const
 
MemberDefgetMemberByName (const QCString &) const
 
bool isBaseClass (ClassDef *bcd, bool followInstances, int level=0)
 
bool isSubClass (ClassDef *bcd, int level=0)
 
bool isAccessibleMember (MemberDef *md)
 
QDict< ClassDef > * getTemplateInstances () const
 
ClassDeftemplateMaster () const
 
bool isTemplate () const
 
IncludeInfoincludeInfo () const
 
UsesClassDictusedImplementationClasses () const
 
UsesClassDictusedByImplementationClasses () const
 
UsesClassDictusedInterfaceClasses () const
 
ConstraintClassDicttemplateTypeConstraints () const
 
bool isTemplateArgument () const
 
virtual DefinitionfindInnerCompound (const char *name)
 
void getTemplateParameterLists (QList< ArgumentList > &lists) const
 
QCString qualifiedNameWithTemplateParameters (QList< ArgumentList > *actualParams=0, int *actualParamIndex=0) const
 
bool isAbstract () const
 
bool isObjectiveC () const
 
bool isCSharp () const
 
bool isFinal () const
 
bool isSealed () const
 
bool isPublished () const
 
bool isExtension () const
 
bool isForwardDeclared () const
 
ClassDefcategoryOf () const
 
QCString className () const
 
MemberListgetMemberList (MemberListType lt)
 
const QList< MemberList > & getMemberLists () const
 
MemberGroupSDictgetMemberGroupSDict () const
 
QDict< int > * getTemplateBaseClassNames () const
 
ClassDefgetVariableInstance (const char *templSpec)
 
bool isUsedOnly () const
 
QCString anchor () const
 
bool isEmbeddedInOuterScope () const
 
bool isSimple () const
 
const ClassListtaggedInnerClasses () const
 
ClassDeftagLessReference () const
 
MemberDefisSmartPointer () const
 
bool isJavaEnum () const
 
bool isGeneric () const
 
bool isAnonymous () const
 
const ClassSDictinnerClasses () const
 
QCString title () const
 
QCString generatedFromFiles () const
 
const FileListusedFiles () const
 
const ArgumentListtypeConstraints () const
 
const ExampleSDictexampleList () const
 
bool hasExamples () const
 
QCString getMemberListFileName () const
 
bool subGrouping () const
 
void insertBaseClass (ClassDef *, const char *name, Protection p, Specifier s, const char *t=0)
 
void insertSubClass (ClassDef *, Protection p, Specifier s, const char *t=0)
 
void setIncludeFile (FileDef *fd, const char *incName, bool local, bool force)
 
void insertMember (MemberDef *)
 
void insertUsedFile (FileDef *)
 
bool addExample (const char *anchor, const char *name, const char *file)
 
void mergeCategory (ClassDef *category)
 
void setNamespace (NamespaceDef *nd)
 
void setFileDef (FileDef *fd)
 
void setSubGrouping (bool enabled)
 
void setProtection (Protection p)
 
void setGroupDefForAllMembers (GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)
 
void addInnerCompound (Definition *d)
 
ClassDefinsertTemplateInstance (const QCString &fileName, int startLine, int startColumn, const QCString &templSpec, bool &freshInstance)
 
void addUsedClass (ClassDef *cd, const char *accessName, Protection prot)
 
void addUsedByClass (ClassDef *cd, const char *accessName, Protection prot)
 
void setIsStatic (bool b)
 
void setCompoundType (CompoundType t)
 
void setClassName (const char *name)
 
void setClassSpecifier (uint64 spec)
 
void setTemplateArguments (ArgumentList *al)
 
void setTemplateBaseClassNames (QDict< int > *templateNames)
 
void setTemplateMaster (ClassDef *tm)
 
void setTypeConstraints (ArgumentList *al)
 
void addMembersToTemplateInstance (ClassDef *cd, const char *templSpec)
 
void makeTemplateArgument (bool b=TRUE)
 
void setCategoryOf (ClassDef *cd)
 
void setUsedOnly (bool b)
 
void addTaggedInnerClass (ClassDef *cd)
 
void setTagLessReference (ClassDef *cd)
 
void setName (const char *name)
 
void findSectionsInDocumentation ()
 
void addMembersToMemberGroup ()
 
void addListReferences ()
 
void addTypeConstraints ()
 
void computeAnchors ()
 
void mergeMembers ()
 
void sortMemberLists ()
 
void distributeMemberGroupDocumentation ()
 
void writeDocumentation (OutputList &ol)
 
void writeDocumentationForInnerClasses (OutputList &ol)
 
void writeMemberPages (OutputList &ol)
 
void writeMemberList (OutputList &ol)
 
void writeDeclaration (OutputList &ol, MemberDef *md, bool inGroup, ClassDef *inheritedFrom, const char *inheritId)
 
void writeQuickMemberLinks (OutputList &ol, MemberDef *md) const
 
void writeSummaryLinks (OutputList &ol)
 
void reclassifyMember (MemberDef *md, MemberType t)
 
void writeInlineDocumentation (OutputList &ol)
 
void writeDeclarationLink (OutputList &ol, bool &found, const char *header, bool localNames)
 
void removeMemberFromLists (MemberDef *md)
 
void addGroupedInheritedMembers (OutputList &ol, MemberListType lt, ClassDef *inheritedFrom, const QCString &inheritId)
 
int countMembersIncludingGrouped (MemberListType lt, ClassDef *inheritedFrom, bool additional)
 
int countInheritanceNodes ()
 
void writeTagFile (FTextStream &)
 
- Public Member Functions inherited from Definition
 Definition (const char *defFileName, int defLine, int defColumn, const char *name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
 
virtual ~Definition ()
 
const QCString & name () const
 
QCString localName () const
 
virtual QCString qualifiedName () const
 
QCString symbolName () const
 
virtual QCString getSourceAnchor () const
 
virtual QCString documentation () const
 
int docLine () const
 
QCString docFile () const
 
virtual QCString briefDescription (bool abbreviate=FALSE) const
 
QCString briefDescriptionAsTooltip () const
 
int briefLine () const
 
QCString inbodyDocumentation () const
 
QCString inbodyFile () const
 
int inbodyLine () const
 
QCString briefFile () const
 
QCString getDefFileName () const
 
QCString getDefFileExtension () const
 
int getDefLine () const
 
int getDefColumn () const
 
virtual bool hasUserDocumentation () const
 
virtual bool isVisibleInProject () const
 
virtual bool isVisible () const
 
bool isHidden () const
 
bool isArtificial () const
 
QCString externalReference (const QCString &relPath) const
 
int getStartBodyLine () const
 
int getEndBodyLine () const
 
FileDefgetBodyDef () const
 
SrcLangExt getLanguage () const
 
GroupListpartOfGroups () const
 
bool isLinkableViaGroup () const
 
QList< ListItemInfo > * xrefListItems () const
 
virtual DefinitiongetOuterScope () const
 
MemberSDictgetReferencesMembers () const
 
MemberSDictgetReferencedByMembers () const
 
bool hasSections () const
 
bool hasSources () const
 
bool hasBriefDescription () const
 
QCString id () const
 
void setId (const char *name)
 
virtual void setDocumentation (const char *d, const char *docFile, int docLine, bool stripWhiteSpace=TRUE)
 
virtual void setBriefDescription (const char *b, const char *briefFile, int briefLine)
 
virtual void setInbodyDocumentation (const char *d, const char *docFile, int docLine)
 
void setReference (const char *r)
 
void addSectionsToDefinition (QList< SectionInfo > *anchorList)
 
void setBodySegment (int bls, int ble)
 
void setBodyDef (FileDef *fd)
 
void addSourceReferencedBy (MemberDef *d)
 
void addSourceReferences (MemberDef *d)
 
void setRefItems (const QList< ListItemInfo > *sli)
 
void mergeRefItems (Definition *d)
 
virtual void setOuterScope (Definition *d)
 
virtual void setHidden (bool b)
 
void setArtificial (bool b)
 
void setLanguage (SrcLangExt lang)
 
void writeSourceDef (OutputList &ol, const char *scopeName)
 
void writeInlineCode (OutputList &ol, const char *scopeName)
 
void writeSourceRefs (OutputList &ol, const char *scopeName)
 
void writeSourceReffedBy (OutputList &ol, const char *scopeName)
 
void makePartOfGroup (GroupDef *gd)
 
void writeNavigationPath (OutputList &ol) const
 
QCString navigationPathAsString () const
 
QCString pathFragment () const
 
void writeDocAnchorsToTagFile (FTextStream &)
 
void setLocalName (const QCString name)
 
void addSectionsToIndex ()
 
void writeToc (OutputList &ol)
 
void setCookie (Cookie *cookie)
 
Cookiecookie () const
 
- Public Member Functions inherited from DefinitionIntf
 DefinitionIntf ()
 
virtual ~DefinitionIntf ()
 

Public Attributes

bool visited
 

Protected Member Functions

void addUsedInterfaceClasses (MemberDef *md, const char *typeStr)
 
bool hasNonReferenceSuperClass ()
 
void showUsedFiles (OutputList &ol)
 
- Protected Member Functions inherited from Definition
 Definition (const Definition &d)
 

Private Member Functions

void writeDocumentationContents (OutputList &ol, const QCString &pageTitle)
 
void internalInsertMember (MemberDef *md, Protection prot, bool addToAllList)
 
void addMemberToList (MemberListType lt, MemberDef *md, bool isBrief)
 
MemberListcreateMemberList (MemberListType lt)
 
void writeInheritedMemberDeclarations (OutputList &ol, MemberListType lt, int lt2, const QCString &title, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
 
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const QCString &title, const char *subTitle=0, bool showInline=FALSE, ClassDef *inheritedFrom=0, int lt2=-1, bool invert=FALSE, bool showAlways=FALSE, QPtrDict< void > *visitedClasses=0)
 
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE)
 
void writeSimpleMemberDocumentation (OutputList &ol, MemberListType lt)
 
void writePlainMemberDeclaration (OutputList &ol, MemberListType lt, bool inGroup, ClassDef *inheritedFrom, const char *inheritId)
 
void writeBriefDescription (OutputList &ol, bool exampleFlag)
 
void writeDetailedDescription (OutputList &ol, const QCString &pageType, bool exampleFlag, const QCString &title, const QCString &anchor=QCString())
 
void writeIncludeFiles (OutputList &ol)
 
void writeInheritanceGraph (OutputList &ol)
 
void writeCollaborationGraph (OutputList &ol)
 
void writeMemberGroups (OutputList &ol, bool showInline=FALSE)
 
void writeNestedClasses (OutputList &ol, const QCString &title)
 
void writeInlineClasses (OutputList &ol)
 
void startMemberDeclarations (OutputList &ol)
 
void endMemberDeclarations (OutputList &ol)
 
void startMemberDocumentation (OutputList &ol)
 
void endMemberDocumentation (OutputList &ol)
 
void writeAuthorSection (OutputList &ol)
 
void writeMoreLink (OutputList &ol, const QCString &anchor)
 
void writeDetailedDocumentationBody (OutputList &ol)
 
int countAdditionalInheritedMembers ()
 
void writeAdditionalInheritedMembers (OutputList &ol)
 
void addClassAttributes (OutputList &ol)
 
int countMemberDeclarations (MemberListType lt, ClassDef *inheritedFrom, int lt2, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
 
int countInheritedDecMembers (MemberListType lt, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
 
void getTitleForMemberListType (MemberListType type, QCString &title, QCString &subtitle)
 
QCString includeStatement () const
 
void addTypeConstraint (const QCString &typeConstraint, const QCString &type)
 

Private Attributes

ClassDefImplm_impl
 

Detailed Description

A class representing of a compound symbol.

A compound can be a class, struct, union, interface, service, singleton, or exception.

Note
This class should be renamed to CompoundDef

Definition at line 59 of file classdef.h.

Member Enumeration Documentation

The various compound types

Enumerator
Class 
Struct 
Union 
Interface 
Protocol 
Category 
Exception 
Service 
Singleton 

Definition at line 63 of file classdef.h.

{ Class, //=Entry::CLASS_SEC,
Struct, //=Entry::STRUCT_SEC,
Union, //=Entry::UNION_SEC,
Interface, //=Entry::INTERFACE_SEC,
Protocol, //=Entry::PROTOCOL_SEC,
Category, //=Entry::CATEGORY_SEC,
Exception, //=Entry::EXCEPTION_SEC
Service, //=Entry::CLASS_SEC
Singleton, //=Entry::CLASS_SEC
};

Constructor & Destructor Documentation

ClassDef::ClassDef ( const char *  fileName,
int  startLine,
int  startColumn,
const char *  name,
CompoundType  ct,
const char *  ref = 0,
const char *  fName = 0,
bool  isSymbol = TRUE,
bool  isJavaEnum = FALSE 
)

Creates a new compound definition.

Parameters
fileNamefull path and file name in which this compound was found.
startLineline number where the definition of this compound starts.
startColumncolumn number where the definition of this compound starts.
namethe name of this compound (including scope)
ctthe kind of Compound
refthe tag file from which this compound is extracted or 0 if the compound doesn't come from a tag file
fNamethe file name as found in the tag file. This overwrites the file that doxygen normally generates based on the compound type & name.
isSymbolIf TRUE this class name is added as a publicly visible (and referencable) symbol.
isJavaEnumIf TRUE this class is actually a Java enum. I didn't add this to CompoundType to avoid having to adapt all translators.

Definition at line 295 of file classdef.cpp.

References ClassDefImpl::collabFileName, compoundTypeString(), ClassDefImpl::compType, convertNameToFile(), ClassDefImpl::fileName, ClassDefImpl::inheritFileName, ClassDefImpl::init(), ClassDefImpl::isJavaEnum, isJavaEnum(), m_impl, ClassDefImpl::memberListFileName, Definition::name(), Definition::setReference(), and visited.

Referenced by addTypeConstraint(), getVariableInstance(), and insertTemplateInstance().

ClassDef::~ClassDef ( )

Destroys a compound definition.

Definition at line 318 of file classdef.cpp.

References m_impl.

{
delete m_impl;
}

Member Function Documentation

void ClassDef::addClassAttributes ( OutputList ol)
private

Definition at line 1945 of file classdef.cpp.

References OutputList::disableAllBut(), OutputList::endLabels(), Definition::getLanguage(), OutputGenerator::Html, isAbstract(), isFinal(), isPublished(), isSealed(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_IDL, OutputList::startLabels(), and OutputList::writeLabel().

Referenced by writeDocumentation().

{
QStrList sl;
if (isFinal()) sl.append("final");
if (isSealed()) sl.append("sealed");
if (isAbstract()) sl.append("abstract");
if (getLanguage()==SrcLangExt_IDL && isPublished()) sl.append("published");
if (sl.count()>0)
{
const char *s=sl.first();
while (s)
{
const char *ns = sl.next();
ol.writeLabel(s,ns==0);
s=ns;
}
ol.endLabels();
}
}
bool ClassDef::addExample ( const char *  anchor,
const char *  name,
const char *  file 
)
void ClassDef::addGroupedInheritedMembers ( OutputList ol,
MemberListType  lt,
ClassDef inheritedFrom,
const QCString &  inheritId 
)

Definition at line 4327 of file classdef.cpp.

References MemberGroup::addGroupedInheritedMembers(), MemberGroup::allMembersInSameSection(), SIntDict< MemberGroup >::Iterator, m_impl, ClassDefImpl::memberGroupSDict, and ClassDefImpl::subGrouping.

Referenced by MemberList::writeDeclarations().

{
//printf("** %s::addGroupedInheritedMembers(%p) inheritId=%s\n",name().data(),m_impl->memberGroupSDict,inheritId.data());
{
for (;(mg=mgli.current());++mgli)
{
if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
{
mg->addGroupedInheritedMembers(ol,this,lt,inheritedFrom,inheritId);
}
}
}
}
void ClassDef::addInnerCompound ( Definition d)
virtual

Reimplemented from Definition.

Definition at line 3625 of file classdef.cpp.

References DefinitionIntf::definitionType(), ClassDefImpl::innerClasses, SDict< T >::inSort(), Definition::localName(), m_impl, and DefinitionIntf::TypeClass.

{
//printf("**** %s::addInnerCompound(%s)\n",name().data(),d->name().data());
if (d->definitionType()==Definition::TypeClass) // only classes can be
// nested in classes.
{
{
}
}
}
void ClassDef::addListReferences ( )
void ClassDef::addMembersToMemberGroup ( )

Definition at line 404 of file classdef.cpp.

References MemberGroup::addToDeclarationSection(), MemberGroup::allMembersInSameSection(), SIntDict< MemberGroup >::Iterator, MemberList::listType(), m_impl, ClassDefImpl::memberGroupSDict, ClassDefImpl::memberLists, MemberListType_detailedLists, and ClassDefImpl::subGrouping.

Referenced by addMembersToMemberGroup().

{
QListIterator<MemberList> mli(m_impl->memberLists);
for (mli.toFirst();(ml=mli.current());++mli)
{
{
}
}
// add members inside sections to their groups
{
for (;(mg=mgli.current());++mgli)
{
{
//printf("addToDeclarationSection(%s)\n",mg->header().data());
}
}
}
}
void ClassDef::addMembersToTemplateInstance ( ClassDef cd,
const char *  templSpec 
)

Definition at line 3759 of file classdef.cpp.

References SDict< T >::append(), MemberDef::briefDescription(), Definition::briefFile(), Definition::briefLine(), MemberDef::createTemplateInstanceMember(), Definition::docFile(), Definition::docLine(), MemberDef::documentation(), SDict< T >::find(), MemberDef::getMemberGroupId(), MemberDef::getMemberSpecifiers(), Definition::inbodyDocumentation(), Definition::inbodyFile(), Definition::inbodyLine(), insertMember(), SDict< MemberNameInfo >::Iterator, MemberInfo::memberDef, memberNameInfoSDict(), Doxygen::memberNameSDict, Definition::name(), MemberDef::setBriefDescription(), MemberDef::setDocumentation(), MemberDef::setInbodyDocumentation(), MemberDef::setMemberClass(), MemberDef::setMemberGroupId(), MemberDef::setMemberSpecifiers(), MemberDef::setTemplateMaster(), stringToArgumentList(), and templateArguments().

Referenced by createTemplateInstanceMembers(), and getVariableInstance().

{
//printf("%s::addMembersToTemplateInstance(%s,%s)\n",name().data(),cd->name().data(),templSpec);
if (cd->memberNameInfoSDict()==0) return;
for (;(mni=mnili.current());++mnili)
{
for (mnii.toFirst();(mi=mnii.current());++mnii)
{
ArgumentList *actualArguments = new ArgumentList;
stringToArgumentList(templSpec,actualArguments);
MemberDef *md = mi->memberDef;
cd->templateArguments(),actualArguments);
delete actualArguments;
//printf("%s->setMemberClass(%p)\n",imd->name().data(),this);
imd->setMemberClass(this);
imd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
//printf("Adding member=%s %s%s to class %s templSpec %s\n",
// imd->typeString(),imd->name().data(),imd->argsString(),
// imd->getClassDef()->name().data(),templSpec);
// insert imd in the list of all members
//printf("Adding member=%s class=%s\n",imd->name().data(),name().data());
if (mn==0)
{
mn = new MemberName(imd->name());
}
mn->append(imd);
}
}
}
void ClassDef::addMemberToList ( MemberListType  lt,
MemberDef md,
bool  isBrief 
)
private

Definition at line 4023 of file classdef.cpp.

References MemberList::append(), Config_getBool, createMemberList(), MemberList::listType(), MemberListType_detailedLists, MemberList::setNeedsSorting(), and MemberDef::setSectionList().

Referenced by internalInsertMember().

{
static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
ml->append(md);
// for members in the declaration lists we set the section, needed for member grouping
}
void ClassDef::addTaggedInnerClass ( ClassDef cd)

Definition at line 4647 of file classdef.cpp.

References m_impl, and ClassDefImpl::taggedInnerClasses.

Referenced by processTagLessClasses().

void ClassDef::addTypeConstraint ( const QCString &  typeConstraint,
const QCString &  type 
)
private

Definition at line 2545 of file classdef.cpp.

References ConstraintClassDef::addAccessor(), SDict< T >::append(), Class, ClassDef(), Config_getBool, ClassDefImpl::constraintClassDict, Definition::getDefColumn(), Definition::getDefFileName(), Definition::getDefLine(), getFileDef(), Definition::getLanguage(), getResolvedClass(), Doxygen::hiddenClasses, m_impl, Definition::setLanguage(), and setUsedOnly().

Referenced by addTypeConstraints().

{
//printf("addTypeContraint(%s,%s)\n",type.data(),typeConstraint.data());
static bool hideUndocRelation = Config_getBool(HIDE_UNDOC_RELATIONS);
if (typeConstraint.isEmpty() || type.isEmpty()) return;
ClassDef *cd = getResolvedClass(this,getFileDef(),typeConstraint);
if (cd==0 && !hideUndocRelation)
{
cd->setUsedOnly(TRUE);
Doxygen::hiddenClasses->append(typeConstraint,cd);
//printf("Adding undocumented constraint '%s' to class %s on type %s\n",
// typeConstraint.data(),name().data(),type.data());
}
if (cd)
{
{
m_impl->constraintClassDict->setAutoDelete(TRUE);
}
ConstraintClassDef *ccd=m_impl->constraintClassDict->find(typeConstraint);
if (ccd==0)
{
ccd = new ConstraintClassDef(cd);
m_impl->constraintClassDict->insert(typeConstraint,ccd);
}
ccd->addAccessor(type);
//printf("Adding constraint '%s' to class %s on type %s\n",
// typeConstraint.data(),name().data(),type.data());
}
}
void ClassDef::addTypeConstraints ( )

Definition at line 2580 of file classdef.cpp.

References addTypeConstraint(), m_impl, ClassDefImpl::tempArgs, Argument::type, and Argument::typeConstraint.

Referenced by findUsedTemplateInstances().

{
{
for (;(a=ali.current());++ali)
{
if (!a->typeConstraint.isEmpty())
{
QCString typeConstraint;
int i=0,p=0;
while ((i=a->typeConstraint.find('&',p))!=-1) // typeConstraint="A &I" for C<T extends A & I>
{
typeConstraint = a->typeConstraint.mid(p,i-p).stripWhiteSpace();
addTypeConstraint(typeConstraint,a->type);
p=i+1;
}
typeConstraint = a->typeConstraint.right(a->typeConstraint.length()-p).stripWhiteSpace();
addTypeConstraint(typeConstraint,a->type);
}
}
}
}
void ClassDef::addUsedByClass ( ClassDef cd,
const char *  accessName,
Protection  prot 
)

Definition at line 3283 of file classdef.cpp.

References UsesClassDef::addAccessor(), Config_getBool, m_impl, Definition::name(), Package, Private, Protected, Public, and ClassDefImpl::usedByImplClassDict.

Referenced by findUsedClassesForClass().

{
static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
static bool umlLook = Config_getBool(UML_LOOK);
if (prot==Private && !extractPrivate) return;
//printf("%s::addUsedByClass(%s,%s)\n",name().data(),cd->name().data(),accessName);
{
m_impl->usedByImplClassDict->setAutoDelete(TRUE);
}
if (ucd==0)
{
ucd = new UsesClassDef(cd);
m_impl->usedByImplClassDict->insert(cd->name(),ucd);
//printf("Adding used by class %s to class %s\n",
// cd->name().data(),name().data());
}
QCString acc = accessName;
if (umlLook)
{
switch(prot)
{
case Public: acc.prepend("+"); break;
case Private: acc.prepend("-"); break;
case Protected: acc.prepend("#"); break;
case Package: acc.prepend("~"); break;
}
}
ucd->addAccessor(acc);
}
void ClassDef::addUsedClass ( ClassDef cd,
const char *  accessName,
Protection  prot 
)

Definition at line 3249 of file classdef.cpp.

References UsesClassDef::addAccessor(), Config_getBool, m_impl, Definition::name(), Package, Private, Protected, Public, and ClassDefImpl::usesImplClassDict.

Referenced by findUsedClassesForClass().

{
static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
static bool umlLook = Config_getBool(UML_LOOK);
if (prot==Private && !extractPrivate) return;
//printf("%s::addUsedClass(%s,%s)\n",name().data(),cd->name().data(),accessName);
{
m_impl->usesImplClassDict->setAutoDelete(TRUE);
}
if (ucd==0)
{
ucd = new UsesClassDef(cd);
m_impl->usesImplClassDict->insert(cd->name(),ucd);
//printf("Adding used class %s to class %s via accessor %s\n",
// cd->name().data(),name().data(),accessName);
}
QCString acc = accessName;
if (umlLook)
{
switch(prot)
{
case Public: acc.prepend("+"); break;
case Private: acc.prepend("-"); break;
case Protected: acc.prepend("#"); break;
case Package: acc.prepend("~"); break;
}
}
ucd->addAccessor(acc);
}
void ClassDef::addUsedInterfaceClasses ( MemberDef md,
const char *  typeStr 
)
protected
QCString ClassDef::anchor ( ) const
virtual
BaseClassList * ClassDef::baseClasses ( ) const
ClassDef * ClassDef::categoryOf ( ) const

Returns the class of which this is a category (Objective-C only)

Definition at line 4502 of file classdef.cpp.

References ClassDefImpl::categoryOf, and m_impl.

Referenced by MemberDef::_writeCategoryRelation(), ClassContext::Private::categoryOf(), classInheritedProtectionLevel(), and minClassDistance().

{
return m_impl->categoryOf;
}
QCString ClassDef::className ( ) const

Returns the name of the class including outer classes, but not including namespaces.

Definition at line 3902 of file classdef.cpp.

References ClassDefImpl::className, Definition::localName(), and m_impl.

Referenced by PrefixIgnoreClassList::compareValue(), compItems(), displayName(), VhdlDocGen::findAllArchitectures(), VhdlDocGen::getClassName(), qualifiedNameWithTemplateParameters(), writeAlphabeticalClassList(), and VhdlDocGen::writeInlineClassLink().

{
if (m_impl->className.isEmpty())
{
return localName();
}
else
{
return m_impl->className;
}
};
QCString ClassDef::collaborationGraphFileName ( ) const

returns the file name to use for the collaboration graph

Definition at line 4736 of file classdef.cpp.

References ClassDefImpl::collabFileName, and m_impl.

Referenced by DotClassGraph::DotClassGraph().

{
}
ClassDef::CompoundType ClassDef::compoundType ( ) const
QCString ClassDef::compoundTypeString ( ) const

Returns the type of compound as a string

Definition at line 3515 of file classdef.cpp.

References Category, Class, ClassDefImpl::compType, Exception, Definition::getLanguage(), Interface, isJavaEnum(), m_impl, Protocol, Service, Singleton, SrcLangExt_Fortran, SrcLangExt_ObjC, Struct, and Union.

Referenced by ClassDef(), ClassContext::Private::compoundType(), generateDEFForClass(), generateDocbookForClass(), generateXMLForClass(), SearchIndex::setCurrentDoc(), validatingParseDoc(), writeDeclaration(), writeDeclarationLink(), writeDetailedDocumentationBody(), writeDocumentationContents(), writeInlineDocumentation(), NamespaceDef::writeTagFile(), GroupDef::writeTagFile(), FileDef::writeTagFile(), and writeTagFile().

{
{
switch (m_impl->compType)
{
case Class: return "module";
case Struct: return "type";
case Union: return "union";
case Interface: return "interface";
case Protocol: return "protocol";
case Category: return "category";
case Exception: return "exception";
default: return "unknown";
}
}
else
{
switch (m_impl->compType)
{
case Class: return isJavaEnum() ? "enum" : "class";
case Struct: return "struct";
case Union: return "union";
case Interface: return getLanguage()==SrcLangExt_ObjC ? "class" : "interface";
case Protocol: return "protocol";
case Category: return "category";
case Exception: return "exception";
case Service: return "service";
case Singleton: return "singleton";
default: return "unknown";
}
}
}
void ClassDef::computeAnchors ( )

Definition at line 735 of file classdef.cpp.

References SIntDict< MemberGroup >::Iterator, MemberList::listType(), m_impl, ClassDefImpl::memberGroupSDict, ClassDefImpl::memberLists, MemberListType_detailedLists, MemberGroup::setAnchors(), and setAnchors().

Referenced by computeMemberReferences().

{
//ClassDef *context = Config_getBool(INLINE_INHERITED_MEMB) ? this : 0;
//const char *letters = "abcdefghijklmnopqrstuvwxyz0123456789";
QListIterator<MemberList> mli(m_impl->memberLists);
//int index = 0;
for (mli.toFirst();(ml=mli.current());++mli)
{
{
}
}
{
for (;(mg=mgli.current());++mgli)
{
mg->setAnchors();
}
}
}
int ClassDef::countAdditionalInheritedMembers ( )
private

Definition at line 4155 of file classdef.cpp.

References LayoutDocManager::Class, countInheritedDecMembers(), LayoutDocManager::instance(), LayoutDocEntry::kind(), LayoutDocEntry::MemberDecl, MemberListType_friends, LayoutDocEntryMemberDecl::type, and visited.

Referenced by endMemberDeclarations().

{
int totalCount=0;
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
{
if (lmd->type!=MemberListType_friends) // friendship is not inherited
{
//MemberList *ml = getMemberList(lmd->type);
//if (ml==0 || ml->numDecMembers()==0)
//{
QPtrDict<void> visited(17);
totalCount+=countInheritedDecMembers(lmd->type,this,TRUE,FALSE,&visited);
//}
}
}
}
//printf("countAdditonalInheritedMembers()=%d\n",totalCount);
return totalCount;
}
int ClassDef::countInheritanceNodes ( )

Definition at line 1172 of file classdef.cpp.

References BaseClassDef::classDef, ClassDefImpl::inheritedBy, ClassDefImpl::inherits, isVisibleInHierarchy(), and m_impl.

Referenced by ClassContext::Private::numInheritanceNodes(), and writeInheritanceGraph().

{
int count=0;
BaseClassDef *ibcd;
{
for (;(ibcd=it.current());++it)
{
ClassDef *icd=ibcd->classDef;
if ( icd->isVisibleInHierarchy()) count++;
}
}
{
for (;(ibcd=it.current());++it)
{
ClassDef *icd=ibcd->classDef;
if ( icd->isVisibleInHierarchy()) count++;
}
}
return count;
}
int ClassDef::countInheritedDecMembers ( MemberListType  lt,
ClassDef inheritedFrom,
bool  invert,
bool  showAlways,
QPtrDict< void > *  visitedClasses 
)
private

Definition at line 4092 of file classdef.cpp.

References BaseClassDef::classDef, convertProtectionLevel(), countMemberDeclarations(), countMembersIncludingGrouped(), ClassDefImpl::inherits, isLinkable(), m_impl, and BaseClassDef::prot.

Referenced by countAdditionalInheritedMembers(), and countMemberDeclarations().

{
int inhCount = 0;
int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
bool process = count>0;
//printf("%s: countInheritedDecMembers: lt=%d process=%d count=%d invert=%d\n",
// name().data(),lt,process,count,invert);
if ((process^invert) || showAlways)
{
{
BaseClassDef *ibcd;
for (it.toFirst();(ibcd=it.current());++it)
{
ClassDef *icd=ibcd->classDef;
int lt1,lt2;
if (icd->isLinkable())
{
convertProtectionLevel(lt,ibcd->prot,&lt1,&lt2);
//printf("%s: convert %d->(%d,%d) prot=%d\n",
// icd->name().data(),lt,lt1,lt2,ibcd->prot);
if (visitedClasses->find(icd)==0)
{
visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance
if (lt1!=-1)
{
inhCount+=icd->countMemberDeclarations((MemberListType)lt1,inheritedFrom,lt2,FALSE,TRUE,visitedClasses);
}
}
}
}
}
}
return inhCount;
}
int ClassDef::countMemberDeclarations ( MemberListType  lt,
ClassDef inheritedFrom,
int  lt2,
bool  invert,
bool  showAlways,
QPtrDict< void > *  visitedClasses 
)
private

Definition at line 4049 of file classdef.cpp.

References Config_getBool, MemberList::countDecMembers(), MemberGroup::countGroupedInheritedMembers(), countInheritedDecMembers(), Definition::getLanguage(), getMemberList(), SIntDict< MemberGroup >::Iterator, m_impl, ClassDefImpl::memberGroupSDict, MemberList::numDecMembers(), and SrcLangExt_VHDL.

Referenced by countInheritedDecMembers().

{
//printf("%s: countMemberDeclarations for %d and %d\n",name().data(),lt,lt2);
int count=0;
if (getLanguage()!=SrcLangExt_VHDL) // use specific declarations function
{
if (ml)
{
count+=ml->numDecMembers();
//printf("-> ml=%d\n",ml->numDecMembers());
}
if (ml2)
{
count+=ml2->numDecMembers();
//printf("-> ml2=%d\n",ml2->numDecMembers());
}
// also include grouped members that have their own section in the class (see bug 722759)
if (inheritedFrom && m_impl->memberGroupSDict)
{
for (;(mg=mgli.current());++mgli)
{
if (lt2!=1) count+=mg->countGroupedInheritedMembers((MemberListType)lt2);
}
}
static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
if (!inlineInheritedMembers) // show inherited members as separate lists
{
count+=countInheritedDecMembers(lt,inheritedFrom,invert,showAlways,visitedClasses);
}
}
//printf("-> %d\n",count);
return count;
}
int ClassDef::countMembersIncludingGrouped ( MemberListType  lt,
ClassDef inheritedFrom,
bool  additional 
)

Definition at line 4201 of file classdef.cpp.

References MemberGroup::allMembersInSameSection(), MemberGroup::countGroupedInheritedMembers(), MemberList::countInheritableMembers(), getMemberList(), SIntDict< MemberGroup >::Iterator, m_impl, ClassDefImpl::memberGroupSDict, and ClassDefImpl::subGrouping.

Referenced by InheritedMemberInfoListContext::Private::addInheritedMembers(), InheritedMemberInfoListContext::addMemberList(), countInheritedDecMembers(), MemberList::writeDeclarations(), and writeInheritedMemberDeclarations().

{
int count=0;
if (ml)
{
count=ml->countInheritableMembers(inheritedFrom);
}
//printf("%s:countMembersIncludingGrouped: count=%d\n",name().data(),count);
{
for (;(mg=mgli.current());++mgli)
{
bool hasOwnSection = !mg->allMembersInSameSection() ||
!m_impl->subGrouping; // group is in its own section
if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
{
}
}
}
//printf("%s:countMembersIncludingGrouped(lt=%d,%s)=%d\n",
// name().data(),lt,ml?ml->listTypeAsString(ml->listType()).data():"<none>",count);
return count;
}
MemberList * ClassDef::createMemberList ( MemberListType  lt)
private

Definition at line 3991 of file classdef.cpp.

References MemberList::listType(), m_impl, and ClassDefImpl::memberLists.

Referenced by addMemberToList(), and internalInsertMember().

{
m_impl->memberLists.setAutoDelete(TRUE);
QListIterator<MemberList> mli(m_impl->memberLists);
for (mli.toFirst();(ml=mli.current());++mli)
{
if (ml->listType()==lt)
{
return ml;
}
}
// not found, create a new member list
ml = new MemberList(lt);
m_impl->memberLists.append(ml);
return ml;
}
DefType ClassDef::definitionType ( ) const
inlinevirtual

Used for RTTI, this is a class

Implements DefinitionIntf.

Definition at line 106 of file classdef.h.

References DefinitionIntf::TypeClass.

{ return TypeClass; }
QCString ClassDef::displayName ( bool  includeScope = TRUE) const
virtual

Returns the name as it is appears in the documentation

Implements Definition.

Definition at line 328 of file classdef.cpp.

References className(), ClassDefImpl::compType, VhdlDocGen::getClassName(), Definition::getLanguage(), getLanguageSpecificSeparator(), m_impl, Protocol, qualifiedNameWithTemplateParameters(), removeAnonymousScopes(), SrcLangExt_VHDL, and substitute().

Referenced by MemberDef::_writeCategoryRelation(), MemberDef::_writeReimplementedBy(), MemberDef::_writeReimplements(), DotClassGraph::addClass(), DotGfxHierarchyTable::addClassList(), DotGfxHierarchyTable::addHierarchy(), addListReferences(), addMembersToIndex(), DotClassGraph::DotClassGraph(), MemberDef::getScopeString(), MemberContext::Private::handleNameWithContextFor(), ClassContext::Private::inheritanceDiagram(), InheritanceListContext::InheritanceListContext(), DiagramItem::label(), title(), writeAnnotatedClassList(), writeClassLinkForMember(), writeClassTree(), writeClassTreeForList(), writeCollaborationGraph(), writeDeclaration(), writeDeclarationLink(), MemberList::writeDeclarations(), MemberDef::writeDocumentation(), writeDocumentation(), writeInheritanceGraph(), MemberDef::writeLink(), writeMapArea(), writeMemberDocumentation(), writeMemberList(), and writeMemberPages().

{
//static bool optimizeOutputForJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
//static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
QCString n;
if (lang==SrcLangExt_VHDL)
{
}
else
{
if (includeScope)
{
}
else
{
n=className();
}
}
QCString sep=getLanguageSpecificSeparator(lang);
if (sep!="::")
{
n=substitute(n,"::",sep);
}
if (m_impl->compType==ClassDef::Protocol && n.right(2)=="-p")
{
n="<"+n.left(n.length()-2)+">";
}
//else if (n.right(2)=="-g")
//{
// n = n.left(n.length()-2);
//}
//printf("ClassDef::displayName()=%s\n",n.data());
if (n.find('@')!=-1)
{
}
else
{
return n;
}
}
void ClassDef::distributeMemberGroupDocumentation ( )
void ClassDef::endMemberDeclarations ( OutputList ol)
private
void ClassDef::endMemberDocumentation ( OutputList ol)
private

Definition at line 1474 of file classdef.cpp.

References Config_getBool, OutputList::enable(), OutputGenerator::Html, and Doxygen::suppressDocWarnings.

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
//printf("%s: ClassDef::endMemberDocumentation()\n",name().data());
if (Config_getBool(SEPARATE_MEMBER_PAGES))
{
}
}
const ExampleSDict * ClassDef::exampleList ( ) const

Definition at line 4715 of file classdef.cpp.

References ClassDefImpl::exampleSDict, and m_impl.

Referenced by ClassContext::Private::addExamples().

{
}
Definition * ClassDef::findInnerCompound ( const char *  name)
virtual

Returns the definition of a nested compound if available, or 0 otherwise.

Parameters
nameThe name of the nested compound

Reimplemented from Definition.

Definition at line 3639 of file classdef.cpp.

References SDict< T >::find(), ClassDefImpl::innerClasses, and m_impl.

{
Definition *result=0;
if (name==0) return 0;
{
}
return result;
}
void ClassDef::findSectionsInDocumentation ( )
QCString ClassDef::generatedFromFiles ( ) const
ClassSDict * ClassDef::getClassSDict ( )
FileDef * ClassDef::getFileDef ( ) const

Returns the file in which this compound's definition can be found. Should not return 0 (but it might be a good idea to check anyway).

Definition at line 4417 of file classdef.cpp.

References ClassDefImpl::fileDef, and m_impl.

Referenced by addInstance(), addTypeConstraint(), createTagLessInstance(), findClassRelation(), findClassWithinClassContext(), findUsedClassesForClass(), getDefs(), getOutputFileBase(), isEmbeddedInOuterScope(), and resolveClassNestingRelations().

{
return m_impl->fileDef;
}
QCString ClassDef::getInstanceOutputFileBase ( ) const

Definition at line 3586 of file classdef.cpp.

References ClassDefImpl::fileName, and m_impl.

{
return m_impl->fileName;
}
MemberDef * ClassDef::getMemberByName ( const QCString &  name) const

Returns the Java package this class is in or 0 if not applicable.

Definition at line 3956 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, SDict< T >::find(), MemberDef::getClassDef(), isLinkable(), m_impl, maxInheritanceDepth, MemberInfo::memberDef, and minClassDistance().

{
MemberDef *xmd = 0;
{
if (mni)
{
const int maxInheritanceDepth = 100000;
for (mnii.toFirst();(mi=mnii.current());++mnii)
{
int m=minClassDistance(this,mcd);
//printf("found member in %s linkable=%d m=%d\n",
// mcd->name().data(),mcd->isLinkable(),m);
if (m<mdist && mcd->isLinkable())
{
mdist=m;
xmd=mi->memberDef;
}
}
}
}
//printf("getMemberByName(%s)=%p\n",name.data(),xmd);
return xmd;
}
MemberGroupSDict * ClassDef::getMemberGroupSDict ( ) const
MemberList * ClassDef::getMemberList ( MemberListType  lt)
QCString ClassDef::getMemberListFileName ( ) const
const QList< MemberList > & ClassDef::getMemberLists ( ) const

Returns the list containing the list of members sorted per type

Definition at line 4507 of file classdef.cpp.

References m_impl, and ClassDefImpl::memberLists.

Referenced by generateDEFForClass(), generateDocbookForClass(), and generateXMLForClass().

{
}
NamespaceDef * ClassDef::getNamespaceDef ( ) const

Returns the namespace this compound is in, or 0 if it has a global scope.

Definition at line 4412 of file classdef.cpp.

References m_impl, and ClassDefImpl::nspace.

{
return m_impl->nspace;
}
QCString ClassDef::getOutputFileBase ( ) const
virtual

Returns the unique base name (without extension) of the class's file on disk

Implements Definition.

Definition at line 3549 of file classdef.cpp.

References Config_getBool, ClassDefImpl::fileName, Doxygen::generatingXmlOutput, getFileDef(), Definition::getOuterScope(), FileDef::getOutputFileBase(), getOutputFileBase(), Definition::getOutputFileBase(), Doxygen::globalScope, isLinkableInProject(), Definition::isLinkableInProject(), ClassDefImpl::isSimple, m_impl, Definition::partOfGroups(), and ClassDefImpl::templateMaster.

Referenced by MemberDef::_writeReimplements(), DotClassGraph::addClass(), DotGfxHierarchyTable::addClassList(), DotGfxHierarchyTable::addHierarchy(), addInstance(), addListReferences(), anchor(), classOutputFileBase(), ClassContext::Private::collaborationDiagram(), DotClassGraph::DotClassGraph(), RTFGenerator::endIndexSection(), LatexGenerator::endIndexSection(), DiagramItem::fileName(), generateDEFForClass(), generateDocbookForClass(), MemberDef::getOutputFileBase(), getOutputFileBase(), handleLinkedWord(), InheritedMemberInfoContext::Private::id(), ClassContext::Private::inheritanceDiagram(), linkifyText(), writeAlphabeticalClassList(), writeAnnotatedClassList(), writeClassToDot(), writeClassTree(), writeClassTreeForList(), writeDeclarationLink(), MemberList::writeDeclarations(), writeDetailedDescription(), writeDocumentation(), writeInheritanceGraph(), writeInlineDocumentation(), writeMapArea(), MemberDef::writeMemberDocSimple(), writeMemberList(), writeMoreLink(), writeTagFile(), VhdlDocGen::writeVHDLDeclaration(), and VhdlDocGen::writeVhdlLink().

{
static bool inlineGroupedClasses = Config_getBool(INLINE_GROUPED_CLASSES);
static bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
{
Definition *scope=0;
if (inlineGroupedClasses && partOfGroups()!=0)
{
// point to the group that embeds this class
return partOfGroups()->at(0)->getOutputFileBase();
}
else if (inlineSimpleClasses && m_impl->isSimple && partOfGroups()!=0)
{
// point to simple struct inside a group
return partOfGroups()->at(0)->getOutputFileBase();
}
else if (inlineSimpleClasses && m_impl->isSimple && (scope=getOuterScope()))
{
if (scope==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) // simple struct embedded in file
{
}
else if (scope->isLinkableInProject()) // simple struct embedded in other container (namespace/group/class)
{
}
}
}
{
// point to the template of which this class is an instance
}
return m_impl->fileName;
}
QCString ClassDef::getReference ( ) const
virtual
QCString ClassDef::getSourceFileBase ( ) const
virtual

Returns the base name for the source code file

Reimplemented from Definition.

Definition at line 3591 of file classdef.cpp.

References getSourceFileBase(), Definition::getSourceFileBase(), m_impl, and ClassDefImpl::templateMaster.

Referenced by getSourceFileBase().

QDict< int > * ClassDef::getTemplateBaseClassNames ( ) const

Definition at line 3754 of file classdef.cpp.

References m_impl, and ClassDefImpl::templBaseClassNames.

Referenced by computeTemplateClassRelations().

QDict< ClassDef > * ClassDef::getTemplateInstances ( ) const

Returns a sorted dictionary with all template instances found for this template class. Returns 0 if not a template or no instances.

Definition at line 4422 of file classdef.cpp.

References m_impl, and ClassDefImpl::templateInstances.

Referenced by DotClassGraph::buildGraph(), computeTemplateClassRelations(), createTemplateInstanceMembers(), and hasNonReferenceSuperClass().

void ClassDef::getTemplateParameterLists ( QList< ArgumentList > &  lists) const

Returns the template parameter lists that form the template declaration of this class.

Example: template<class T> class TC {}; will return a list with one ArgumentList containing one argument with type="class" and name="T".

Definition at line 3826 of file classdef.cpp.

References DefinitionIntf::definitionType(), Definition::getOuterScope(), getTemplateParameterLists(), templateArguments(), and DefinitionIntf::TypeClass.

Referenced by MemberContext::Private::addTemplateDecls(), findMember(), getTemplateParameterLists(), and MemberDef::writeDocumentation().

{
if (d)
{
{
ClassDef *cd=(ClassDef *)d;
}
}
{
lists.append(templateArguments());
}
}
void ClassDef::getTitleForMemberListType ( MemberListType  type,
QCString &  title,
QCString &  subtitle 
)
private

Definition at line 4131 of file classdef.cpp.

References LayoutDocManager::Class, Definition::getLanguage(), LayoutDocManager::instance(), LayoutDocEntry::kind(), LayoutDocEntry::MemberDecl, LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntryMemberDecl::title(), and LayoutDocEntryMemberDecl::type.

{
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
{
if (lmd->type==type)
{
title = lmd->title(lang);
subtitle = lmd->subtitle(lang);
return;
}
}
}
title="";
subtitle="";
}
ClassDef * ClassDef::getVariableInstance ( const char *  templSpec)

Definition at line 3714 of file classdef.cpp.

References addMembersToTemplateInstance(), Class, ClassDef(), Debug::Classes, m_impl, Definition::name(), Debug::print(), removeRedundantWhiteSpace(), setTemplateMaster(), and ClassDefImpl::variableInstances.

{
{
m_impl->variableInstances = new QDict<ClassDef>(17);
m_impl->variableInstances->setAutoDelete(TRUE);
}
ClassDef *templateClass=m_impl->variableInstances->find(templSpec);
if (templateClass==0)
{
Debug::print(Debug::Classes,0," New template variable instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec));
QCString tcname = removeRedundantWhiteSpace(name()+templSpec);
templateClass = new ClassDef("<code>",1,1,tcname,
ClassDef::Class,0,0,FALSE);
templateClass->addMembersToTemplateInstance( this, templSpec );
templateClass->setTemplateMaster(this);
m_impl->variableInstances->insert(templSpec,templateClass);
}
return templateClass;
}
bool ClassDef::hasDetailedDescription ( ) const

returns TRUE if this class has a non-empty detailed description

Definition at line 1023 of file classdef.cpp.

References Definition::briefDescription(), Config_getBool, Definition::documentation(), Definition::getBodyDef(), and Definition::getStartBodyLine().

Referenced by ClassContext::Private::hasDetails(), writeBriefDescription(), and writeDetailedDescription().

{
static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
return ((!briefDescription().isEmpty() && repeatBrief) ||
!documentation().isEmpty() ||
(sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()));
}
bool ClassDef::hasDocumentation ( ) const
virtual

returns TRUE if this class has documentation

Reimplemented from Definition.

Definition at line 2783 of file classdef.cpp.

References Definition::hasDocumentation().

Referenced by addClassToContext(), computeClassRelations(), isLinkableInProject(), and isVisibleInHierarchy().

bool ClassDef::hasExamples ( ) const

Definition at line 2537 of file classdef.cpp.

References SDict< T >::count(), ClassDefImpl::exampleSDict, and m_impl.

Referenced by ClassContext::Private::addExamples(), writeDetailedDocumentationBody(), and writeDocumentationContents().

{
bool result=FALSE;
result = m_impl->exampleSDict->count()>0;
return result;
}
bool ClassDef::hasNonReferenceSuperClass ( )
protected

Returns TRUE iff this class or a class inheriting from this class is not defined in an external tag file.

Definition at line 2636 of file classdef.cpp.

References getTemplateInstances(), hasNonReferenceSuperClass(), ClassDefImpl::inheritedBy, Definition::isHidden(), isLinkableInProject(), isReference(), and m_impl.

Referenced by hasNonReferenceSuperClass(), and isVisibleInHierarchy().

{
bool found=!isReference() && isLinkableInProject() && !isHidden();
if (found)
{
return TRUE; // we're done if this class is not a reference
}
{
for ( ; bcli.current() && !found ; ++bcli ) // for each super class
{
ClassDef *bcd=bcli.current()->classDef;
// recurse into the super class branch
found = found || bcd->hasNonReferenceSuperClass();
if (!found)
{
// look for template instances that might have non-reference super classes
QDict<ClassDef> *cil = bcd->getTemplateInstances();
if (cil)
{
QDictIterator<ClassDef> tidi(*cil);
for ( ; tidi.current() && !found ; ++tidi) // for each template instance
{
// recurse into the template instance branch
found = found || tidi.current()->hasNonReferenceSuperClass();
}
}
}
}
}
return found;
}
IncludeInfo * ClassDef::includeInfo ( ) const
QCString ClassDef::includeStatement ( ) const
private

Definition at line 1339 of file classdef.cpp.

References Definition::getLanguage(), isObjectiveC(), SrcLangExt_IDL, and SrcLangExt_Java.

Referenced by writeIncludeFiles().

{
bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
if (isIDLorJava)
{
return "import";
}
else if (isObjectiveC())
{
return "#import ";
}
else
{
return "#include ";
}
}
QCString ClassDef::inheritanceGraphFileName ( ) const

returns the file name to use for the inheritance graph

Definition at line 4741 of file classdef.cpp.

References ClassDefImpl::inheritFileName, and m_impl.

Referenced by DotClassGraph::DotClassGraph().

{
}
const ClassSDict * ClassDef::innerClasses ( ) const

Definition at line 4700 of file classdef.cpp.

References ClassDefImpl::innerClasses, and m_impl.

{
}
void ClassDef::insertBaseClass ( ClassDef cd,
const char *  name,
Protection  p,
Specifier  s,
const char *  t = 0 
)

Definition at line 374 of file classdef.cpp.

References ClassDefImpl::inherits, ClassDefImpl::isSimple, and m_impl.

Referenced by addInstance(), findClassRelation(), and mergeCategory().

{
//printf("*** insert base class %s into %s\n",cd->name().data(),name().data());
//inherits->inSort(new BaseClassDef(cd,p,s,t));
if (m_impl->inherits==0)
{
m_impl->inherits->setAutoDelete(TRUE);
}
m_impl->inherits->append(new BaseClassDef(cd,n,p,s,t));
m_impl->isSimple = FALSE;
}
void ClassDef::insertMember ( MemberDef md)
void ClassDef::insertSubClass ( ClassDef cd,
Protection  p,
Specifier  s,
const char *  t = 0 
)

Definition at line 389 of file classdef.cpp.

References Config_getBool, ClassDefImpl::inheritedBy, ClassDefImpl::isSimple, m_impl, Private, and protection().

Referenced by addInstance(), and findClassRelation().

{
//printf("*** insert sub class %s into %s\n",cd->name().data(),name().data());
static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
if (!extractPrivate && cd->protection()==Private) return;
{
m_impl->inheritedBy->setAutoDelete(TRUE);
}
m_impl->inheritedBy->inSort(new BaseClassDef(cd,0,p,s,t));
m_impl->isSimple = FALSE;
}
ClassDef * ClassDef::insertTemplateInstance ( const QCString &  fileName,
int  startLine,
int  startColumn,
const QCString &  templSpec,
bool &  freshInstance 
)

Definition at line 3690 of file classdef.cpp.

References Class, ClassDef(), Debug::Classes, Definition::getOuterScope(), Definition::isHidden(), Definition::localName(), m_impl, Definition::name(), Debug::print(), removeRedundantWhiteSpace(), Definition::setHidden(), Definition::setOuterScope(), setTemplateMaster(), and ClassDefImpl::templateInstances.

Referenced by findTemplateInstanceRelation().

{
freshInstance = FALSE;
{
m_impl->templateInstances = new QDict<ClassDef>(17);
}
ClassDef *templateClass=m_impl->templateInstances->find(templSpec);
if (templateClass==0)
{
Debug::print(Debug::Classes,0," New template instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec));
QCString tcname = removeRedundantWhiteSpace(localName()+templSpec);
templateClass = new ClassDef(
fileName,startLine,startColumn,tcname,ClassDef::Class);
templateClass->setTemplateMaster(this);
templateClass->setOuterScope(getOuterScope());
templateClass->setHidden(isHidden());
m_impl->templateInstances->insert(templSpec,templateClass);
freshInstance=TRUE;
}
return templateClass;
}
void ClassDef::insertUsedFile ( FileDef fd)

Definition at line 799 of file classdef.cpp.

References ClassDefImpl::files, insertUsedFile(), m_impl, and ClassDefImpl::templateInstances.

Referenced by addClassToContext(), addInterfaceOrServiceToServiceOrSingleton(), addMemberDocs(), addMethodToClass(), addVariableToClass(), findClassRelation(), findEnums(), findMember(), and insertUsedFile().

{
if (fd==0) return;
if (m_impl->files.find(fd)==-1) m_impl->files.append(fd);
{
QDictIterator<ClassDef> qdi(*m_impl->templateInstances);
ClassDef *cd;
for (qdi.toFirst();(cd=qdi.current());++qdi)
{
cd->insertUsedFile(fd);
}
}
}
void ClassDef::internalInsertMember ( MemberDef md,
Protection  prot,
bool  addToAllList 
)
private

isReference()

Definition at line 433 of file classdef.cpp.

References addMemberToList(), ClassDefImpl::allMemberNameInfoSDict, MemberList::append(), SDict< T >::append(), ClassDefImpl::arrowOperator, Config_getBool, createMemberList(), err(), SDict< T >::find(), Definition::getLanguage(), MemberDef::getMemberSpecifiers(), ClassDefImpl::isAbstract, MemberDef::isConstructor(), MemberDef::isDestructor(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isFriend(), MemberDef::isFunctionPtr(), Definition::isHidden(), MemberDef::isRelated(), ClassDefImpl::isSimple, isSimple(), MemberDef::isStatic(), MemberDef::isTypedef(), MemberDef::isVariable(), m_impl, MemberListType_constructors, MemberListType_dcopMethods, MemberListType_enumMembers, MemberListType_enumValMembers, MemberListType_eventMembers, MemberListType_events, MemberListType_friends, MemberListType_functionMembers, MemberListType_interfaceMembers, MemberListType_interfaces, MemberListType_pacAttribs, MemberListType_pacMethods, MemberListType_pacStaticAttribs, MemberListType_pacStaticMethods, MemberListType_pacTypes, MemberListType_priAttribs, MemberListType_priMethods, MemberListType_priSlots, MemberListType_priStaticAttribs, MemberListType_priStaticMethods, MemberListType_priTypes, MemberListType_proAttribs, MemberListType_proMethods, MemberListType_properties, MemberListType_propertyMembers, MemberListType_proSlots, MemberListType_proStaticAttribs, MemberListType_proStaticMethods, MemberListType_proTypes, MemberListType_pubAttribs, MemberListType_pubMethods, MemberListType_pubSlots, MemberListType_pubStaticAttribs, MemberListType_pubStaticMethods, MemberListType_pubTypes, MemberListType_related, MemberListType_relatedMembers, MemberListType_serviceMembers, MemberListType_services, MemberListType_signals, MemberListType_typedefMembers, MemberListType_variableMembers, MemberDef::memberType(), MemberType_DCOP, MemberType_Enumeration, MemberType_EnumValue, MemberType_Event, MemberType_Function, MemberType_Interface, MemberType_Property, MemberType_Service, MemberType_Signal, MemberType_Slot, MemberType_Typedef, MemberType_Variable, Definition::name(), Package, Private, Protected, protectionLevelVisible(), Public, Pure, SDict< T >::setAutoDelete(), SrcLangExt_VHDL, title(), VhdlDocGen::trVhdlType(), MemberDef::typeString(), ClassDefImpl::vhdlSummaryTitles, and MemberDef::virtualness().

Referenced by insertMember(), mergeCategory(), and mergeMembers().

{
//printf("insertInternalMember(%s) isHidden()=%d\n",md->name().data(),md->isHidden());
if (md->isHidden()) return;
{
{
m_impl->vhdlSummaryTitles.append(title,new QCString(title));
}
}
if (1 ) // changed to 1 for showing members of external
// classes when HAVE_DOT and UML_LOOK are enabled.
{
bool isSimple=FALSE;
/********************************************/
/* insert member in the declaration section */
/********************************************/
if (md->isRelated() && protectionLevelVisible(prot))
{
}
else if (md->isFriend())
{
}
else
{
switch (md->memberType())
{
case MemberType_Service: // UNO IDL
break;
case MemberType_Interface: // UNO IDL
break;
case MemberType_Signal: // Qt specific
break;
case MemberType_DCOP: // KDE2 specific
break;
break;
break;
case MemberType_Slot: // Qt specific
switch (prot)
{
case Protected:
case Package: // slots in packages are not possible!
break;
case Public:
break;
case Private:
break;
}
break;
default: // any of the other members
if (md->isStatic())
{
if (md->isVariable())
{
switch (prot)
{
case Protected:
break;
case Package:
break;
case Public:
break;
case Private:
break;
}
}
else // function
{
switch (prot)
{
case Protected:
break;
case Package:
break;
case Public:
break;
case Private:
break;
}
}
}
else // not static
{
if (md->isVariable())
{
switch (prot)
{
case Protected:
break;
case Package:
break;
case Public:
isSimple=!md->isFunctionPtr();
break;
case Private:
break;
}
}
else if (md->isTypedef() || md->isEnumerate() || md->isEnumValue())
{
switch (prot)
{
case Protected:
break;
case Package:
break;
case Public:
isSimple=QCString(md->typeString()).find(")(")==-1;
break;
case Private:
break;
}
}
else // member function
{
switch (prot)
{
case Protected:
break;
case Package:
break;
case Public:
break;
case Private:
break;
}
}
}
break;
}
}
if (!isSimple) // not a simple field -> not a simple struct
{
m_impl->isSimple = FALSE;
}
//printf("adding %s simple=%d total_simple=%d\n",name().data(),isSimple,m_impl->isSimple);
/*******************************************************/
/* insert member in the detailed documentation section */
/*******************************************************/
if ((md->isRelated() && protectionLevelVisible(prot)) || md->isFriend())
{
}
else
{
switch (md->memberType())
{
case MemberType_Service: // UNO IDL
break;
case MemberType_Interface: // UNO IDL
break;
break;
break;
case MemberType_Signal: // fall through
break;
{
}
break;
default: // any of the other members
{
switch (md->memberType())
{
break;
break;
break;
if (md->isConstructor() || md->isDestructor())
{
ml->append(md);
}
else
{
}
break;
break;
default:
err("Unexpected member type %d found!\n",md->memberType());
}
}
break;
}
}
/*************************************************/
/* insert member in the appropriate member group */
/*************************************************/
// Note: this must be done AFTER inserting the member in the
// regular groups
//addMemberToGroup(md,groupId);
}
if (md->virtualness()==Pure)
{
}
if (md->name()=="operator->")
{
}
//::addClassMemberNameToIndex(md);
if (addToAllList &&
!(Config_getBool(HIDE_FRIEND_COMPOUNDS) &&
md->isFriend() &&
(QCString(md->typeString())=="friend class" ||
QCString(md->typeString())=="friend struct" ||
QCString(md->typeString())=="friend union")))
{
//printf("=======> adding member %s to class %s\n",md->name().data(),name().data());
MemberInfo *mi = new MemberInfo((MemberDef *)md,
prot,md->virtualness(),FALSE);
{
}
if ((mni=m_impl->allMemberNameInfoSDict->find(md->name())))
{
mni->append(mi);
}
else
{
mni = new MemberNameInfo(md->name());
mni->append(mi);
m_impl->allMemberNameInfoSDict->append(mni->memberName(),mni);
}
}
}
bool ClassDef::isAbstract ( ) const

Returns TRUE if there is at least one pure virtual member in this class.

Definition at line 4467 of file classdef.cpp.

References Entry::Abstract, ClassDefImpl::isAbstract, m_impl, and ClassDefImpl::spec.

Referenced by addClassAttributes(), and generateXMLForClass().

bool ClassDef::isAccessibleMember ( MemberDef md)

returns TRUE iff md is a member of this class or of the the public/protected members of a base class

Definition at line 3986 of file classdef.cpp.

References MemberDef::getClassDef(), and isBaseClass().

{
return md->getClassDef() && isBaseClass(md->getClassDef(),TRUE);
}
bool ClassDef::isAnonymous ( ) const
bool ClassDef::isBaseClass ( ClassDef bcd,
bool  followInstances,
int  level = 0 
)

Returns TRUE iff bcd is a direct or indirect base class of this class. This function will recusively traverse all branches of the inheritance tree.

Definition at line 2793 of file classdef.cpp.

References baseClasses(), err(), isBaseClass(), Definition::name(), and templateMaster().

Referenced by addInstance(), computeMemberRelations(), isAccessibleMember(), isBaseClass(), MemberDef::isReimplementedBy(), VhdlDocGen::isSubClass(), and mergeMembers().

{
bool found=FALSE;
//printf("isBaseClass(cd=%s) looking for %s\n",name().data(),bcd->name().data());
if (level>256)
{
err("Possible recursive class relation while inside %s and looking for base class %s\n",qPrint(name()),qPrint(bcd->name()));
return FALSE;
}
if (baseClasses())
{
// Beware: trying to optimise the iterator away using ->first() & ->next()
// causes bug 625531
for ( ; bcli.current() && !found ; ++bcli)
{
ClassDef *ccd=bcli.current()->classDef;
if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster();
//printf("isBaseClass() baseclass %s\n",ccd->name().data());
if (ccd==bcd)
found=TRUE;
else
found=ccd->isBaseClass(bcd,followInstances,level+1);
}
}
return found;
}
bool ClassDef::isCSharp ( ) const

Returns TRUE if this class is implemented in C#

Definition at line 4497 of file classdef.cpp.

References Definition::getLanguage(), and SrcLangExt_CSharp.

Referenced by findClassRelation().

bool ClassDef::isEmbeddedInOuterScope ( ) const

Definition at line 4612 of file classdef.cpp.

References Config_getBool, getFileDef(), Definition::getOuterScope(), Doxygen::globalScope, FileDef::isLinkableInProject(), ClassDefImpl::isSimple, m_impl, and Definition::partOfGroups().

Referenced by ClassListContext::Private::addClasses(), addMembersToIndex(), anchor(), countAnnotatedClasses(), RTFGenerator::endIndexSection(), LatexGenerator::endIndexSection(), generateClassList(), RTFGenerator::startIndexSection(), LatexGenerator::startIndexSection(), writeAnnotatedClassList(), ClassSDict::writeDocumentation(), writeDocumentationForInnerClasses(), and writeTagFile().

{
static bool inlineGroupedClasses = Config_getBool(INLINE_GROUPED_CLASSES);
static bool inlineSimpleClasses = Config_getBool(INLINE_SIMPLE_STRUCTS);
Definition *container = getOuterScope();
bool containerLinkable =
container &&
(
(container==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) || // global class in documented file
container->isLinkableInProject() // class in documented scope
);
// inline because of INLINE_GROUPED_CLASSES=YES ?
bool b1 = (inlineGroupedClasses && partOfGroups()!=0); // a grouped class
// inline because of INLINE_SIMPLE_STRUCTS=YES ?
bool b2 = (inlineSimpleClasses && m_impl->isSimple && // a simple class
(containerLinkable || // in a documented container
partOfGroups()!=0 // or part of a group
)
);
//printf("%s::isEmbeddedInOuterScope(): inlineGroupedClasses=%d "
// "inlineSimpleClasses=%d partOfGroups()=%p m_impl->isSimple=%d "
// "getOuterScope()=%s b1=%d b2=%d\n",
// name().data(),inlineGroupedClasses,inlineSimpleClasses,
// partOfGroups().pointer(),m_impl->isSimple,getOuterScope()?getOuterScope()->name().data():"<none>",b1,b2);
return b1 || b2; // either reason will do
}
bool ClassDef::isExtension ( ) const

Returns TRUE if this class represents an Objective-C 2.0 extension (nameless category)

Definition at line 4691 of file classdef.cpp.

References Definition::name().

Referenced by mergeCategory(), visibleInParentsDeclList(), and ClassSDict::writeDeclaration().

{
QCString n = name();
int si = n.find('(');
int ei = n.find(')');
bool b = ei>si && n.mid(si+1,ei-si-1).stripWhiteSpace().isEmpty();
return b;
}
bool ClassDef::isFinal ( ) const

Returns TRUE if this class is marked as final

Definition at line 4472 of file classdef.cpp.

References Entry::Final, m_impl, and ClassDefImpl::spec.

Referenced by addClassAttributes(), and generateXMLForClass().

{
}
bool ClassDef::isForwardDeclared ( ) const

Returns TRUE if this class represents a forward declaration of a template class

Definition at line 4487 of file classdef.cpp.

References Entry::ForwardDecl, m_impl, and ClassDefImpl::spec.

Referenced by addClassToContext().

bool ClassDef::isGeneric ( ) const

Definition at line 4681 of file classdef.cpp.

References ClassDefImpl::isGeneric, and m_impl.

Referenced by addClassToContext().

{
return m_impl->isGeneric;
}
bool ClassDef::isJavaEnum ( ) const
bool ClassDef::isLinkable ( ) const
virtual
bool ClassDef::isLinkableInProject ( ) const
virtual

returns TRUE iff a link is possible to this item within this project.

a link to this class is possible within this project

Implements Definition.

Definition at line 2723 of file classdef.cpp.

References Config_getBool, hasDocumentation(), isAnonymous(), Definition::isArtificial(), Definition::isHidden(), isLinkableInProject(), ClassDefImpl::isLocal, isReference(), ClassDefImpl::isStatic, m_impl, Definition::name(), ClassDefImpl::prot, protectionLevelVisible(), and ClassDefImpl::templateMaster.

Referenced by MemberDef::_computeLinkableInProject(), MemberDef::_writeReimplements(), ClassListContext::Private::addClasses(), addClassMemberNameToIndex(), addListReferences(), addSourceReferences(), classVisibleInIndex(), countAnnotatedClasses(), RTFGenerator::endIndexSection(), LatexGenerator::endIndexSection(), generateClassList(), ClassMembersIndexContext::Private::getMembersFiltered(), getOutputFileBase(), hasNonReferenceSuperClass(), isLinkable(), isLinkableInProject(), linkifyText(), ClassIndexContext::Private::list(), RTFGenerator::startIndexSection(), LatexGenerator::startIndexSection(), writeAlphabeticalClassList(), writeAnnotatedClassList(), writeDeclarationLink(), ClassSDict::writeDocumentation(), writeDocumentationForInnerClasses(), NamespaceDef::writeTagFile(), GroupDef::writeTagFile(), FileDef::writeTagFile(), writeTagFile(), and writeTagFile().

{
static bool extractLocal = Config_getBool(EXTRACT_LOCAL_CLASSES);
static bool extractStatic = Config_getBool(EXTRACT_STATIC);
static bool hideUndoc = Config_getBool(HIDE_UNDOC_CLASSES);
{
}
else
{
return !name().isEmpty() && /* has a name */
!isArtificial() && !isHidden() && /* not hidden */
!isAnonymous() && /* not anonymous */
protectionLevelVisible(m_impl->prot) && /* private/internal */
(!m_impl->isLocal || extractLocal) && /* local */
(hasDocumentation() || !hideUndoc) && /* documented */
(!m_impl->isStatic || extractStatic) && /* static */
!isReference(); /* not an external reference */
}
}
bool ClassDef::isLocal ( ) const

Returns TRUE if this is a local class definition, see EXTRACT_LOCAL_CLASSES

Definition at line 4372 of file classdef.cpp.

References ClassDefImpl::isLocal, and m_impl.

Referenced by ClassSDict::declVisible(), mergeCategory(), and visibleInParentsDeclList().

{
return m_impl->isLocal;
}
bool ClassDef::isObjectiveC ( ) const
bool ClassDef::isPublished ( ) const

Returns TRUE if this class is marked as published

Definition at line 4482 of file classdef.cpp.

References m_impl, Entry::Published, and ClassDefImpl::spec.

Referenced by addClassAttributes().

bool ClassDef::isReference ( ) const
virtual
bool ClassDef::isSealed ( ) const

Returns TRUE if this class is marked as sealed

Definition at line 4477 of file classdef.cpp.

References m_impl, Entry::Sealed, and ClassDefImpl::spec.

Referenced by addClassAttributes(), and generateXMLForClass().

{
}
bool ClassDef::isSimple ( ) const
MemberDef * ClassDef::isSmartPointer ( ) const

Definition at line 4577 of file classdef.cpp.

References ClassDefImpl::arrowOperator, and m_impl.

{
}
bool ClassDef::isSubClass ( ClassDef bcd,
int  level = 0 
)

Returns TRUE iff bcd is a direct or indirect sub class of this class.

Definition at line 2823 of file classdef.cpp.

References err(), isSubClass(), Definition::name(), and subClasses().

Referenced by findClassRelation(), and isSubClass().

{
bool found=FALSE;
if (level>256)
{
err("Possible recursive class relation while inside %s and looking for derived class %s\n",qPrint(name()),qPrint(cd->name()));
return FALSE;
}
if (subClasses())
{
for ( ; bcli.current() && !found ; ++bcli)
{
ClassDef *ccd=bcli.current()->classDef;
if (ccd==cd)
found=TRUE;
else
found=ccd->isSubClass(cd,level+1);
}
}
return found;
}
bool ClassDef::isTemplate ( ) const

Returns TRUE if this class is a template

Definition at line 4432 of file classdef.cpp.

References m_impl, and ClassDefImpl::tempArgs.

Referenced by DocSets::addIndexItem(), flushCachedTemplateRelations(), getCanonicalTypeForIdentifier(), and newResolveTypedef().

{
return m_impl->tempArgs!=0;
}
bool ClassDef::isTemplateArgument ( ) const

Definition at line 4462 of file classdef.cpp.

References ClassDefImpl::isTemplArg, and m_impl.

Referenced by getResolvedSymbol().

{
return m_impl->isTemplArg;
}
bool ClassDef::isUsedOnly ( ) const

Definition at line 4567 of file classdef.cpp.

References m_impl, and ClassDefImpl::usedOnly.

Referenced by getCanonicalTypeForIdentifier().

{
return m_impl->usedOnly;
}
bool ClassDef::isVisibleInHierarchy ( )

the class is visible in a class diagram, or class hierarchy

isArtificial() &&

Definition at line 2759 of file classdef.cpp.

References Config_getBool, hasDocumentation(), hasNonReferenceSuperClass(), isAnonymous(), isReference(), ClassDefImpl::isStatic, m_impl, ClassDefImpl::prot, protectionLevelVisible(), and ClassDefImpl::templateMaster.

Referenced by NestingContext::Private::addClassHierarchy(), DotGfxHierarchyTable::addClassList(), NestingContext::Private::addDerivedClasses(), DotGfxHierarchyTable::addHierarchy(), countClassesInTreeList(), countInheritanceNodes(), hasVisibleRoot(), DiagramRow::insertClass(), writeClassTree(), and writeClassTreeForList().

{
static bool allExternals = Config_getBool(ALLEXTERNALS);
static bool hideUndocClasses = Config_getBool(HIDE_UNDOC_CLASSES);
static bool extractStatic = Config_getBool(EXTRACT_STATIC);
return // show all classes or a subclass is visible
(allExternals || hasNonReferenceSuperClass()) &&
// and not an anonymous compound
// not an artificially introduced class // 1.8.2: allowed these to appear
// and not privately inherited
// documented or shown anyway or documentation is external
!hideUndocClasses ||
) &&
// is not part of an unnamed namespace or shown anyway
(!m_impl->isStatic || extractStatic);
}
void ClassDef::makeTemplateArgument ( bool  b = TRUE)

Definition at line 4552 of file classdef.cpp.

References ClassDefImpl::isTemplArg, and m_impl.

Referenced by findUsedClassesForClass().

{
}
MemberNameInfoSDict * ClassDef::memberNameInfoSDict ( ) const
void ClassDef::mergeCategory ( ClassDef category)

Merges the members of a Objective-C category into this class.

Definition at line 3111 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, MemberInfo::ambigClass, MemberInfo::ambiguityResolutionScope, SDict< T >::append(), baseClasses(), BaseClassDef::classDef, combineDeclarationAndDefinition(), Config_getBool, MemberDef::deepCopy(), SDict< T >::find(), MemberInfo::inherited, insertBaseClass(), internalInsertMember(), isExtension(), isLocal(), SDict< MemberNameInfo >::Iterator, m_impl, MemberDef::makeImplementationDetail(), MemberInfo::memberDef, MemberNameInfo::memberName(), memberNameInfoSDict(), Doxygen::memberNameSDict, MemberDef::moveTo(), Definition::name(), MemberInfo::prot, MemberInfo::scopePath, Definition::setArtificial(), MemberDef::setCategory(), setCategoryOf(), MemberDef::setCategoryRelation(), and MemberInfo::virt.

Referenced by mergeCategories().

{
static bool extractLocalMethods = Config_getBool(EXTRACT_LOCAL_METHODS);
bool makePrivate = category->isLocal();
// in case extract local methods is not enabled we don't add the methods
// of the category in case it is defined in the .m file.
if (makePrivate && !extractLocalMethods) return;
bool isExtension = category->isExtension();
category->setCategoryOf(this);
if (isExtension)
{
category->setArtificial(TRUE);
// copy base classes/protocols from extension
if (category->baseClasses())
{
BaseClassListIterator bcli(*category->baseClasses());
for ( ; (bcd=bcli.current()) ; ++bcli )
{
insertBaseClass(bcd->classDef,bcd->usedName,bcd->prot,bcd->virt,bcd->templSpecifiers);
// correct bcd->classDef so that they do no longer derive from
// category, but from this class!
if (bcd->classDef->subClasses())
{
BaseClassListIterator scli(*bcd->classDef->subClasses());
for ( ; (scd=scli.current()) ; ++scli )
{
if (scd->classDef==category)
{
scd->classDef=this;
}
}
}
}
}
}
// make methods private for categories defined in the .m file
//printf("%s::mergeCategory makePrivate=%d\n",name().data(),makePrivate);
if (srcMnd && dstMnd)
{
MemberNameInfoSDict::Iterator srcMnili(*srcMnd);
MemberNameInfo *srcMni;
for ( ; (srcMni=srcMnili.current()) ; ++srcMnili)
{
MemberNameInfo *dstMni=dstMnd->find(srcMni->memberName());
if (dstMni) // method is already defined in the class
{
//printf("Existing member %s\n",srcMni->memberName());
MemberInfo *dstMi = dstMni->getFirst();
MemberInfo *srcMi = srcMni->getFirst();
//if (dstMi)
//{
// Protection prot = dstMi->prot;
// if (makePrivate || isExtension)
// {
// prot = Private;
// removeMemberFromLists(dstMi->memberDef);
// internalInsertMember(dstMi->memberDef,prot,FALSE);
// }
//}
if (srcMi && dstMi)
{
dstMi->memberDef->setCategory(category);
}
}
else // new method name
{
//printf("New member %s\n",srcMni->memberName());
// create a deep copy of the list
MemberNameInfo *newMni = 0;
newMni = new MemberNameInfo(srcMni->memberName());
// copy the member(s) from the category to this class
MemberNameInfoIterator mnii(*srcMni);
for (;(mi=mnii.current());++mnii)
{
//printf("Adding '%s'\n",mi->memberDef->name().data());
Protection prot = mi->prot;
//if (makePrivate) prot = Private;
MemberDef *newMd = mi->memberDef->deepCopy();
if (newMd)
{
//printf("Copying member %s\n",mi->memberDef->name().data());
newMd->moveTo(this);
MemberInfo *newMi=new MemberInfo(newMd,prot,mi->virt,mi->inherited);
newMi->scopePath=mi->scopePath;
newMi->ambigClass=mi->ambigClass;
newMni->append(newMi);
// also add the newly created member to the global members list
QCString name = newMd->name();
if ((mn=Doxygen::memberNameSDict->find(name)))
{
mn->append(newMd);
}
else
{
mn = new MemberName(newMd->name());
mn->append(newMd);
}
newMd->setCategory(category);
if (makePrivate || isExtension)
{
}
internalInsertMember(newMd,prot,FALSE);
}
}
// add it to the dictionary
dstMnd->append(newMni->memberName(),newMni);
}
}
}
}
void ClassDef::mergeMembers ( )

recusively merges the `all members' lists of a class base with that of this class. Must only be called for classes without subclasses!

Definition at line 2860 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, MemberInfo::ambigClass, MemberInfo::ambiguityResolutionScope, SDict< T >::append(), MemberDef::argumentList(), baseClasses(), BaseClassDef::classDef, compoundType(), Config_getBool, SDict< T >::find(), MemberDef::getClassDef(), MemberDef::getFileDef(), Definition::getLanguage(), getLanguageSpecificSeparator(), Definition::getOuterScope(), Interface, internalInsertMember(), isBaseClass(), MemberDef::isFriend(), isStandardFunc(), SDict< MemberNameInfo >::Iterator, m_impl, matchArguments2(), MemberInfo::memberDef, MemberNameInfo::memberName(), memberNameInfoSDict(), ClassDefImpl::membersMerged, mergeMembers(), Definition::name(), Normal, Private, MemberInfo::prot, BaseClassDef::prot, Protected, MemberDef::protection(), Public, MemberInfo::scopePath, SDict< T >::setAutoDelete(), MemberInfo::virt, and BaseClassDef::virt.

Referenced by buildCompleteMemberLists(), and mergeMembers().

{
if (m_impl->membersMerged) return;
//static bool optimizeOutputForJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
//static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
QCString sep=getLanguageSpecificSeparator(lang,TRUE);
int sepLen = sep.length();
//printf(" mergeMembers for %s\n",name().data());
bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
if (baseClasses())
{
//printf(" => has base classes!\n");
for ( ; (bcd=bcli.current()) ; ++bcli )
{
ClassDef *bClass=bcd->classDef;
// merge the members in the base class of this inheritance branch first
bClass->mergeMembers();
if (srcMnd)
{
MemberNameInfoSDict::Iterator srcMnili(*srcMnd);
MemberNameInfo *srcMni;
for ( ; (srcMni=srcMnili.current()) ; ++srcMnili)
{
//printf(" Base member name %s\n",srcMni->memberName());
MemberNameInfo *dstMni;
if (dstMnd!=0 && (dstMni=dstMnd->find(srcMni->memberName())))
// a member with that name is already in the class.
// the member may hide or reimplement the one in the sub class
// or there may be another path to the base class that is already
// visited via another branch in the class hierarchy.
{
MemberNameInfoIterator srcMnii(*srcMni);
MemberInfo *srcMi;
for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
{
MemberDef *srcMd = srcMi->memberDef;
bool found=FALSE;
bool ambigue=FALSE;
bool hidden=FALSE;
MemberNameInfoIterator dstMnii(*dstMni);
MemberInfo *dstMi;
ClassDef *srcCd = srcMd->getClassDef();
for ( ; (dstMi=dstMnii.current()) && !found; ++dstMnii )
{
MemberDef *dstMd = dstMi->memberDef;
if (srcMd!=dstMd) // different members
{
ClassDef *dstCd = dstMd->getClassDef();
//printf(" Is %s a base class of %s?\n",srcCd->name().data(),dstCd->name().data());
if (srcCd==dstCd || dstCd->isBaseClass(srcCd,TRUE))
// member is in the same or a base class
{
ArgumentList *srcAl = srcMd->argumentList();
ArgumentList *dstAl = dstMd->argumentList();
srcMd->getOuterScope(),srcMd->getFileDef(),srcAl,
dstMd->getOuterScope(),dstMd->getFileDef(),dstAl,
TRUE
);
//printf(" Yes, matching (%s<->%s): %d\n",
// argListToString(srcMd->argumentList()).data(),
// argListToString(dstMd->argumentList()).data(),
// found);
hidden = hidden || !found;
}
else // member is in a non base class => multiple inheritance
// using the same base class.
{
//printf("$$ Existing member %s %s add scope %s\n",
// dstMi->ambiguityResolutionScope.data(),
// dstMd->name().data(),
// dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
QCString scope=dstMi->scopePath.left(dstMi->scopePath.find(sep)+sepLen);
if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
dstMi->ambiguityResolutionScope.prepend(scope);
ambigue=TRUE;
}
}
else // same members
{
// do not add if base class is virtual or
// if scope paths are equal or
// if base class is an interface (and thus implicitly virtual).
//printf("same member found srcMi->virt=%d dstMi->virt=%d\n",srcMi->virt,dstMi->virt);
if ((srcMi->virt!=Normal && dstMi->virt!=Normal) ||
bClass->name()+sep+srcMi->scopePath == dstMi->scopePath ||
)
{
found=TRUE;
}
else // member can be reached via multiple paths in the
// inheritance tree
{
//printf("$$ Existing member %s %s add scope %s\n",
// dstMi->ambiguityResolutionScope.data(),
// dstMd->name().data(),
// dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
QCString scope=dstMi->scopePath.left(dstMi->scopePath.find(sep)+sepLen);
if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
{
dstMi->ambiguityResolutionScope.prepend(scope);
}
ambigue=TRUE;
}
}
}
//printf("member %s::%s hidden %d ambigue %d srcMi->ambigClass=%p\n",
// srcCd->name().data(),srcMd->name().data(),hidden,ambigue,srcMi->ambigClass);
// TODO: fix the case where a member is hidden by inheritance
// of a member with the same name but with another prototype,
// while there is more than one path to the member in the
// base class due to multiple inheritance. In this case
// it seems that the member is not reachable by prefixing a
// scope name either (according to my compiler). Currently,
// this case is shown anyway.
if (!found && srcMd->protection()!=Private && !srcMd->isFriend())
{
Protection prot=srcMd->protection();
if (bcd->prot==Protected && prot==Public) prot=bcd->prot;
else if (bcd->prot==Private) prot=bcd->prot;
if (inlineInheritedMembers)
{
if (!isStandardFunc(srcMd))
{
//printf(" insertMember `%s'\n",srcMd->name().data());
internalInsertMember(srcMd,prot,FALSE);
}
}
Specifier virt=srcMi->virt;
if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
MemberInfo *newMi = new MemberInfo(srcMd,prot,virt,TRUE);
newMi->scopePath=bClass->name()+sep+srcMi->scopePath;
if (ambigue)
{
//printf("$$ New member %s %s add scope %s::\n",
// srcMi->ambiguityResolutionScope.data(),
// srcMd->name().data(),
// bClass->name().data());
QCString scope=bClass->name()+sep;
if (scope!=srcMi->ambiguityResolutionScope.left(scope.length()))
{
scope+srcMi->ambiguityResolutionScope.copy();
}
}
if (hidden)
{
if (srcMi->ambigClass==0)
{
newMi->ambigClass=bClass;
newMi->ambiguityResolutionScope=bClass->name()+sep;
}
else
{
newMi->ambigClass=srcMi->ambigClass;
}
}
dstMni->append(newMi);
}
}
}
else // base class has a member that is not in the sub class => copy
{
// create a deep copy of the list (only the MemberInfo's will be
// copied, not the actual MemberDef's)
MemberNameInfo *newMni = 0;
newMni = new MemberNameInfo(srcMni->memberName());
// copy the member(s) from the base to the sub class
MemberNameInfoIterator mnii(*srcMni);
for (;(mi=mnii.current());++mnii)
{
if (!mi->memberDef->isFriend()) // don't inherit friends
{
Protection prot = mi->prot;
if (bcd->prot==Protected)
{
if (prot==Public) prot=Protected;
}
else if (bcd->prot==Private)
{
prot=Private;
}
//printf("%s::%s: prot=%d bcd->prot=%d result=%d\n",
// name().data(),mi->memberDef->name().data(),mi->prot,
// bcd->prot,prot);
if (mi->prot!=Private)
{
Specifier virt=mi->virt;
if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
if (inlineInheritedMembers)
{
{
//printf(" insertMember `%s'\n",mi->memberDef->name().data());
}
}
//printf("Adding!\n");
MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt,TRUE);
newMi->scopePath=bClass->name()+sep+mi->scopePath;
newMi->ambigClass=mi->ambigClass;
newMni->append(newMi);
}
}
}
if (dstMnd==0)
{
}
// add it to the dictionary
dstMnd->append(newMni->memberName(),newMni);
}
}
}
}
}
//printf(" end mergeMembers\n");
}
Protection ClassDef::protection ( ) const
QCString ClassDef::qualifiedNameWithTemplateParameters ( QList< ArgumentList > *  actualParams = 0,
int *  actualParamIndex = 0 
) const

Definition at line 3843 of file classdef.cpp.

References className(), Config_getBool, DefinitionIntf::definitionType(), Definition::getLanguage(), getLanguageSpecificSeparator(), Definition::getOuterScope(), isSpecialization(), Definition::localName(), Definition::qualifiedName(), qualifiedNameWithTemplateParameters(), tempArgListToString(), templateArguments(), and DefinitionIntf::TypeClass.

Referenced by addMethodToClass(), addVariableToClass(), displayName(), findMember(), getCanonicalTypeForIdentifier(), qualifiedNameWithTemplateParameters(), and trimTemplateSpecifiers().

{
//static bool optimizeOutputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
static bool hideScopeNames = Config_getBool(HIDE_SCOPE_NAMES);
//printf("qualifiedNameWithTemplateParameters() localName=%s\n",localName().data());
QCString scName;
if (d)
{
{
ClassDef *cd=(ClassDef *)d;
scName = cd->qualifiedNameWithTemplateParameters(actualParams,actualParamIndex);
}
else if (!hideScopeNames)
{
scName = d->qualifiedName();
}
}
QCString scopeSeparator = getLanguageSpecificSeparator(lang);
if (!scName.isEmpty()) scName+=scopeSeparator;
bool isSpecialization = localName().find('<')!=-1;
QCString clName = className();
//bool isGeneric = getLanguage()==SrcLangExt_CSharp;
//if (isGeneric && clName.right(2)=="-g")
//{
// clName = clName.left(clName.length()-2);
//}
//printf("m_impl->lang=%d clName=%s isSpecialization=%d\n",getLanguage(),clName.data(),isSpecialization);
scName+=clName;
ArgumentList *al=0;
{
if (actualParams && *actualParamIndex<(int)actualParams->count())
{
al = actualParams->at(*actualParamIndex);
if (!isSpecialization)
{
scName+=tempArgListToString(al,lang);
}
(*actualParamIndex)++;
}
else
{
if (!isSpecialization)
{
}
}
}
//printf("qualifiedNameWithTemplateParameters: scope=%s qualifiedName=%s\n",name().data(),scName.data());
return scName;
}
void ClassDef::reclassifyMember ( MemberDef md,
MemberType  t 
)

Definition at line 4582 of file classdef.cpp.

References insertMember(), m_impl, ClassDefImpl::memberLists, MemberList::remove(), and MemberDef::setMemberType().

Referenced by addVariableToClass().

{
md->setMemberType(t);
QListIterator<MemberList> mli(m_impl->memberLists);
for (;(ml=mli.current());++mli)
{
ml->remove(md);
}
}
void ClassDef::removeMemberFromLists ( MemberDef md)

Definition at line 4666 of file classdef.cpp.

References m_impl, ClassDefImpl::memberLists, and MemberList::remove().

{
QListIterator<MemberList> mli(m_impl->memberLists);
for (;(ml=mli.current());++mli)
{
ml->remove(md);
}
}
void ClassDef::setCategoryOf ( ClassDef cd)

Definition at line 4557 of file classdef.cpp.

References ClassDefImpl::categoryOf, and m_impl.

Referenced by mergeCategory().

{
}
void ClassDef::setClassName ( const char *  name)

Definition at line 3914 of file classdef.cpp.

References ClassDefImpl::className, m_impl, and Definition::name().

Referenced by addVariableToFile(), and writeClassTree().

void ClassDef::setClassSpecifier ( uint64  spec)

Definition at line 4686 of file classdef.cpp.

References m_impl, and ClassDefImpl::spec.

Referenced by addClassToContext().

{
m_impl->spec = spec;
}
void ClassDef::setCompoundType ( CompoundType  t)

Definition at line 4542 of file classdef.cpp.

References ClassDefImpl::compType, and m_impl.

Referenced by addClassToContext(), and findClassRelation().

{
}
void ClassDef::setFileDef ( FileDef fd)

Definition at line 4522 of file classdef.cpp.

References ClassDefImpl::fileDef, and m_impl.

Referenced by addClassToContext(), and createTagLessInstance().

{
}
void ClassDef::setGroupDefForAllMembers ( GroupDef g,
Grouping::GroupPri_t  pri,
const QCString &  fileName,
int  startLine,
bool  hasDocs 
)

Definition at line 3603 of file classdef.cpp.

References GroupDef::addClass(), ClassDefImpl::allMemberNameInfoSDict, MemberDef::getClassDefOfAnonymousType(), GroupDef::insertMember(), SDict< MemberNameInfo >::Iterator, m_impl, MemberInfo::memberDef, MemberDef::setGroupDef(), and setGroupDefForAllMembers().

Referenced by addMemberToGroups(), and setGroupDefForAllMembers().

{
gd->addClass(this);
//printf("ClassDef::setGroupDefForAllMembers(%s)\n",gd->name().data());
if (m_impl->allMemberNameInfoSDict==0) return;
for (;(mni=mnili.current());++mnili)
{
for (mnii.toFirst();(mi=mnii.current());++mnii)
{
md->setGroupDef(gd,pri,fileName,startLine,hasDocs);
gd->insertMember(md,TRUE);
ClassDef *innerClass = md->getClassDefOfAnonymousType();
if (innerClass) innerClass->setGroupDefForAllMembers(gd,pri,fileName,startLine,hasDocs);
}
}
}
void ClassDef::setIncludeFile ( FileDef fd,
const char *  incName,
bool  local,
bool  force 
)

Definition at line 836 of file classdef.cpp.

References IncludeInfo::fileDef, ClassDefImpl::incInfo, IncludeInfo::includeName, IncludeInfo::local, and m_impl.

Referenced by addIncludeFile().

{
//printf("ClassDef::setIncludeFile(%p,%s,%d,%d)\n",fd,includeName,local,force);
if ((includeName && m_impl->incInfo->includeName.isEmpty()) ||
(fd!=0 && m_impl->incInfo->fileDef==0)
)
{
//printf("Setting file info\n");
m_impl->incInfo->includeName = includeName;
m_impl->incInfo->local = local;
}
if (force && includeName)
{
m_impl->incInfo->includeName = includeName;
m_impl->incInfo->local = local;
}
}
void ClassDef::setIsStatic ( bool  b)

Definition at line 4537 of file classdef.cpp.

References ClassDefImpl::isStatic, and m_impl.

Referenced by addClassToContext().

{
}
void ClassDef::setName ( const char *  name)
virtual

Sets a new name for the definition

Reimplemented from Definition.

Definition at line 4725 of file classdef.cpp.

References ClassDefImpl::isAnonymous, m_impl, and Definition::setName().

{
m_impl->isAnonymous = QCString(name).find('@')!=-1;
}
void ClassDef::setNamespace ( NamespaceDef nd)

Definition at line 4517 of file classdef.cpp.

References m_impl, and ClassDefImpl::nspace.

{
m_impl->nspace = nd;
}
void ClassDef::setProtection ( Protection  p)

Definition at line 4532 of file classdef.cpp.

References m_impl, and ClassDefImpl::prot.

Referenced by addClassToContext().

{
}
void ClassDef::setSubGrouping ( bool  enabled)

Definition at line 4527 of file classdef.cpp.

References m_impl, and ClassDefImpl::subGrouping.

Referenced by addClassToContext().

{
m_impl->subGrouping = enabled;
}
void ClassDef::setTagLessReference ( ClassDef cd)

Definition at line 4661 of file classdef.cpp.

References m_impl, and ClassDefImpl::tagLessRef.

Referenced by processTagLessClasses().

{
}
void ClassDef::setTemplateArguments ( ArgumentList al)

Definition at line 2619 of file classdef.cpp.

References m_impl, and ClassDefImpl::tempArgs.

Referenced by addClassToContext().

{
if (al==0) return;
if (m_impl->tempArgs) delete m_impl->tempArgs; // delete old list if needed
//printf("setting template args '%s' for '%s'\n",tempArgListToString(al,getLanguage()).data(),name().data());
for (;(a=ali.current());++ali)
{
m_impl->tempArgs->append(new Argument(*a));
}
}
void ClassDef::setTemplateBaseClassNames ( QDict< int > *  templateNames)

Definition at line 3735 of file classdef.cpp.

References m_impl, and ClassDefImpl::templBaseClassNames.

Referenced by findTemplateInstanceRelation().

{
if (templateNames==0) return;
{
m_impl->templBaseClassNames = new QDict<int>(17);
m_impl->templBaseClassNames->setAutoDelete(TRUE);
}
// make a deep copy of the dictionary.
QDictIterator<int> qdi(*templateNames);
for (;qdi.current();++qdi)
{
if (m_impl->templBaseClassNames->find(qdi.currentKey())==0)
{
m_impl->templBaseClassNames->insert(qdi.currentKey(),new int(*qdi.current()));
}
}
}
void ClassDef::setTemplateMaster ( ClassDef tm)

Definition at line 4547 of file classdef.cpp.

References m_impl, and ClassDefImpl::templateMaster.

Referenced by getVariableInstance(), and insertTemplateInstance().

void ClassDef::setTypeConstraints ( ArgumentList al)

Definition at line 2606 of file classdef.cpp.

References m_impl, and ClassDefImpl::typeConstraints.

Referenced by addClassToContext().

{
if (al==0) return;
for (;(a=ali.current());++ali)
{
m_impl->typeConstraints->append(new Argument(*a));
}
}
void ClassDef::setUsedOnly ( bool  b)

Definition at line 4562 of file classdef.cpp.

References m_impl, and ClassDefImpl::usedOnly.

Referenced by addTypeConstraint(), and findUsedClassesForClass().

{
}
void ClassDef::showUsedFiles ( OutputList ol)
protected

Definition at line 1100 of file classdef.cpp.

References Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::endItemList(), OutputList::endItemListItem(), ClassDefImpl::files, generatedFromFiles(), FileDef::generateSourceFile(), FileDef::getOutputFileBase(), FileDef::getPath(), Definition::getReference(), FileDef::getSourceFileBase(), FileDef::getVersion(), OutputGenerator::Html, FileDef::isLinkable(), m_impl, OutputGenerator::Man, FileDef::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startItemList(), OutputList::startItemListItem(), stripFromPath(), OutputList::writeObjectLink(), and OutputList::writeRuler().

Referenced by writeDocumentationContents().

{
ol.writeRuler();
bool first=TRUE;
QListIterator<FileDef> li(m_impl->files);
FileDef *fd;
for (;(fd=li.current());++li)
{
if (first)
{
first=FALSE;
}
QCString path=fd->getPath();
if (Config_getBool(FULL_PATH_NAMES))
{
ol.docify(stripFromPath(path));
}
QCString fname = fd->name();
if (!fd->getVersion().isEmpty()) // append version if available
{
fname += " (" + fd->getVersion() + ")";
}
// for HTML
if (fd->generateSourceFile())
{
ol.writeObjectLink(0,fd->getSourceFileBase(),0,fname);
}
else if (fd->isLinkable())
{
fname);
}
else
{
ol.docify(fname);
}
// for other output formats
if (fd->isLinkable())
{
fname);
}
else
{
ol.docify(fname);
}
}
if (!first) ol.endItemList();
}
void ClassDef::sortMemberLists ( )

Definition at line 4035 of file classdef.cpp.

References ClassDefImpl::innerClasses, m_impl, ClassDefImpl::memberLists, MemberList::needsSorting(), MemberList::setNeedsSorting(), MemberList::sort(), and SDict< T >::sort().

Referenced by sortMemberLists().

{
QListIterator<MemberList> mli(m_impl->memberLists);
for (;(ml=mli.current());++mli)
{
if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
}
{
}
}
void ClassDef::startMemberDeclarations ( OutputList ol)
private

Definition at line 1484 of file classdef.cpp.

References OutputList::startMemberSections().

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
//printf("%s: ClassDef::startMemberDeclarations()\n",name().data());
}
void ClassDef::startMemberDocumentation ( OutputList ol)
private

Definition at line 1464 of file classdef.cpp.

References Config_getBool, OutputList::disable(), OutputGenerator::Html, and Doxygen::suppressDocWarnings.

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
//printf("%s: ClassDef::startMemberDocumentation()\n",name().data());
if (Config_getBool(SEPARATE_MEMBER_PAGES))
{
}
}
BaseClassList * ClassDef::subClasses ( ) const
bool ClassDef::subGrouping ( ) const
const ClassList * ClassDef::taggedInnerClasses ( ) const

Definition at line 4642 of file classdef.cpp.

References m_impl, and ClassDefImpl::taggedInnerClasses.

ClassDef * ClassDef::tagLessReference ( ) const

Definition at line 4656 of file classdef.cpp.

References m_impl, and ClassDefImpl::tagLessRef.

{
return m_impl->tagLessRef;
}
ArgumentList * ClassDef::templateArguments ( ) const
ClassDef * ClassDef::templateMaster ( ) const
ConstraintClassDict * ClassDef::templateTypeConstraints ( ) const

Definition at line 4457 of file classdef.cpp.

References ClassDefImpl::constraintClassDict, and m_impl.

Referenced by DotClassGraph::buildGraph().

QCString ClassDef::title ( ) const

Definition at line 2092 of file classdef.cpp.

References Class, ClassDefImpl::compType, Config_getBool, displayName(), VhdlDocGen::getClassTitle(), Definition::getLanguage(), Interface, isJavaEnum(), m_impl, Service, Singleton, SrcLangExt_Fortran, SrcLangExt_ObjC, SrcLangExt_VHDL, ClassDefImpl::tempArgs, theTranslator, Translator::trCompoundReference(), Translator::trCompoundReferenceFortran(), Translator::trEnumReference(), Translator::trServiceReference(), and Translator::trSingletonReference().

Referenced by internalInsertMember(), ClassContext::Private::title(), writeDocumentation(), and writeMemberDeclarations().

{
QCString pageTitle;
if (lang==SrcLangExt_Fortran)
{
m_impl->tempArgs != 0);
}
else if (lang==SrcLangExt_VHDL)
{
pageTitle = VhdlDocGen::getClassTitle(this)+" Reference";
}
else if (isJavaEnum())
{
}
else if (m_impl->compType==Service)
{
}
{
}
else
{
if (Config_getBool(HIDE_COMPOUND_REFERENCE))
{
pageTitle = displayName();
}
else
{
m_impl->tempArgs != 0);
}
}
return pageTitle;
}
const ArgumentList * ClassDef::typeConstraints ( ) const

Definition at line 4710 of file classdef.cpp.

References m_impl, and ClassDefImpl::typeConstraints.

Referenced by ClassContext::Private::typeConstraints().

{
}
UsesClassDict * ClassDef::usedByImplementationClasses ( ) const

Definition at line 4447 of file classdef.cpp.

References m_impl, and ClassDefImpl::usedByImplClassDict.

Referenced by DotClassGraph::buildGraph().

const FileList & ClassDef::usedFiles ( ) const

Definition at line 4705 of file classdef.cpp.

References ClassDefImpl::files, and m_impl.

Referenced by UsedFilesContext::UsedFilesContext().

{
return m_impl->files;
}
UsesClassDict * ClassDef::usedImplementationClasses ( ) const

Definition at line 4442 of file classdef.cpp.

References m_impl, and ClassDefImpl::usesImplClassDict.

Referenced by DotClassGraph::buildGraph().

UsesClassDict * ClassDef::usedInterfaceClasses ( ) const

Definition at line 4452 of file classdef.cpp.

References m_impl, and ClassDefImpl::usesIntfClassDict.

bool ClassDef::visibleInParentsDeclList ( ) const

show this class in the declaration section of its parent?

Definition at line 1851 of file classdef.cpp.

References Config_getBool, isAnonymous(), isExtension(), isLinkable(), isLocal(), Private, and protection().

Referenced by writeDeclarationLink().

{
static bool extractPrivate = Config_getBool(EXTRACT_PRIVATE);
static bool hideUndocClasses = Config_getBool(HIDE_UNDOC_CLASSES);
static bool extractLocalClasses = Config_getBool(EXTRACT_LOCAL_CLASSES);
bool linkable = isLinkable();
return (!isAnonymous() && !isExtension() &&
(protection()!=::Private || extractPrivate) &&
(linkable || (!hideUndocClasses && (!isLocal() || extractLocalClasses)))
);
}
void ClassDef::writeAdditionalInheritedMembers ( OutputList ol)
private

Definition at line 4181 of file classdef.cpp.

References LayoutDocManager::Class, Definition::getLanguage(), LayoutDocManager::instance(), LayoutDocEntry::kind(), LayoutDocEntry::MemberDecl, MemberListType_friends, LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDecl::type, visited, and writeInheritedMemberDeclarations().

Referenced by endMemberDeclarations().

{
//printf("**** writeAdditionalInheritedMembers()\n");
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
{
{
QPtrDict<void> visited(17);
writeInheritedMemberDeclarations(ol,lmd->type,-1,lmd->title(getLanguage()),this,TRUE,FALSE,&visited);
}
}
}
}
void ClassDef::writeAuthorSection ( OutputList ol)
private
void ClassDef::writeBriefDescription ( OutputList ol,
bool  exampleFlag 
)
private
void ClassDef::writeCollaborationGraph ( OutputList ol)
private
void ClassDef::writeDeclaration ( OutputList ol,
MemberDef md,
bool  inGroup,
ClassDef inheritedFrom,
const char *  inheritId 
)

called from MemberDef::writeDeclaration() to (recusively) write the definition of an anonymous struct, union or class.

Definition at line 2673 of file classdef.cpp.

References MemberDef::anchor(), LayoutDocManager::Class, compoundTypeString(), displayName(), OutputList::docify(), OutputList::endBold(), OutputList::endMemberItem(), LayoutDocManager::instance(), isLinkable(), SIntDict< MemberGroup >::Iterator, LayoutDocEntry::kind(), m_impl, LayoutDocEntry::MemberDecl, ClassDefImpl::memberGroupSDict, MemberGroup::setInGroup(), OutputList::startBold(), LayoutDocEntryMemberDecl::type, OutputList::writeObjectLink(), MemberGroup::writePlainDeclarations(), and writePlainMemberDeclaration().

Referenced by MemberDef::writeDeclaration().

{
//printf("ClassName=`%s' inGroup=%d\n",name().data(),inGroup);
QCString cn = displayName(FALSE);
if (!cn.isEmpty())
{
ol.docify(" ");
if (md && isLinkable())
{
ol.writeObjectLink(0,0,md->anchor(),cn);
}
else
{
ol.startBold();
ol.docify(cn);
ol.endBold();
}
}
ol.docify(" {");
// write user defined member groups
{
for (;(mg=mgli.current());++mgli)
{
mg->setInGroup(inGroup);
mg->writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId);
}
}
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
{
writePlainMemberDeclaration(ol,lmd->type,inGroup,inheritedFrom,inheritId);
}
}
}
void ClassDef::writeDeclarationLink ( OutputList ol,
bool &  found,
const char *  header,
bool  localNames 
)

Definition at line 1863 of file classdef.cpp.

References anchor(), VhdlDocGen::ARCHITECTURE, Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), compoundTypeString(), Config_getBool, displayName(), OutputList::docify(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), Definition::getLanguage(), getOutputFileBase(), VhdlDocGen::getProtectionName(), getReference(), OutputList::insertMemberAlign(), DocRoot::isEmpty(), isLinkable(), isLinkableInProject(), OutputList::parseText(), protection(), SrcLangExt_Fortran, SrcLangExt_VHDL, OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trCompounds(), Translator::trDataTypes(), VhdlDocGen::trVhdlType(), validatingParseDoc(), visibleInParentsDeclList(), OutputList::writeDoc(), writeMoreLink(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by ClassSDict::writeDeclaration().

{
//static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
//static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
{
if (!found) // first class
{
ol.startMemberHeader("nested-classes");
if (header)
{
ol.parseText(header);
}
else if (lang==SrcLangExt_VHDL)
{
}
else
{
}
found=TRUE;
}
ol.startMemberItem(anchor(),FALSE);
QCString ctype = compoundTypeString();
QCString cname = displayName(!localNames);
if (lang!=SrcLangExt_VHDL) // for VHDL we swap the name and the type
{
ol.writeString(ctype);
ol.writeString(" ");
}
if (isLinkable())
{
anchor(),
cname
);
}
else
{
ol.startBold();
ol.docify(cname);
ol.endBold();
}
if (lang==SrcLangExt_VHDL) // now write the type
{
ol.writeString(" ");
}
// add the brief description if available
if (!briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
{
briefDescription(),FALSE,FALSE,0,TRUE,FALSE);
if (rootNode && !rootNode->isEmpty())
{
ol.writeDoc(rootNode,this,0);
{
}
}
delete rootNode;
}
}
}
void ClassDef::writeDetailedDescription ( OutputList ol,
const QCString &  pageType,
bool  exampleFlag,
const QCString &  title,
const QCString &  anchor = QCString() 
)
private
void ClassDef::writeDetailedDocumentationBody ( OutputList ol)
private

Definition at line 975 of file classdef.cpp.

References Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), compoundTypeString(), Config_getBool, OutputList::disable(), Definition::docFile(), Definition::docLine(), Definition::documentation(), OutputList::endDescForItem(), OutputList::endSimpleSect(), OutputList::endTextBlock(), BaseOutputDocInterface::Examples, ClassDefImpl::exampleSDict, OutputList::generateDoc(), Definition::getLanguage(), hasExamples(), OutputGenerator::Html, m_impl, Definition::name(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_Cpp, OutputList::startDescForItem(), OutputList::startSimpleSect(), OutputList::startTextBlock(), theTranslator, Translator::trExamples(), ClassDefImpl::typeConstraints, writeExample(), Definition::writeSourceDef(), OutputList::writeString(), writeTemplateSpec(), and writeTypeConstraints().

Referenced by writeDetailedDescription(), and writeInlineDocumentation().

{
static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
{
}
// repeat brief description
if (!briefDescription().isEmpty() && repeatBrief)
{
ol.generateDoc(briefFile(),briefLine(),this,0,briefDescription(),FALSE,FALSE);
}
if (!briefDescription().isEmpty() && repeatBrief &&
!documentation().isEmpty())
{
ol.writeString("\n\n");
}
// write documentation
if (!documentation().isEmpty())
{
ol.generateDoc(docFile(),docLine(),this,0,documentation(),TRUE,FALSE);
}
// write type constraints
// write examples
{
//ol.startParagraph();
//ol.endParagraph();
}
//ol.newParagraph();
}
void ClassDef::writeDocumentation ( OutputList ol)

Definition at line 2136 of file classdef.cpp.

References addClassAttributes(), addGroupListToTitle(), Config_getBool, displayName(), endFileWithNavPath(), OutputList::endQuickIndices(), endTitle(), Definition::getOuterScope(), getOutputFileBase(), Doxygen::globalScope, HLI_ClassVisible, Definition::name(), OutputList::parseText(), startFile(), startTitle(), title(), writeDocumentationContents(), writeMemberPages(), and Definition::writeNavigationPath().

Referenced by generateClassList(), and writeDocumentationForInnerClasses().

{
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
//static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
//static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
QCString pageTitle = title();
startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_ClassVisible,!generateTreeView);
if (!generateTreeView)
{
{
}
}
ol.parseText(pageTitle);
if (Config_getBool(SEPARATE_MEMBER_PAGES))
{
}
}
void ClassDef::writeDocumentationContents ( OutputList ol,
const QCString &  pageTitle 
)
private

Definition at line 1970 of file classdef.cpp.

References IndexList::addIndexItem(), SearchIndexIntf::addWord(), anchor(), LayoutDocEntry::AuthorSection, LayoutDocEntry::BriefDesc, LayoutDocManager::Class, LayoutDocEntry::ClassAllMembersLink, LayoutDocEntry::ClassCollaborationGraph, LayoutDocEntry::ClassIncludes, LayoutDocEntry::ClassInheritanceGraph, LayoutDocEntry::ClassInlineClasses, LayoutDocEntry::ClassNestedClasses, LayoutDocEntry::ClassUsedFiles, compoundTypeString(), LayoutDocEntry::DetailedDesc, LayoutDocEntry::DirFiles, LayoutDocEntry::DirGraph, LayoutDocEntry::DirSubDirs, OutputList::endContents(), endMemberDeclarations(), endMemberDocumentation(), err(), LayoutDocEntry::FileClasses, LayoutDocEntry::FileConstantGroups, LayoutDocEntry::FileIncludedByGraph, LayoutDocEntry::FileIncludeGraph, LayoutDocEntry::FileIncludes, LayoutDocEntry::FileInlineClasses, LayoutDocEntry::FileNamespaces, LayoutDocEntry::FileSourceLink, Definition::getLanguage(), LayoutDocEntry::GroupClasses, LayoutDocEntry::GroupDirs, LayoutDocEntry::GroupFiles, LayoutDocEntry::GroupGraph, LayoutDocEntry::GroupInlineClasses, LayoutDocEntry::GroupNamespaces, LayoutDocEntry::GroupNestedGroups, LayoutDocEntry::GroupPageDocs, hasExamples(), Doxygen::indexList, LayoutDocManager::instance(), LayoutDocEntry::kind(), Definition::localName(), LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberDeclEnd, LayoutDocEntry::MemberDeclStart, LayoutDocEntry::MemberDef, LayoutDocEntry::MemberDefEnd, LayoutDocEntry::MemberDefStart, LayoutDocEntry::MemberGroups, LayoutDocEntry::NamespaceClasses, LayoutDocEntry::NamespaceInlineClasses, LayoutDocEntry::NamespaceNestedConstantGroups, LayoutDocEntry::NamespaceNestedNamespaces, Doxygen::searchIndex, SearchIndexIntf::setCurrentDoc(), showUsedFiles(), OutputList::startContents(), startMemberDeclarations(), startMemberDocumentation(), LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntrySection::title(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeCollaborationGraph(), writeDetailedDescription(), writeIncludeFiles(), writeInheritanceGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), and writeNestedClasses().

Referenced by writeDocumentation().

{
QCString pageType = " ";
pageType += compoundTypeString();
{
}
bool exampleFlag=hasExamples();
//---------------------------------------- start flexible part -------------------------------
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
switch (lde->kind())
{
writeBriefDescription(ol,exampleFlag);
break;
break;
break;
break;
//writeAllMembersLink(ol); // this is now part of the summary links
break;
break;
break;
{
writeMemberDeclarations(ol,lmd->type,lmd->title(lang),lmd->subtitle(lang));
}
break;
{
writeNestedClasses(ol,ls->title(lang));
}
break;
break;
{
writeDetailedDescription(ol,pageType,exampleFlag,ls->title(lang));
}
break;
break;
break;
{
writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
}
break;
break;
break;
break;
err("Internal inconsistency: member %d should not be part of "
"LayoutDocManager::Class entry list\n",lde->kind());
break;
}
}
}
void ClassDef::writeDocumentationForInnerClasses ( OutputList ol)

Definition at line 2241 of file classdef.cpp.

References ClassDefImpl::innerClasses, isEmbeddedInOuterScope(), isLinkableInProject(), SDict< ClassDef >::Iterator, m_impl, msg(), Definition::name(), protection(), protectionLevelVisible(), templateMaster(), writeDocumentation(), writeDocumentationForInnerClasses(), and writeMemberList().

Referenced by generateClassList(), and writeDocumentationForInnerClasses().

{
// write inner classes after the parent, so the tag files contain
// the definition in proper order!
{
ClassDef *innerCd;
for (cli.toFirst();(innerCd=cli.current());++cli)
{
if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
)
{
msg("Generating docs for nested compound %s...\n",qPrint(innerCd->name()));
innerCd->writeDocumentation(ol);
innerCd->writeMemberList(ol);
}
}
}
}
void ClassDef::writeIncludeFiles ( OutputList ol)
private

Definition at line 1357 of file classdef.cpp.

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), FileDef::docName(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTypewriter(), IncludeInfo::fileDef, Definition::getLanguage(), OutputGenerator::Html, ClassDefImpl::incInfo, IncludeInfo::includeName, FileDef::includeName(), includeStatement(), IncludeInfo::local, m_impl, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_IDL, SrcLangExt_Java, OutputList::startParagraph(), OutputList::startTypewriter(), and OutputList::writeObjectLink().

Referenced by writeDocumentationContents().

{
if (m_impl->incInfo /*&& Config_getBool(SHOW_INCLUDE_FILES)*/)
{
QCString nm=m_impl->incInfo->includeName.isEmpty() ?
m_impl->incInfo->fileDef->docName().data() : ""
) :
if (!nm.isEmpty())
{
bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
if (m_impl->incInfo->local || isIDLorJava)
ol.docify("\"");
else
ol.docify("<");
ol.docify(nm);
{
}
else
{
ol.docify(nm);
}
if (m_impl->incInfo->local || isIDLorJava)
ol.docify("\"");
else
ol.docify(">");
if (isIDLorJava)
ol.docify(";");
}
}
}
void ClassDef::writeInheritanceGraph ( OutputList ol)
private

Definition at line 1197 of file classdef.cpp.

References anchor(), BaseClassDef::classDef, Config_getBool, countInheritanceNodes(), OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::docify(), OutputList::enable(), OutputList::enableAll(), OutputList::endClassDiagram(), OutputList::endDotGraph(), OutputList::endParagraph(), err(), getOutputFileBase(), getReference(), DotNode::Inheritance, ClassDefImpl::inheritedBy, ClassDefImpl::inherits, insertTemplateSpecifierInScope(), isLinkable(), DotClassGraph::isTooBig(), DotClassGraph::isTrivial(), m_impl, OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startClassDiagram(), OutputList::startDotGraph(), OutputList::startParagraph(), BaseClassDef::templSpecifiers, theTranslator, Translator::trClassDiagram(), Translator::trInheritedByList(), Translator::trInheritsList(), writeInheritanceSpecifier(), and OutputList::writeObjectLink().

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
// count direct inheritance relations
const int count=countInheritanceNodes();
bool renderDiagram = FALSE;
if (Config_getBool(HAVE_DOT) &&
(Config_getBool(CLASS_DIAGRAMS) || Config_getBool(CLASS_GRAPH)))
// write class diagram using dot
{
DotClassGraph inheritanceGraph(this,DotNode::Inheritance);
if (!inheritanceGraph.isTrivial() && !inheritanceGraph.isTooBig())
{
ol.endDotGraph(inheritanceGraph);
renderDiagram = TRUE;
}
}
else if (Config_getBool(CLASS_DIAGRAMS) && count>0)
// write class diagram using build-in generator
{
ClassDiagram diagram(this); // create a diagram of this class.
renderDiagram = TRUE;
}
if (renderDiagram) // if we already show the inheritance relations graphically,
// then hide the text version
{
}
if (m_impl->inherits && m_impl->inherits->count()>0)
{
//parseText(ol,theTranslator->trInherits()+" ");
QCString inheritLine = theTranslator->trInheritsList(m_impl->inherits->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
while ((newIndex=marker.match(inheritLine,index,&matchLen))!=-1)
{
ol.parseText(inheritLine.mid(index,newIndex-index));
bool ok;
uint entryIndex = inheritLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
BaseClassDef *bcd=m_impl->inherits->at(entryIndex);
if (ok && bcd)
{
ClassDef *cd=bcd->classDef;
// use the class name but with the template arguments as given
// in the inheritance relation
if (cd->isLinkable())
{
cd->anchor(),
}
else
{
ol.docify(displayName);
}
}
else
{
err("invalid marker %d in inherits list!\n",entryIndex);
}
index=newIndex+matchLen;
}
ol.parseText(inheritLine.right(inheritLine.length()-index));
}
// write subclasses
if (m_impl->inheritedBy && m_impl->inheritedBy->count()>0)
{
QCString inheritLine = theTranslator->trInheritedByList(m_impl->inheritedBy->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
while ((newIndex=marker.match(inheritLine,index,&matchLen))!=-1)
{
ol.parseText(inheritLine.mid(index,newIndex-index));
bool ok;
uint entryIndex = inheritLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
BaseClassDef *bcd=m_impl->inheritedBy->at(entryIndex);
if (ok && bcd)
{
ClassDef *cd=bcd->classDef;
if (cd->isLinkable())
{
}
else
{
ol.docify(cd->displayName());
}
}
index=newIndex+matchLen;
}
ol.parseText(inheritLine.right(inheritLine.length()-index));
}
if (renderDiagram)
{
ol.enableAll();
}
}
void ClassDef::writeInheritedMemberDeclarations ( OutputList ol,
MemberListType  lt,
int  lt2,
const QCString &  title,
ClassDef inheritedFrom,
bool  invert,
bool  showAlways,
QPtrDict< void > *  visitedClasses 
)
private

Definition at line 4230 of file classdef.cpp.

References BaseClassDef::classDef, convertProtectionLevel(), countMembersIncludingGrouped(), OutputList::disableAllBut(), OutputGenerator::Html, ClassDefImpl::inherits, isLinkable(), m_impl, OutputList::popGeneratorState(), BaseClassDef::prot, OutputList::pushGeneratorState(), and writeMemberDeclarations().

Referenced by writeAdditionalInheritedMembers(), and writeMemberDeclarations().

{
int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
bool process = count>0;
//printf("%s: writeInheritedMemberDec: lt=%d process=%d invert=%d always=%d\n",
// name().data(),lt,process,invert,showAlways);
if ((process^invert) || showAlways)
{
{
BaseClassDef *ibcd;
for (it.toFirst();(ibcd=it.current());++it)
{
ClassDef *icd=ibcd->classDef;
if (icd->isLinkable())
{
int lt1,lt3;
convertProtectionLevel(lt,ibcd->prot,&lt1,&lt3);
if (lt2==-1 && lt3!=-1)
{
lt2=lt3;
}
//printf("%s:convert %d->(%d,%d) prot=%d\n",icd->name().data(),lt,lt1,lt2,ibcd->prot);
if (visitedClasses->find(icd)==0)
{
visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance
if (lt1!=-1)
{
title,QCString(),FALSE,inheritedFrom,lt2,FALSE,TRUE,visitedClasses);
}
}
else
{
//printf("%s: class already visited!\n",icd->name().data());
}
}
}
}
}
}
void ClassDef::writeInlineClasses ( OutputList ol)
private
void ClassDef::writeInlineDocumentation ( OutputList ol)

Write class documentation inside another container (i.e. a group)

Definition at line 1691 of file classdef.cpp.

References OutputList::addIndexItem(), anchor(), LayoutDocEntry::BriefDesc, LayoutDocManager::Class, LayoutDocEntry::ClassCollaborationGraph, LayoutDocEntry::ClassInheritanceGraph, compoundTypeString(), OutputList::disable(), OutputList::disableAllBut(), OutputList::endGroupHeader(), OutputList::endIndent(), endMemberDeclarations(), OutputList::endMemberDoc(), OutputList::endMemberDocName(), endMemberDocumentation(), Definition::getLanguage(), getOutputFileBase(), OutputGenerator::Html, LayoutDocManager::instance(), ClassDefImpl::isSimple, isSimple(), LayoutDocEntry::kind(), m_impl, OutputGenerator::Man, LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberDeclEnd, LayoutDocEntry::MemberDeclStart, LayoutDocEntry::MemberDef, LayoutDocEntry::MemberDefEnd, LayoutDocEntry::MemberDefStart, LayoutDocEntry::MemberGroups, Definition::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), OutputList::startIndent(), startMemberDeclarations(), OutputList::startMemberDoc(), OutputList::startMemberDocName(), startMemberDocumentation(), LayoutDocEntryMemberDecl::subtitle(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, OutputList::writeAnchor(), writeCollaborationGraph(), writeDetailedDocumentationBody(), writeInheritanceGraph(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeSimpleMemberDocumentation(), and OutputList::writeString().

Referenced by ClassSDict::writeDocumentation().

{
ol.addIndexItem(name(),0);
//printf("ClassDef::writeInlineDocumentation(%s)\n",name().data());
QListIterator<LayoutDocEntry> eli(
// part 1: anchor and title
QCString s = compoundTypeString()+" "+name();
// part 1a
{ // only HTML only
ol.startMemberDoc(0,0,anchor(),name(),1,1,FALSE);
ol.startMemberDocName(FALSE);
ol.parseText(s);
ol.endMemberDoc(FALSE);
ol.writeString("</div>");
}
// part 1b
{ // for LaTeX/RTF only
}
// part 1c
{
// for LaTeX/RTF/Man
ol.parseText(s);
}
// part 2: the header and detailed description
for (eli.toFirst();(lde=eli.current());++eli)
{
switch (lde->kind())
{
{
// since we already shown the brief description in the
// declaration part of the container, so we use this to
// show the details on top.
}
break;
break;
break;
if (!isSimple) startMemberDeclarations(ol);
break;
{
if (!isSimple) writeMemberDeclarations(ol,lmd->type,lmd->title(lang),lmd->subtitle(lang),TRUE);
}
break;
if (!isSimple) writeMemberGroups(ol,TRUE);
break;
if (!isSimple) endMemberDeclarations(ol);
break;
if (!isSimple) startMemberDocumentation(ol);
break;
{
if (isSimple)
{
}
else
{
writeMemberDocumentation(ol,lmd->type,lmd->title(lang),TRUE);
}
}
break;
if (!isSimple) endMemberDocumentation(ol);
break;
default:
break;
}
}
// part 3: close the block
{ // HTML only
ol.endIndent();
}
}
void ClassDef::writeMemberDeclarations ( OutputList ol,
MemberListType  lt,
const QCString &  title,
const char *  subTitle = 0,
bool  showInline = FALSE,
ClassDef inheritedFrom = 0,
int  lt2 = -1,
bool  invert = FALSE,
bool  showAlways = FALSE,
QPtrDict< void > *  visitedClasses = 0 
)
private

Definition at line 4279 of file classdef.cpp.

References Config_getBool, Definition::getLanguage(), getMemberList(), SrcLangExt_VHDL, title(), visited, MemberList::writeDeclarations(), writeInheritedMemberDeclarations(), VhdlDocGen::writeInlineClassLink(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentationContents(), writeInheritedMemberDeclarations(), and writeInlineDocumentation().

{
//printf("%s: ClassDef::writeMemberDeclarations lt=%d lt2=%d\n",name().data(),lt,lt2);
if (getLanguage()==SrcLangExt_VHDL) // use specific declarations function
{
static ClassDef *cdef;
if (cdef!=this)
{ // only one inline link
cdef=this;
}
if (ml)
{
}
}
else
{
//printf("%s::writeMemberDeclarations(%s) ml=%p ml2=%p\n",name().data(),title.data(),ml,ml2);
QCString tt = title, st = subTitle;
if (ml)
{
//printf(" writeDeclaration type=%d count=%d\n",lt,ml->numDecMembers());
ml->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
tt.resize(0);
st.resize(0);
}
if (ml2)
{
//printf(" writeDeclaration type=%d count=%d\n",lt2,ml2->numDecMembers());
ml2->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
}
static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB);
if (!inlineInheritedMembers) // show inherited members as separate lists
{
QPtrDict<void> visited(17);
inheritedFrom ? inheritedFrom : this,
invert,showAlways,
visitedClasses==0 ? &visited: visitedClasses);
}
}
}
void ClassDef::writeMemberDocumentation ( OutputList ol,
MemberListType  lt,
const QCString &  title,
bool  showInline = FALSE 
)
private

Definition at line 4345 of file classdef.cpp.

References displayName(), getMemberList(), and MemberList::writeDocumentation().

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
//printf("%s: ClassDef::writeMemberDocumentation()\n",name().data());
if (ml) ml->writeDocumentation(ol,displayName(),this,title,FALSE,showInline);
}
void ClassDef::writeMemberGroups ( OutputList ol,
bool  showInline = FALSE 
)
private

Definition at line 1424 of file classdef.cpp.

References MemberGroup::allMembersInSameSection(), SIntDict< MemberGroup >::Iterator, m_impl, ClassDefImpl::memberGroupSDict, SIntDict< T >::sort(), ClassDefImpl::subGrouping, and MemberGroup::writeDeclarations().

Referenced by writeDocumentationContents(), and writeInlineDocumentation().

{
// write user defined member groups
{
for (;(mg=mgli.current());++mgli)
{
if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
{
mg->writeDeclarations(ol,this,0,0,0,showInline);
}
else // add this group to the corresponding member section
{
//printf("addToDeclarationSection(%s)\n",mg->header().data());
//mg->addToDeclarationSection();
}
}
}
}
void ClassDef::writeMemberList ( OutputList ol)

Definition at line 2266 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, MemberInfo::ambiguityResolutionScope, MemberDef::anchor(), anchor(), MemberDef::argsString(), MemberDef::category(), Config_getBool, OutputList::disableAllBut(), displayName(), OutputList::docify(), OutputList::endBold(), endFile(), OutputList::endParagraph(), OutputList::endQuickIndices(), endTitle(), MemberDef::getClassDef(), Definition::getLanguage(), getMemberListFileName(), MemberDef::getMemberSpecifiers(), Definition::getOuterScope(), MemberDef::getOutputFileBase(), getOutputFileBase(), MemberDef::getReference(), getReference(), Doxygen::globalScope, HLI_ClassVisible, OutputGenerator::Html, Definition::isArtificial(), MemberDef::isAttribute(), MemberDef::isBound(), MemberDef::isConstrained(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isExplicit(), MemberDef::isFriend(), MemberDef::isFunction(), MemberDef::isInline(), isLinkable(), MemberDef::isLinkable(), MemberDef::isMaybeAmbiguous(), MemberDef::isMaybeDefault(), MemberDef::isMaybeVoid(), MemberDef::isMutable(), MemberDef::isObjCMethod(), isObjectiveC(), MemberDef::isOptional(), MemberDef::isReadonly(), MemberDef::isRelated(), MemberDef::isRemovable(), MemberDef::isSignal(), MemberDef::isSlot(), MemberDef::isStatic(), MemberDef::isTransient(), MemberDef::isTypedef(), MemberDef::isUNOProperty(), SDict< MemberNameInfo >::Iterator, m_impl, MemberInfo::memberDef, Definition::name(), Normal, Package, OutputList::parseText(), OutputList::popGeneratorState(), Private, MemberInfo::prot, Protected, MemberDef::protection(), protectionLevelVisible(), Public, Pure, OutputList::pushGeneratorState(), SrcLangExt_IDL, SrcLangExt_ObjC, SrcLangExt_VHDL, OutputList::startBold(), OutputList::startContents(), startFile(), OutputList::startParagraph(), startTitle(), theTranslator, Translator::trDefinedIn(), Translator::trEnumName(), Translator::trEnumValue(), Translator::trIncludingInheritedMembers(), Translator::trMemberList(), Translator::trThisIsTheListOfAllMembers(), VhdlDocGen::trVhdlType(), MemberDef::typeString(), Virtual, MemberDef::virtualness(), Definition::writeNavigationPath(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by generateClassList(), and writeDocumentationForInnerClasses().

{
static bool cOpt = Config_getBool(OPTIMIZE_OUTPUT_FOR_C);
//static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
if (m_impl->allMemberNameInfoSDict==0 || cOpt) return;
// only for HTML
QCString memListFile = getMemberListFileName();
startFile(ol,memListFile,memListFile,theTranslator->trMemberList(),
HLI_ClassVisible,!generateTreeView,getOutputFileBase());
if (!generateTreeView)
{
{
}
}
startTitle(ol,0);
endTitle(ol,0,0);
//ol.startItemList();
ol.writeString("<table class=\"directory\">\n");
int idx=0;
//MemberNameInfo *mni=m_impl->allMemberNameInfoList->first();
for (mnii.toFirst();(mni=mnii.current());++mnii)
{
for (;(mi=it.current());++it)
{
ClassDef *cd=md->getClassDef();
Protection prot = mi->prot;
Specifier virt=md->virtualness();
//printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
// name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited);
if (cd && !md->name().isEmpty() && md->name()[0]!='@')
{
bool memberWritten=FALSE;
if (cd->isLinkable() && md->isLinkable())
// create a link to the documentation
{
QCString name=mi->ambiguityResolutionScope+md->name();
//ol.writeListItem();
ol.writeString(" <tr");
if ((idx&1)==0) ol.writeString(" class=\"even\"");
idx++;
ol.writeString("><td class=\"entry\">");
if (cd->isObjectiveC())
{
if (md->isObjCMethod())
{
if (md->isStatic())
ol.writeString("+&#160;</td><td>");
else
ol.writeString("-&#160;</td><td>");
}
else
ol.writeString("</td><td class=\"entry\">");
}
if (md->isObjCMethod())
{
md->anchor(),md->name());
}
else
{
//Definition *bd = md->getGroupDef();
//if (bd==0) bd=cd;
md->anchor(),name);
if ( md->isFunction() || md->isSignal() || md->isSlot() ||
(md->isFriend() && md->argsString()))
ol.docify(md->argsString());
else if (md->isEnumerate())
else if (md->isEnumValue())
else if (md->isTypedef())
ol.docify(" typedef");
else if (md->isFriend() && !qstrcmp(md->typeString(),"friend class"))
ol.docify(" class");
//ol.writeString("\n");
}
ol.writeString("</td>");
memberWritten=TRUE;
}
else if (!cd->isArtificial() &&
!Config_getBool(HIDE_UNDOC_MEMBERS) &&
) // no documentation,
// generate link to the class instead.
{
//ol.writeListItem();
ol.writeString(" <tr bgcolor=\"#f0f0f0\"");
if ((idx&1)==0) ol.writeString(" class=\"even\"");
idx++;
ol.writeString("><td class=\"entry\">");
if (cd->isObjectiveC())
{
if (md->isObjCMethod())
{
if (md->isStatic())
ol.writeString("+&#160;</td><td class=\"entry\">");
else
ol.writeString("-&#160;</td><td class=\"entry\">");
}
else
ol.writeString("</td><td class=\"entry\">");
}
ol.startBold();
ol.docify(md->name());
ol.endBold();
if (!md->isObjCMethod())
{
if ( md->isFunction() || md->isSignal() || md->isSlot() )
ol.docify(md->argsString());
else if (md->isEnumerate())
else if (md->isEnumValue())
else if (md->isTypedef())
ol.docify(" typedef");
}
ol.writeString(" (");
if (cd->isLinkable())
{
cd->getReference(),
cd->anchor(),
cd->displayName());
}
else
{
ol.startBold();
ol.docify(cd->displayName());
ol.endBold();
}
ol.writeString(")");
ol.writeString("</td>");
memberWritten=TRUE;
}
if (memberWritten)
{
ol.writeString("<td class=\"entry\">");
cd->anchor(),
md->category() ?
md->category()->displayName() :
cd->displayName());
ol.writeString("</td>");
ol.writeString("<td class=\"entry\">");
}
SrcLangExt lang = md->getLanguage();
if (
(prot!=Public || (virt!=Normal && getLanguage()!=SrcLangExt_ObjC) ||
md->isFriend() || md->isRelated() || md->isExplicit() ||
md->isMutable() || (md->isInline() && Config_getBool(INLINE_INFO)) ||
md->isSignal() || md->isSlot() ||
(md->isOptional() || md->isAttribute() || md->isUNOProperty())) ||
md->isStatic() || lang==SrcLangExt_VHDL
)
&& memberWritten)
{
ol.writeString("<span class=\"mlabel\">");
QStrList sl;
if (lang==SrcLangExt_VHDL)
{
sl.append(VhdlDocGen::trVhdlType(md->getMemberSpecifiers())); //append vhdl type
}
else if (md->isFriend()) sl.append("friend");
else if (md->isRelated()) sl.append("related");
else
{
if (Config_getBool(INLINE_INFO) && md->isInline())
sl.append("inline");
if (md->isExplicit()) sl.append("explicit");
if (md->isMutable()) sl.append("mutable");
if (prot==Protected) sl.append("protected");
else if (prot==Private) sl.append("private");
else if (prot==Package) sl.append("package");
sl.append("virtual");
else if (virt==Pure) sl.append("pure virtual");
if (md->isStatic()) sl.append("static");
if (md->isSignal()) sl.append("signal");
if (md->isSlot()) sl.append("slot");
// this is the extra member page
if (md->isOptional()) sl.append("optional");
if (md->isAttribute()) sl.append("attribute");
if (md->isUNOProperty()) sl.append("property");
if (md->isReadonly()) sl.append("readonly");
if (md->isBound()) sl.append("bound");
if (md->isRemovable()) sl.append("removable");
if (md->isConstrained()) sl.append("constrained");
if (md->isTransient()) sl.append("transient");
if (md->isMaybeVoid()) sl.append("maybevoid");
if (md->isMaybeDefault()) sl.append("maybedefault");
if (md->isMaybeAmbiguous())sl.append("maybeambiguous");
}
const char *s=sl.first();
while (s)
{
ol.docify(s);
s=sl.next();
if (s) ol.writeString("</span><span class=\"mlabel\">");
}
ol.writeString("</span>");
}
if (memberWritten)
{
ol.writeString("</td>");
ol.writeString("</tr>\n");
}
}
}
}
//ol.endItemList();
ol.writeString("</table>");
endFile(ol);
}
void ClassDef::writeMemberPages ( OutputList ol)
void ClassDef::writeMoreLink ( OutputList ol,
const QCString &  anchor 
)
private

Definition at line 1808 of file classdef.cpp.

References anchor(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::endTextLink(), getOutputFileBase(), OutputGenerator::Html, OutputGenerator::Latex, OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputGenerator::RTF, OutputList::startTextLink(), theTranslator, Translator::trMore(), and OutputList::writeString().

Referenced by writeBriefDescription(), and writeDeclarationLink().

{
// TODO: clean up this mess by moving it to
// the output generators...
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
static bool rtfHyperlinks = Config_getBool(RTF_HYPERLINKS);
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
// HTML only
ol.docify(" ");
anchor.isEmpty() ? QCString("details") : anchor);
if (!anchor.isEmpty())
{
// LaTeX + RTF
if (!(usePDFLatex && pdfHyperlinks))
{
}
if (!rtfHyperlinks)
{
}
ol.docify(" ");
// RTF only
ol.writeString("\\par");
}
}
void ClassDef::writeNestedClasses ( OutputList ol,
const QCString &  title 
)
private

Definition at line 1447 of file classdef.cpp.

References ClassDefImpl::innerClasses, m_impl, and ClassSDict::writeDeclaration().

Referenced by writeDocumentationContents().

{
// nested classes
{
}
}
void ClassDef::writePlainMemberDeclaration ( OutputList ol,
MemberListType  lt,
bool  inGroup,
ClassDef inheritedFrom,
const char *  inheritId 
)
private

Definition at line 4359 of file classdef.cpp.

References getMemberList(), MemberList::setInGroup(), and MemberList::writePlainDeclarations().

Referenced by writeDeclaration().

{
//printf("%s: ClassDef::writePlainMemberDeclaration()\n",name().data());
if (ml)
{
ml->setInGroup(inGroup);
ml->writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId);
}
}
void ClassDef::writeQuickMemberLinks ( OutputList ol,
MemberDef md 
) const
virtual

Reimplemented from Definition.

Definition at line 2191 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, MemberDef::anchor(), Config_getBool, convertToHtml(), createSubDirs(), MemberDef::getClassDef(), MemberDef::getOutputFileBase(), Doxygen::htmlFileExtension, MemberDef::isEnumValue(), MemberDef::isLinkable(), MemberDef::isLinkableInProject(), SDict< MemberNameInfo >::Iterator, m_impl, MemberInfo::memberDef, Definition::name(), and OutputList::writeString().

{
static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
ol.writeString(" <div class=\"navtab\">\n");
ol.writeString(" <table>\n");
{
for (;(mni=mnili.current());++mnili)
{
for (mnii.toFirst();(mi=mnii.current());++mnii)
{
if (md->getClassDef()==this && md->isLinkable() && !md->isEnumValue())
{
ol.writeString(" <tr><td class=\"navtab\">");
{
if (md==currentMd) // selected item => highlight
{
ol.writeString("<a class=\"qindexHL\" ");
}
else
{
ol.writeString("<a class=\"qindex\" ");
}
ol.writeString("href=\"");
if (createSubDirs) ol.writeString("../../");
ol.writeString("\">");
ol.writeString("</a>");
}
ol.writeString("</td></tr>\n");
}
}
}
}
ol.writeString(" </table>\n");
ol.writeString(" </div>\n");
}
void ClassDef::writeSimpleMemberDocumentation ( OutputList ol,
MemberListType  lt 
)
private

Definition at line 4352 of file classdef.cpp.

References getMemberList(), and MemberList::writeSimpleDocumentation().

Referenced by writeInlineDocumentation().

{
//printf("%s: ClassDef::writeSimpleMemberDocumentation()\n",name().data());
if (ml) ml->writeSimpleDocumentation(ol,this);
}
void ClassDef::writeSummaryLinks ( OutputList ol)
virtual

Reimplemented from Definition.

Definition at line 1517 of file classdef.cpp.

References ClassDefImpl::allMemberNameInfoSDict, LayoutDocManager::Class, LayoutDocEntry::ClassAllMembersLink, LayoutDocEntry::ClassNestedClasses, Config_getBool, ClassSDict::declVisible(), MemberList::declVisible(), OutputList::disableAllBut(), Definition::getLanguage(), getMemberList(), getMemberListFileName(), OutputGenerator::Html, ClassDefImpl::innerClasses, LayoutDocManager::instance(), LayoutDocEntry::kind(), MemberList::listType(), MemberList::listTypeAsString(), m_impl, LayoutDocEntry::MemberDecl, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), SrcLangExt_VHDL, theTranslator, LayoutDocEntrySection::title(), LayoutDocEntryMemberDecl::title(), Translator::trListOfAllMembers(), LayoutDocEntryMemberDecl::type, ClassDefImpl::vhdlSummaryTitles, OutputList::writeString(), and OutputList::writeSummaryLink().

{
QListIterator<LayoutDocEntry> eli(
bool first=TRUE;
if (lang!=SrcLangExt_VHDL)
{
for (eli.toFirst();(lde=eli.current());++eli)
{
)
{
ol.writeSummaryLink(0,"nested-classes",ls->title(lang),first);
first=FALSE;
}
!Config_getBool(OPTIMIZE_OUTPUT_FOR_C)
)
{
first=FALSE;
}
else if (lde->kind()== LayoutDocEntry::MemberDecl)
{
if (ml && ml->declVisible())
{
first=FALSE;
}
}
}
}
else // VDHL only
{
for (li.toFirst();li.current();++li)
{
ol.writeSummaryLink(0,li.current()->data(),li.current()->data(),first);
first=FALSE;
}
}
if (!first)
{
ol.writeString(" </div>\n");
}
}
void ClassDef::writeTagFile ( FTextStream tagFile)

Definition at line 1576 of file classdef.cpp.

References anchor(), LayoutDocManager::Class, BaseClassDef::classDef, LayoutDocEntry::ClassNestedClasses, compoundTypeString(), Config_getString, convertToXML(), endl(), getMemberList(), getOutputFileBase(), Doxygen::htmlFileExtension, Definition::id(), ClassDefImpl::inherits, ClassDefImpl::innerClasses, LayoutDocManager::instance(), isEmbeddedInOuterScope(), isLinkable(), isLinkableInProject(), isObjectiveC(), SDict< ClassDef >::Iterator, SIntDict< MemberGroup >::Iterator, LayoutDocEntry::kind(), m_impl, LayoutDocEntry::MemberDecl, LayoutDocEntry::MemberGroups, ClassDefImpl::memberGroupSDict, Argument::name, Definition::name(), Private, BaseClassDef::prot, Protected, protection(), protectionLevelVisible(), ClassDefImpl::tempArgs, templateMaster(), LayoutDocEntryMemberDecl::type, BaseClassDef::virt, Virtual, Definition::writeDocAnchorsToTagFile(), MemberGroup::writeTagFile(), and MemberList::writeTagFile().

Referenced by writeTagFile().

{
if (!isLinkableInProject()) return;
tagFile << " <compound kind=\"" << compoundTypeString();
tagFile << "\"";
if (isObjectiveC()) { tagFile << " objc=\"yes\""; }
tagFile << ">" << endl;
tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
if (!anchor().isEmpty())
{
tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
}
QCString idStr = id();
if (!idStr.isEmpty())
{
tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl;
}
{
for (;(a=ali.current());++ali)
{
tagFile << " <templarg>" << convertToXML(a->name) << "</templarg>" << endl;
}
}
{
BaseClassDef *ibcd;
for (it.toFirst();(ibcd=it.current());++it)
{
ClassDef *cd=ibcd->classDef;
if (cd && cd->isLinkable())
{
if (!Config_getString(GENERATE_TAGFILE).isEmpty())
{
tagFile << " <base";
if (ibcd->prot==Protected)
{
tagFile << " protection=\"protected\"";
}
else if (ibcd->prot==Private)
{
tagFile << " protection=\"private\"";
}
if (ibcd->virt==Virtual)
{
tagFile << " virtualness=\"virtual\"";
}
tagFile << ">" << convertToXML(cd->name()) << "</base>" << endl;
}
}
}
}
QListIterator<LayoutDocEntry> eli(
for (eli.toFirst();(lde=eli.current());++eli)
{
switch (lde->kind())
{
{
{
ClassDef *innerCd;
for (cli.toFirst();(innerCd=cli.current());++cli)
{
if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
)
{
tagFile << " <class kind=\"" << innerCd->compoundTypeString() <<
"\">" << convertToXML(innerCd->name()) << "</class>" << endl;
}
}
}
}
break;
{
if (ml)
{
ml->writeTagFile(tagFile);
}
}
break;
{
{
for (;(mg=mgli.current());++mgli)
{
mg->writeTagFile(tagFile);
}
}
}
break;
default:
break;
}
}
tagFile << " </compound>" << endl;
}

Member Data Documentation

ClassDefImpl* ClassDef::m_impl
private

Definition at line 456 of file classdef.h.

Referenced by addExample(), addGroupedInheritedMembers(), addInnerCompound(), addListReferences(), addMembersToMemberGroup(), addTaggedInnerClass(), addTypeConstraint(), addTypeConstraints(), addUsedByClass(), addUsedClass(), anchor(), baseClasses(), categoryOf(), ClassDef(), className(), collaborationGraphFileName(), compoundType(), compoundTypeString(), computeAnchors(), countInheritanceNodes(), countInheritedDecMembers(), countMemberDeclarations(), countMembersIncludingGrouped(), createMemberList(), displayName(), distributeMemberGroupDocumentation(), exampleList(), findInnerCompound(), findSectionsInDocumentation(), generatedFromFiles(), getClassSDict(), getFileDef(), getInstanceOutputFileBase(), getMemberByName(), getMemberGroupSDict(), getMemberList(), getMemberListFileName(), getMemberLists(), getNamespaceDef(), getOutputFileBase(), getReference(), getSourceFileBase(), getTemplateBaseClassNames(), getTemplateInstances(), getVariableInstance(), hasExamples(), hasNonReferenceSuperClass(), includeInfo(), inheritanceGraphFileName(), innerClasses(), insertBaseClass(), insertSubClass(), insertTemplateInstance(), insertUsedFile(), internalInsertMember(), isAbstract(), isAnonymous(), isEmbeddedInOuterScope(), isFinal(), isForwardDeclared(), isGeneric(), isJavaEnum(), isLinkable(), isLinkableInProject(), isLocal(), isPublished(), isReference(), isSealed(), isSimple(), isSmartPointer(), isTemplate(), isTemplateArgument(), isUsedOnly(), isVisibleInHierarchy(), makeTemplateArgument(), memberNameInfoSDict(), mergeCategory(), mergeMembers(), protection(), reclassifyMember(), removeMemberFromLists(), setCategoryOf(), setClassName(), setClassSpecifier(), setCompoundType(), setFileDef(), setGroupDefForAllMembers(), setIncludeFile(), setIsStatic(), setName(), setNamespace(), setProtection(), setSubGrouping(), setTagLessReference(), setTemplateArguments(), setTemplateBaseClassNames(), setTemplateMaster(), setTypeConstraints(), setUsedOnly(), showUsedFiles(), sortMemberLists(), subClasses(), subGrouping(), taggedInnerClasses(), tagLessReference(), templateArguments(), templateMaster(), templateTypeConstraints(), title(), typeConstraints(), usedByImplementationClasses(), usedFiles(), usedImplementationClasses(), usedInterfaceClasses(), writeDeclaration(), writeDetailedDocumentationBody(), writeDocumentationForInnerClasses(), writeIncludeFiles(), writeInheritanceGraph(), writeInheritedMemberDeclarations(), writeInlineClasses(), writeInlineDocumentation(), writeMemberGroups(), writeMemberList(), writeMemberPages(), writeNestedClasses(), writeQuickMemberLinks(), writeSummaryLinks(), writeTagFile(), and ~ClassDef().

bool ClassDef::visited

The documentation for this class was generated from the following files: