@@ -275,9 +275,11 @@ class ClassDefImpl : public DefinitionMixin<ClassDefMutable>
275275 bool containsOverload (const MemberDef *md) const override ;
276276 ClassDef *insertTemplateInstance (const QCString &fileName,int startLine,int startColumn,
277277 const QCString &templSpec,bool &freshInstance) const override ;
278+ bool isImplicitTemplateInstance () const override ;
278279
279280 void insertBaseClass (ClassDef *,const QCString &name,Protection p,Specifier s,const QCString &t=QCString()) override ;
280281 void insertSubClass (ClassDef *,Protection p,Specifier s,const QCString &t=QCString()) override ;
282+ void insertExplicitTemplateInstance (ClassDef *instance,const QCString &spec) override ;
281283 void setIncludeFile (FileDef *fd,const QCString &incName,bool local,bool force) override ;
282284 void insertMember (MemberDef *) override ;
283285 void insertUsedFile (const FileDef *) override ;
@@ -299,6 +301,7 @@ class ClassDefImpl : public DefinitionMixin<ClassDefMutable>
299301 void setTemplateArguments (const ArgumentList &al) override ;
300302 void setTemplateBaseClassNames (const TemplateNameMap &templateNames) override ;
301303 void setTemplateMaster (const ClassDef *tm) override ;
304+ void setImplicitTemplateInstance (bool b) override ;
302305 void setTypeConstraints (const ArgumentList &al) override ;
303306 void addMembersToTemplateInstance (const ClassDef *cd,const ArgumentList &templateArguments,const QCString &templSpec) override ;
304307 void makeTemplateArgument (bool b=TRUE ) override ;
@@ -600,6 +603,8 @@ class ClassDefAliasImpl : public DefinitionAliasMixin<ClassDef>
600603 ClassDef *insertTemplateInstance (const QCString &fileName,int startLine,int startColumn,
601604 const QCString &templSpec,bool &freshInstance) const override
602605 { return getCdAlias ()->insertTemplateInstance (fileName,startLine,startColumn,templSpec,freshInstance); }
606+ bool isImplicitTemplateInstance () const override
607+ { return getCdAlias ()->isImplicitTemplateInstance (); }
603608
604609 void writeDocumentation (OutputList &ol) const override
605610 { getCdAlias ()->writeDocumentation (ol); }
@@ -799,6 +804,8 @@ class ClassDefImpl::IMPL
799804
800805 bool hasCollaborationGraph = false ;
801806 CLASS_GRAPH_t typeInheritanceGraph = CLASS_GRAPH_t::NO;
807+
808+ bool implicitTemplateInstance = false ;
802809};
803810
804811void ClassDefImpl::IMPL::init (const QCString &defFileName, const QCString &name,
@@ -4256,6 +4263,7 @@ ClassDef *ClassDefImpl::insertTemplateInstance(const QCString &fileName,
42564263 templateClass->setOuterScope (getOuterScope ());
42574264 templateClass->setHidden (isHidden ());
42584265 templateClass->setArtificial (isArtificial ());
4266+ templateClass->setImplicitTemplateInstance (true );
42594267 m_impl->templateInstances .emplace_back (templSpec,templateClass);
42604268
42614269 // also add nested classes
@@ -4273,6 +4281,7 @@ ClassDef *ClassDefImpl::insertTemplateInstance(const QCString &fileName,
42734281 innerClass->setOuterScope (templateClass);
42744282 innerClass->setHidden (isHidden ());
42754283 innerClass->setArtificial (TRUE );
4284+ innerClass->setImplicitTemplateInstance (true );
42764285 }
42774286 }
42784287 freshInstance=TRUE ;
@@ -4281,6 +4290,11 @@ ClassDef *ClassDefImpl::insertTemplateInstance(const QCString &fileName,
42814290 return templateClass;
42824291}
42834292
4293+ void ClassDefImpl::insertExplicitTemplateInstance (ClassDef *templateClass,const QCString &templSpec)
4294+ {
4295+ m_impl->templateInstances .emplace_back (templSpec,templateClass);
4296+ }
4297+
42844298void ClassDefImpl::setTemplateBaseClassNames (const TemplateNameMap &templateNames)
42854299{
42864300 m_impl->templBaseClassNames = templateNames;
@@ -4906,6 +4920,16 @@ const ClassDef *ClassDefImpl::templateMaster() const
49064920 return m_impl->templateMaster ;
49074921}
49084922
4923+ bool ClassDefImpl::isImplicitTemplateInstance () const
4924+ {
4925+ return m_impl->implicitTemplateInstance ;
4926+ }
4927+
4928+ void ClassDefImpl::setImplicitTemplateInstance (bool b)
4929+ {
4930+ m_impl->implicitTemplateInstance = b;
4931+ }
4932+
49094933bool ClassDefImpl::isTemplate () const
49104934{
49114935 return !m_impl->tempArgs .empty ();
0 commit comments