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 Types inherited from DefinitionIntf
enum  DefType {
  TypeClass = 0, TypeFile = 1, TypeNamespace = 2, TypeMember = 3,
  TypeGroup = 4, TypePackage = 5, TypePage = 6, TypeDir = 7,
  TypeSymbolList = 8
}
 

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 getFileBase () const
 
QCString getSourceFileBase () const
 
QCString getReference () const
 
bool isReference () const
 
bool isLocal () const
 
ClassSDictgetClassSDict ()
 
bool hasDocumentation () const
 
bool hasDetailedDescription () 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 QCStringname () 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
 
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)
 
QCString convertNameToFile (const char *name, bool allowDots=FALSE) const
 
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.

63  { Class, //=Entry::CLASS_SEC,
64  Struct, //=Entry::STRUCT_SEC,
65  Union, //=Entry::UNION_SEC,
66  Interface, //=Entry::INTERFACE_SEC,
67  Protocol, //=Entry::PROTOCOL_SEC,
68  Category, //=Entry::CATEGORY_SEC,
69  Exception, //=Entry::EXCEPTION_SEC
70  Service, //=Entry::CLASS_SEC
71  Singleton, //=Entry::CLASS_SEC
72  };

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 286 of file classdef.cpp.

291  : Definition(defFileName,defLine,defColumn,removeRedundantWhiteSpace(nm),0,0,isSymbol)
292 {
293  visited=FALSE;
294  setReference(lref);
295  m_impl = new ClassDefImpl;
296  m_impl->compType = ct;
298  m_impl->init(defFileName,name(),compoundTypeString(),fName);
299 }
QCString compoundTypeString() const
Definition: classdef.cpp:3499
const bool FALSE
Definition: qglobal.h:370
bool isJavaEnum() const
Definition: classdef.cpp:4694
bool isJavaEnum
Definition: classdef.cpp:188
const QCString & name() const
Definition: definition.h:114
void setReference(const char *r)
bool visited
Definition: classdef.h:402
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
void init(const char *defFileName, const char *name, const QCString &ctStr, const char *fName)
Definition: classdef.cpp:197
Definition(const char *defFileName, int defLine, int defColumn, const char *name, const char *b=0, const char *d=0, bool isSymbol=TRUE)
Definition: definition.cpp:283
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
ClassDef::~ClassDef ( )

Destroys a compound definition.

Definition at line 302 of file classdef.cpp.

303 {
304  delete m_impl;
305 }
ClassDefImpl * m_impl
Definition: classdef.h:451

Member Function Documentation

void ClassDef::addClassAttributes ( OutputList ol)
private

Definition at line 1929 of file classdef.cpp.

1930 {
1931  QStrList sl;
1932  if (isFinal()) sl.append("final");
1933  if (isSealed()) sl.append("sealed");
1934  if (isAbstract()) sl.append("abstract");
1935  if (getLanguage()==SrcLangExt_IDL && isPublished()) sl.append("published");
1936 
1937  ol.pushGeneratorState();
1939  if (sl.count()>0)
1940  {
1941  ol.startLabels();
1942  const char *s=sl.first();
1943  while (s)
1944  {
1945  const char *ns = sl.next();
1946  ol.writeLabel(s,ns==0);
1947  s=ns;
1948  }
1949  ol.endLabels();
1950  }
1951  ol.popGeneratorState();
1952 }
void endLabels()
Definition: outputlist.h:471
type * first()
Definition: qinternallist.h:87
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
bool isAbstract() const
Definition: classdef.cpp:4479
void writeLabel(const char *l, bool isLast)
Definition: outputlist.h:469
bool isSealed() const
Definition: classdef.cpp:4489
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
void append(const type *d)
Definition: qinternallist.h:61
bool isFinal() const
Definition: classdef.cpp:4484
type * next()
Definition: qinternallist.h:89
bool isPublished() const
Definition: classdef.cpp:4494
uint count() const
Definition: qinternallist.h:56
QAsciiDict< Entry > ns
static QCString * s
Definition: config.cpp:1042
void startLabels()
Definition: outputlist.h:467
bool ClassDef::addExample ( const char *  anchor,
const char *  name,
const char *  file 
)

Definition at line 2500 of file classdef.cpp.

2502 {
2503  if (m_impl->exampleSDict==0)
2504  {
2507  }
2508  if (!m_impl->exampleSDict->find(nameStr))
2509  {
2510  Example *e=new Example;
2511  e->anchor=anchor;
2512  e->name=nameStr;
2513  e->file=file;
2514  m_impl->exampleSDict->inSort(nameStr,e);
2515  return TRUE;
2516  }
2517  return FALSE;
2518 }
void inSort(const char *key, const T *d)
Definition: sortdict.h:197
const bool FALSE
Definition: qglobal.h:370
void setAutoDelete(bool val)
Definition: sortdict.h:222
const double e
QCString anchor() const
Definition: classdef.cpp:4606
QCString anchor
Definition: example.h:30
QCString name
Definition: example.h:31
ExampleSDict * exampleSDict
Definition: classdef.cpp:100
ClassDefImpl * m_impl
Definition: classdef.h:451
T * find(const char *key)
Definition: sortdict.h:232
QCString file
Definition: example.h:32
const bool TRUE
Definition: qglobal.h:371
void ClassDef::addGroupedInheritedMembers ( OutputList ol,
MemberListType  lt,
ClassDef inheritedFrom,
const QCString inheritId 
)

Definition at line 4339 of file classdef.cpp.

4341 {
4342  //printf("** %s::addGroupedInheritedMembers(%p) inheritId=%s\n",name().data(),m_impl->memberGroupSDict,inheritId.data());
4343  if (m_impl->memberGroupSDict)
4344  {
4346  MemberGroup *mg;
4347  for (;(mg=mgli.current());++mgli)
4348  {
4349  if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
4350  {
4351  mg->addGroupedInheritedMembers(ol,this,lt,inheritedFrom,inheritId);
4352  }
4353  }
4354  }
4355 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
bool subGrouping
Definition: classdef.cpp:170
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
void addGroupedInheritedMembers(OutputList &ol, ClassDef *cd, MemberListType lt, ClassDef *inheritedFrom, const QCString &inheritId)
bool allMembersInSameSection() const
Definition: membergroup.h:67
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::addInnerCompound ( Definition d)
virtual

Reimplemented from Definition.

Definition at line 3637 of file classdef.cpp.

3638 {
3639  //printf("**** %s::addInnerCompound(%s)\n",name().data(),d->name().data());
3640  if (d->definitionType()==Definition::TypeClass) // only classes can be
3641  // nested in classes.
3642  {
3643  if (m_impl->innerClasses==0)
3644  {
3645  m_impl->innerClasses = new ClassSDict(17);
3646  }
3648  }
3649 }
void inSort(const char *key, const T *d)
Definition: sortdict.h:197
virtual DefType definitionType() const =0
ClassSDict * innerClasses
Definition: classdef.cpp:114
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString localName() const
void ClassDef::addListReferences ( )

Definition at line 3931 of file classdef.cpp.

3932 {
3933  SrcLangExt lang = getLanguage();
3934  if (!isLinkableInProject()) return;
3935  //printf("ClassDef(%s)::addListReferences()\n",name().data());
3936  {
3937  QList<ListItemInfo> *xrefItems = xrefListItems();
3938  addRefItem(xrefItems,
3939  qualifiedName(),
3943  displayName(),
3944  0,
3945  this
3946  );
3947  }
3948  if (m_impl->memberGroupSDict)
3949  {
3951  MemberGroup *mg;
3952  for (;(mg=mgli.current());++mgli)
3953  {
3954  mg->addListReferences(this);
3955  }
3956  }
3958  MemberList *ml;
3959  for (mli.toFirst();(ml=mli.current());++mli)
3960  {
3962  {
3963  ml->addListReferences(this);
3964  }
3965  }
3966 }
MemberListType listType() const
Definition: memberlist.h:38
bool isLinkableInProject() const
Definition: classdef.cpp:2707
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
QList< ListItemInfo > * xrefListItems() const
virtual QCString trClass(bool first_capital, bool singular)=0
friend class Iterator
Definition: sortdict.h:598
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
static constexpr double mg
Definition: Units.h:145
SrcLangExt
Definition: types.h:41
QList< MemberList > memberLists
Definition: classdef.cpp:147
SrcLangExt getLanguage() const
virtual QCString qualifiedName() const
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual QCString trType(bool first_capital, bool singular)=0
void addRefItem(const QList< ListItemInfo > *sli, const char *key, const char *prefix, const char *name, const char *title, const char *args, Definition *scope)
Definition: util.cpp:6456
Translator * theTranslator
Definition: language.cpp:157
ClassDefImpl * m_impl
Definition: classdef.h:451
void addListReferences(Definition *def)
Definition: memberlist.cpp:784
const bool TRUE
Definition: qglobal.h:371
void addListReferences(Definition *d)
void ClassDef::addMembersToMemberGroup ( )

Definition at line 388 of file classdef.cpp.

389 {
391  MemberList *ml;
392  for (mli.toFirst();(ml=mli.current());++mli)
393  {
394  if ((ml->listType()&MemberListType_detailedLists)==0)
395  {
397  }
398  }
399 
400  // add members inside sections to their groups
402  {
404  MemberGroup *mg;
405  for (;(mg=mgli.current());++mgli)
406  {
408  {
409  //printf("addToDeclarationSection(%s)\n",mg->header().data());
411  }
412  }
413  }
414 }
MemberListType listType() const
Definition: memberlist.h:38
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
bool subGrouping
Definition: classdef.cpp:170
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
QList< MemberList > memberLists
Definition: classdef.cpp:147
bool allMembersInSameSection() const
Definition: membergroup.h:67
void addMembersToMemberGroup()
Definition: classdef.cpp:388
void addToDeclarationSection()
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::addMembersToTemplateInstance ( ClassDef cd,
const char *  templSpec 
)

Definition at line 3771 of file classdef.cpp.

3772 {
3773  //printf("%s::addMembersToTemplateInstance(%s,%s)\n",name().data(),cd->name().data(),templSpec);
3774  if (cd->memberNameInfoSDict()==0) return;
3776  MemberNameInfo *mni;
3777  for (;(mni=mnili.current());++mnili)
3778  {
3779  MemberNameInfoIterator mnii(*mni);
3780  MemberInfo *mi;
3781  for (mnii.toFirst();(mi=mnii.current());++mnii)
3782  {
3783  ArgumentList *actualArguments = new ArgumentList;
3784  stringToArgumentList(templSpec,actualArguments);
3785  MemberDef *md = mi->memberDef;
3787  cd->templateArguments(),actualArguments);
3788  delete actualArguments;
3789  //printf("%s->setMemberClass(%p)\n",imd->name().data(),this);
3790  imd->setMemberClass(this);
3791  imd->setTemplateMaster(md);
3792  imd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
3793  imd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
3796  imd->setMemberGroupId(md->getMemberGroupId());
3797  insertMember(imd);
3798  //printf("Adding member=%s %s%s to class %s templSpec %s\n",
3799  // imd->typeString(),imd->name().data(),imd->argsString(),
3800  // imd->getClassDef()->name().data(),templSpec);
3801  // insert imd in the list of all members
3802  //printf("Adding member=%s class=%s\n",imd->name().data(),name().data());
3804  if (mn==0)
3805  {
3806  mn = new MemberName(imd->name());
3807  Doxygen::memberNameSDict->append(imd->name(),mn);
3808  }
3809  mn->append(imd);
3810  }
3811  }
3812 }
QCString docFile() const
This class represents an function or template argument list.
Definition: arguments.h:82
void append(const type *d)
Definition: qlist.h:73
QCString inbodyDocumentation() const
ArgumentList * templateArguments() const
Definition: classdef.cpp:4419
MemberNameInfoSDict * memberNameInfoSDict() const
Definition: classdef.cpp:4409
void setMemberGroupId(int id)
Definition: memberdef.cpp:4740
MemberDef * memberDef
Definition: membername.h:62
int briefLine() const
void append(const char *key, const T *d)
Definition: sortdict.h:135
void insertMember(MemberDef *)
Definition: classdef.cpp:713
const QCString & name() const
Definition: definition.h:114
MemberDef * createTemplateInstanceMember(ArgumentList *formalArgs, ArgumentList *actualArgs)
Definition: memberdef.cpp:3406
QCString inbodyFile() const
void setDocumentation(const char *d, const char *docFile, int docLine, bool stripWhiteSpace=TRUE)
Definition: memberdef.cpp:1126
void setInbodyDocumentation(const char *d, const char *inbodyFile, int inbodyLine)
Definition: memberdef.cpp:1138
void setMemberClass(ClassDef *cd)
Definition: memberdef.cpp:3392
QCString briefDescription(bool abbr=FALSE) const
Definition: memberdef.cpp:5073
void setTemplateMaster(MemberDef *mt)
Definition: memberdef.cpp:4765
void stringToArgumentList(const char *argsString, ArgumentList *al, QCString *extraTypeChars)
Definition: defargs.cpp:2922
QCString briefFile() const
uint64 getMemberSpecifiers() const
Definition: memberdef.cpp:4065
int inbodyLine() const
void setMemberSpecifiers(uint64 s)
Definition: memberdef.cpp:4638
QCString documentation() const
Definition: memberdef.cpp:5085
static MemberNameSDict * memberNameSDict
Definition: doxygen.h:115
int getMemberGroupId() const
Definition: memberdef.cpp:4532
friend class Iterator
Definition: sortdict.h:289
int docLine() const
T * find(const char *key)
Definition: sortdict.h:232
void setBriefDescription(const char *b, const char *briefFile, int briefLine)
Definition: memberdef.cpp:1132
void ClassDef::addMemberToList ( MemberListType  lt,
MemberDef md,
bool  isBrief 
)
private

Definition at line 4035 of file classdef.cpp.

4036 {
4037  static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS");
4038  static bool sortMemberDocs = Config_getBool("SORT_MEMBER_DOCS");
4039  MemberList *ml = createMemberList(lt);
4040  ml->setNeedsSorting((isBrief && sortBriefDocs) || (!isBrief && sortMemberDocs));
4041  ml->append(md);
4042 
4043  // for members in the declaration lists we set the section, needed for member grouping
4044  if ((ml->listType()&MemberListType_detailedLists)==0) md->setSectionList(this,ml);
4045 }
MemberListType listType() const
Definition: memberlist.h:38
void append(const MemberDef *md)
Definition: memberlist.cpp:246
void setNeedsSorting(bool b)
Definition: memberlist.cpp:902
#define Config_getBool(val)
Definition: config.cpp:664
void setSectionList(Definition *d, MemberList *sl)
Definition: memberdef.cpp:3548
MemberList * createMemberList(MemberListType lt)
Definition: classdef.cpp:4003
void ClassDef::addTaggedInnerClass ( ClassDef cd)

Definition at line 4665 of file classdef.cpp.

4666 {
4667  if (m_impl->taggedInnerClasses==0)
4668  {
4670  }
4672 }
void append(const type *d)
Definition: qlist.h:73
ClassList * taggedInnerClasses
Definition: classdef.cpp:184
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::addTypeConstraint ( const QCString typeConstraint,
const QCString type 
)
private

Definition at line 2529 of file classdef.cpp.

2530 {
2531  //printf("addTypeContraint(%s,%s)\n",type.data(),typeConstraint.data());
2532  static bool hideUndocRelation = Config_getBool("HIDE_UNDOC_RELATIONS");
2533  if (typeConstraint.isEmpty() || type.isEmpty()) return;
2534  ClassDef *cd = getResolvedClass(this,getFileDef(),typeConstraint);
2535  if (cd==0 && !hideUndocRelation)
2536  {
2537  cd = new ClassDef(getDefFileName(),getDefLine(),getDefColumn(),typeConstraint,ClassDef::Class);
2538  cd->setUsedOnly(TRUE);
2539  cd->setLanguage(getLanguage());
2540  Doxygen::hiddenClasses->append(typeConstraint,cd);
2541  //printf("Adding undocumented constraint '%s' to class %s on type %s\n",
2542  // typeConstraint.data(),name().data(),type.data());
2543  }
2544  if (cd)
2545  {
2546  if (m_impl->constraintClassDict==0)
2547  {
2549  m_impl->constraintClassDict->setAutoDelete(TRUE);
2550  }
2551  ConstraintClassDef *ccd=m_impl->constraintClassDict->find(typeConstraint);
2552  if (ccd==0)
2553  {
2554  ccd = new ConstraintClassDef(cd);
2555  m_impl->constraintClassDict->insert(typeConstraint,ccd);
2556  }
2557  ccd->addAccessor(type);
2558  //printf("Adding constraint '%s' to class %s on type %s\n",
2559  // typeConstraint.data(),name().data(),type.data());
2560  }
2561 }
FileDef * getFileDef() const
Definition: classdef.cpp:4429
bool isEmpty() const
Definition: qcstring.h:189
static ClassSDict * hiddenClasses
Definition: doxygen.h:100
void setLanguage(SrcLangExt lang)
void setUsedOnly(bool b)
Definition: classdef.cpp:4574
ConstraintClassDict * constraintClassDict
Definition: classdef.cpp:121
void append(const char *key, const T *d)
Definition: sortdict.h:135
QCString getDefFileName() const
int getDefColumn() const
Definition: definition.h:191
int getDefLine() const
Definition: definition.h:188
SrcLangExt getLanguage() const
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)
Definition: classdef.cpp:286
#define Config_getBool(val)
Definition: config.cpp:664
void addAccessor(const char *s)
Definition: classdef.h:584
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * getResolvedClass(Definition *scope, FileDef *fileScope, const char *n, MemberDef **pTypeDef, QCString *pTemplSpec, bool mayBeUnlinkable, bool mayBeHidden, QCString *pResolvedType)
Definition: util.cpp:1563
const bool TRUE
Definition: qglobal.h:371
void ClassDef::addTypeConstraints ( )

Definition at line 2564 of file classdef.cpp.

2565 {
2566  if (m_impl->tempArgs)
2567  {
2569  Argument *a;
2570  for (;(a=ali.current());++ali)
2571  {
2572  if (!a->typeConstraint.isEmpty())
2573  {
2574  QCString typeConstraint;
2575  int i=0,p=0;
2576  while ((i=a->typeConstraint.find('&',p))!=-1) // typeConstraint="A &I" for C<T extends A & I>
2577  {
2578  typeConstraint = a->typeConstraint.mid(p,i-p).stripWhiteSpace();
2579  addTypeConstraint(typeConstraint,a->type);
2580  p=i+1;
2581  }
2582  typeConstraint = a->typeConstraint.right(a->typeConstraint.length()-p).stripWhiteSpace();
2583  addTypeConstraint(typeConstraint,a->type);
2584  }
2585  }
2586  }
2587 }
QCString type
Definition: arguments.h:67
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
ArgumentList * tempArgs
Definition: classdef.cpp:91
QCString typeConstraint
Definition: arguments.h:73
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
QCString right(uint len) const
Definition: qcstring.cpp:231
const double a
p
Definition: test.py:223
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
ClassDefImpl * m_impl
Definition: classdef.h:451
void addTypeConstraint(const QCString &typeConstraint, const QCString &type)
Definition: classdef.cpp:2529
void ClassDef::addUsedByClass ( ClassDef cd,
const char *  accessName,
Protection  prot 
)

Definition at line 3267 of file classdef.cpp.

3269 {
3270  static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
3271  static bool umlLook = Config_getBool("UML_LOOK");
3272  if (prot==Private && !extractPrivate) return;
3273  //printf("%s::addUsedByClass(%s,%s)\n",name().data(),cd->name().data(),accessName);
3274  if (m_impl->usedByImplClassDict==0)
3275  {
3277  m_impl->usedByImplClassDict->setAutoDelete(TRUE);
3278  }
3279  UsesClassDef *ucd=m_impl->usedByImplClassDict->find(cd->name());
3280  if (ucd==0)
3281  {
3282  ucd = new UsesClassDef(cd);
3283  m_impl->usedByImplClassDict->insert(cd->name(),ucd);
3284  //printf("Adding used by class %s to class %s\n",
3285  // cd->name().data(),name().data());
3286  }
3287  QCString acc = accessName;
3288  if (umlLook)
3289  {
3290  switch(prot)
3291  {
3292  case Public: acc.prepend("+"); break;
3293  case Private: acc.prepend("-"); break;
3294  case Protected: acc.prepend("#"); break;
3295  case Package: acc.prepend("~"); break;
3296  }
3297  }
3298  ucd->addAccessor(acc);
3299 }
Definition: types.h:26
Definition: types.h:26
Definition: types.h:26
const QCString & name() const
Definition: definition.h:114
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getBool(val)
Definition: config.cpp:664
UsesClassDict * usedByImplClassDict
Definition: classdef.cpp:118
ClassDefImpl * m_impl
Definition: classdef.h:451
const bool TRUE
Definition: qglobal.h:371
void addAccessor(const char *s)
Definition: classdef.h:469
void ClassDef::addUsedClass ( ClassDef cd,
const char *  accessName,
Protection  prot 
)

Definition at line 3233 of file classdef.cpp.

3235 {
3236  static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
3237  static bool umlLook = Config_getBool("UML_LOOK");
3238  if (prot==Private && !extractPrivate) return;
3239  //printf("%s::addUsedClass(%s,%s)\n",name().data(),cd->name().data(),accessName);
3240  if (m_impl->usesImplClassDict==0)
3241  {
3243  m_impl->usesImplClassDict->setAutoDelete(TRUE);
3244  }
3245  UsesClassDef *ucd=m_impl->usesImplClassDict->find(cd->name());
3246  if (ucd==0)
3247  {
3248  ucd = new UsesClassDef(cd);
3249  m_impl->usesImplClassDict->insert(cd->name(),ucd);
3250  //printf("Adding used class %s to class %s via accessor %s\n",
3251  // cd->name().data(),name().data(),accessName);
3252  }
3253  QCString acc = accessName;
3254  if (umlLook)
3255  {
3256  switch(prot)
3257  {
3258  case Public: acc.prepend("+"); break;
3259  case Private: acc.prepend("-"); break;
3260  case Protected: acc.prepend("#"); break;
3261  case Package: acc.prepend("~"); break;
3262  }
3263  }
3264  ucd->addAccessor(acc);
3265 }
Definition: types.h:26
Definition: types.h:26
UsesClassDict * usesImplClassDict
Definition: classdef.cpp:117
Definition: types.h:26
const QCString & name() const
Definition: definition.h:114
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getBool(val)
Definition: config.cpp:664
ClassDefImpl * m_impl
Definition: classdef.h:451
const bool TRUE
Definition: qglobal.h:371
void addAccessor(const char *s)
Definition: classdef.h:469
void ClassDef::addUsedInterfaceClasses ( MemberDef md,
const char *  typeStr 
)
protected
QCString ClassDef::anchor ( ) const
virtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 4606 of file classdef.cpp.

4607 {
4608  QCString anc;
4610  {
4611  if (m_impl->templateMaster)
4612  {
4613  // point to the template of which this class is an instance
4615  }
4616  else if (isReference())
4617  {
4618  // point to the external location
4619  anc = m_impl->fileName;
4620  }
4621  else
4622  {
4623  // normal locally defined class
4625  }
4626  }
4627  return anc;
4628 }
QCString convertNameToFile(const char *name, bool allowDots=FALSE) const
bool isReference() const
Definition: classdef.cpp:3826
ClassDef * templateMaster
Definition: classdef.cpp:137
static bool generatingXmlOutput
Definition: doxygen.h:152
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
QCString fileName
Definition: classdef.cpp:63
ClassDefImpl * m_impl
Definition: classdef.h:451
BaseClassList * ClassDef::baseClasses ( ) const

Returns the list of base classes from which this class directly inherits.

Definition at line 4399 of file classdef.cpp.

4400 {
4401  return m_impl->inherits;
4402 }
BaseClassList * inherits
Definition: classdef.cpp:73
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * ClassDef::categoryOf ( ) const

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

Definition at line 4514 of file classdef.cpp.

4515 {
4516  return m_impl->categoryOf;
4517 }
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * categoryOf
Definition: classdef.cpp:145
QCString ClassDef::className ( ) const

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

Definition at line 3914 of file classdef.cpp.

3915 {
3916  if (m_impl->className.isEmpty())
3917  {
3918  return localName();
3919  }
3920  else
3921  {
3922  return m_impl->className;
3923  }
3924 };
bool isEmpty() const
Definition: qcstring.h:189
QCString className
Definition: classdef.cpp:140
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString localName() const
ClassDef::CompoundType ClassDef::compoundType ( ) const

Returns the type of compound this is, i.e. class/struct/union/..

Definition at line 4394 of file classdef.cpp.

4395 {
4396  return m_impl->compType;
4397 }
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
QCString ClassDef::compoundTypeString ( ) const

Returns the type of compound as a string

Definition at line 3499 of file classdef.cpp.

3500 {
3502  {
3503  switch (m_impl->compType)
3504  {
3505  case Class: return "module";
3506  case Struct: return "type";
3507  case Union: return "union";
3508  case Interface: return "interface";
3509  case Protocol: return "protocol";
3510  case Category: return "category";
3511  case Exception: return "exception";
3512  default: return "unknown";
3513  }
3514  }
3515  else
3516  {
3517  switch (m_impl->compType)
3518  {
3519  case Class: return isJavaEnum() ? "enum" : "class";
3520  case Struct: return "struct";
3521  case Union: return "union";
3522  case Interface: return getLanguage()==SrcLangExt_ObjC ? "class" : "interface";
3523  case Protocol: return "protocol";
3524  case Category: return "category";
3525  case Exception: return "exception";
3526  case Service: return "service";
3527  case Singleton: return "singleton";
3528  default: return "unknown";
3529  }
3530  }
3531 }
bool isJavaEnum() const
Definition: classdef.cpp:4694
SrcLangExt getLanguage() const
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
void ClassDef::computeAnchors ( )

Definition at line 719 of file classdef.cpp.

720 {
721  //ClassDef *context = Config_getBool("INLINE_INHERITED_MEMB") ? this : 0;
722  //const char *letters = "abcdefghijklmnopqrstuvwxyz0123456789";
724  MemberList *ml;
725  //int index = 0;
726  for (mli.toFirst();(ml=mli.current());++mli)
727  {
728  if ((ml->listType()&MemberListType_detailedLists)==0)
729  {
730  setAnchors(ml);
731  }
732  }
733 
735  {
737  MemberGroup *mg;
738  for (;(mg=mgli.current());++mgli)
739  {
740  mg->setAnchors();
741  }
742  }
743 }
MemberListType listType() const
Definition: memberlist.h:38
void setAnchors(MemberList *ml)
Definition: util.cpp:2254
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
QList< MemberList > memberLists
Definition: classdef.cpp:147
void setAnchors()
ClassDefImpl * m_impl
Definition: classdef.h:451
int ClassDef::countAdditionalInheritedMembers ( )
private

Definition at line 4167 of file classdef.cpp.

4168 {
4169  int totalCount=0;
4172  LayoutDocEntry *lde;
4173  for (eli.toFirst();(lde=eli.current());++eli)
4174  {
4175  if (lde->kind()==LayoutDocEntry::MemberDecl)
4176  {
4178  if (lmd->type!=MemberListType_friends) // friendship is not inherited
4179  {
4180  //MemberList *ml = getMemberList(lmd->type);
4181  //if (ml==0 || ml->numDecMembers()==0)
4182  //{
4183  QPtrDict<void> visited(17);
4184  totalCount+=countInheritedDecMembers(lmd->type,this,TRUE,FALSE,&visited);
4185  //}
4186  }
4187  }
4188  }
4189  //printf("countAdditonalInheritedMembers()=%d\n",totalCount);
4190  return totalCount;
4191 }
MemberListType type
Definition: layout.h:96
int countInheritedDecMembers(MemberListType lt, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
Definition: classdef.cpp:4104
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
bool visited
Definition: classdef.h:402
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
const bool TRUE
Definition: qglobal.h:371
int ClassDef::countInheritanceNodes ( )

Definition at line 1156 of file classdef.cpp.

1157 {
1158  int count=0;
1159  BaseClassDef *ibcd;
1160  if (m_impl->inheritedBy)
1161  {
1163  for (;(ibcd=it.current());++it)
1164  {
1165  ClassDef *icd=ibcd->classDef;
1166  if ( icd->isVisibleInHierarchy()) count++;
1167  }
1168  }
1169  if (m_impl->inherits)
1170  {
1172  for (;(ibcd=it.current());++it)
1173  {
1174  ClassDef *icd=ibcd->classDef;
1175  if ( icd->isVisibleInHierarchy()) count++;
1176  }
1177  }
1178  return count;
1179 }
ClassDef * classDef
Definition: classdef.h:520
BaseClassList * inheritedBy
Definition: classdef.cpp:77
BaseClassList * inherits
Definition: classdef.cpp:73
bool isVisibleInHierarchy()
Definition: classdef.cpp:2743
ClassDefImpl * m_impl
Definition: classdef.h:451
int ClassDef::countInheritedDecMembers ( MemberListType  lt,
ClassDef inheritedFrom,
bool  invert,
bool  showAlways,
QPtrDict< void > *  visitedClasses 
)
private

Definition at line 4104 of file classdef.cpp.

4107 {
4108  int inhCount = 0;
4109  int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
4110  bool process = count>0;
4111  //printf("%s: countInheritedDecMembers: lt=%d process=%d count=%d invert=%d\n",
4112  // name().data(),lt,process,count,invert);
4113  if ((process^invert) || showAlways)
4114  {
4115  if (m_impl->inherits)
4116  {
4118  BaseClassDef *ibcd;
4119  for (it.toFirst();(ibcd=it.current());++it)
4120  {
4121  ClassDef *icd=ibcd->classDef;
4122  int lt1,lt2;
4123  if (icd->isLinkable())
4124  {
4125  convertProtectionLevel(lt,ibcd->prot,&lt1,&lt2);
4126  //printf("%s: convert %d->(%d,%d) prot=%d\n",
4127  // icd->name().data(),lt,lt1,lt2,ibcd->prot);
4128  if (visitedClasses->find(icd)==0)
4129  {
4130  visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance
4131  if (lt1!=-1)
4132  {
4133  inhCount+=icd->countMemberDeclarations((MemberListType)lt1,inheritedFrom,lt2,FALSE,TRUE,visitedClasses);
4134  }
4135  }
4136  }
4137  }
4138  }
4139  }
4140  return inhCount;
4141 }
ClassDef * classDef
Definition: classdef.h:520
const bool FALSE
Definition: qglobal.h:370
Protection prot
Definition: classdef.h:530
int countMembersIncludingGrouped(MemberListType lt, ClassDef *inheritedFrom, bool additional)
Definition: classdef.cpp:4213
void insert(void *k, const type *d)
Definition: qptrdict.h:57
def process(f, kind)
Definition: search.py:254
BaseClassList * inherits
Definition: classdef.cpp:73
type * find(void *k) const
Definition: qptrdict.h:63
bool isLinkable() const
Definition: classdef.cpp:2729
bool invert(ublas::matrix< T, L, A > &m)
int countMemberDeclarations(MemberListType lt, ClassDef *inheritedFrom, int lt2, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
Definition: classdef.cpp:4061
MemberListType
Definition: types.h:104
ClassDefImpl * m_impl
Definition: classdef.h:451
void convertProtectionLevel(MemberListType inListType, Protection inProt, int *outListType1, int *outListType2)
Definition: util.cpp:8378
const bool TRUE
Definition: qglobal.h:371
int ClassDef::countMemberDeclarations ( MemberListType  lt,
ClassDef inheritedFrom,
int  lt2,
bool  invert,
bool  showAlways,
QPtrDict< void > *  visitedClasses 
)
private

Definition at line 4061 of file classdef.cpp.

4063 {
4064  //printf("%s: countMemberDeclarations for %d and %d\n",name().data(),lt,lt2);
4065  int count=0;
4066  MemberList * ml = getMemberList(lt);
4067  MemberList * ml2 = getMemberList((MemberListType)lt2);
4068  if (getLanguage()!=SrcLangExt_VHDL) // use specific declarations function
4069  {
4070  if (ml)
4071  {
4072  ml->countDecMembers();
4073  count+=ml->numDecMembers();
4074  //printf("-> ml=%d\n",ml->numDecMembers());
4075  }
4076  if (ml2)
4077  {
4078  ml2->countDecMembers();
4079  count+=ml2->numDecMembers();
4080  //printf("-> ml2=%d\n",ml2->numDecMembers());
4081  }
4082  // also include grouped members that have their own section in the class (see bug 722759)
4083  if (inheritedFrom && m_impl->memberGroupSDict)
4084  {
4086  MemberGroup *mg;
4087  for (;(mg=mgli.current());++mgli)
4088  {
4089  count+=mg->countGroupedInheritedMembers(lt);
4090  if (lt2!=1) count+=mg->countGroupedInheritedMembers((MemberListType)lt2);
4091  }
4092  }
4093  static bool inlineInheritedMembers = Config_getBool("INLINE_INHERITED_MEMB");
4094  if (!inlineInheritedMembers) // show inherited members as separate lists
4095  {
4096  count+=countInheritedDecMembers(lt,inheritedFrom,invert,showAlways,visitedClasses);
4097  }
4098  }
4099  //printf("-> %d\n",count);
4100  return count;
4101 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
int countGroupedInheritedMembers(MemberListType lt)
int countInheritedDecMembers(MemberListType lt, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
Definition: classdef.cpp:4104
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
SrcLangExt getLanguage() const
bool invert(ublas::matrix< T, L, A > &m)
#define Config_getBool(val)
Definition: config.cpp:664
void countDecMembers(bool countEnumValues=FALSE, GroupDef *gd=0)
Definition: memberlist.cpp:136
MemberListType
Definition: types.h:104
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
int numDecMembers() const
Definition: memberlist.h:51
int ClassDef::countMembersIncludingGrouped ( MemberListType  lt,
ClassDef inheritedFrom,
bool  additional 
)

Definition at line 4213 of file classdef.cpp.

4215 {
4216  int count=0;
4217  MemberList *ml = getMemberList(lt);
4218  if (ml)
4219  {
4220  count=ml->countInheritableMembers(inheritedFrom);
4221  }
4222  //printf("%s:countMembersIncludingGrouped: count=%d\n",name().data(),count);
4223  if (m_impl->memberGroupSDict)
4224  {
4226  MemberGroup *mg;
4227  for (;(mg=mgli.current());++mgli)
4228  {
4229  bool hasOwnSection = !mg->allMembersInSameSection() ||
4230  !m_impl->subGrouping; // group is in its own section
4231  if ((additional && hasOwnSection) || (!additional && !hasOwnSection))
4232  {
4233  count+=mg->countGroupedInheritedMembers(lt);
4234  }
4235  }
4236  }
4237  //printf("%s:countMembersIncludingGrouped(lt=%d,%s)=%d\n",
4238  // name().data(),lt,ml?ml->listTypeAsString(ml->listType()).data():"<none>",count);
4239  return count;
4240 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
bool subGrouping
Definition: classdef.cpp:170
int countGroupedInheritedMembers(MemberListType lt)
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
bool allMembersInSameSection() const
Definition: membergroup.h:67
int countInheritableMembers(ClassDef *inheritedFrom) const
Definition: memberlist.cpp:92
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
MemberList * ClassDef::createMemberList ( MemberListType  lt)
private

Definition at line 4003 of file classdef.cpp.

4004 {
4007  MemberList *ml;
4008  for (mli.toFirst();(ml=mli.current());++mli)
4009  {
4010  if (ml->listType()==lt)
4011  {
4012  return ml;
4013  }
4014  }
4015  // not found, create a new member list
4016  ml = new MemberList(lt);
4017  m_impl->memberLists.append(ml);
4018  return ml;
4019 }
MemberListType listType() const
Definition: memberlist.h:38
void append(const type *d)
Definition: qlist.h:73
QList< MemberList > memberLists
Definition: classdef.cpp:147
ClassDefImpl * m_impl
Definition: classdef.h:451
void setAutoDelete(bool enable)
Definition: qlist.h:99
const bool TRUE
Definition: qglobal.h:371
DefType ClassDef::definitionType ( ) const
inlinevirtual

Used for RTTI, this is a class

Implements DefinitionIntf.

Definition at line 106 of file classdef.h.

QCString ClassDef::displayName ( bool  includeScope = TRUE) const
virtual

Returns the name as it is appears in the documentation

Implements Definition.

Definition at line 312 of file classdef.cpp.

313 {
314  //static bool optimizeOutputForJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
315  SrcLangExt lang = getLanguage();
316  //static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
317  QCString n;
318  if (lang==SrcLangExt_VHDL)
319  {
320  n = VhdlDocGen::getClassName(this);
321  }
322  else
323  {
324  if (includeScope)
325  {
327  }
328  else
329  {
330  n=className();
331  }
332  }
334  if (sep!="::")
335  {
336  n=substitute(n,"::",sep);
337  }
338  if (m_impl->compType==ClassDef::Protocol && n.right(2)=="-p")
339  {
340  n="<"+n.left(n.length()-2)+">";
341  }
342  //else if (n.right(2)=="-g")
343  //{
344  // n = n.left(n.length()-2);
345  //}
346  //printf("ClassDef::displayName()=%s\n",n.data());
347  if (n.find('@')!=-1)
348  {
349  return removeAnonymousScopes(n);
350  }
351  else
352  {
353  return n;
354  }
355 }
uint length() const
Definition: qcstring.h:195
QCString left(uint len) const
Definition: qcstring.cpp:213
static QCString getClassName(const ClassDef *)
Definition: vhdldocgen.cpp:977
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
SrcLangExt
Definition: types.h:41
QCString removeAnonymousScopes(const QCString &s)
Definition: util.cpp:164
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
QCString className() const
Definition: classdef.cpp:3914
QCString right(uint len) const
Definition: qcstring.cpp:231
SrcLangExt getLanguage() const
std::void_t< T > n
QCString qualifiedNameWithTemplateParameters(QList< ArgumentList > *actualParams=0, int *actualParamIndex=0) const
Definition: classdef.cpp:3855
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
ClassDef::CompoundType compType
Definition: classdef.cpp:103
void ClassDef::distributeMemberGroupDocumentation ( )

Definition at line 745 of file classdef.cpp.

746 {
748  {
750  MemberGroup *mg;
751  for (;(mg=mgli.current());++mgli)
752  {
754  }
755  }
756 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
ClassDefImpl * m_impl
Definition: classdef.h:451
void distributeMemberGroupDocumentation()
void ClassDef::endMemberDeclarations ( OutputList ol)
private

Definition at line 1474 of file classdef.cpp.

1475 {
1476  //printf("%s: ClassDef::endMemberDeclarations()\n",name().data());
1477  static bool inlineInheritedMembers = Config_getBool("INLINE_INHERITED_MEMB");
1478  if (!inlineInheritedMembers && countAdditionalInheritedMembers()>0)
1479  {
1480  ol.startMemberHeader("inherited");
1482  ol.endMemberHeader();
1484  }
1485  ol.endMemberSections();
1486 }
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endMemberHeader()
Definition: outputlist.h:196
void writeAdditionalInheritedMembers(OutputList &ol)
Definition: classdef.cpp:4193
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trAdditionalInheritedMembers()=0
Translator * theTranslator
Definition: language.cpp:157
int countAdditionalInheritedMembers()
Definition: classdef.cpp:4167
void endMemberSections()
Definition: outputlist.h:188
void startMemberHeader(const char *anchor)
Definition: outputlist.h:194
void ClassDef::endMemberDocumentation ( OutputList ol)
private

Definition at line 1458 of file classdef.cpp.

1459 {
1460  //printf("%s: ClassDef::endMemberDocumentation()\n",name().data());
1461  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
1462  {
1465  }
1466 }
const bool FALSE
Definition: qglobal.h:370
static bool suppressDocWarnings
Definition: doxygen.h:142
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
const ExampleSDict * ClassDef::exampleList ( ) const

Definition at line 4733 of file classdef.cpp.

4734 {
4735  return m_impl->exampleSDict;
4736 }
ExampleSDict * exampleSDict
Definition: classdef.cpp:100
ClassDefImpl * m_impl
Definition: classdef.h:451
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 3651 of file classdef.cpp.

3652 {
3653  Definition *result=0;
3654  if (name==0) return 0;
3655  if (m_impl->innerClasses)
3656  {
3657  result = m_impl->innerClasses->find(name);
3658  }
3659  return result;
3660 }
static QCString result
const QCString & name() const
Definition: definition.h:114
ClassSDict * innerClasses
Definition: classdef.cpp:114
ClassDefImpl * m_impl
Definition: classdef.h:451
T * find(const char *key)
Definition: sortdict.h:232
void ClassDef::findSectionsInDocumentation ( )

Definition at line 758 of file classdef.cpp.

759 {
762  {
764  MemberGroup *mg;
765  for (;(mg=mgli.current());++mgli)
766  {
768  }
769  }
771  MemberList *ml;
772  for (mli.toFirst();(ml=mli.current());++mli)
773  {
774  if ((ml->listType()&MemberListType_detailedLists)==0)
775  {
777  }
778  }
779 }
MemberListType listType() const
Definition: memberlist.h:38
QCString docFile() const
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
friend class Iterator
Definition: sortdict.h:598
static constexpr double mg
Definition: Units.h:145
QList< MemberList > memberLists
Definition: classdef.cpp:147
void findSectionsInDocumentation()
Definition: memberlist.cpp:818
ClassDefImpl * m_impl
Definition: classdef.h:451
void docFindSections(const char *input, Definition *d, MemberGroup *mg, const char *fileName)
Definition: docparser.cpp:7434
void findSectionsInDocumentation()
virtual QCString documentation() const
QCString ClassDef::generatedFromFiles ( ) const

Definition at line 1053 of file classdef.cpp.

1054 {
1055  QCString result;
1056  SrcLangExt lang = getLanguage();
1057  if (lang==SrcLangExt_Fortran)
1058  {
1061  m_impl->files.count()==1);
1062  }
1063  else if (isJavaEnum())
1064  {
1066  }
1067  else if (m_impl->compType==Service)
1068  {
1070  }
1071  else if (m_impl->compType==Singleton)
1072  {
1074  }
1075  else
1076  {
1079  m_impl->files.count()==1);
1080  }
1081  return result;
1082 }
virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, bool single)=0
static QCString result
virtual QCString trSingletonGeneratedFromFiles(bool single)=0
SrcLangExt
Definition: types.h:41
virtual QCString trServiceGeneratedFromFiles(bool single)=0
bool isJavaEnum() const
Definition: classdef.cpp:4694
uint count() const
Definition: qlist.h:66
FileList files
Definition: classdef.cpp:97
SrcLangExt getLanguage() const
virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single)=0
virtual QCString trEnumGeneratedFromFiles(bool single)=0
Translator * theTranslator
Definition: language.cpp:157
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
ClassSDict * ClassDef::getClassSDict ( )

returns the classes nested into this class

Definition at line 4389 of file classdef.cpp.

4390 {
4391  return m_impl->innerClasses;
4392 }
ClassSDict * innerClasses
Definition: classdef.cpp:114
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::getFileBase ( ) const

Definition at line 3591 of file classdef.cpp.

3592 {
3593  if (m_impl->templateMaster)
3594  {
3595  return m_impl->templateMaster->getFileBase();
3596  }
3597  else
3598  {
3599  return m_impl->fileName;
3600  }
3601 }
ClassDef * templateMaster
Definition: classdef.cpp:137
QCString getFileBase() const
Definition: classdef.cpp:3591
QCString fileName
Definition: classdef.cpp:63
ClassDefImpl * m_impl
Definition: classdef.h:451
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 4429 of file classdef.cpp.

4430 {
4431  return m_impl->fileDef;
4432 }
FileDef * fileDef
Definition: classdef.cpp:85
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::getInstanceOutputFileBase ( ) const

Definition at line 3579 of file classdef.cpp.

3580 {
3581  if (isReference())
3582  {
3583  return m_impl->fileName;
3584  }
3585  else
3586  {
3588  }
3589 }
QCString convertNameToFile(const char *name, bool allowDots=FALSE) const
bool isReference() const
Definition: classdef.cpp:3826
QCString fileName
Definition: classdef.cpp:63
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberDef * ClassDef::getMemberByName ( const QCString name) const

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

Definition at line 3968 of file classdef.cpp.

3969 {
3970  MemberDef *xmd = 0;
3972  {
3974  if (mni)
3975  {
3976  const int maxInheritanceDepth = 100000;
3977  int mdist=maxInheritanceDepth;
3978  MemberNameInfoIterator mnii(*mni);
3979  MemberInfo *mi;
3980  for (mnii.toFirst();(mi=mnii.current());++mnii)
3981  {
3982  ClassDef *mcd=mi->memberDef->getClassDef();
3983  int m=minClassDistance(this,mcd);
3984  //printf("found member in %s linkable=%d m=%d\n",
3985  // mcd->name().data(),mcd->isLinkable(),m);
3986  if (m<mdist && mcd->isLinkable())
3987  {
3988  mdist=m;
3989  xmd=mi->memberDef;
3990  }
3991  }
3992  }
3993  }
3994  //printf("getMemberByName(%s)=%p\n",name.data(),xmd);
3995  return xmd;
3996 }
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
MemberDef * memberDef
Definition: membername.h:62
bool isLinkable() const
Definition: classdef.cpp:2729
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
const int maxInheritanceDepth
Definition: util.cpp:148
ClassDefImpl * m_impl
Definition: classdef.h:451
T * find(const char *key)
Definition: sortdict.h:232
int minClassDistance(const ClassDef *cd, const ClassDef *bcd, int level)
Definition: util.cpp:2527
MemberGroupSDict * ClassDef::getMemberGroupSDict ( ) const

Returns the member groups defined for this class

Definition at line 4524 of file classdef.cpp.

4525 {
4526  return m_impl->memberGroupSDict;
4527 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberList * ClassDef::getMemberList ( MemberListType  lt)

Returns the members in the list identified by lt

Definition at line 4021 of file classdef.cpp.

4022 {
4024  MemberList *ml;
4025  for (;(ml=mli.current());++mli)
4026  {
4027  if (ml->listType()==lt)
4028  {
4029  return ml;
4030  }
4031  }
4032  return 0;
4033 }
MemberListType listType() const
Definition: memberlist.h:38
QList< MemberList > memberLists
Definition: classdef.cpp:147
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::getMemberListFileName ( ) const

Definition at line 307 of file classdef.cpp.

308 {
309  return convertNameToFile(compoundTypeString()+name()+"-members");
310 }
QCString convertNameToFile(const char *name, bool allowDots=FALSE) const
QCString compoundTypeString() const
Definition: classdef.cpp:3499
const QCString & name() const
Definition: definition.h:114
const QList< MemberList > & ClassDef::getMemberLists ( ) const

Returns the list containing the list of members sorted per type

Definition at line 4519 of file classdef.cpp.

4520 {
4521  return m_impl->memberLists;
4522 }
QList< MemberList > memberLists
Definition: classdef.cpp:147
ClassDefImpl * m_impl
Definition: classdef.h:451
NamespaceDef * ClassDef::getNamespaceDef ( ) const

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

Definition at line 4424 of file classdef.cpp.

4425 {
4426  return m_impl->nspace;
4427 }
NamespaceDef * nspace
Definition: classdef.cpp:82
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::getOutputFileBase ( ) const
virtual

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

Implements Definition.

Definition at line 3533 of file classdef.cpp.

3534 {
3535  static bool inlineGroupedClasses = Config_getBool("INLINE_GROUPED_CLASSES");
3536  static bool inlineSimpleClasses = Config_getBool("INLINE_SIMPLE_STRUCTS");
3538  {
3539  Definition *scope=0;
3540  if (inlineGroupedClasses && partOfGroups()!=0)
3541  {
3542  // point to the group that embeds this class
3543  return partOfGroups()->at(0)->getOutputFileBase();
3544  }
3545  else if (inlineSimpleClasses && m_impl->isSimple && partOfGroups()!=0)
3546  {
3547  // point to simple struct inside a group
3548  return partOfGroups()->at(0)->getOutputFileBase();
3549  }
3550  else if (inlineSimpleClasses && m_impl->isSimple && (scope=getOuterScope()))
3551  {
3552  if (scope==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) // simple struct embedded in file
3553  {
3554  return getFileDef()->getOutputFileBase();
3555  }
3556  else if (scope->isLinkableInProject()) // simple struct embedded in other container (namespace/group/class)
3557  {
3558  return getOuterScope()->getOutputFileBase();
3559  }
3560  }
3561  }
3562  if (m_impl->templateMaster)
3563  {
3564  // point to the template of which this class is an instance
3566  }
3567  else if (isReference())
3568  {
3569  // point to the external location
3570  return m_impl->fileName;
3571  }
3572  else
3573  {
3574  // normal locally defined class
3576  }
3577 }
FileDef * getFileDef() const
Definition: classdef.cpp:4429
bool isLinkableInProject() const
Definition: classdef.cpp:2707
static QCString scope
Definition: declinfo.cpp:668
QCString convertNameToFile(const char *name, bool allowDots=FALSE) const
virtual bool isLinkableInProject() const =0
bool isReference() const
Definition: classdef.cpp:3826
type * at(uint i) const
Definition: qlist.h:94
virtual QCString getOutputFileBase() const =0
GroupList * partOfGroups() const
ClassDef * templateMaster
Definition: classdef.cpp:137
static NamespaceDef * globalScope
Definition: doxygen.h:128
static bool generatingXmlOutput
Definition: doxygen.h:152
#define Config_getBool(val)
Definition: config.cpp:664
QCString getOutputFileBase() const
Definition: filedef.h:83
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual Definition * getOuterScope() const
QCString fileName
Definition: classdef.cpp:63
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString getOutputFileBase() const
Definition: groupdef.cpp:1512
QCString ClassDef::getReference ( ) const
virtual

If this class originated from a tagfile, this will return the tag file reference

Reimplemented from Definition.

Definition at line 3814 of file classdef.cpp.

3815 {
3816  if (m_impl->templateMaster)
3817  {
3818  return m_impl->templateMaster->getReference();
3819  }
3820  else
3821  {
3822  return Definition::getReference();
3823  }
3824 }
virtual QCString getReference() const
QCString getReference() const
Definition: classdef.cpp:3814
ClassDef * templateMaster
Definition: classdef.cpp:137
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::getSourceFileBase ( ) const
virtual

Returns the base name for the source code file

Reimplemented from Definition.

Definition at line 3603 of file classdef.cpp.

3604 {
3605  if (m_impl->templateMaster)
3606  {
3608  }
3609  else
3610  {
3612  }
3613 }
ClassDef * templateMaster
Definition: classdef.cpp:137
virtual QCString getSourceFileBase() const
Definition: definition.cpp:885
QCString getSourceFileBase() const
Definition: classdef.cpp:3603
ClassDefImpl * m_impl
Definition: classdef.h:451
QDict< int > * ClassDef::getTemplateBaseClassNames ( ) const

Definition at line 3766 of file classdef.cpp.

3767 {
3768  return m_impl->templBaseClassNames;
3769 }
ClassDefImpl * m_impl
Definition: classdef.h:451
QDict< int > * templBaseClassNames
Definition: classdef.cpp:134
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 4434 of file classdef.cpp.

4435 {
4436  return m_impl->templateInstances;
4437 }
QDict< ClassDef > * templateInstances
Definition: classdef.cpp:126
ClassDefImpl * m_impl
Definition: classdef.h:451
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 3838 of file classdef.cpp.

3839 {
3841  if (d)
3842  {
3844  {
3845  ClassDef *cd=(ClassDef *)d;
3846  cd->getTemplateParameterLists(lists);
3847  }
3848  }
3849  if (templateArguments())
3850  {
3851  lists.append(templateArguments());
3852  }
3853 }
void append(const type *d)
Definition: qlist.h:73
ArgumentList * templateArguments() const
Definition: classdef.cpp:4419
virtual DefType definitionType() const =0
virtual Definition * getOuterScope() const
void getTemplateParameterLists(QList< ArgumentList > &lists) const
Definition: classdef.cpp:3838
void ClassDef::getTitleForMemberListType ( MemberListType  type,
QCString title,
QCString subtitle 
)
private

Definition at line 4143 of file classdef.cpp.

4145 {
4146  SrcLangExt lang = getLanguage();
4149  LayoutDocEntry *lde;
4150  for (eli.toFirst();(lde=eli.current());++eli)
4151  {
4152  if (lde->kind()==LayoutDocEntry::MemberDecl)
4153  {
4155  if (lmd->type==type)
4156  {
4157  title = lmd->title(lang);
4158  subtitle = lmd->subtitle(lang);
4159  return;
4160  }
4161  }
4162  }
4163  title="";
4164  subtitle="";
4165 }
MemberListType type
Definition: layout.h:96
static LayoutDocManager & instance()
Definition: layout.cpp:1359
SrcLangExt
Definition: types.h:41
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
SrcLangExt getLanguage() const
QCString subtitle(SrcLangExt lang) const
Definition: layout.cpp:1452
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1447
ClassDef * ClassDef::getVariableInstance ( const char *  templSpec)

Definition at line 3726 of file classdef.cpp.

3727 {
3728  if (m_impl->variableInstances==0)
3729  {
3730  m_impl->variableInstances = new QDict<ClassDef>(17);
3731  m_impl->variableInstances->setAutoDelete(TRUE);
3732  }
3733  ClassDef *templateClass=m_impl->variableInstances->find(templSpec);
3734  if (templateClass==0)
3735  {
3736  Debug::print(Debug::Classes,0," New template variable instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec));
3737  QCString tcname = removeRedundantWhiteSpace(name()+templSpec);
3738  templateClass = new ClassDef("<code>",1,1,tcname,
3739  ClassDef::Class,0,0,FALSE);
3740  templateClass->addMembersToTemplateInstance( this, templSpec );
3741  templateClass->setTemplateMaster(this);
3742  m_impl->variableInstances->insert(templSpec,templateClass);
3743  }
3744  return templateClass;
3745 }
void addMembersToTemplateInstance(ClassDef *cd, const char *templSpec)
Definition: classdef.cpp:3771
const bool FALSE
Definition: qglobal.h:370
const QCString & name() const
Definition: definition.h:114
void setTemplateMaster(ClassDef *tm)
Definition: classdef.cpp:4559
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)
Definition: classdef.cpp:286
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:84
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
QDict< ClassDef > * variableInstances
Definition: classdef.cpp:132
ClassDefImpl * m_impl
Definition: classdef.h:451
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
bool ClassDef::hasDetailedDescription ( ) const

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

Definition at line 1007 of file classdef.cpp.

1008 {
1009  static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
1010  static bool sourceBrowser = Config_getBool("SOURCE_BROWSER");
1011  return ((!briefDescription().isEmpty() && repeatBrief) ||
1012  !documentation().isEmpty() ||
1013  (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()));
1014 }
FileDef * getBodyDef() const
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString briefDescription(bool abbreviate=FALSE) const
int getStartBodyLine() const
virtual QCString documentation() const
bool ClassDef::hasDocumentation ( ) const
virtual

returns TRUE if this class has documentation

Reimplemented from Definition.

Definition at line 2767 of file classdef.cpp.

2768 {
2770 }
virtual bool hasDocumentation() const
bool ClassDef::hasExamples ( ) const

Definition at line 2521 of file classdef.cpp.

2522 {
2523  bool result=FALSE;
2524  if (m_impl->exampleSDict)
2525  result = m_impl->exampleSDict->count()>0;
2526  return result;
2527 }
static QCString result
const bool FALSE
Definition: qglobal.h:370
int count() const
Definition: sortdict.h:284
ExampleSDict * exampleSDict
Definition: classdef.cpp:100
ClassDefImpl * m_impl
Definition: classdef.h:451
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 2620 of file classdef.cpp.

2621 {
2622  bool found=!isReference() && isLinkableInProject() && !isHidden();
2623  if (found)
2624  {
2625  return TRUE; // we're done if this class is not a reference
2626  }
2627  if (m_impl->inheritedBy)
2628  {
2630  for ( ; bcli.current() && !found ; ++bcli ) // for each super class
2631  {
2632  ClassDef *bcd=bcli.current()->classDef;
2633  // recurse into the super class branch
2634  found = found || bcd->hasNonReferenceSuperClass();
2635  if (!found)
2636  {
2637  // look for template instances that might have non-reference super classes
2638  QDict<ClassDef> *cil = bcd->getTemplateInstances();
2639  if (cil)
2640  {
2641  QDictIterator<ClassDef> tidi(*cil);
2642  for ( ; tidi.current() && !found ; ++tidi) // for each template instance
2643  {
2644  // recurse into the template instance branch
2645  found = found || tidi.current()->hasNonReferenceSuperClass();
2646  }
2647  }
2648  }
2649  }
2650  }
2651  return found;
2652 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
BaseClassList * inheritedBy
Definition: classdef.cpp:77
bool isReference() const
Definition: classdef.cpp:3826
bool hasNonReferenceSuperClass()
Definition: classdef.cpp:2620
bool isHidden() const
QDict< ClassDef > * getTemplateInstances() const
Definition: classdef.cpp:4434
ClassDefImpl * m_impl
Definition: classdef.h:451
const bool TRUE
Definition: qglobal.h:371
IncludeInfo * ClassDef::includeInfo ( ) const

Definition at line 4449 of file classdef.cpp.

4450 {
4451  return m_impl->incInfo;
4452 }
IncludeInfo * incInfo
Definition: classdef.cpp:68
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::includeStatement ( ) const
private

Definition at line 1323 of file classdef.cpp.

1324 {
1325  SrcLangExt lang = getLanguage();
1326  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
1327  if (isIDLorJava)
1328  {
1329  return "import";
1330  }
1331  else if (isObjectiveC())
1332  {
1333  return "#import ";
1334  }
1335  else
1336  {
1337  return "#include ";
1338  }
1339 }
SrcLangExt
Definition: types.h:41
SrcLangExt getLanguage() const
bool isObjectiveC() const
Definition: classdef.cpp:4504
const ClassSDict * ClassDef::innerClasses ( ) const

Definition at line 4718 of file classdef.cpp.

4719 {
4720  return m_impl->innerClasses;
4721 }
ClassSDict * innerClasses
Definition: classdef.cpp:114
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::insertBaseClass ( ClassDef cd,
const char *  name,
Protection  p,
Specifier  s,
const char *  t = 0 
)

Definition at line 358 of file classdef.cpp.

360 {
361  //printf("*** insert base class %s into %s\n",cd->name().data(),name().data());
362  //inherits->inSort(new BaseClassDef(cd,p,s,t));
363  if (m_impl->inherits==0)
364  {
367  }
368  m_impl->inherits->append(new BaseClassDef(cd,n,p,s,t));
369  m_impl->isSimple = FALSE;
370 }
void append(const type *d)
Definition: qlist.h:73
const bool FALSE
Definition: qglobal.h:370
BaseClassList * inherits
Definition: classdef.cpp:73
std::void_t< T > n
p
Definition: test.py:223
ClassDefImpl * m_impl
Definition: classdef.h:451
void setAutoDelete(bool enable)
Definition: qlist.h:99
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
void ClassDef::insertMember ( MemberDef md)

Definition at line 713 of file classdef.cpp.

714 {
716 }
Protection protection() const
Definition: memberdef.cpp:4120
void internalInsertMember(MemberDef *md, Protection prot, bool addToAllList)
Definition: classdef.cpp:417
const bool TRUE
Definition: qglobal.h:371
void ClassDef::insertSubClass ( ClassDef cd,
Protection  p,
Specifier  s,
const char *  t = 0 
)

Definition at line 373 of file classdef.cpp.

375 {
376  //printf("*** insert sub class %s into %s\n",cd->name().data(),name().data());
377  static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
378  if (!extractPrivate && cd->protection()==Private) return;
379  if (m_impl->inheritedBy==0)
380  {
383  }
384  m_impl->inheritedBy->inSort(new BaseClassDef(cd,0,p,s,t));
385  m_impl->isSimple = FALSE;
386 }
BaseClassList * inheritedBy
Definition: classdef.cpp:77
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
Protection protection() const
Definition: classdef.cpp:4414
void inSort(const type *d)
Definition: qlist.h:71
p
Definition: test.py:223
#define Config_getBool(val)
Definition: config.cpp:664
ClassDefImpl * m_impl
Definition: classdef.h:451
void setAutoDelete(bool enable)
Definition: qlist.h:99
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
ClassDef * ClassDef::insertTemplateInstance ( const QCString fileName,
int  startLine,
int  startColumn,
const QCString templSpec,
bool freshInstance 
)

Definition at line 3702 of file classdef.cpp.

3704 {
3705  freshInstance = FALSE;
3706  if (m_impl->templateInstances==0)
3707  {
3708  m_impl->templateInstances = new QDict<ClassDef>(17);
3709  }
3710  ClassDef *templateClass=m_impl->templateInstances->find(templSpec);
3711  if (templateClass==0)
3712  {
3713  Debug::print(Debug::Classes,0," New template instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec));
3714  QCString tcname = removeRedundantWhiteSpace(localName()+templSpec);
3715  templateClass = new ClassDef(
3716  fileName,startLine,startColumn,tcname,ClassDef::Class);
3717  templateClass->setTemplateMaster(this);
3718  templateClass->setOuterScope(getOuterScope());
3719  templateClass->setHidden(isHidden());
3720  m_impl->templateInstances->insert(templSpec,templateClass);
3721  freshInstance=TRUE;
3722  }
3723  return templateClass;
3724 }
const bool FALSE
Definition: qglobal.h:370
QDict< ClassDef > * templateInstances
Definition: classdef.cpp:126
const QCString & name() const
Definition: definition.h:114
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)
Definition: classdef.cpp:286
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:84
QCString removeRedundantWhiteSpace(const QCString &s)
Definition: util.cpp:1655
virtual Definition * getOuterScope() const
bool isHidden() const
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString localName() const
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
void ClassDef::insertUsedFile ( FileDef fd)

Definition at line 783 of file classdef.cpp.

784 {
785  if (fd==0) return;
786  if (m_impl->files.find(fd)==-1) m_impl->files.append(fd);
788  {
789  QDictIterator<ClassDef> qdi(*m_impl->templateInstances);
790  ClassDef *cd;
791  for (qdi.toFirst();(cd=qdi.current());++qdi)
792  {
793  cd->insertUsedFile(fd);
794  }
795  }
796 }
void append(const type *d)
Definition: qlist.h:73
QDict< ClassDef > * templateInstances
Definition: classdef.cpp:126
int find(const type *d) const
Definition: qlist.h:88
FileList files
Definition: classdef.cpp:97
ClassDefImpl * m_impl
Definition: classdef.h:451
void insertUsedFile(FileDef *)
Definition: classdef.cpp:783
void ClassDef::internalInsertMember ( MemberDef md,
Protection  prot,
bool  addToAllList 
)
private

isReference()

Definition at line 417 of file classdef.cpp.

421 {
422  //printf("insertInternalMember(%s) isHidden()=%d\n",md->name().data(),md->isHidden());
423  if (md->isHidden()) return;
424 
426  {
428  if (!m_impl->vhdlSummaryTitles.find(title))
429  {
430  m_impl->vhdlSummaryTitles.append(title,new QCString(title));
431  }
432  }
433 
434  if (1 /*!isReference()*/) // changed to 1 for showing members of external
435  // classes when HAVE_DOT and UML_LOOK are enabled.
436  {
437  bool isSimple=FALSE;
438 
439  /********************************************/
440  /* insert member in the declaration section */
441  /********************************************/
442  if (md->isRelated() && protectionLevelVisible(prot))
443  {
445  }
446  else if (md->isFriend())
447  {
449  }
450  else
451  {
452  switch (md->memberType())
453  {
454  case MemberType_Service: // UNO IDL
456  break;
457  case MemberType_Interface: // UNO IDL
459  break;
460  case MemberType_Signal: // Qt specific
462  break;
463  case MemberType_DCOP: // KDE2 specific
465  break;
466  case MemberType_Property:
468  break;
469  case MemberType_Event:
471  break;
472  case MemberType_Slot: // Qt specific
473  switch (prot)
474  {
475  case Protected:
476  case Package: // slots in packages are not possible!
478  break;
479  case Public:
481  break;
482  case Private:
484  break;
485  }
486  break;
487  default: // any of the other members
488  if (md->isStatic())
489  {
490  if (md->isVariable())
491  {
492  switch (prot)
493  {
494  case Protected:
496  break;
497  case Package:
499  break;
500  case Public:
502  break;
503  case Private:
505  break;
506  }
507  }
508  else // function
509  {
510  switch (prot)
511  {
512  case Protected:
514  break;
515  case Package:
517  break;
518  case Public:
520  break;
521  case Private:
523  break;
524  }
525  }
526  }
527  else // not static
528  {
529  if (md->isVariable())
530  {
531  switch (prot)
532  {
533  case Protected:
535  break;
536  case Package:
538  break;
539  case Public:
541  isSimple=!md->isFunctionPtr();
542  break;
543  case Private:
545  break;
546  }
547  }
548  else if (md->isTypedef() || md->isEnumerate() || md->isEnumValue())
549  {
550  switch (prot)
551  {
552  case Protected:
554  break;
555  case Package:
557  break;
558  case Public:
560  isSimple=QCString(md->typeString()).find(")(")==-1;
561  break;
562  case Private:
564  break;
565  }
566  }
567  else // member function
568  {
569  switch (prot)
570  {
571  case Protected:
573  break;
574  case Package:
576  break;
577  case Public:
579  break;
580  case Private:
582  break;
583  }
584  }
585  }
586  break;
587  }
588  }
589  if (!isSimple) // not a simple field -> not a simple struct
590  {
591  m_impl->isSimple = FALSE;
592  }
593  //printf("adding %s simple=%d total_simple=%d\n",name().data(),isSimple,m_impl->isSimple);
594 
595  /*******************************************************/
596  /* insert member in the detailed documentation section */
597  /*******************************************************/
598  if ((md->isRelated() && protectionLevelVisible(prot)) || md->isFriend())
599  {
601  }
602  else
603  {
604  switch (md->memberType())
605  {
606  case MemberType_Service: // UNO IDL
608  break;
609  case MemberType_Interface: // UNO IDL
611  break;
612  case MemberType_Property:
614  break;
615  case MemberType_Event:
617  break;
618  case MemberType_Signal: // fall through
619  case MemberType_DCOP:
621  break;
622  case MemberType_Slot:
623  if (protectionLevelVisible(prot))
624  {
626  }
627  break;
628  default: // any of the other members
629  if (protectionLevelVisible(prot))
630  {
631  switch (md->memberType())
632  {
633  case MemberType_Typedef:
635  break;
638  break;
641  break;
642  case MemberType_Function:
643  if (md->isConstructor() || md->isDestructor())
644  {
646  ml->append(md);
647  }
648  else
649  {
651  }
652  break;
653  case MemberType_Variable:
655  break;
656  default:
657  err("Unexpected member type %d found!\n",md->memberType());
658  }
659  }
660  break;
661  }
662  }
663 
664  /*************************************************/
665  /* insert member in the appropriate member group */
666  /*************************************************/
667  // Note: this must be done AFTER inserting the member in the
668  // regular groups
669  //addMemberToGroup(md,groupId);
670 
671  }
672 
673  if (md->virtualness()==Pure)
674  {
676  }
677 
678  if (md->name()=="operator->")
679  {
681  }
682 
683  //::addClassMemberNameToIndex(md);
684  if (addToAllList &&
685  !(Config_getBool("HIDE_FRIEND_COMPOUNDS") &&
686  md->isFriend() &&
687  (QCString(md->typeString())=="friend class" ||
688  QCString(md->typeString())=="friend struct" ||
689  QCString(md->typeString())=="friend union")))
690  {
691  //printf("=======> adding member %s to class %s\n",md->name().data(),name().data());
692  MemberInfo *mi = new MemberInfo((MemberDef *)md,
693  prot,md->virtualness(),FALSE);
694  MemberNameInfo *mni=0;
696  {
699  }
700  if ((mni=m_impl->allMemberNameInfoSDict->find(md->name())))
701  {
702  mni->append(mi);
703  }
704  else
705  {
706  mni = new MemberNameInfo(md->name());
707  mni->append(mi);
708  m_impl->allMemberNameInfoSDict->append(mni->memberName(),mni);
709  }
710  }
711 }
void append(const MemberDef *md)
Definition: memberlist.cpp:246
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
bool isFunctionPtr() const
Definition: memberdef.cpp:4165
static QCString trVhdlType(uint64 type, bool sing=true)
bool isFriend() const
Definition: memberdef.cpp:4175
void append(const type *d)
Definition: qlist.h:73
Definition: types.h:29
bool isSimple() const
Definition: classdef.cpp:4584
Definition: types.h:26
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
bool isAbstract
Definition: classdef.cpp:153
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
bool isVariable() const
Definition: memberdef.cpp:4140
void append(const char *key, const T *d)
Definition: sortdict.h:135
Definition: types.h:26
void setAutoDelete(bool val)
Definition: sortdict.h:222
Specifier virtualness(int count=0) const
Definition: memberdef.cpp:3560
const char * typeString() const
Definition: memberdef.cpp:4035
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
SrcLangExt getLanguage() const
QCString title() const
Definition: classdef.cpp:2076
void addMemberToList(MemberListType lt, MemberDef *md, bool isBrief)
Definition: classdef.cpp:4035
bool isConstructor() const
Definition: memberdef.cpp:3702
#define Config_getBool(val)
Definition: config.cpp:664
MemberList * createMemberList(MemberListType lt)
Definition: classdef.cpp:4003
uint64 getMemberSpecifiers() const
Definition: memberdef.cpp:4065
void err(const char *fmt,...)
Definition: message.cpp:226
SDict< QCString > vhdlSummaryTitles
Definition: classdef.cpp:176
MemberType memberType() const
Definition: memberdef.cpp:4125
bool isHidden() const
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberDef * arrowOperator
Definition: classdef.cpp:182
bool isRelated() const
Definition: memberdef.cpp:4195
bool isStatic() const
Definition: memberdef.cpp:4205
bool isTypedef() const
Definition: memberdef.cpp:4155
T * find(const char *key)
Definition: sortdict.h:232
const bool TRUE
Definition: qglobal.h:371
bool isEnumerate() const
Definition: memberdef.cpp:4145
bool isDestructor() const
Definition: memberdef.cpp:3743
bool ClassDef::isAbstract ( ) const

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

Definition at line 4479 of file classdef.cpp.

4480 {
4482 }
static const uint64 Abstract
Definition: entry.h:151
bool isAbstract
Definition: classdef.cpp:153
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
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 3998 of file classdef.cpp.

3999 {
4000  return md->getClassDef() && isBaseClass(md->getClassDef(),TRUE);
4001 }
bool isBaseClass(ClassDef *bcd, bool followInstances, int level=0)
Definition: classdef.cpp:2777
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
const bool TRUE
Definition: qglobal.h:371
bool ClassDef::isAnonymous ( ) const

Definition at line 4749 of file classdef.cpp.

4750 {
4751  return m_impl->isAnonymous;
4752 }
bool isAnonymous
Definition: classdef.cpp:192
ClassDefImpl * m_impl
Definition: classdef.h:451
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 2777 of file classdef.cpp.

2778 {
2779  bool found=FALSE;
2780  //printf("isBaseClass(cd=%s) looking for %s\n",name().data(),bcd->name().data());
2781  if (level>256)
2782  {
2783  err("Possible recursive class relation while inside %s and looking for base class %s\n",qPrint(name()),qPrint(bcd->name()));
2784  return FALSE;
2785  }
2786  if (baseClasses())
2787  {
2788  // Beware: trying to optimise the iterator away using ->first() & ->next()
2789  // causes bug 625531
2791  for ( ; bcli.current() && !found ; ++bcli)
2792  {
2793  ClassDef *ccd=bcli.current()->classDef;
2794  if (!followInstances && ccd->templateMaster()) ccd=ccd->templateMaster();
2795  //printf("isBaseClass() baseclass %s\n",ccd->name().data());
2796  if (ccd==bcd)
2797  found=TRUE;
2798  else
2799  found=ccd->isBaseClass(bcd,followInstances,level+1);
2800  }
2801  }
2802  return found;
2803 }
const bool FALSE
Definition: qglobal.h:370
bool isBaseClass(ClassDef *bcd, bool followInstances, int level=0)
Definition: classdef.cpp:2777
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
const QCString & name() const
Definition: definition.h:114
void err(const char *fmt,...)
Definition: message.cpp:226
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
bool ClassDef::isCSharp ( ) const

Returns TRUE if this class is implemented in C#

Definition at line 4509 of file classdef.cpp.

4510 {
4511  return getLanguage()==SrcLangExt_CSharp;
4512 }
SrcLangExt getLanguage() const
bool ClassDef::isEmbeddedInOuterScope ( ) const

Definition at line 4630 of file classdef.cpp.

4631 {
4632  static bool inlineGroupedClasses = Config_getBool("INLINE_GROUPED_CLASSES");
4633  static bool inlineSimpleClasses = Config_getBool("INLINE_SIMPLE_STRUCTS");
4634 
4635  Definition *container = getOuterScope();
4636 
4637  bool containerLinkable =
4638  container &&
4639  (
4640  (container==Doxygen::globalScope && getFileDef() && getFileDef()->isLinkableInProject()) || // global class in documented file
4641  container->isLinkableInProject() // class in documented scope
4642  );
4643 
4644  // inline because of INLINE_GROUPED_CLASSES=YES ?
4645  bool b1 = (inlineGroupedClasses && partOfGroups()!=0); // a grouped class
4646  // inline because of INLINE_SIMPLE_STRUCTS=YES ?
4647  bool b2 = (inlineSimpleClasses && m_impl->isSimple && // a simple class
4648  (containerLinkable || // in a documented container
4649  partOfGroups()!=0 // or part of a group
4650  )
4651  );
4652  //printf("%s::isEmbeddedInOuterScope(): inlineGroupedClasses=%d "
4653  // "inlineSimpleClasses=%d partOfGroups()=%p m_impl->isSimple=%d "
4654  // "getOuterScope()=%s b1=%d b2=%d\n",
4655  // name().data(),inlineGroupedClasses,inlineSimpleClasses,
4656  // partOfGroups().pointer(),m_impl->isSimple,getOuterScope()?getOuterScope()->name().data():"<none>",b1,b2);
4657  return b1 || b2; // either reason will do
4658 }
FileDef * getFileDef() const
Definition: classdef.cpp:4429
GroupList * partOfGroups() const
static NamespaceDef * globalScope
Definition: doxygen.h:128
bool isLinkableInProject() const
Definition: filedef.cpp:1877
#define Config_getBool(val)
Definition: config.cpp:664
virtual Definition * getOuterScope() const
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isExtension ( ) const

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

Definition at line 4709 of file classdef.cpp.

4710 {
4711  QCString n = name();
4712  int si = n.find('(');
4713  int ei = n.find(')');
4714  bool b = ei>si && n.mid(si+1,ei-si-1).stripWhiteSpace().isEmpty();
4715  return b;
4716 }
QCString stripWhiteSpace() const
Definition: qcstring.cpp:295
bool isEmpty() const
Definition: qcstring.h:189
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
const QCString & name() const
Definition: definition.h:114
std::void_t< T > n
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
static bool * b
Definition: config.cpp:1043
bool ClassDef::isFinal ( ) const

Returns TRUE if this class is marked as final

Definition at line 4484 of file classdef.cpp.

4485 {
4486  return m_impl->spec&Entry::Final;
4487 }
static const uint64 Final
Definition: entry.h:150
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isForwardDeclared ( ) const

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

Definition at line 4499 of file classdef.cpp.

4500 {
4501  return m_impl->spec&Entry::ForwardDecl;
4502 }
static const uint64 ForwardDecl
Definition: entry.h:136
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isGeneric ( ) const

Definition at line 4699 of file classdef.cpp.

4700 {
4701  return m_impl->isGeneric;
4702 }
bool isGeneric
Definition: classdef.cpp:190
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isJavaEnum ( ) const

Definition at line 4694 of file classdef.cpp.

4695 {
4696  return m_impl->isJavaEnum;
4697 }
bool isJavaEnum
Definition: classdef.cpp:188
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isLinkable ( ) const
virtual

return TRUE iff a link to this class is possible (either within this project, or as a cross-reference to another project).

Implements Definition.

Definition at line 2729 of file classdef.cpp.

2730 {
2731  if (m_impl->templateMaster)
2732  {
2733  return m_impl->templateMaster->isLinkable();
2734  }
2735  else
2736  {
2737  return isReference() || isLinkableInProject();
2738  }
2739 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
bool isReference() const
Definition: classdef.cpp:3826
ClassDef * templateMaster
Definition: classdef.cpp:137
bool isLinkable() const
Definition: classdef.cpp:2729
ClassDefImpl * m_impl
Definition: classdef.h:451
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 2707 of file classdef.cpp.

2708 {
2709  static bool extractLocal = Config_getBool("EXTRACT_LOCAL_CLASSES");
2710  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
2711  static bool hideUndoc = Config_getBool("HIDE_UNDOC_CLASSES");
2712  if (m_impl->templateMaster)
2713  {
2715  }
2716  else
2717  {
2718  return !name().isEmpty() && /* has a name */
2719  !isArtificial() && !isHidden() && /* not hidden */
2720  !isAnonymous() && /* not anonymous */
2721  protectionLevelVisible(m_impl->prot) && /* private/internal */
2722  (!m_impl->isLocal || extractLocal) && /* local */
2723  (hasDocumentation() || !hideUndoc) && /* documented */
2724  (!m_impl->isStatic || extractStatic) && /* static */
2725  !isReference(); /* not an external reference */
2726  }
2727 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
bool isArtificial() const
bool isEmpty() const
Definition: qcstring.h:189
bool isReference() const
Definition: classdef.cpp:3826
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
ClassDef * templateMaster
Definition: classdef.cpp:137
const QCString & name() const
Definition: definition.h:114
bool hasDocumentation() const
Definition: classdef.cpp:2767
bool isAnonymous() const
Definition: classdef.cpp:4749
#define Config_getBool(val)
Definition: config.cpp:664
Protection prot
Definition: classdef.cpp:109
bool isHidden() const
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isLocal ( ) const

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

Definition at line 4384 of file classdef.cpp.

4385 {
4386  return m_impl->isLocal;
4387 }
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isObjectiveC ( ) const

Returns TRUE if this class is implemented in Objective-C

Definition at line 4504 of file classdef.cpp.

4505 {
4506  return getLanguage()==SrcLangExt_ObjC;
4507 }
SrcLangExt getLanguage() const
bool ClassDef::isPublished ( ) const

Returns TRUE if this class is marked as published

Definition at line 4494 of file classdef.cpp.

4495 {
4496  return m_impl->spec&Entry::Published;
4497 }
static const uint64 Published
Definition: entry.h:182
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isReference ( ) const
virtual

Returns TRUE if this class is imported via a tag file

Reimplemented from Definition.

Definition at line 3826 of file classdef.cpp.

3827 {
3828  if (m_impl->templateMaster)
3829  {
3830  return m_impl->templateMaster->isReference();
3831  }
3832  else
3833  {
3834  return Definition::isReference();
3835  }
3836 }
bool isReference() const
Definition: classdef.cpp:3826
virtual bool isReference() const
ClassDef * templateMaster
Definition: classdef.cpp:137
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isSealed ( ) const

Returns TRUE if this class is marked as sealed

Definition at line 4489 of file classdef.cpp.

4490 {
4491  return m_impl->spec&Entry::Sealed;
4492 }
static const uint64 Sealed
Definition: entry.h:157
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isSimple ( ) const

Definition at line 4584 of file classdef.cpp.

4585 {
4586  return m_impl->isSimple;
4587 }
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberDef * ClassDef::isSmartPointer ( ) const

Definition at line 4589 of file classdef.cpp.

4590 {
4591  return m_impl->arrowOperator;
4592 }
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberDef * arrowOperator
Definition: classdef.cpp:182
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 2807 of file classdef.cpp.

2808 {
2809  bool found=FALSE;
2810  if (level>256)
2811  {
2812  err("Possible recursive class relation while inside %s and looking for derived class %s\n",qPrint(name()),qPrint(cd->name()));
2813  return FALSE;
2814  }
2815  if (subClasses())
2816  {
2818  for ( ; bcli.current() && !found ; ++bcli)
2819  {
2820  ClassDef *ccd=bcli.current()->classDef;
2821  if (ccd==cd)
2822  found=TRUE;
2823  else
2824  found=ccd->isSubClass(cd,level+1);
2825  }
2826  }
2827  return found;
2828 }
BaseClassList * subClasses() const
Definition: classdef.cpp:4404
const bool FALSE
Definition: qglobal.h:370
const QCString & name() const
Definition: definition.h:114
void err(const char *fmt,...)
Definition: message.cpp:226
bool isSubClass(ClassDef *bcd, int level=0)
Definition: classdef.cpp:2807
const char * qPrint(const char *s)
Definition: qcstring.h:797
const bool TRUE
Definition: qglobal.h:371
bool ClassDef::isTemplate ( ) const

Returns TRUE if this class is a template

Definition at line 4444 of file classdef.cpp.

4445 {
4446  return m_impl->tempArgs!=0;
4447 }
ArgumentList * tempArgs
Definition: classdef.cpp:91
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isTemplateArgument ( ) const

Definition at line 4474 of file classdef.cpp.

4475 {
4476  return m_impl->isTemplArg;
4477 }
bool isTemplArg
Definition: classdef.cpp:164
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isUsedOnly ( ) const

Definition at line 4579 of file classdef.cpp.

4580 {
4581  return m_impl->usedOnly;
4582 }
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::isVisibleInHierarchy ( )

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

isArtificial() &&

Definition at line 2743 of file classdef.cpp.

2744 {
2745  static bool allExternals = Config_getBool("ALLEXTERNALS");
2746  static bool hideUndocClasses = Config_getBool("HIDE_UNDOC_CLASSES");
2747  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
2748 
2749  return // show all classes or a subclass is visible
2750  (allExternals || hasNonReferenceSuperClass()) &&
2751  // and not an anonymous compound
2752  !isAnonymous() &&
2753  // not an artificially introduced class
2754  /*!isArtificial() &&*/ // 1.8.2: allowed these to appear
2755  // and not privately inherited
2757  // documented or shown anyway or documentation is external
2758  (hasDocumentation() ||
2759  !hideUndocClasses ||
2761  isReference()
2762  ) &&
2763  // is not part of an unnamed namespace or shown anyway
2764  (!m_impl->isStatic || extractStatic);
2765 }
bool isReference() const
Definition: classdef.cpp:3826
bool hasNonReferenceSuperClass()
Definition: classdef.cpp:2620
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
ClassDef * templateMaster
Definition: classdef.cpp:137
bool hasDocumentation() const
Definition: classdef.cpp:2767
bool isAnonymous() const
Definition: classdef.cpp:4749
#define Config_getBool(val)
Definition: config.cpp:664
Protection prot
Definition: classdef.cpp:109
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::makeTemplateArgument ( bool  b = TRUE)

Definition at line 4564 of file classdef.cpp.

4565 {
4566  m_impl->isTemplArg = b;
4567 }
bool isTemplArg
Definition: classdef.cpp:164
static bool * b
Definition: config.cpp:1043
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberNameInfoSDict * ClassDef::memberNameInfoSDict ( ) const

Returns a dictionary of all members. This includes any inherited members. Members are sorted alphabetically.

Definition at line 4409 of file classdef.cpp.

4410 {
4412 }
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::mergeCategory ( ClassDef category)

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

Definition at line 3095 of file classdef.cpp.

3096 {
3097  static bool extractLocalMethods = Config_getBool("EXTRACT_LOCAL_METHODS");
3098  bool makePrivate = category->isLocal();
3099  // in case extract local methods is not enabled we don't add the methods
3100  // of the category in case it is defined in the .m file.
3101  if (makePrivate && !extractLocalMethods) return;
3102  bool isExtension = category->isExtension();
3103 
3104  category->setCategoryOf(this);
3105  if (isExtension)
3106  {
3107  category->setArtificial(TRUE);
3108 
3109  // copy base classes/protocols from extension
3110  if (category->baseClasses())
3111  {
3112  BaseClassListIterator bcli(*category->baseClasses());
3113  BaseClassDef *bcd;
3114  for ( ; (bcd=bcli.current()) ; ++bcli )
3115  {
3116  insertBaseClass(bcd->classDef,bcd->usedName,bcd->prot,bcd->virt,bcd->templSpecifiers);
3117  // correct bcd->classDef so that they do no longer derive from
3118  // category, but from this class!
3119  if (bcd->classDef->subClasses())
3120  {
3121  BaseClassListIterator scli(*bcd->classDef->subClasses());
3122  BaseClassDef *scd;
3123  for ( ; (scd=scli.current()) ; ++scli )
3124  {
3125  if (scd->classDef==category)
3126  {
3127  scd->classDef=this;
3128  }
3129  }
3130  }
3131  }
3132  }
3133 
3134  }
3135  // make methods private for categories defined in the .m file
3136  //printf("%s::mergeCategory makePrivate=%d\n",name().data(),makePrivate);
3137 
3138  MemberNameInfoSDict *srcMnd = category->memberNameInfoSDict();
3140 
3141  if (srcMnd && dstMnd)
3142  {
3143  MemberNameInfoSDict::Iterator srcMnili(*srcMnd);
3144  MemberNameInfo *srcMni;
3145  for ( ; (srcMni=srcMnili.current()) ; ++srcMnili)
3146  {
3147  MemberNameInfo *dstMni=dstMnd->find(srcMni->memberName());
3148  if (dstMni) // method is already defined in the class
3149  {
3150  //printf("Existing member %s\n",srcMni->memberName());
3151  MemberInfo *dstMi = dstMni->getFirst();
3152  MemberInfo *srcMi = srcMni->getFirst();
3153  //if (dstMi)
3154  //{
3155  // Protection prot = dstMi->prot;
3156  // if (makePrivate || isExtension)
3157  // {
3158  // prot = Private;
3159  // removeMemberFromLists(dstMi->memberDef);
3160  // internalInsertMember(dstMi->memberDef,prot,FALSE);
3161  // }
3162  //}
3163  if (srcMi && dstMi)
3164  {
3166  dstMi->memberDef->setCategory(category);
3167  dstMi->memberDef->setCategoryRelation(srcMi->memberDef);
3168  srcMi->memberDef->setCategoryRelation(dstMi->memberDef);
3169  }
3170  }
3171  else // new method name
3172  {
3173  //printf("New member %s\n",srcMni->memberName());
3174  // create a deep copy of the list
3175  MemberNameInfo *newMni = 0;
3176  newMni = new MemberNameInfo(srcMni->memberName());
3177 
3178  // copy the member(s) from the category to this class
3179  MemberNameInfoIterator mnii(*srcMni);
3180  MemberInfo *mi;
3181  for (;(mi=mnii.current());++mnii)
3182  {
3183  //printf("Adding '%s'\n",mi->memberDef->name().data());
3184  Protection prot = mi->prot;
3185  //if (makePrivate) prot = Private;
3186  MemberDef *newMd = mi->memberDef->deepCopy();
3187  if (newMd)
3188  {
3189  //printf("Copying member %s\n",mi->memberDef->name().data());
3190  newMd->moveTo(this);
3191 
3192  MemberInfo *newMi=new MemberInfo(newMd,prot,mi->virt,mi->inherited);
3193  newMi->scopePath=mi->scopePath;
3194  newMi->ambigClass=mi->ambigClass;
3196  newMni->append(newMi);
3197 
3198  // also add the newly created member to the global members list
3199 
3200  MemberName *mn;
3201  QCString name = newMd->name();
3202  if ((mn=Doxygen::memberNameSDict->find(name)))
3203  {
3204  mn->append(newMd);
3205  }
3206  else
3207  {
3208  mn = new MemberName(newMd->name());
3209  mn->append(newMd);
3210  Doxygen::memberNameSDict->append(name,mn);
3211  }
3212 
3213  newMd->setCategory(category);
3214  newMd->setCategoryRelation(mi->memberDef);
3215  mi->memberDef->setCategoryRelation(newMd);
3216  if (makePrivate || isExtension)
3217  {
3218  newMd->makeImplementationDetail();
3219  }
3220  internalInsertMember(newMd,prot,FALSE);
3221  }
3222  }
3223 
3224  // add it to the dictionary
3225  dstMnd->append(newMni->memberName(),newMni);
3226  }
3227  }
3228  }
3229 }
ClassDef * classDef
Definition: classdef.h:520
Specifier virt
Definition: membername.h:64
void combineDeclarationAndDefinition(MemberDef *mdec, MemberDef *mdef)
Definition: memberdef.cpp:4946
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
bool isExtension() const
Definition: classdef.cpp:4709
void append(const type *d)
Definition: qlist.h:73
void setArtificial(bool b)
MemberNameInfoSDict * memberNameInfoSDict() const
Definition: classdef.cpp:4409
const bool FALSE
Definition: qglobal.h:370
Protection prot
Definition: membername.h:63
MemberDef * memberDef
Definition: membername.h:62
void append(const char *key, const T *d)
Definition: sortdict.h:135
QCString ambiguityResolutionScope
Definition: membername.h:67
void makeImplementationDetail()
Definition: memberdef.cpp:4745
const QCString & name() const
Definition: definition.h:114
void moveTo(Definition *)
Definition: memberdef.cpp:832
void setCategoryOf(ClassDef *cd)
Definition: classdef.cpp:4569
bool inherited
Definition: membername.h:65
bool isLocal() const
Definition: classdef.cpp:4384
#define Config_getBool(val)
Definition: config.cpp:664
type * getFirst() const
Definition: qlist.h:95
const char * memberName() const
Definition: membername.h:77
QCString scopePath
Definition: membername.h:66
void insertBaseClass(ClassDef *, const char *name, Protection p, Specifier s, const char *t=0)
Definition: classdef.cpp:358
void setCategory(ClassDef *)
Definition: memberdef.cpp:4801
void internalInsertMember(MemberDef *md, Protection prot, bool addToAllList)
Definition: classdef.cpp:417
MemberDef * deepCopy() const
Definition: memberdef.cpp:758
static MemberNameSDict * memberNameSDict
Definition: doxygen.h:115
Protection
Definition: types.h:26
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
ClassDef * ambigClass
Definition: membername.h:68
T * find(const char *key)
Definition: sortdict.h:232
const bool TRUE
Definition: qglobal.h:371
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
void setCategoryRelation(MemberDef *)
Definition: memberdef.cpp:4811
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 2844 of file classdef.cpp.

2845 {
2846  if (m_impl->membersMerged) return;
2847 
2848  //static bool optimizeOutputForJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
2849  //static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2850  SrcLangExt lang = getLanguage();
2852  int sepLen = sep.length();
2853 
2855  //printf(" mergeMembers for %s\n",name().data());
2856  bool inlineInheritedMembers = Config_getBool("INLINE_INHERITED_MEMB" );
2857  if (baseClasses())
2858  {
2859  //printf(" => has base classes!\n");
2861  BaseClassDef *bcd;
2862  for ( ; (bcd=bcli.current()) ; ++bcli )
2863  {
2864  ClassDef *bClass=bcd->classDef;
2865 
2866  // merge the members in the base class of this inheritance branch first
2867  bClass->mergeMembers();
2868 
2869  MemberNameInfoSDict *srcMnd = bClass->memberNameInfoSDict();
2871 
2872  if (srcMnd)
2873  {
2874  MemberNameInfoSDict::Iterator srcMnili(*srcMnd);
2875  MemberNameInfo *srcMni;
2876  for ( ; (srcMni=srcMnili.current()) ; ++srcMnili)
2877  {
2878  //printf(" Base member name %s\n",srcMni->memberName());
2879  MemberNameInfo *dstMni;
2880  if (dstMnd!=0 && (dstMni=dstMnd->find(srcMni->memberName())))
2881  // a member with that name is already in the class.
2882  // the member may hide or reimplement the one in the sub class
2883  // or there may be another path to the base class that is already
2884  // visited via another branch in the class hierarchy.
2885  {
2886  MemberNameInfoIterator srcMnii(*srcMni);
2887  MemberInfo *srcMi;
2888  for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
2889  {
2890  MemberDef *srcMd = srcMi->memberDef;
2891  bool found=FALSE;
2892  bool ambigue=FALSE;
2893  bool hidden=FALSE;
2894  MemberNameInfoIterator dstMnii(*dstMni);
2895  MemberInfo *dstMi;
2896  ClassDef *srcCd = srcMd->getClassDef();
2897  for ( ; (dstMi=dstMnii.current()) && !found; ++dstMnii )
2898  {
2899  MemberDef *dstMd = dstMi->memberDef;
2900  if (srcMd!=dstMd) // different members
2901  {
2902  ClassDef *dstCd = dstMd->getClassDef();
2903  //printf(" Is %s a base class of %s?\n",srcCd->name().data(),dstCd->name().data());
2904  if (srcCd==dstCd || dstCd->isBaseClass(srcCd,TRUE))
2905  // member is in the same or a base class
2906  {
2907  ArgumentList *srcAl = srcMd->argumentList();
2908  ArgumentList *dstAl = dstMd->argumentList();
2909  found=matchArguments2(
2910  srcMd->getOuterScope(),srcMd->getFileDef(),srcAl,
2911  dstMd->getOuterScope(),dstMd->getFileDef(),dstAl,
2912  TRUE
2913  );
2914  //printf(" Yes, matching (%s<->%s): %d\n",
2915  // argListToString(srcMd->argumentList()).data(),
2916  // argListToString(dstMd->argumentList()).data(),
2917  // found);
2918  hidden = hidden || !found;
2919  }
2920  else // member is in a non base class => multiple inheritance
2921  // using the same base class.
2922  {
2923  //printf("$$ Existing member %s %s add scope %s\n",
2924  // dstMi->ambiguityResolutionScope.data(),
2925  // dstMd->name().data(),
2926  // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
2927 
2928  QCString scope=dstMi->scopePath.left(dstMi->scopePath.find(sep)+sepLen);
2929  if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
2930  dstMi->ambiguityResolutionScope.prepend(scope);
2931  ambigue=TRUE;
2932  }
2933  }
2934  else // same members
2935  {
2936  // do not add if base class is virtual or
2937  // if scope paths are equal or
2938  // if base class is an interface (and thus implicitly virtual).
2939  //printf("same member found srcMi->virt=%d dstMi->virt=%d\n",srcMi->virt,dstMi->virt);
2940  if ((srcMi->virt!=Normal && dstMi->virt!=Normal) ||
2941  bClass->name()+sep+srcMi->scopePath == dstMi->scopePath ||
2942  dstMd->getClassDef()->compoundType()==Interface
2943  )
2944  {
2945  found=TRUE;
2946  }
2947  else // member can be reached via multiple paths in the
2948  // inheritance tree
2949  {
2950  //printf("$$ Existing member %s %s add scope %s\n",
2951  // dstMi->ambiguityResolutionScope.data(),
2952  // dstMd->name().data(),
2953  // dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
2954 
2955  QCString scope=dstMi->scopePath.left(dstMi->scopePath.find(sep)+sepLen);
2956  if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
2957  {
2958  dstMi->ambiguityResolutionScope.prepend(scope);
2959  }
2960  ambigue=TRUE;
2961  }
2962  }
2963  }
2964  //printf("member %s::%s hidden %d ambigue %d srcMi->ambigClass=%p\n",
2965  // srcCd->name().data(),srcMd->name().data(),hidden,ambigue,srcMi->ambigClass);
2966 
2967  // TODO: fix the case where a member is hidden by inheritance
2968  // of a member with the same name but with another prototype,
2969  // while there is more than one path to the member in the
2970  // base class due to multiple inheritance. In this case
2971  // it seems that the member is not reachable by prefixing a
2972  // scope name either (according to my compiler). Currently,
2973  // this case is shown anyway.
2974  if (!found && srcMd->protection()!=Private && !srcMd->isFriend())
2975  {
2976  Protection prot=srcMd->protection();
2977  if (bcd->prot==Protected && prot==Public) prot=bcd->prot;
2978  else if (bcd->prot==Private) prot=bcd->prot;
2979 
2980  if (inlineInheritedMembers)
2981  {
2982  if (!isStandardFunc(srcMd))
2983  {
2984  //printf(" insertMember `%s'\n",srcMd->name().data());
2985  internalInsertMember(srcMd,prot,FALSE);
2986  }
2987  }
2988 
2989  Specifier virt=srcMi->virt;
2990  if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
2991 
2992  MemberInfo *newMi = new MemberInfo(srcMd,prot,virt,TRUE);
2993  newMi->scopePath=bClass->name()+sep+srcMi->scopePath;
2994  if (ambigue)
2995  {
2996  //printf("$$ New member %s %s add scope %s::\n",
2997  // srcMi->ambiguityResolutionScope.data(),
2998  // srcMd->name().data(),
2999  // bClass->name().data());
3000 
3001  QCString scope=bClass->name()+sep;
3002  if (scope!=srcMi->ambiguityResolutionScope.left(scope.length()))
3003  {
3004  newMi->ambiguityResolutionScope=
3005  scope+srcMi->ambiguityResolutionScope.copy();
3006  }
3007  }
3008  if (hidden)
3009  {
3010  if (srcMi->ambigClass==0)
3011  {
3012  newMi->ambigClass=bClass;
3013  newMi->ambiguityResolutionScope=bClass->name()+sep;
3014  }
3015  else
3016  {
3017  newMi->ambigClass=srcMi->ambigClass;
3018  newMi->ambiguityResolutionScope=srcMi->ambigClass->name()+sep;
3019  }
3020  }
3021  dstMni->append(newMi);
3022  }
3023  }
3024  }
3025  else // base class has a member that is not in the sub class => copy
3026  {
3027  // create a deep copy of the list (only the MemberInfo's will be
3028  // copied, not the actual MemberDef's)
3029  MemberNameInfo *newMni = 0;
3030  newMni = new MemberNameInfo(srcMni->memberName());
3031 
3032  // copy the member(s) from the base to the sub class
3033  MemberNameInfoIterator mnii(*srcMni);
3034  MemberInfo *mi;
3035  for (;(mi=mnii.current());++mnii)
3036  {
3037  if (!mi->memberDef->isFriend()) // don't inherit friends
3038  {
3039  Protection prot = mi->prot;
3040  if (bcd->prot==Protected)
3041  {
3042  if (prot==Public) prot=Protected;
3043  }
3044  else if (bcd->prot==Private)
3045  {
3046  prot=Private;
3047  }
3048  //printf("%s::%s: prot=%d bcd->prot=%d result=%d\n",
3049  // name().data(),mi->memberDef->name().data(),mi->prot,
3050  // bcd->prot,prot);
3051 
3052  if (mi->prot!=Private)
3053  {
3054  Specifier virt=mi->virt;
3055  if (mi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
3056 
3057  if (inlineInheritedMembers)
3058  {
3059  if (!isStandardFunc(mi->memberDef))
3060  {
3061  //printf(" insertMember `%s'\n",mi->memberDef->name().data());
3063  }
3064  }
3065  //printf("Adding!\n");
3066  MemberInfo *newMi=new MemberInfo(mi->memberDef,prot,virt,TRUE);
3067  newMi->scopePath=bClass->name()+sep+mi->scopePath;
3068  newMi->ambigClass=mi->ambigClass;
3070  newMni->append(newMi);
3071  }
3072  }
3073  }
3074 
3075  if (dstMnd==0)
3076  {
3079  dstMnd = m_impl->allMemberNameInfoSDict;
3080  }
3081  // add it to the dictionary
3082  dstMnd->append(newMni->memberName(),newMni);
3083  }
3084  }
3085  }
3086  }
3087  }
3088  //printf(" end mergeMembers\n");
3089 }
ClassDef * classDef
Definition: classdef.h:520
CompoundType compoundType() const
Definition: classdef.cpp:4394
Specifier virt
Definition: membername.h:64
This class represents an function or template argument list.
Definition: arguments.h:82
static QCString scope
Definition: declinfo.cpp:668
bool matchArguments2(Definition *srcScope, FileDef *srcFileScope, ArgumentList *srcAl, Definition *dstScope, FileDef *dstFileScope, ArgumentList *dstAl, bool checkCV)
Definition: util.cpp:3647
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
bool isFriend() const
Definition: memberdef.cpp:4175
uint length() const
Definition: qcstring.h:195
void append(const type *d)
Definition: qlist.h:73
Protection protection() const
Definition: memberdef.cpp:4120
Definition: types.h:26
MemberNameInfoSDict * memberNameInfoSDict() const
Definition: classdef.cpp:4409
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
Protection prot
Definition: membername.h:63
Protection prot
Definition: classdef.h:530
QCString left(uint len) const
Definition: qcstring.cpp:213
MemberDef * memberDef
Definition: membername.h:62
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
void append(const char *key, const T *d)
Definition: sortdict.h:135
SrcLangExt
Definition: types.h:41
Definition: types.h:29
bool isBaseClass(ClassDef *bcd, bool followInstances, int level=0)
Definition: classdef.cpp:2777
QCString copy() const
Definition: qcstring.h:250
void setAutoDelete(bool val)
Definition: sortdict.h:222
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
QCString ambiguityResolutionScope
Definition: membername.h:67
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
Specifier
Definition: types.h:29
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
static bool isStandardFunc(MemberDef *md)
Definition: classdef.cpp:2832
const char * memberName() const
Definition: membername.h:77
QCString scopePath
Definition: membername.h:66
Specifier virt
Definition: classdef.h:535
virtual Definition * getOuterScope() const
void internalInsertMember(MemberDef *md, Protection prot, bool addToAllList)
Definition: classdef.cpp:417
ArgumentList * argumentList() const
Definition: memberdef.cpp:4512
static Specifier virt
Protection
Definition: types.h:26
void mergeMembers()
Definition: classdef.cpp:2844
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
bool membersMerged
Definition: classdef.cpp:159
ClassDef * ambigClass
Definition: membername.h:68
T * find(const char *key)
Definition: sortdict.h:232
const bool TRUE
Definition: qglobal.h:371
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
Protection ClassDef::protection ( ) const

Return the protection level (Public,Protected,Private) in which this compound was found.

Definition at line 4414 of file classdef.cpp.

4415 {
4416  return m_impl->prot;
4417 }
Protection prot
Definition: classdef.cpp:109
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::qualifiedNameWithTemplateParameters ( QList< ArgumentList > *  actualParams = 0,
int *  actualParamIndex = 0 
) const

Definition at line 3855 of file classdef.cpp.

3857 {
3858  //static bool optimizeOutputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
3859  static bool hideScopeNames = Config_getBool("HIDE_SCOPE_NAMES");
3860  //printf("qualifiedNameWithTemplateParameters() localName=%s\n",localName().data());
3861  QCString scName;
3863  if (d)
3864  {
3866  {
3867  ClassDef *cd=(ClassDef *)d;
3868  scName = cd->qualifiedNameWithTemplateParameters(actualParams,actualParamIndex);
3869  }
3870  else if (!hideScopeNames)
3871  {
3872  scName = d->qualifiedName();
3873  }
3874  }
3875 
3876  SrcLangExt lang = getLanguage();
3877  QCString scopeSeparator = getLanguageSpecificSeparator(lang);
3878  if (!scName.isEmpty()) scName+=scopeSeparator;
3879 
3880  bool isSpecialization = localName().find('<')!=-1;
3881 
3882  QCString clName = className();
3883  //bool isGeneric = getLanguage()==SrcLangExt_CSharp;
3884  //if (isGeneric && clName.right(2)=="-g")
3885  //{
3886  // clName = clName.left(clName.length()-2);
3887  //}
3888  //printf("m_impl->lang=%d clName=%s isSpecialization=%d\n",getLanguage(),clName.data(),isSpecialization);
3889  scName+=clName;
3890  ArgumentList *al=0;
3891  if (templateArguments())
3892  {
3893  if (actualParams && *actualParamIndex<(int)actualParams->count())
3894  {
3895  al = actualParams->at(*actualParamIndex);
3896  if (!isSpecialization)
3897  {
3898  scName+=tempArgListToString(al,lang);
3899  }
3900  (*actualParamIndex)++;
3901  }
3902  else
3903  {
3904  if (!isSpecialization)
3905  {
3906  scName+=tempArgListToString(templateArguments(),lang);
3907  }
3908  }
3909  }
3910  //printf("qualifiedNameWithTemplateParameters: scope=%s qualifiedName=%s\n",name().data(),scName.data());
3911  return scName;
3912 }
This class represents an function or template argument list.
Definition: arguments.h:82
bool isEmpty() const
Definition: qcstring.h:189
ArgumentList * templateArguments() const
Definition: classdef.cpp:4419
type * at(uint i) const
Definition: qlist.h:94
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
SrcLangExt
Definition: types.h:41
virtual DefType definitionType() const =0
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
uint count() const
Definition: qlist.h:66
QCString className() const
Definition: classdef.cpp:3914
SrcLangExt getLanguage() const
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString qualifiedName() const
QCString qualifiedNameWithTemplateParameters(QList< ArgumentList > *actualParams=0, int *actualParamIndex=0) const
Definition: classdef.cpp:3855
virtual Definition * getOuterScope() const
QCString tempArgListToString(ArgumentList *al, SrcLangExt lang)
Definition: util.cpp:2197
static bool isSpecialization(const QList< ArgumentList > &srcTempArgLists, const QList< ArgumentList > &dstTempArgLists)
Definition: doxygen.cpp:5605
QCString localName() const
void ClassDef::reclassifyMember ( MemberDef md,
MemberType  t 
)

Definition at line 4594 of file classdef.cpp.

4595 {
4596  md->setMemberType(t);
4598  MemberList *ml;
4599  for (;(ml=mli.current());++mli)
4600  {
4601  ml->remove(md);
4602  }
4603  insertMember(md);
4604 }
void setMemberType(MemberType t)
Definition: memberdef.cpp:4613
void insertMember(MemberDef *)
Definition: classdef.cpp:713
QList< MemberList > memberLists
Definition: classdef.cpp:147
ClassDefImpl * m_impl
Definition: classdef.h:451
bool remove(uint i)
Definition: qlist.h:76
void ClassDef::removeMemberFromLists ( MemberDef md)

Definition at line 4684 of file classdef.cpp.

4685 {
4687  MemberList *ml;
4688  for (;(ml=mli.current());++mli)
4689  {
4690  ml->remove(md);
4691  }
4692 }
QList< MemberList > memberLists
Definition: classdef.cpp:147
ClassDefImpl * m_impl
Definition: classdef.h:451
bool remove(uint i)
Definition: qlist.h:76
void ClassDef::setCategoryOf ( ClassDef cd)

Definition at line 4569 of file classdef.cpp.

4570 {
4571  m_impl->categoryOf = cd;
4572 }
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * categoryOf
Definition: classdef.cpp:145
void ClassDef::setClassName ( const char *  name)

Definition at line 3926 of file classdef.cpp.

3927 {
3928  m_impl->className = name;
3929 }
QCString className
Definition: classdef.cpp:140
const QCString & name() const
Definition: definition.h:114
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setClassSpecifier ( uint64  spec)

Definition at line 4704 of file classdef.cpp.

4705 {
4706  m_impl->spec = spec;
4707 }
uint64 spec
Definition: classdef.cpp:194
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setCompoundType ( CompoundType  t)

Definition at line 4554 of file classdef.cpp.

4555 {
4556  m_impl->compType = t;
4557 }
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
void ClassDef::setFileDef ( FileDef fd)

Definition at line 4534 of file classdef.cpp.

4535 {
4536  m_impl->fileDef=fd;
4537 }
FileDef * fileDef
Definition: classdef.cpp:85
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setGroupDefForAllMembers ( GroupDef g,
Grouping::GroupPri_t  pri,
const QCString fileName,
int  startLine,
bool  hasDocs 
)

Definition at line 3615 of file classdef.cpp.

3616 {
3617  gd->addClass(this);
3618  //printf("ClassDef::setGroupDefForAllMembers(%s)\n",gd->name().data());
3619  if (m_impl->allMemberNameInfoSDict==0) return;
3621  MemberNameInfo *mni;
3622  for (;(mni=mnili.current());++mnili)
3623  {
3624  MemberNameInfoIterator mnii(*mni);
3625  MemberInfo *mi;
3626  for (mnii.toFirst();(mi=mnii.current());++mnii)
3627  {
3628  MemberDef *md=mi->memberDef;
3629  md->setGroupDef(gd,pri,fileName,startLine,hasDocs);
3630  gd->insertMember(md,TRUE);
3631  ClassDef *innerClass = md->getClassDefOfAnonymousType();
3632  if (innerClass) innerClass->setGroupDefForAllMembers(gd,pri,fileName,startLine,hasDocs);
3633  }
3634  }
3635 }
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
MemberDef * memberDef
Definition: membername.h:62
void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)
Definition: classdef.cpp:3615
ClassDef * getClassDefOfAnonymousType()
Definition: memberdef.cpp:1236
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=0)
Definition: memberdef.cpp:3363
const bool TRUE
Definition: qglobal.h:371
void ClassDef::setIncludeFile ( FileDef fd,
const char *  incName,
bool  local,
bool  force 
)

Definition at line 820 of file classdef.cpp.

822 {
823  //printf("ClassDef::setIncludeFile(%p,%s,%d,%d)\n",fd,includeName,local,force);
825  if ((includeName && m_impl->incInfo->includeName.isEmpty()) ||
826  (fd!=0 && m_impl->incInfo->fileDef==0)
827  )
828  {
829  //printf("Setting file info\n");
830  m_impl->incInfo->fileDef = fd;
831  m_impl->incInfo->includeName = includeName;
832  m_impl->incInfo->local = local;
833  }
834  if (force && includeName)
835  {
836  m_impl->incInfo->includeName = includeName;
837  m_impl->incInfo->local = local;
838  }
839 }
bool isEmpty() const
Definition: qcstring.h:189
QCString includeName
Definition: filedef.h:50
IncludeInfo * incInfo
Definition: classdef.cpp:68
bool local
Definition: filedef.h:51
FileDef * fileDef
Definition: filedef.h:49
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setIsStatic ( bool  b)

Definition at line 4549 of file classdef.cpp.

4550 {
4551  m_impl->isStatic=b;
4552 }
static bool * b
Definition: config.cpp:1043
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setName ( const char *  name)
virtual

Sets a new name for the definition

Reimplemented from Definition.

Definition at line 4743 of file classdef.cpp.

4744 {
4745  m_impl->isAnonymous = QCString(name).find('@')!=-1;
4747 }
bool isAnonymous
Definition: classdef.cpp:192
virtual void setName(const char *name)
Definition: definition.cpp:396
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
const QCString & name() const
Definition: definition.h:114
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setNamespace ( NamespaceDef nd)

Definition at line 4529 of file classdef.cpp.

4530 {
4531  m_impl->nspace = nd;
4532 }
NamespaceDef * nspace
Definition: classdef.cpp:82
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setProtection ( Protection  p)

Definition at line 4544 of file classdef.cpp.

4545 {
4546  m_impl->prot=p;
4547 }
p
Definition: test.py:223
Protection prot
Definition: classdef.cpp:109
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setSubGrouping ( bool  enabled)

Definition at line 4539 of file classdef.cpp.

4540 {
4541  m_impl->subGrouping = enabled;
4542 }
bool subGrouping
Definition: classdef.cpp:170
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setTagLessReference ( ClassDef cd)

Definition at line 4679 of file classdef.cpp.

4680 {
4681  m_impl->tagLessRef = cd;
4682 }
ClassDef * tagLessRef
Definition: classdef.cpp:185
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setTemplateArguments ( ArgumentList al)

Definition at line 2603 of file classdef.cpp.

2604 {
2605  if (al==0) return;
2606  if (m_impl->tempArgs) delete m_impl->tempArgs; // delete old list if needed
2607  //printf("setting template args '%s' for '%s'\n",tempArgListToString(al,getLanguage()).data(),name().data());
2609  ArgumentListIterator ali(*al);
2610  Argument *a;
2611  for (;(a=ali.current());++ali)
2612  {
2613  m_impl->tempArgs->append(new Argument(*a));
2614  }
2615 }
This class represents an function or template argument list.
Definition: arguments.h:82
void append(const type *d)
Definition: qlist.h:73
ArgumentList * tempArgs
Definition: classdef.cpp:91
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setTemplateBaseClassNames ( QDict< int > *  templateNames)

Definition at line 3747 of file classdef.cpp.

3748 {
3749  if (templateNames==0) return;
3750  if (m_impl->templBaseClassNames==0)
3751  {
3752  m_impl->templBaseClassNames = new QDict<int>(17);
3753  m_impl->templBaseClassNames->setAutoDelete(TRUE);
3754  }
3755  // make a deep copy of the dictionary.
3756  QDictIterator<int> qdi(*templateNames);
3757  for (;qdi.current();++qdi)
3758  {
3759  if (m_impl->templBaseClassNames->find(qdi.currentKey())==0)
3760  {
3761  m_impl->templBaseClassNames->insert(qdi.currentKey(),new int(*qdi.current()));
3762  }
3763  }
3764 }
ClassDefImpl * m_impl
Definition: classdef.h:451
QDict< int > * templBaseClassNames
Definition: classdef.cpp:134
const bool TRUE
Definition: qglobal.h:371
void ClassDef::setTemplateMaster ( ClassDef tm)

Definition at line 4559 of file classdef.cpp.

4560 {
4562 }
tm
Definition: demo.py:21
ClassDef * templateMaster
Definition: classdef.cpp:137
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setTypeConstraints ( ArgumentList al)

Definition at line 2590 of file classdef.cpp.

2591 {
2592  if (al==0) return;
2595  ArgumentListIterator ali(*al);
2596  Argument *a;
2597  for (;(a=ali.current());++ali)
2598  {
2600  }
2601 }
This class represents an function or template argument list.
Definition: arguments.h:82
void append(const type *d)
Definition: qlist.h:73
ArgumentList * typeConstraints
Definition: classdef.cpp:94
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
const double a
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::setUsedOnly ( bool  b)

Definition at line 4574 of file classdef.cpp.

4575 {
4576  m_impl->usedOnly = b;
4577 }
static bool * b
Definition: config.cpp:1043
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::showUsedFiles ( OutputList ol)
protected

Definition at line 1084 of file classdef.cpp.

1085 {
1086  ol.pushGeneratorState();
1088 
1089 
1090  ol.writeRuler();
1092 
1093  bool first=TRUE;
1095  FileDef *fd;
1096  for (;(fd=li.current());++li)
1097  {
1098  if (first)
1099  {
1100  first=FALSE;
1101  ol.startItemList();
1102  }
1103 
1104  ol.startItemListItem();
1105  QCString path=fd->getPath();
1106  if (Config_getBool("FULL_PATH_NAMES"))
1107  {
1108  ol.docify(stripFromPath(path));
1109  }
1110 
1111  QCString fname = fd->name();
1112  if (!fd->getVersion().isEmpty()) // append version if available
1113  {
1114  fname += " (" + fd->getVersion() + ")";
1115  }
1116 
1117  // for HTML
1118  ol.pushGeneratorState();
1120  if (fd->generateSourceFile())
1121  {
1122  ol.writeObjectLink(0,fd->getSourceFileBase(),0,fname);
1123  }
1124  else if (fd->isLinkable())
1125  {
1127  fname);
1128  }
1129  else
1130  {
1131  ol.docify(fname);
1132  }
1133  ol.popGeneratorState();
1134 
1135  // for other output formats
1136  ol.pushGeneratorState();
1138  if (fd->isLinkable())
1139  {
1141  fname);
1142  }
1143  else
1144  {
1145  ol.docify(fname);
1146  }
1147  ol.popGeneratorState();
1148 
1149  ol.endItemListItem();
1150  }
1151  if (!first) ol.endItemList();
1152 
1153  ol.popGeneratorState();
1154 }
void writeRuler()
Definition: outputlist.h:240
void startItemListItem()
Definition: outputlist.h:182
virtual QCString getReference() const
bool isLinkable() const
Definition: filedef.h:117
bool isEmpty() const
Definition: qcstring.h:189
bool generateSourceFile() const
Definition: filedef.cpp:1396
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
static QCString stripFromPath(const QCString &path, QStrList &l)
Definition: util.cpp:274
void popGeneratorState()
Definition: outputlist.cpp:121
FileList files
Definition: classdef.cpp:97
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString name() const
Definition: filedef.cpp:1193
QCString getSourceFileBase() const
Definition: filedef.cpp:1771
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
QCString generatedFromFiles() const
Definition: classdef.cpp:1053
QCString getOutputFileBase() const
Definition: filedef.h:83
void endItemListItem()
Definition: outputlist.h:184
void endItemList()
Definition: outputlist.h:139
QCString getPath() const
Definition: filedef.h:110
ClassDefImpl * m_impl
Definition: classdef.h:451
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
void startItemList()
Definition: outputlist.h:137
const bool TRUE
Definition: qglobal.h:371
QCString getVersion() const
Definition: filedef.h:113
void ClassDef::sortMemberLists ( )

Definition at line 4047 of file classdef.cpp.

4048 {
4050  MemberList *ml;
4051  for (;(ml=mli.current());++mli)
4052  {
4053  if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
4054  }
4055  if (m_impl->innerClasses)
4056  {
4057  m_impl->innerClasses->sort();
4058  }
4059 }
const bool FALSE
Definition: qglobal.h:370
QList< MemberList > memberLists
Definition: classdef.cpp:147
void sort()
Definition: qlist.h:85
void setNeedsSorting(bool b)
Definition: memberlist.cpp:902
ClassSDict * innerClasses
Definition: classdef.cpp:114
void sort()
Definition: sortdict.h:188
bool needsSorting() const
Definition: memberlist.h:53
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::startMemberDeclarations ( OutputList ol)
private

Definition at line 1468 of file classdef.cpp.

1469 {
1470  //printf("%s: ClassDef::startMemberDeclarations()\n",name().data());
1471  ol.startMemberSections();
1472 }
void startMemberSections()
Definition: outputlist.h:186
void ClassDef::startMemberDocumentation ( OutputList ol)
private

Definition at line 1448 of file classdef.cpp.

1449 {
1450  //printf("%s: ClassDef::startMemberDocumentation()\n",name().data());
1451  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
1452  {
1455  }
1456 }
static bool suppressDocWarnings
Definition: doxygen.h:142
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
const bool TRUE
Definition: qglobal.h:371
BaseClassList * ClassDef::subClasses ( ) const

Returns the list of sub classes that directly derive from this class

Definition at line 4404 of file classdef.cpp.

4405 {
4406  return m_impl->inheritedBy;
4407 }
BaseClassList * inheritedBy
Definition: classdef.cpp:77
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::subGrouping ( ) const

Definition at line 4738 of file classdef.cpp.

4739 {
4740  return m_impl->subGrouping;
4741 }
bool subGrouping
Definition: classdef.cpp:170
ClassDefImpl * m_impl
Definition: classdef.h:451
const ClassList * ClassDef::taggedInnerClasses ( ) const

Definition at line 4660 of file classdef.cpp.

4661 {
4662  return m_impl->taggedInnerClasses;
4663 }
ClassList * taggedInnerClasses
Definition: classdef.cpp:184
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * ClassDef::tagLessReference ( ) const

Definition at line 4674 of file classdef.cpp.

4675 {
4676  return m_impl->tagLessRef;
4677 }
ClassDef * tagLessRef
Definition: classdef.cpp:185
ClassDefImpl * m_impl
Definition: classdef.h:451
ArgumentList * ClassDef::templateArguments ( ) const

Returns the template arguments of this class Will return 0 if not applicable.

Definition at line 4419 of file classdef.cpp.

4420 {
4421  return m_impl->tempArgs;
4422 }
ArgumentList * tempArgs
Definition: classdef.cpp:91
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef * ClassDef::templateMaster ( ) const

Returns the template master of which this class is an instance. Returns 0 if not applicable.

Definition at line 4439 of file classdef.cpp.

4440 {
4441  return m_impl->templateMaster;
4442 }
ClassDef * templateMaster
Definition: classdef.cpp:137
ClassDefImpl * m_impl
Definition: classdef.h:451
ConstraintClassDict * ClassDef::templateTypeConstraints ( ) const

Definition at line 4469 of file classdef.cpp.

4470 {
4471  return m_impl->constraintClassDict;
4472 }
ConstraintClassDict * constraintClassDict
Definition: classdef.cpp:121
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString ClassDef::title ( ) const

Definition at line 2076 of file classdef.cpp.

2077 {
2078  QCString pageTitle;
2079  SrcLangExt lang = getLanguage();
2080 
2081  if (lang==SrcLangExt_Fortran)
2082  {
2084  m_impl->compType,
2085  m_impl->tempArgs != 0);
2086  }
2087  else if (lang==SrcLangExt_VHDL)
2088  {
2089  pageTitle = VhdlDocGen::getClassTitle(this)+" Reference";
2090  }
2091  else if (isJavaEnum())
2092  {
2093  pageTitle = theTranslator->trEnumReference(displayName());
2094  }
2095  else if (m_impl->compType==Service)
2096  {
2098  }
2099  else if (m_impl->compType==Singleton)
2100  {
2102  }
2103  else
2104  {
2105  if (Config_getBool("HIDE_COMPOUND_REFERENCE"))
2106  {
2107  pageTitle = displayName();
2108  }
2109  else
2110  {
2113  m_impl->tempArgs != 0);
2114  }
2115  }
2116  return pageTitle;
2117 }
virtual QCString trServiceReference(const char *sName)=0
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
SrcLangExt
Definition: types.h:41
virtual QCString trSingletonReference(const char *sName)=0
ArgumentList * tempArgs
Definition: classdef.cpp:91
virtual QCString trCompoundReference(const char *clName, ClassDef::CompoundType compType, bool isTemplate)=0
bool isJavaEnum() const
Definition: classdef.cpp:4694
virtual QCString trEnumReference(const char *name)=0
SrcLangExt getLanguage() const
virtual QCString trCompoundReferenceFortran(const char *clName, ClassDef::CompoundType compType, bool isTemplate)=0
#define Config_getBool(val)
Definition: config.cpp:664
static QCString getClassTitle(const ClassDef *)
Definition: vhdldocgen.cpp:963
Translator * theTranslator
Definition: language.cpp:157
ClassDefImpl * m_impl
Definition: classdef.h:451
ClassDef::CompoundType compType
Definition: classdef.cpp:103
const ArgumentList * ClassDef::typeConstraints ( ) const

Definition at line 4728 of file classdef.cpp.

4729 {
4730  return m_impl->typeConstraints;
4731 }
ArgumentList * typeConstraints
Definition: classdef.cpp:94
ClassDefImpl * m_impl
Definition: classdef.h:451
UsesClassDict * ClassDef::usedByImplementationClasses ( ) const

Definition at line 4459 of file classdef.cpp.

4460 {
4461  return m_impl->usedByImplClassDict;
4462 }
UsesClassDict * usedByImplClassDict
Definition: classdef.cpp:118
ClassDefImpl * m_impl
Definition: classdef.h:451
const FileList & ClassDef::usedFiles ( ) const

Definition at line 4723 of file classdef.cpp.

4724 {
4725  return m_impl->files;
4726 }
FileList files
Definition: classdef.cpp:97
ClassDefImpl * m_impl
Definition: classdef.h:451
UsesClassDict * ClassDef::usedImplementationClasses ( ) const

Definition at line 4454 of file classdef.cpp.

4455 {
4456  return m_impl->usesImplClassDict;
4457 }
UsesClassDict * usesImplClassDict
Definition: classdef.cpp:117
ClassDefImpl * m_impl
Definition: classdef.h:451
UsesClassDict * ClassDef::usedInterfaceClasses ( ) const

Definition at line 4464 of file classdef.cpp.

4465 {
4466  return m_impl->usesIntfClassDict;
4467 }
UsesClassDict * usesIntfClassDict
Definition: classdef.cpp:119
ClassDefImpl * m_impl
Definition: classdef.h:451
bool ClassDef::visibleInParentsDeclList ( ) const

show this class in the declaration section of its parent?

Definition at line 1835 of file classdef.cpp.

1836 {
1837  static bool extractPrivate = Config_getBool("EXTRACT_PRIVATE");
1838  static bool hideUndocClasses = Config_getBool("HIDE_UNDOC_CLASSES");
1839  static bool extractLocalClasses = Config_getBool("EXTRACT_LOCAL_CLASSES");
1840  bool linkable = isLinkable();
1841  return (!isAnonymous() && !isExtension() &&
1842  (protection()!=::Private || extractPrivate) &&
1843  (linkable || (!hideUndocClasses && (!isLocal() || extractLocalClasses)))
1844  );
1845 }
bool isExtension() const
Definition: classdef.cpp:4709
Definition: types.h:26
Protection protection() const
Definition: classdef.cpp:4414
bool isAnonymous() const
Definition: classdef.cpp:4749
bool isLocal() const
Definition: classdef.cpp:4384
bool isLinkable() const
Definition: classdef.cpp:2729
#define Config_getBool(val)
Definition: config.cpp:664
void ClassDef::writeAdditionalInheritedMembers ( OutputList ol)
private

Definition at line 4193 of file classdef.cpp.

4194 {
4195  //printf("**** writeAdditionalInheritedMembers()\n");
4198  LayoutDocEntry *lde;
4199  for (eli.toFirst();(lde=eli.current());++eli)
4200  {
4201  if (lde->kind()==LayoutDocEntry::MemberDecl)
4202  {
4204  if (lmd->type!=MemberListType_friends)
4205  {
4206  QPtrDict<void> visited(17);
4208  }
4209  }
4210  }
4211 }
void writeInheritedMemberDeclarations(OutputList &ol, MemberListType lt, int lt2, const QCString &title, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
Definition: classdef.cpp:4242
MemberListType type
Definition: layout.h:96
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
SrcLangExt getLanguage() const
bool visited
Definition: classdef.h:402
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
const bool TRUE
Definition: qglobal.h:371
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1447
void ClassDef::writeAuthorSection ( OutputList ol)
private

Definition at line 1488 of file classdef.cpp.

1489 {
1490  ol.pushGeneratorState();
1492  ol.writeString("\n");
1493  ol.startGroupHeader();
1495  ol.endGroupHeader();
1497  ol.popGeneratorState();
1498 }
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:178
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trGeneratedAutomatically(const char *s)=0
#define Config_getString(val)
Definition: config.cpp:660
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:176
Translator * theTranslator
Definition: language.cpp:157
const bool TRUE
Definition: qglobal.h:371
void ClassDef::writeBriefDescription ( OutputList ol,
bool  exampleFlag 
)
private

Definition at line 936 of file classdef.cpp.

937 {
938  if (hasBriefDescription())
939  {
940  ol.startParagraph();
941  ol.generateDoc(briefFile(),briefLine(),this,0,
943  ol.pushGeneratorState();
945  ol.writeString(" \n");
947  ol.popGeneratorState();
948 
949  if (hasDetailedDescription() || exampleFlag)
950  {
951  writeMoreLink(ol,anchor());
952  }
953 
954  ol.endParagraph();
955  }
956  ol.writeSynopsis();
957 }
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void startParagraph()
Definition: outputlist.h:115
const bool FALSE
Definition: qglobal.h:370
int briefLine() const
bool hasDetailedDescription() const
Definition: classdef.cpp:1007
void popGeneratorState()
Definition: outputlist.cpp:121
void endParagraph()
Definition: outputlist.h:117
void pushGeneratorState()
Definition: outputlist.cpp:111
bool hasBriefDescription() const
QCString anchor() const
Definition: classdef.cpp:4606
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void writeSynopsis()
Definition: outputlist.h:340
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
QCString briefFile() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
void writeMoreLink(OutputList &ol, const QCString &anchor)
Definition: classdef.cpp:1792
const bool TRUE
Definition: qglobal.h:371
void ClassDef::writeCollaborationGraph ( OutputList ol)
private

Definition at line 1306 of file classdef.cpp.

1307 {
1308  if (Config_getBool("HAVE_DOT") /*&& Config_getBool("COLLABORATION_GRAPH")*/)
1309  {
1310  DotClassGraph usageImplGraph(this,DotNode::Collaboration);
1311  if (!usageImplGraph.isTrivial())
1312  {
1313  ol.pushGeneratorState();
1315  ol.startDotGraph();
1317  ol.endDotGraph(usageImplGraph);
1318  ol.popGeneratorState();
1319  }
1320  }
1321 }
void startDotGraph()
Definition: outputlist.h:382
virtual QCString trCollaborationDiagram(const char *clName)=0
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endDotGraph(const DotClassGraph &g)
Definition: outputlist.h:384
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
Translator * theTranslator
Definition: language.cpp:157
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 2657 of file classdef.cpp.

2659 {
2660  //printf("ClassName=`%s' inGroup=%d\n",name().data(),inGroup);
2661 
2662  ol.docify(compoundTypeString());
2663  QCString cn = displayName(FALSE);
2664  if (!cn.isEmpty())
2665  {
2666  ol.docify(" ");
2667  if (md && isLinkable())
2668  {
2669  ol.writeObjectLink(0,0,md->anchor(),cn);
2670  }
2671  else
2672  {
2673  ol.startBold();
2674  ol.docify(cn);
2675  ol.endBold();
2676  }
2677  }
2678  ol.docify(" {");
2679  ol.endMemberItem();
2680 
2681  // write user defined member groups
2682  if (m_impl->memberGroupSDict)
2683  {
2685  MemberGroup *mg;
2686  for (;(mg=mgli.current());++mgli)
2687  {
2688  mg->setInGroup(inGroup);
2689  mg->writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId);
2690  }
2691  }
2692 
2695  LayoutDocEntry *lde;
2696  for (eli.toFirst();(lde=eli.current());++eli)
2697  {
2698  if (lde->kind()==LayoutDocEntry::MemberDecl)
2699  {
2701  writePlainMemberDeclaration(ol,lmd->type,inGroup,inheritedFrom,inheritId);
2702  }
2703  }
2704 }
void endMemberItem()
Definition: outputlist.h:220
bool isEmpty() const
Definition: qcstring.h:189
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
void writePlainDeclarations(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, ClassDef *inheritedFrom, const char *inheritId)
MemberListType type
Definition: layout.h:96
QCString compoundTypeString() const
Definition: classdef.cpp:3499
const bool FALSE
Definition: qglobal.h:370
friend class Iterator
Definition: sortdict.h:598
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void writePlainMemberDeclaration(OutputList &ol, MemberListType lt, bool inGroup, ClassDef *inheritedFrom, const char *inheritId)
Definition: classdef.cpp:4371
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
static constexpr double mg
Definition: Units.h:145
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
void endBold()
Definition: outputlist.h:306
void setInGroup(bool b)
bool isLinkable() const
Definition: classdef.cpp:2729
QCString anchor() const
Definition: memberdef.cpp:1031
void startBold()
Definition: outputlist.h:304
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
ClassDefImpl * m_impl
Definition: classdef.h:451
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
void ClassDef::writeDeclarationLink ( OutputList ol,
bool found,
const char *  header,
bool  localNames 
)

Definition at line 1847 of file classdef.cpp.

1848 {
1849  //static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
1850  //static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
1851  SrcLangExt lang = getLanguage();
1853  {
1854  if (!found) // first class
1855  {
1856  ol.startMemberHeader("nested-classes");
1857  if (header)
1858  {
1859  ol.parseText(header);
1860  }
1861  else if (lang==SrcLangExt_VHDL)
1862  {
1864  }
1865  else
1866  {
1867  ol.parseText(lang==SrcLangExt_Fortran ?
1870  }
1871  ol.endMemberHeader();
1872  ol.startMemberList();
1873  found=TRUE;
1874  }
1877  QCString ctype = compoundTypeString();
1878  QCString cname = displayName(!localNames);
1879 
1880  if (lang!=SrcLangExt_VHDL) // for VHDL we swap the name and the type
1881  {
1882  ol.writeString(ctype);
1883  ol.writeString(" ");
1884  ol.insertMemberAlign();
1885  }
1886  if (isLinkable())
1887  {
1890  anchor(),
1891  cname
1892  );
1893  }
1894  else
1895  {
1896  ol.startBold();
1897  ol.docify(cname);
1898  ol.endBold();
1899  }
1900  if (lang==SrcLangExt_VHDL) // now write the type
1901  {
1902  ol.writeString(" ");
1903  ol.insertMemberAlign();
1905  }
1906  ol.endMemberItem();
1907 
1908  // add the brief description if available
1909  if (!briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
1910  {
1911  DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
1913  if (rootNode && !rootNode->isEmpty())
1914  {
1916  ol.writeDoc(rootNode,this,0);
1917  if (isLinkableInProject())
1918  {
1919  writeMoreLink(ol,anchor());
1920  }
1921  ol.endMemberDescription();
1922  }
1923  delete rootNode;
1924  }
1925  ol.endMemberDeclaration(anchor(),0);
1926  }
1927 }
void startMemberItem(const char *anchor, int i1, const char *id=0)
Definition: outputlist.h:218
void endMemberDeclaration(const char *anchor, const char *inheritId)
Definition: outputlist.h:314
void endMemberItem()
Definition: outputlist.h:220
bool isLinkableInProject() const
Definition: classdef.cpp:2707
virtual QCString trCompounds()=0
static QCString trVhdlType(uint64 type, bool sing=true)
void writeString(const char *text)
Definition: outputlist.h:119
QCString compoundTypeString() const
Definition: classdef.cpp:3499
const bool FALSE
Definition: qglobal.h:370
void startMemberDescription(const char *anchor, const char *inheritId=0)
Definition: outputlist.h:308
DocRoot * validatingParseDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const char *input, bool indexWords, bool isExample, const char *exampleName, bool singleLine, bool linkFromIndex)
Definition: docparser.cpp:7179
int briefLine() const
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
void startMemberList()
Definition: outputlist.h:206
SrcLangExt
Definition: types.h:41
QCString getReference() const
Definition: classdef.cpp:3814
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Protection protection() const
Definition: classdef.cpp:4414
virtual QCString trDataTypes()=0
void endMemberHeader()
Definition: outputlist.h:196
void endBold()
Definition: outputlist.h:306
void startMemberDeclaration()
Definition: outputlist.h:312
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
bool isLinkable() const
Definition: classdef.cpp:2729
void writeDoc(DocRoot *root, Definition *ctx, MemberDef *md)
Definition: outputlist.cpp:162
#define Config_getBool(val)
Definition: config.cpp:664
QCString briefFile() const
void startBold()
Definition: outputlist.h:304
virtual QCString briefDescription(bool abbreviate=FALSE) const
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
bool visibleInParentsDeclList() const
Definition: classdef.cpp:1835
static QCString getProtectionName(int prot)
void writeMoreLink(OutputList &ol, const QCString &anchor)
Definition: classdef.cpp:1792
void endMemberDescription()
Definition: outputlist.h:310
Translator * theTranslator
Definition: language.cpp:157
bool isEmpty() const
Definition: docparser.h:1409
void startMemberHeader(const char *anchor)
Definition: outputlist.h:194
void docify(const char *s)
Definition: outputlist.h:145
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:238
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
const bool TRUE
Definition: qglobal.h:371
void ClassDef::writeDetailedDescription ( OutputList ol,
const QCString pageType,
bool  exampleFlag,
const QCString title,
const QCString anchor = QCString() 
)
private

Definition at line 1017 of file classdef.cpp.

1019 {
1020  if (hasDetailedDescription() || exampleFlag)
1021  {
1022  ol.pushGeneratorState();
1024  ol.writeRuler();
1025  ol.popGeneratorState();
1026 
1027  ol.pushGeneratorState();
1029  ol.writeAnchor(0,anchor.isEmpty() ? QCString("details") : anchor);
1030  ol.popGeneratorState();
1031 
1032  if (!anchor.isEmpty())
1033  {
1034  ol.pushGeneratorState();
1037  ol.writeAnchor(getOutputFileBase(),anchor);
1038  ol.popGeneratorState();
1039  }
1040 
1041  ol.startGroupHeader();
1042  ol.parseText(title);
1043  ol.endGroupHeader();
1044 
1046  }
1047  else
1048  {
1049  //writeTemplateSpec(ol,this,pageType);
1050  }
1051 }
void writeRuler()
Definition: outputlist.h:240
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:178
bool isEmpty() const
Definition: qcstring.h:189
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void writeDetailedDocumentationBody(OutputList &ol)
Definition: classdef.cpp:959
bool hasDetailedDescription() const
Definition: classdef.cpp:1007
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:176
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
void writeAnchor(const char *fileName, const char *name)
Definition: outputlist.h:242
void ClassDef::writeDetailedDocumentationBody ( OutputList ol)
private

Definition at line 959 of file classdef.cpp.

960 {
961  static bool repeatBrief = Config_getBool("REPEAT_BRIEF");
962 
963  ol.startTextBlock();
964 
966  {
968  }
969 
970  // repeat brief description
971  if (!briefDescription().isEmpty() && repeatBrief)
972  {
974  }
975  if (!briefDescription().isEmpty() && repeatBrief &&
976  !documentation().isEmpty())
977  {
978  ol.pushGeneratorState();
980  ol.writeString("\n\n");
981  ol.popGeneratorState();
982  }
983  // write documentation
984  if (!documentation().isEmpty())
985  {
987  }
988  // write type constraints
990 
991  // write examples
992  if (hasExamples() && m_impl->exampleSDict)
993  {
995  ol.startDescForItem();
996  //ol.startParagraph();
998  //ol.endParagraph();
999  ol.endDescForItem();
1000  ol.endSimpleSect();
1001  }
1002  //ol.newParagraph();
1003  writeSourceDef(ol,name());
1004  ol.endTextBlock();
1005 }
virtual QCString trExamples()=0
QCString docFile() const
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
QCString compoundTypeString() const
Definition: classdef.cpp:3499
void endDescForItem()
Definition: outputlist.h:284
const bool FALSE
Definition: qglobal.h:370
void writeTypeConstraints(OutputList &ol, Definition *d, ArgumentList *al)
Definition: util.cpp:7585
int briefLine() const
ArgumentList * typeConstraints
Definition: classdef.cpp:94
void popGeneratorState()
Definition: outputlist.cpp:121
const QCString & name() const
Definition: definition.h:114
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
void startDescForItem()
Definition: outputlist.h:282
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
bool hasExamples() const
Definition: classdef.cpp:2521
#define Config_getBool(val)
Definition: config.cpp:664
QCString briefFile() const
void startSimpleSect(SectionTypes t, const char *file, const char *anchor, const char *title)
Definition: outputlist.h:321
virtual QCString briefDescription(bool abbreviate=FALSE) const
void writeExample(OutputList &ol, ExampleSDict *ed)
Definition: util.cpp:2106
ExampleSDict * exampleSDict
Definition: classdef.cpp:100
void writeSourceDef(OutputList &ol, const char *scopeName)
Definition: definition.cpp:918
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
Translator * theTranslator
Definition: language.cpp:157
void endSimpleSect()
Definition: outputlist.h:324
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
ClassDefImpl * m_impl
Definition: classdef.h:451
static void writeTemplateSpec(OutputList &ol, Definition *d, const QCString &type, SrcLangExt lang)
Definition: classdef.cpp:894
int docLine() const
virtual QCString documentation() const
const bool TRUE
Definition: qglobal.h:371
void ClassDef::writeDocumentation ( OutputList ol)

Definition at line 2120 of file classdef.cpp.

2121 {
2122  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
2123  //static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
2124  //static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2125  QCString pageTitle = title();
2126 
2127  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_ClassVisible,!generateTreeView);
2128  if (!generateTreeView)
2129  {
2131  {
2132  writeNavigationPath(ol);
2133  }
2134  ol.endQuickIndices();
2135  }
2136 
2137  startTitle(ol,getOutputFileBase(),this);
2138  ol.parseText(pageTitle);
2139  addClassAttributes(ol);
2140  addGroupListToTitle(ol,this);
2142  writeDocumentationContents(ol,pageTitle);
2143 
2144  endFileWithNavPath(this,ol);
2145 
2146  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
2147  {
2148  writeMemberPages(ol);
2149  }
2150 }
void endFileWithNavPath(Definition *d, OutputList &ol)
Definition: index.cpp:282
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeNavigationPath(OutputList &ol) const
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
static NamespaceDef * globalScope
Definition: doxygen.h:128
const QCString & name() const
Definition: definition.h:114
QCString title() const
Definition: classdef.cpp:2076
void addGroupListToTitle(OutputList &ol, Definition *d)
Definition: util.cpp:6528
#define Config_getBool(val)
Definition: config.cpp:664
void writeDocumentationContents(OutputList &ol, const QCString &pageTitle)
Definition: classdef.cpp:1954
void endQuickIndices()
Definition: outputlist.h:352
void writeMemberPages(OutputList &ol)
Definition: classdef.cpp:2152
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual Definition * getOuterScope() const
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void addClassAttributes(OutputList &ol)
Definition: classdef.cpp:1929
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void ClassDef::writeDocumentationContents ( OutputList ol,
const QCString pageTitle 
)
private

Definition at line 1954 of file classdef.cpp.

1955 {
1956  ol.startContents();
1957 
1958  QCString pageType = " ";
1959  pageType += compoundTypeString();
1960 
1962 
1964  {
1967  }
1968  bool exampleFlag=hasExamples();
1969 
1970  //---------------------------------------- start flexible part -------------------------------
1971 
1972  SrcLangExt lang = getLanguage();
1973 
1976  LayoutDocEntry *lde;
1977  for (eli.toFirst();(lde=eli.current());++eli)
1978  {
1979  switch (lde->kind())
1980  {
1982  writeBriefDescription(ol,exampleFlag);
1983  break;
1985  writeIncludeFiles(ol);
1986  break;
1989  break;
1992  break;
1994  //writeAllMembersLink(ol); // this is now part of the summary links
1995  break;
1998  break;
2000  writeMemberGroups(ol);
2001  break;
2003  {
2005  writeMemberDeclarations(ol,lmd->type,lmd->title(lang),lmd->subtitle(lang));
2006  }
2007  break;
2009  {
2011  writeNestedClasses(ol,ls->title(lang));
2012  }
2013  break;
2016  break;
2018  {
2020  writeDetailedDescription(ol,pageType,exampleFlag,ls->title(lang));
2021  }
2022  break;
2025  break;
2027  writeInlineClasses(ol);
2028  break;
2030  {
2032  writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
2033  }
2034  break;
2037  break;
2039  showUsedFiles(ol);
2040  break;
2042  writeAuthorSection(ol);
2043  break;
2067  err("Internal inconsistency: member %d should not be part of "
2068  "LayoutDocManager::Class entry list\n",lde->kind());
2069  break;
2070  }
2071  }
2072 
2073  ol.endContents();
2074 }
void endMemberDocumentation(OutputList &ol)
Definition: classdef.cpp:1458
void writeInheritanceGraph(OutputList &ol)
Definition: classdef.cpp:1181
void writeDetailedDescription(OutputList &ol, const QCString &pageType, bool exampleFlag, const QCString &title, const QCString &anchor=QCString())
Definition: classdef.cpp:1017
MemberListType type
Definition: layout.h:96
void writeBriefDescription(OutputList &ol, bool exampleFlag)
Definition: classdef.cpp:936
QCString compoundTypeString() const
Definition: classdef.cpp:3499
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1459
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void writeMemberGroups(OutputList &ol, bool showInline=FALSE)
Definition: classdef.cpp:1408
SrcLangExt
Definition: types.h:41
Represents of a member definition list with configurable title.
Definition: layout.h:105
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1440
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
void addIndexItem(Definition *context, MemberDef *md, const char *sectionAnchor=0, const char *title=0)
Definition: index.h:142
static SearchIndexIntf * searchIndex
Definition: doxygen.h:133
void writeNestedClasses(OutputList &ol, const QCString &title)
Definition: classdef.cpp:1431
SrcLangExt getLanguage() const
virtual void addWord(const char *word, bool hiPriority)=0
void writeIncludeFiles(OutputList &ol)
Definition: classdef.cpp:1341
QCString anchor() const
Definition: classdef.cpp:4606
bool hasExamples() const
Definition: classdef.cpp:2521
void startMemberDeclarations(OutputList &ol)
Definition: classdef.cpp:1468
void err(const char *fmt,...)
Definition: message.cpp:226
void endContents()
Definition: outputlist.h:366
QCString subtitle(SrcLangExt lang) const
Definition: layout.cpp:1452
MemberListType type
Definition: layout.h:111
void writeCollaborationGraph(OutputList &ol)
Definition: classdef.cpp:1306
void showUsedFiles(OutputList &ol)
Definition: classdef.cpp:1084
void endMemberDeclarations(OutputList &ol)
Definition: classdef.cpp:1474
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
virtual void setCurrentDoc(Definition *ctx, const char *anchor, bool isSourceFile)=0
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE)
Definition: classdef.cpp:4357
void startMemberDocumentation(OutputList &ol)
Definition: classdef.cpp:1448
void writeInlineClasses(OutputList &ol)
Definition: classdef.cpp:1440
void writeAuthorSection(OutputList &ol)
Definition: classdef.cpp:1488
QCString localName() const
const bool TRUE
Definition: qglobal.h:371
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)
Definition: classdef.cpp:4291
static IndexList * indexList
Definition: doxygen.h:149
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1447
void startContents()
Definition: outputlist.h:364
void ClassDef::writeDocumentationForInnerClasses ( OutputList ol)

Definition at line 2225 of file classdef.cpp.

2226 {
2227  // write inner classes after the parent, so the tag files contain
2228  // the definition in proper order!
2229  if (m_impl->innerClasses)
2230  {
2232  ClassDef *innerCd;
2233  for (cli.toFirst();(innerCd=cli.current());++cli)
2234  {
2235  if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
2236  protectionLevelVisible(innerCd->protection()) &&
2237  !innerCd->isEmbeddedInOuterScope()
2238  )
2239  {
2240  msg("Generating docs for nested compound %s...\n",qPrint(innerCd->name()));
2241  innerCd->writeDocumentation(ol);
2242  innerCd->writeMemberList(ol);
2243  }
2244  innerCd->writeDocumentationForInnerClasses(ol);
2245  }
2246  }
2247 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
void msg(const char *fmt,...)
Definition: message.cpp:107
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
Protection protection() const
Definition: classdef.cpp:4414
void writeMemberList(OutputList &ol)
Definition: classdef.cpp:2250
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
const QCString & name() const
Definition: definition.h:114
void writeDocumentation(OutputList &ol)
Definition: classdef.cpp:2120
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
ClassSDict * innerClasses
Definition: classdef.cpp:114
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
const char * qPrint(const char *s)
Definition: qcstring.h:797
void writeDocumentationForInnerClasses(OutputList &ol)
Definition: classdef.cpp:2225
void ClassDef::writeIncludeFiles ( OutputList ol)
private

Definition at line 1341 of file classdef.cpp.

1342 {
1343  if (m_impl->incInfo /*&& Config_getBool("SHOW_INCLUDE_FILES")*/)
1344  {
1346  (m_impl->incInfo->fileDef ?
1347  m_impl->incInfo->fileDef->docName().data() : ""
1348  ) :
1350  if (!nm.isEmpty())
1351  {
1352  ol.startParagraph();
1353  ol.startTypewriter();
1354  ol.docify(includeStatement());
1355  SrcLangExt lang = getLanguage();
1356  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
1357  if (m_impl->incInfo->local || isIDLorJava)
1358  ol.docify("\"");
1359  else
1360  ol.docify("<");
1361  ol.pushGeneratorState();
1363  ol.docify(nm);
1366  if (m_impl->incInfo->fileDef)
1367  {
1369  }
1370  else
1371  {
1372  ol.docify(nm);
1373  }
1374  ol.popGeneratorState();
1375  if (m_impl->incInfo->local || isIDLorJava)
1376  ol.docify("\"");
1377  else
1378  ol.docify(">");
1379  if (isIDLorJava)
1380  ol.docify(";");
1381  ol.endTypewriter();
1382  ol.endParagraph();
1383  }
1384  }
1385 }
bool isEmpty() const
Definition: qcstring.h:189
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startParagraph()
Definition: outputlist.h:115
SrcLangExt
Definition: types.h:41
void popGeneratorState()
Definition: outputlist.cpp:121
void endParagraph()
Definition: outputlist.h:117
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
const char * data() const
Definition: qcstring.h:207
QCString includeName
Definition: filedef.h:50
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
IncludeInfo * incInfo
Definition: classdef.cpp:68
QCString includeStatement() const
Definition: classdef.cpp:1323
bool local
Definition: filedef.h:51
FileDef * fileDef
Definition: filedef.h:49
void startTypewriter()
Definition: outputlist.h:172
ClassDefImpl * m_impl
Definition: classdef.h:451
QCString includeName() const
Definition: filedef.cpp:1784
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
const QCString & docName() const
Definition: filedef.h:99
void endTypewriter()
Definition: outputlist.h:174
void ClassDef::writeInheritanceGraph ( OutputList ol)
private

Definition at line 1181 of file classdef.cpp.

1182 {
1183  // count direct inheritance relations
1184  const int count=countInheritanceNodes();
1185 
1186  bool renderDiagram = FALSE;
1187  if (Config_getBool("HAVE_DOT") &&
1188  (Config_getBool("CLASS_DIAGRAMS") || Config_getBool("CLASS_GRAPH")))
1189  // write class diagram using dot
1190  {
1191  DotClassGraph inheritanceGraph(this,DotNode::Inheritance);
1192  if (!inheritanceGraph.isTrivial() && !inheritanceGraph.isTooBig())
1193  {
1194  ol.pushGeneratorState();
1196  ol.startDotGraph();
1198  ol.endDotGraph(inheritanceGraph);
1199  ol.popGeneratorState();
1200  renderDiagram = TRUE;
1201  }
1202  }
1203  else if (Config_getBool("CLASS_DIAGRAMS") && count>0)
1204  // write class diagram using build-in generator
1205  {
1206  ClassDiagram diagram(this); // create a diagram of this class.
1207  ol.startClassDiagram();
1212  renderDiagram = TRUE;
1213  }
1214 
1215  if (renderDiagram) // if we already show the inheritance relations graphically,
1216  // then hide the text version
1217  {
1219  }
1220 
1221  if (m_impl->inherits && m_impl->inherits->count()>0)
1222  {
1223  ol.startParagraph();
1224  //parseText(ol,theTranslator->trInherits()+" ");
1225 
1227  QRegExp marker("@[0-9]+");
1228  int index=0,newIndex,matchLen;
1229  // now replace all markers in inheritLine with links to the classes
1230  while ((newIndex=marker.match(inheritLine,index,&matchLen))!=-1)
1231  {
1232  ol.parseText(inheritLine.mid(index,newIndex-index));
1233  bool ok;
1234  uint entryIndex = inheritLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
1235  BaseClassDef *bcd=m_impl->inherits->at(entryIndex);
1236  if (ok && bcd)
1237  {
1238  ClassDef *cd=bcd->classDef;
1239 
1240  // use the class name but with the template arguments as given
1241  // in the inheritance relation
1243  cd->displayName(),bcd->templSpecifiers);
1244 
1245  if (cd->isLinkable())
1246  {
1247  ol.writeObjectLink(cd->getReference(),
1248  cd->getOutputFileBase(),
1249  cd->anchor(),
1250  displayName);
1251  }
1252  else
1253  {
1254  ol.docify(displayName);
1255  }
1256  }
1257  else
1258  {
1259  err("invalid marker %d in inherits list!\n",entryIndex);
1260  }
1261  index=newIndex+matchLen;
1262  }
1263  ol.parseText(inheritLine.right(inheritLine.length()-index));
1264  ol.endParagraph();
1265  }
1266 
1267  // write subclasses
1268  if (m_impl->inheritedBy && m_impl->inheritedBy->count()>0)
1269  {
1270  ol.startParagraph();
1272  QRegExp marker("@[0-9]+");
1273  int index=0,newIndex,matchLen;
1274  // now replace all markers in inheritLine with links to the classes
1275  while ((newIndex=marker.match(inheritLine,index,&matchLen))!=-1)
1276  {
1277  ol.parseText(inheritLine.mid(index,newIndex-index));
1278  bool ok;
1279  uint entryIndex = inheritLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
1280  BaseClassDef *bcd=m_impl->inheritedBy->at(entryIndex);
1281  if (ok && bcd)
1282  {
1283  ClassDef *cd=bcd->classDef;
1284  if (cd->isLinkable())
1285  {
1286  ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),cd->anchor(),cd->displayName());
1287  }
1288  else
1289  {
1290  ol.docify(cd->displayName());
1291  }
1292  writeInheritanceSpecifier(ol,bcd);
1293  }
1294  index=newIndex+matchLen;
1295  }
1296  ol.parseText(inheritLine.right(inheritLine.length()-index));
1297  ol.endParagraph();
1298  }
1299 
1300  if (renderDiagram)
1301  {
1302  ol.enableAll();
1303  }
1304 }
ClassDef * classDef
Definition: classdef.h:520
void startDotGraph()
Definition: outputlist.h:382
virtual QCString trInheritsList(int numEntries)=0
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
BaseClassList * inheritedBy
Definition: classdef.cpp:77
uint length() const
Definition: qcstring.h:195
virtual QCString trInheritedByList(int numEntries)=0
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startParagraph()
Definition: outputlist.h:115
int countInheritanceNodes()
Definition: classdef.cpp:1156
const bool FALSE
Definition: qglobal.h:370
type * at(uint i) const
Definition: qlist.h:94
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
QCString getReference() const
Definition: classdef.cpp:3814
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endDotGraph(const DotClassGraph &g)
Definition: outputlist.h:384
virtual QCString trClassDiagram(const char *clName)=0
void popGeneratorState()
Definition: outputlist.cpp:121
uint count() const
Definition: qlist.h:66
void endParagraph()
Definition: outputlist.h:117
BaseClassList * inherits
Definition: classdef.cpp:73
static void writeInheritanceSpecifier(OutputList &ol, BaseClassDef *bcd)
Definition: classdef.cpp:798
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString right(uint len) const
Definition: qcstring.cpp:231
QCString anchor() const
Definition: classdef.cpp:4606
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
bool isLinkable() const
Definition: classdef.cpp:2729
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
void err(const char *fmt,...)
Definition: message.cpp:226
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
QCString templSpecifiers
Definition: classdef.h:538
uint toUInt(bool *ok=0) const
Definition: qcstring.cpp:445
void enableAll()
Definition: outputlist.cpp:59
void endClassDiagram(const ClassDiagram &d, const char *f, const char *n)
Definition: outputlist.h:344
void startClassDiagram()
Definition: outputlist.h:342
QCString insertTemplateSpecifierInScope(const QCString &scope, const QCString &templ)
Definition: util.cpp:5527
Translator * theTranslator
Definition: language.cpp:157
ClassDefImpl * m_impl
Definition: classdef.h:451
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
unsigned uint
Definition: qglobal.h:351
const bool TRUE
Definition: qglobal.h:371
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 4242 of file classdef.cpp.

4246 {
4247  ol.pushGeneratorState();
4249  int count = countMembersIncludingGrouped(lt,inheritedFrom,FALSE);
4250  bool process = count>0;
4251  //printf("%s: writeInheritedMemberDec: lt=%d process=%d invert=%d always=%d\n",
4252  // name().data(),lt,process,invert,showAlways);
4253  if ((process^invert) || showAlways)
4254  {
4255  if (m_impl->inherits)
4256  {
4258  BaseClassDef *ibcd;
4259  for (it.toFirst();(ibcd=it.current());++it)
4260  {
4261  ClassDef *icd=ibcd->classDef;
4262  if (icd->isLinkable())
4263  {
4264  int lt1,lt3;
4265  convertProtectionLevel(lt,ibcd->prot,&lt1,&lt3);
4266  if (lt2==-1 && lt3!=-1)
4267  {
4268  lt2=lt3;
4269  }
4270  //printf("%s:convert %d->(%d,%d) prot=%d\n",icd->name().data(),lt,lt1,lt2,ibcd->prot);
4271  if (visitedClasses->find(icd)==0)
4272  {
4273  visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance
4274  if (lt1!=-1)
4275  {
4277  title,QCString(),FALSE,inheritedFrom,lt2,FALSE,TRUE,visitedClasses);
4278  }
4279  }
4280  else
4281  {
4282  //printf("%s: class already visited!\n",icd->name().data());
4283  }
4284  }
4285  }
4286  }
4287  }
4288  ol.popGeneratorState();
4289 }
ClassDef * classDef
Definition: classdef.h:520
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
Protection prot
Definition: classdef.h:530
int countMembersIncludingGrouped(MemberListType lt, ClassDef *inheritedFrom, bool additional)
Definition: classdef.cpp:4213
void insert(void *k, const type *d)
Definition: qptrdict.h:57
void popGeneratorState()
Definition: outputlist.cpp:121
def process(f, kind)
Definition: search.py:254
BaseClassList * inherits
Definition: classdef.cpp:73
void pushGeneratorState()
Definition: outputlist.cpp:111
type * find(void *k) const
Definition: qptrdict.h:63
bool isLinkable() const
Definition: classdef.cpp:2729
bool invert(ublas::matrix< T, L, A > &m)
MemberListType
Definition: types.h:104
ClassDefImpl * m_impl
Definition: classdef.h:451
void convertProtectionLevel(MemberListType inListType, Protection inProt, int *outListType1, int *outListType2)
Definition: util.cpp:8378
const bool TRUE
Definition: qglobal.h:371
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)
Definition: classdef.cpp:4291
void ClassDef::writeInlineClasses ( OutputList ol)
private

Definition at line 1440 of file classdef.cpp.

1441 {
1442  if (m_impl->innerClasses)
1443  {
1445  }
1446 }
ClassSDict * innerClasses
Definition: classdef.cpp:114
void writeDocumentation(OutputList &ol, Definition *container=0)
Definition: classlist.cpp:119
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::writeInlineDocumentation ( OutputList ol)

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

Definition at line 1675 of file classdef.cpp.

1676 {
1677  bool isSimple = m_impl->isSimple;
1678 
1679  ol.addIndexItem(name(),0);
1680  //printf("ClassDef::writeInlineDocumentation(%s)\n",name().data());
1683  LayoutDocEntry *lde;
1684 
1685  // part 1: anchor and title
1686  QCString s = compoundTypeString()+" "+name();
1687 
1688  // part 1a
1689  ol.pushGeneratorState();
1691  { // only HTML only
1692  ol.writeAnchor(0,anchor());
1693  ol.startMemberDoc(0,0,0,0,FALSE);
1695  ol.parseText(s);
1696  ol.endMemberDocName();
1697  ol.endMemberDoc(FALSE);
1698  ol.writeString("</div>");
1699  ol.startIndent();
1700  }
1701  ol.popGeneratorState();
1702 
1703  // part 1b
1704  ol.pushGeneratorState();
1707  { // for LaTeX/RTF only
1709  }
1710  ol.popGeneratorState();
1711 
1712  // part 1c
1713  ol.pushGeneratorState();
1715  {
1716  // for LaTeX/RTF/Man
1717  ol.startGroupHeader(1);
1718  ol.parseText(s);
1719  ol.endGroupHeader(1);
1720  }
1721  ol.popGeneratorState();
1722 
1723  SrcLangExt lang=getLanguage();
1724 
1725  // part 2: the header and detailed description
1726  for (eli.toFirst();(lde=eli.current());++eli)
1727  {
1728  switch (lde->kind())
1729  {
1731  {
1732  // since we already shown the brief description in the
1733  // declaration part of the container, so we use this to
1734  // show the details on top.
1736  }
1737  break;
1740  break;
1743  break;
1745  if (!isSimple) startMemberDeclarations(ol);
1746  break;
1748  {
1750  if (!isSimple) writeMemberDeclarations(ol,lmd->type,lmd->title(lang),lmd->subtitle(lang),TRUE);
1751  }
1752  break;
1754  if (!isSimple) writeMemberGroups(ol,TRUE);
1755  break;
1757  if (!isSimple) endMemberDeclarations(ol);
1758  break;
1760  if (!isSimple) startMemberDocumentation(ol);
1761  break;
1763  {
1765  if (isSimple)
1766  {
1768  }
1769  else
1770  {
1771  writeMemberDocumentation(ol,lmd->type,lmd->title(lang),TRUE);
1772  }
1773  }
1774  break;
1776  if (!isSimple) endMemberDocumentation(ol);
1777  break;
1778  default:
1779  break;
1780  }
1781  }
1782 
1783  // part 3: close the block
1784  ol.pushGeneratorState();
1786  { // HTML only
1787  ol.endIndent();
1788  }
1789  ol.popGeneratorState();
1790 }
void endMemberDocumentation(OutputList &ol)
Definition: classdef.cpp:1458
void writeInheritanceGraph(OutputList &ol)
Definition: classdef.cpp:1181
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:178
void writeSimpleMemberDocumentation(OutputList &ol, MemberListType lt)
Definition: classdef.cpp:4364
bool isSimple() const
Definition: classdef.cpp:4584
void writeString(const char *text)
Definition: outputlist.h:119
MemberListType type
Definition: layout.h:96
void startIndent()
Definition: outputlist.h:330
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void writeDetailedDocumentationBody(OutputList &ol)
Definition: classdef.cpp:959
QCString compoundTypeString() const
Definition: classdef.cpp:3499
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1459
void addIndexItem(const char *s1, const char *s2)
Definition: outputlist.h:338
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void writeMemberGroups(OutputList &ol, bool showInline=FALSE)
Definition: classdef.cpp:1408
SrcLangExt
Definition: types.h:41
Represents of a member definition list with configurable title.
Definition: layout.h:105
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
void popGeneratorState()
Definition: outputlist.cpp:121
const QCString & name() const
Definition: definition.h:114
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void startMemberDeclarations(OutputList &ol)
Definition: classdef.cpp:1468
void startMemberDoc(const char *clName, const char *memName, const char *anchor, const char *title, bool showInline)
Definition: outputlist.h:261
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:176
QCString subtitle(SrcLangExt lang) const
Definition: layout.cpp:1452
void endMemberDoc(bool hasArgs)
Definition: outputlist.h:264
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
MemberListType type
Definition: layout.h:111
void writeCollaborationGraph(OutputList &ol)
Definition: classdef.cpp:1306
void endMemberDocName()
Definition: outputlist.h:416
void endMemberDeclarations(OutputList &ol)
Definition: classdef.cpp:1474
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
void writeAnchor(const char *fileName, const char *name)
Definition: outputlist.h:242
void endIndent()
Definition: outputlist.h:332
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title, bool showInline=FALSE)
Definition: classdef.cpp:4357
ClassDefImpl * m_impl
Definition: classdef.h:451
void startMemberDocumentation(OutputList &ol)
Definition: classdef.cpp:1448
static QCString * s
Definition: config.cpp:1042
const bool TRUE
Definition: qglobal.h:371
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)
Definition: classdef.cpp:4291
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1447
void startMemberDocName(bool align)
Definition: outputlist.h:414
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 4291 of file classdef.cpp.

4294 {
4295  //printf("%s: ClassDef::writeMemberDeclarations lt=%d lt2=%d\n",name().data(),lt,lt2);
4296  MemberList * ml = getMemberList(lt);
4297  MemberList * ml2 = getMemberList((MemberListType)lt2);
4298  if (getLanguage()==SrcLangExt_VHDL) // use specific declarations function
4299  {
4300  static ClassDef *cdef;
4301  if (cdef!=this)
4302  { // only one inline link
4304  cdef=this;
4305  }
4306  if (ml)
4307  {
4308  VhdlDocGen::writeVhdlDeclarations(ml,ol,0,this,0,0);
4309  }
4310  }
4311  else
4312  {
4313  //printf("%s::writeMemberDeclarations(%s) ml=%p ml2=%p\n",name().data(),title.data(),ml,ml2);
4314  QCString tt = title, st = subTitle;
4315  if (ml)
4316  {
4317  //printf(" writeDeclaration type=%d count=%d\n",lt,ml->numDecMembers());
4318  ml->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
4319  tt.resize(0);
4320  st.resize(0);
4321  }
4322  if (ml2)
4323  {
4324  //printf(" writeDeclaration type=%d count=%d\n",lt2,ml2->numDecMembers());
4325  ml2->writeDeclarations(ol,this,0,0,0,tt,st,FALSE,showInline,inheritedFrom,lt);
4326  }
4327  static bool inlineInheritedMembers = Config_getBool("INLINE_INHERITED_MEMB");
4328  if (!inlineInheritedMembers) // show inherited members as separate lists
4329  {
4330  QPtrDict<void> visited(17);
4331  writeInheritedMemberDeclarations(ol,lt,lt2,title,
4332  inheritedFrom ? inheritedFrom : this,
4333  invert,showAlways,
4334  visitedClasses==0 ? &visited: visitedClasses);
4335  }
4336  }
4337 }
bool resize(uint newlen)
Definition: qcstring.h:225
void writeInheritedMemberDeclarations(OutputList &ol, MemberListType lt, int lt2, const QCString &title, ClassDef *inheritedFrom, bool invert, bool showAlways, QPtrDict< void > *visitedClasses)
Definition: classdef.cpp:4242
const bool FALSE
Definition: qglobal.h:370
Definition: type_traits.h:61
static void writeVhdlDeclarations(MemberList *, OutputList &, GroupDef *, ClassDef *, FileDef *, NamespaceDef *)
SrcLangExt getLanguage() const
QCString title() const
Definition: classdef.cpp:2076
bool invert(ublas::matrix< T, L, A > &m)
#define Config_getBool(val)
Definition: config.cpp:664
bool visited
Definition: classdef.h:402
static void writeInlineClassLink(const ClassDef *, OutputList &ol)
Definition: vhdldocgen.cpp:996
MemberListType
Definition: types.h:104
void writeDeclarations(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, const char *title, const char *subtitle, bool showEnumValues=FALSE, bool showInline=FALSE, ClassDef *inheritedFrom=0, MemberListType lt=MemberListType_pubMethods)
Definition: memberlist.cpp:519
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
void ClassDef::writeMemberDocumentation ( OutputList ol,
MemberListType  lt,
const QCString title,
bool  showInline = FALSE 
)
private

Definition at line 4357 of file classdef.cpp.

4358 {
4359  //printf("%s: ClassDef::writeMemberDocumentation()\n",name().data());
4360  MemberList * ml = getMemberList(lt);
4361  if (ml) ml->writeDocumentation(ol,displayName(),this,title,FALSE,showInline);
4362 }
void writeDocumentation(OutputList &ol, const char *scopeName, Definition *container, const char *title, bool showEnumValues=FALSE, bool showInline=FALSE)
Definition: memberlist.cpp:655
const bool FALSE
Definition: qglobal.h:370
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
void ClassDef::writeMemberGroups ( OutputList ol,
bool  showInline = FALSE 
)
private

Definition at line 1408 of file classdef.cpp.

1409 {
1410  // write user defined member groups
1411  if (m_impl->memberGroupSDict)
1412  {
1415  MemberGroup *mg;
1416  for (;(mg=mgli.current());++mgli)
1417  {
1418  if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section
1419  {
1420  mg->writeDeclarations(ol,this,0,0,0,showInline);
1421  }
1422  else // add this group to the corresponding member section
1423  {
1424  //printf("addToDeclarationSection(%s)\n",mg->header().data());
1425  //mg->addToDeclarationSection();
1426  }
1427  }
1428  }
1429 }
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
bool subGrouping
Definition: classdef.cpp:170
friend class Iterator
Definition: sortdict.h:598
void writeDeclarations(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, bool showInline=FALSE)
static constexpr double mg
Definition: Units.h:145
bool allMembersInSameSection() const
Definition: membergroup.h:67
void sort()
Definition: sortdict.h:522
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::writeMemberList ( OutputList ol)

Definition at line 2250 of file classdef.cpp.

2251 {
2252  static bool cOpt = Config_getBool("OPTIMIZE_OUTPUT_FOR_C");
2253  //static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2254  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
2255  if (m_impl->allMemberNameInfoSDict==0 || cOpt) return;
2256  // only for HTML
2257  ol.pushGeneratorState();
2259 
2260  QCString memListFile = getMemberListFileName();
2261  startFile(ol,memListFile,memListFile,theTranslator->trMemberList(),
2262  HLI_ClassVisible,!generateTreeView,getOutputFileBase());
2263  if (!generateTreeView)
2264  {
2266  {
2267  writeNavigationPath(ol);
2268  }
2269  ol.endQuickIndices();
2270  }
2271  startTitle(ol,0);
2273  endTitle(ol,0,0);
2274  ol.startContents();
2275  ol.startParagraph();
2279  ol.endParagraph();
2280 
2281  //ol.startItemList();
2282  ol.writeString("<table class=\"directory\">\n");
2283 
2284  int idx=0;
2285  //MemberNameInfo *mni=m_impl->allMemberNameInfoList->first();
2287  MemberNameInfo *mni;
2288  for (mnii.toFirst();(mni=mnii.current());++mnii)
2289  {
2290  MemberNameInfoIterator it(*mni);
2291  MemberInfo *mi;
2292  for (;(mi=it.current());++it)
2293  {
2294  MemberDef *md=mi->memberDef;
2295  ClassDef *cd=md->getClassDef();
2296  Protection prot = mi->prot;
2297  Specifier virt=md->virtualness();
2298 
2299  //printf("%s: Member %s of class %s md->protection()=%d mi->prot=%d prot=%d inherited=%d\n",
2300  // name().data(),md->name().data(),cd->name().data(),md->protection(),mi->prot,prot,mi->inherited);
2301 
2302  if (cd && !md->name().isEmpty() && md->name()[0]!='@')
2303  {
2304  bool memberWritten=FALSE;
2305  if (cd->isLinkable() && md->isLinkable())
2306  // create a link to the documentation
2307  {
2309  //ol.writeListItem();
2310  ol.writeString(" <tr");
2311  if ((idx&1)==0) ol.writeString(" class=\"even\"");
2312  idx++;
2313  ol.writeString("><td class=\"entry\">");
2314  if (cd->isObjectiveC())
2315  {
2316  if (md->isObjCMethod())
2317  {
2318  if (md->isStatic())
2319  ol.writeString("+&#160;</td><td>");
2320  else
2321  ol.writeString("-&#160;</td><td>");
2322  }
2323  else
2324  ol.writeString("</td><td class=\"entry\">");
2325  }
2326  if (md->isObjCMethod())
2327  {
2328  ol.writeObjectLink(md->getReference(),
2329  md->getOutputFileBase(),
2330  md->anchor(),md->name());
2331  }
2332  else
2333  {
2334  //Definition *bd = md->getGroupDef();
2335  //if (bd==0) bd=cd;
2336  ol.writeObjectLink(md->getReference(),
2337  md->getOutputFileBase(),
2338  md->anchor(),name);
2339 
2340  if ( md->isFunction() || md->isSignal() || md->isSlot() ||
2341  (md->isFriend() && md->argsString()))
2342  ol.docify(md->argsString());
2343  else if (md->isEnumerate())
2344  ol.parseText(" "+theTranslator->trEnumName());
2345  else if (md->isEnumValue())
2346  ol.parseText(" "+theTranslator->trEnumValue());
2347  else if (md->isTypedef())
2348  ol.docify(" typedef");
2349  else if (md->isFriend() && !qstrcmp(md->typeString(),"friend class"))
2350  ol.docify(" class");
2351  //ol.writeString("\n");
2352  }
2353  ol.writeString("</td>");
2354  memberWritten=TRUE;
2355  }
2356  else if (!cd->isArtificial() &&
2357  !Config_getBool("HIDE_UNDOC_MEMBERS") &&
2358  (protectionLevelVisible(md->protection()) || md->isFriend())
2359  ) // no documentation,
2360  // generate link to the class instead.
2361  {
2362  //ol.writeListItem();
2363  ol.writeString(" <tr bgcolor=\"#f0f0f0\"");
2364  if ((idx&1)==0) ol.writeString(" class=\"even\"");
2365  idx++;
2366  ol.writeString("><td class=\"entry\">");
2367  if (cd->isObjectiveC())
2368  {
2369  if (md->isObjCMethod())
2370  {
2371  if (md->isStatic())
2372  ol.writeString("+&#160;</td><td class=\"entry\">");
2373  else
2374  ol.writeString("-&#160;</td><td class=\"entry\">");
2375  }
2376  else
2377  ol.writeString("</td><td class=\"entry\">");
2378  }
2379  ol.startBold();
2380  ol.docify(md->name());
2381  ol.endBold();
2382  if (!md->isObjCMethod())
2383  {
2384  if ( md->isFunction() || md->isSignal() || md->isSlot() )
2385  ol.docify(md->argsString());
2386  else if (md->isEnumerate())
2387  ol.parseText(" "+theTranslator->trEnumName());
2388  else if (md->isEnumValue())
2389  ol.parseText(" "+theTranslator->trEnumValue());
2390  else if (md->isTypedef())
2391  ol.docify(" typedef");
2392  }
2393  ol.writeString(" (");
2394  ol.parseText(theTranslator->trDefinedIn()+" ");
2395  if (cd->isLinkable())
2396  {
2397  ol.writeObjectLink(
2398  cd->getReference(),
2399  cd->getOutputFileBase(),
2400  cd->anchor(),
2401  cd->displayName());
2402  }
2403  else
2404  {
2405  ol.startBold();
2406  ol.docify(cd->displayName());
2407  ol.endBold();
2408  }
2409  ol.writeString(")");
2410  ol.writeString("</td>");
2411  memberWritten=TRUE;
2412  }
2413  if (memberWritten)
2414  {
2415  ol.writeString("<td class=\"entry\">");
2416  ol.writeObjectLink(cd->getReference(),
2417  cd->getOutputFileBase(),
2418  cd->anchor(),
2419  md->category() ?
2420  md->category()->displayName() :
2421  cd->displayName());
2422  ol.writeString("</td>");
2423  ol.writeString("<td class=\"entry\">");
2424  }
2425  SrcLangExt lang = md->getLanguage();
2426  if (
2427  (prot!=Public || (virt!=Normal && getLanguage()!=SrcLangExt_ObjC) ||
2428  md->isFriend() || md->isRelated() || md->isExplicit() ||
2429  md->isMutable() || (md->isInline() && Config_getBool("INLINE_INFO")) ||
2430  md->isSignal() || md->isSlot() ||
2432  (md->isOptional() || md->isAttribute() || md->isUNOProperty())) ||
2433  md->isStatic() || lang==SrcLangExt_VHDL
2434  )
2435  && memberWritten)
2436  {
2437  ol.writeString("<span class=\"mlabel\">");
2438  QStrList sl;
2439  if (lang==SrcLangExt_VHDL)
2440  {
2441  sl.append(VhdlDocGen::trVhdlType(md->getMemberSpecifiers())); //append vhdl type
2442  }
2443  else if (md->isFriend()) sl.append("friend");
2444  else if (md->isRelated()) sl.append("related");
2445  else
2446  {
2447  if (Config_getBool("INLINE_INFO") && md->isInline())
2448  sl.append("inline");
2449  if (md->isExplicit()) sl.append("explicit");
2450  if (md->isMutable()) sl.append("mutable");
2451  if (prot==Protected) sl.append("protected");
2452  else if (prot==Private) sl.append("private");
2453  else if (prot==Package) sl.append("package");
2454  if (virt==Virtual && getLanguage()!=SrcLangExt_ObjC)
2455  sl.append("virtual");
2456  else if (virt==Pure) sl.append("pure virtual");
2457  if (md->isStatic()) sl.append("static");
2458  if (md->isSignal()) sl.append("signal");
2459  if (md->isSlot()) sl.append("slot");
2460 // this is the extra member page
2461  if (md->isOptional()) sl.append("optional");
2462  if (md->isAttribute()) sl.append("attribute");
2463  if (md->isUNOProperty()) sl.append("property");
2464  if (md->isReadonly()) sl.append("readonly");
2465  if (md->isBound()) sl.append("bound");
2466  if (md->isRemovable()) sl.append("removable");
2467  if (md->isConstrained()) sl.append("constrained");
2468  if (md->isTransient()) sl.append("transient");
2469  if (md->isMaybeVoid()) sl.append("maybevoid");
2470  if (md->isMaybeDefault()) sl.append("maybedefault");
2471  if (md->isMaybeAmbiguous())sl.append("maybeambiguous");
2472  }
2473  const char *s=sl.first();
2474  while (s)
2475  {
2476  ol.docify(s);
2477  s=sl.next();
2478  if (s) ol.writeString("</span><span class=\"mlabel\">");
2479  }
2480  ol.writeString("</span>");
2481  }
2482  if (memberWritten)
2483  {
2484  ol.writeString("</td>");
2485  ol.writeString("</tr>\n");
2486  }
2487  }
2488  }
2489  }
2490  //ol.endItemList();
2491 
2492  ol.writeString("</table>");
2493 
2494  endFile(ol);
2495  ol.popGeneratorState();
2496 }
bool isMaybeAmbiguous() const
Definition: memberdef.cpp:4422
bool isOptional() const
Definition: memberdef.cpp:4310
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
bool isBound() const
Definition: memberdef.cpp:4397
bool isArtificial() const
bool isMutable() const
Definition: memberdef.cpp:4220
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
Definition: types.h:29
static QCString trVhdlType(uint64 type, bool sing=true)
bool isEmpty() const
Definition: qcstring.h:189
QCString getReference() const
Definition: memberdef.cpp:1001
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
bool isFriend() const
Definition: memberdef.cpp:4175
bool isUNOProperty() const
Definition: memberdef.cpp:4387
Definition: types.h:29
Protection protection() const
Definition: memberdef.cpp:4120
Definition: types.h:26
void writeString(const char *text)
Definition: outputlist.h:119
type * first()
Definition: qinternallist.h:87
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
virtual QCString trEnumName()=0
void startParagraph()
Definition: outputlist.h:115
void writeNavigationPath(OutputList &ol) const
const bool FALSE
Definition: qglobal.h:370
Definition: types.h:26
Protection prot
Definition: membername.h:63
virtual QCString trMemberList()=0
MemberDef * memberDef
Definition: membername.h:62
virtual QCString trEnumValue()=0
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
bool isInline() const
Definition: memberdef.cpp:4210
SrcLangExt
Definition: types.h:41
Definition: types.h:26
QCString getReference() const
Definition: classdef.cpp:3814
Definition: types.h:29
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
static NamespaceDef * globalScope
Definition: doxygen.h:128
void popGeneratorState()
Definition: outputlist.cpp:121
QCString ambiguityResolutionScope
Definition: membername.h:67
Specifier virtualness(int count=0) const
Definition: memberdef.cpp:3560
bool isExplicit() const
Definition: memberdef.cpp:4215
const char * typeString() const
Definition: memberdef.cpp:4035
void endBold()
Definition: outputlist.h:306
void endParagraph()
Definition: outputlist.h:117
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
ClassDef * category() const
Definition: memberdef.cpp:4796
bool isRemovable() const
Definition: memberdef.cpp:4260
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString getMemberListFileName() const
Definition: classdef.cpp:307
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
Specifier
Definition: types.h:29
virtual QCString trDefinedIn()=0
void append(const type *d)
Definition: qinternallist.h:61
bool isConstrained() const
Definition: memberdef.cpp:4402
bool isLinkable() const
Definition: classdef.cpp:2729
QCString anchor() const
Definition: memberdef.cpp:1031
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
bool isObjCMethod() const
Definition: memberdef.cpp:3956
uint64 getMemberSpecifiers() const
Definition: memberdef.cpp:4065
void startBold()
Definition: outputlist.h:304
type * next()
Definition: qinternallist.h:89
bool isReadonly() const
Definition: memberdef.cpp:4392
void endQuickIndices()
Definition: outputlist.h:352
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual Definition * getOuterScope() const
bool isMaybeVoid() const
Definition: memberdef.cpp:4412
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
static Specifier virt
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
bool isMaybeDefault() const
Definition: memberdef.cpp:4417
Protection
Definition: types.h:26
Translator * theTranslator
Definition: language.cpp:157
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
virtual QCString trThisIsTheListOfAllMembers()=0
bool isFunction() const
Definition: memberdef.cpp:4160
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
bool isRelated() const
Definition: memberdef.cpp:4195
const char * argsString() const
Definition: memberdef.cpp:4040
bool isStatic() const
Definition: memberdef.cpp:4205
void docify(const char *s)
Definition: outputlist.h:145
Q_EXPORT int qstrcmp(const char *str1, const char *str2)
Definition: qcstring.h:95
bool isTypedef() const
Definition: memberdef.cpp:4155
bool isObjectiveC() const
Definition: classdef.cpp:4504
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
bool isLinkable() const
Definition: memberdef.cpp:1161
static QCString * s
Definition: config.cpp:1042
virtual QCString trIncludingInheritedMembers()=0
const bool TRUE
Definition: qglobal.h:371
bool isTransient() const
Definition: memberdef.cpp:4407
bool isAttribute() const
Definition: memberdef.cpp:4382
bool isEnumerate() const
Definition: memberdef.cpp:4145
void startContents()
Definition: outputlist.h:364
void ClassDef::writeMemberPages ( OutputList ol)

Definition at line 2152 of file classdef.cpp.

2153 {
2154  ///////////////////////////////////////////////////////////////////////////
2155  //// Member definitions on separate pages
2156  ///////////////////////////////////////////////////////////////////////////
2157 
2158  ol.pushGeneratorState();
2160 
2162  MemberList *ml;
2163  for (mli.toFirst();(ml=mli.current());++mli)
2164  {
2165  ml->countDocMembers();
2166  if (ml->numDocMembers()>0 && (ml->listType()&MemberListType_detailedLists))
2167  {
2168  ml->writeDocumentationPage(ol,displayName(),this);
2169  }
2170  }
2171 
2172  ol.popGeneratorState();
2173 }
MemberListType listType() const
Definition: memberlist.h:38
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
void countDocMembers(bool countEnumValues=FALSE)
Definition: memberlist.cpp:208
void popGeneratorState()
Definition: outputlist.cpp:121
QList< MemberList > memberLists
Definition: classdef.cpp:147
void pushGeneratorState()
Definition: outputlist.cpp:111
int numDocMembers() const
Definition: memberlist.h:52
void writeDocumentationPage(OutputList &ol, const char *scopeName, Definition *container)
Definition: memberlist.cpp:715
ClassDefImpl * m_impl
Definition: classdef.h:451
void ClassDef::writeMoreLink ( OutputList ol,
const QCString anchor 
)
private

Definition at line 1792 of file classdef.cpp.

1793 {
1794  // TODO: clean up this mess by moving it to
1795  // the output generators...
1796  static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS");
1797  static bool rtfHyperlinks = Config_getBool("RTF_HYPERLINKS");
1798  static bool usePDFLatex = Config_getBool("USE_PDFLATEX");
1799 
1800  // HTML only
1801  ol.pushGeneratorState();
1803  ol.docify(" ");
1805  anchor.isEmpty() ? QCString("details") : anchor);
1807  ol.endTextLink();
1808  ol.popGeneratorState();
1809 
1810  if (!anchor.isEmpty())
1811  {
1812  ol.pushGeneratorState();
1813  // LaTeX + RTF
1816  if (!(usePDFLatex && pdfHyperlinks))
1817  {
1819  }
1820  if (!rtfHyperlinks)
1821  {
1823  }
1824  ol.docify(" ");
1825  ol.startTextLink(getOutputFileBase(), anchor);
1827  ol.endTextLink();
1828  // RTF only
1830  ol.writeString("\\par");
1831  ol.popGeneratorState();
1832  }
1833 }
bool isEmpty() const
Definition: qcstring.h:189
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:159
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trMore()=0
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
Translator * theTranslator
Definition: language.cpp:157
void docify(const char *s)
Definition: outputlist.h:145
void endTextLink()
Definition: outputlist.h:161
void ClassDef::writeNestedClasses ( OutputList ol,
const QCString title 
)
private

Definition at line 1431 of file classdef.cpp.

1432 {
1433  // nested classes
1434  if (m_impl->innerClasses)
1435  {
1436  m_impl->innerClasses->writeDeclaration(ol,0,title,TRUE);
1437  }
1438 }
ClassSDict * innerClasses
Definition: classdef.cpp:114
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter=0, const char *header=0, bool localNames=FALSE)
Definition: classlist.cpp:94
ClassDefImpl * m_impl
Definition: classdef.h:451
const bool TRUE
Definition: qglobal.h:371
void ClassDef::writePlainMemberDeclaration ( OutputList ol,
MemberListType  lt,
bool  inGroup,
ClassDef inheritedFrom,
const char *  inheritId 
)
private

Definition at line 4371 of file classdef.cpp.

4374 {
4375  //printf("%s: ClassDef::writePlainMemberDeclaration()\n",name().data());
4376  MemberList * ml = getMemberList(lt);
4377  if (ml)
4378  {
4379  ml->setInGroup(inGroup);
4380  ml->writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId);
4381  }
4382 }
void setInGroup(bool inGroup)
Definition: memberlist.h:73
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
void writePlainDeclarations(OutputList &ol, ClassDef *cd, NamespaceDef *nd, FileDef *fd, GroupDef *gd, ClassDef *inheritedFrom, const char *inheritId)
Definition: memberlist.cpp:321
void ClassDef::writeQuickMemberLinks ( OutputList ol,
MemberDef md 
) const
virtual

Reimplemented from Definition.

Definition at line 2175 of file classdef.cpp.

2176 {
2177  static bool createSubDirs=Config_getBool("CREATE_SUBDIRS");
2178 
2179  ol.writeString(" <div class=\"navtab\">\n");
2180  ol.writeString(" <table>\n");
2181 
2183  {
2185  MemberNameInfo *mni;
2186  for (;(mni=mnili.current());++mnili)
2187  {
2188  MemberNameInfoIterator mnii(*mni);
2189  MemberInfo *mi;
2190  for (mnii.toFirst();(mi=mnii.current());++mnii)
2191  {
2192  MemberDef *md=mi->memberDef;
2193  if (md->getClassDef()==this && md->isLinkable() && !md->isEnumValue())
2194  {
2195  ol.writeString(" <tr><td class=\"navtab\">");
2196  if (md->isLinkableInProject())
2197  {
2198  if (md==currentMd) // selected item => highlight
2199  {
2200  ol.writeString("<a class=\"qindexHL\" ");
2201  }
2202  else
2203  {
2204  ol.writeString("<a class=\"qindex\" ");
2205  }
2206  ol.writeString("href=\"");
2207  if (createSubDirs) ol.writeString("../../");
2209  ol.writeString("\">");
2210  ol.writeString(convertToHtml(md->name()));
2211  ol.writeString("</a>");
2212  }
2213  ol.writeString("</td></tr>\n");
2214  }
2215  }
2216  }
2217  }
2218 
2219  ol.writeString(" </table>\n");
2220  ol.writeString(" </div>\n");
2221 }
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeString(const char *text)
Definition: outputlist.h:119
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
MemberDef * memberDef
Definition: membername.h:62
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
QCString anchor() const
Definition: memberdef.cpp:1031
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
ClassDefImpl * m_impl
Definition: classdef.h:451
void createSubDirs(QDir &d)
Definition: util.cpp:5458
friend class Iterator
Definition: sortdict.h:289
bool isLinkable() const
Definition: memberdef.cpp:1161
void ClassDef::writeSimpleMemberDocumentation ( OutputList ol,
MemberListType  lt 
)
private

Definition at line 4364 of file classdef.cpp.

4365 {
4366  //printf("%s: ClassDef::writeSimpleMemberDocumentation()\n",name().data());
4367  MemberList * ml = getMemberList(lt);
4368  if (ml) ml->writeSimpleDocumentation(ol,this);
4369 }
void writeSimpleDocumentation(OutputList &ol, Definition *container)
Definition: memberlist.cpp:697
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
void ClassDef::writeSummaryLinks ( OutputList ol)
virtual

Reimplemented from Definition.

Definition at line 1501 of file classdef.cpp.

1502 {
1503  ol.pushGeneratorState();
1507  LayoutDocEntry *lde;
1508  bool first=TRUE;
1509  SrcLangExt lang = getLanguage();
1510 
1511  if (lang!=SrcLangExt_VHDL)
1512  {
1513  for (eli.toFirst();(lde=eli.current());++eli)
1514  {
1516  m_impl->innerClasses &&
1518  )
1519  {
1521  ol.writeSummaryLink(0,"nested-classes",ls->title(lang),first);
1522  first=FALSE;
1523  }
1524  else if (lde->kind()==LayoutDocEntry::ClassAllMembersLink &&
1526  !Config_getBool("OPTIMIZE_OUTPUT_FOR_C")
1527  )
1528  {
1529  ol.writeSummaryLink(getMemberListFileName(),"all-members-list",theTranslator->trListOfAllMembers(),first);
1530  first=FALSE;
1531  }
1532  else if (lde->kind()== LayoutDocEntry::MemberDecl)
1533  {
1535  MemberList * ml = getMemberList(lmd->type);
1536  if (ml && ml->declVisible())
1537  {
1538  ol.writeSummaryLink(0,MemberList::listTypeAsString(ml->listType()),lmd->title(lang),first);
1539  first=FALSE;
1540  }
1541  }
1542  }
1543  }
1544  else // VDHL only
1545  {
1547  for (li.toFirst();li.current();++li)
1548  {
1549  ol.writeSummaryLink(0,li.current()->data(),li.current()->data(),first);
1550  first=FALSE;
1551  }
1552  }
1553  if (!first)
1554  {
1555  ol.writeString(" </div>\n");
1556  }
1557  ol.popGeneratorState();
1558 }
MemberListType listType() const
Definition: memberlist.h:38
MemberNameInfoSDict * allMemberNameInfoSDict
Definition: classdef.cpp:88
void writeString(const char *text)
Definition: outputlist.h:119
MemberListType type
Definition: layout.h:96
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
bool declVisible(const ClassDef::CompoundType *filter=0) const
Definition: classlist.cpp:65
SrcLangExt
Definition: types.h:41
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1440
bool declVisible() const
Definition: memberlist.cpp:256
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
void popGeneratorState()
Definition: outputlist.cpp:121
Definition: sortdict.h:73
void writeSummaryLink(const char *file, const char *anchor, const char *title, bool first)
Definition: outputlist.h:362
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString getMemberListFileName() const
Definition: classdef.cpp:307
SrcLangExt getLanguage() const
#define Config_getBool(val)
Definition: config.cpp:664
ClassSDict * innerClasses
Definition: classdef.cpp:114
SDict< QCString > vhdlSummaryTitles
Definition: classdef.cpp:176
virtual QCString trListOfAllMembers()=0
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
Translator * theTranslator
Definition: language.cpp:157
static QCString listTypeAsString(MemberListType type)
Definition: memberlist.cpp:907
ClassDefImpl * m_impl
Definition: classdef.h:451
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
const bool TRUE
Definition: qglobal.h:371
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1447
void ClassDef::writeTagFile ( FTextStream tagFile)

Definition at line 1560 of file classdef.cpp.

1561 {
1562  if (!isLinkableInProject()) return;
1563  tagFile << " <compound kind=\"" << compoundTypeString();
1564  tagFile << "\"";
1565  if (isObjectiveC()) { tagFile << " objc=\"yes\""; }
1566  tagFile << ">" << endl;
1567  tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
1568  tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
1569  if (!anchor().isEmpty())
1570  {
1571  tagFile << " <anchor>" << convertToXML(anchor()) << "</anchor>" << endl;
1572  }
1573  QCString idStr = id();
1574  if (!idStr.isEmpty())
1575  {
1576  tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl;
1577  }
1578  if (m_impl->tempArgs)
1579  {
1581  Argument *a;
1582  for (;(a=ali.current());++ali)
1583  {
1584  tagFile << " <templarg>" << convertToXML(a->name) << "</templarg>" << endl;
1585  }
1586  }
1587  if (m_impl->inherits)
1588  {
1590  BaseClassDef *ibcd;
1591  for (it.toFirst();(ibcd=it.current());++it)
1592  {
1593  ClassDef *cd=ibcd->classDef;
1594  if (cd && cd->isLinkable())
1595  {
1596  if (!Config_getString("GENERATE_TAGFILE").isEmpty())
1597  {
1598  tagFile << " <base";
1599  if (ibcd->prot==Protected)
1600  {
1601  tagFile << " protection=\"protected\"";
1602  }
1603  else if (ibcd->prot==Private)
1604  {
1605  tagFile << " protection=\"private\"";
1606  }
1607  if (ibcd->virt==Virtual)
1608  {
1609  tagFile << " virtualness=\"virtual\"";
1610  }
1611  tagFile << ">" << convertToXML(cd->name()) << "</base>" << endl;
1612  }
1613  }
1614  }
1615  }
1618  LayoutDocEntry *lde;
1619  for (eli.toFirst();(lde=eli.current());++eli)
1620  {
1621  switch (lde->kind())
1622  {
1624  {
1625  if (m_impl->innerClasses)
1626  {
1628  ClassDef *innerCd;
1629  for (cli.toFirst();(innerCd=cli.current());++cli)
1630  {
1631  if (innerCd->isLinkableInProject() && innerCd->templateMaster()==0 &&
1632  protectionLevelVisible(innerCd->protection()) &&
1633  !innerCd->isEmbeddedInOuterScope()
1634  )
1635  {
1636  tagFile << " <class kind=\"" << innerCd->compoundTypeString() <<
1637  "\">" << convertToXML(innerCd->name()) << "</class>" << endl;
1638  }
1639  }
1640  }
1641  }
1642  break;
1644  {
1646  MemberList * ml = getMemberList(lmd->type);
1647  if (ml)
1648  {
1649  ml->writeTagFile(tagFile);
1650  }
1651  }
1652  break;
1654  {
1655  if (m_impl->memberGroupSDict)
1656  {
1658  MemberGroup *mg;
1659  for (;(mg=mgli.current());++mgli)
1660  {
1661  mg->writeTagFile(tagFile);
1662  }
1663  }
1664  }
1665  break;
1666  default:
1667  break;
1668  }
1669  }
1670  writeDocAnchorsToTagFile(tagFile);
1671  tagFile << " </compound>" << endl;
1672 }
QCString convertToXML(const char *s)
Definition: util.cpp:5717
ClassDef * classDef
Definition: classdef.h:520
bool isLinkableInProject() const
Definition: classdef.cpp:2707
Definition: types.h:29
bool isEmpty() const
Definition: qcstring.h:189
MemberGroupSDict * memberGroupSDict
Definition: classdef.cpp:150
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeTagFile(FTextStream &)
MemberListType type
Definition: layout.h:96
QCString compoundTypeString() const
Definition: classdef.cpp:3499
friend class Iterator
Definition: sortdict.h:598
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Definition: types.h:26
Protection prot
Definition: classdef.h:530
void writeTagFile(FTextStream &)
Definition: memberlist.cpp:963
bool protectionLevelVisible(Protection prot)
Definition: util.cpp:8098
static constexpr double mg
Definition: Units.h:145
Protection protection() const
Definition: classdef.cpp:4414
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:89
ArgumentList * tempArgs
Definition: classdef.cpp:91
void writeDocAnchorsToTagFile(FTextStream &)
Definition: definition.cpp:520
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
This class contains the information about the argument of a function or template. ...
Definition: arguments.h:28
BaseClassList * inherits
Definition: classdef.cpp:73
const QCString & name() const
Definition: definition.h:114
const double a
QCString anchor() const
Definition: classdef.cpp:4606
QCString id() const
Definition: definition.cpp:413
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
bool isLinkable() const
Definition: classdef.cpp:2729
#define Config_getString(val)
Definition: config.cpp:660
ClassSDict * innerClasses
Definition: classdef.cpp:114
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
Specifier virt
Definition: classdef.h:535
QCString name
Definition: arguments.h:69
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
ClassDefImpl * m_impl
Definition: classdef.h:451
friend class Iterator
Definition: sortdict.h:289
bool isObjectiveC() const
Definition: classdef.cpp:4504
MemberList * getMemberList(MemberListType lt)
Definition: classdef.cpp:4021
QTextStream & endl(QTextStream &s)

Member Data Documentation

ClassDefImpl* ClassDef::m_impl
private

Definition at line 451 of file classdef.h.

bool ClassDef::visited

Definition at line 402 of file classdef.h.


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