Mercurial > projects > qtd
comparison generator/abstractmetalang.h @ 310:5bcfe9e7db7f lifetime
Committing local changes
author | maxter <spambox@d-coding.com> |
---|---|
date | Wed, 23 Dec 2009 16:10:46 +0200 |
parents | 90131f64c9c9 |
children |
comparison
equal
deleted
inserted
replaced
263:a7b313b8b149 | 310:5bcfe9e7db7f |
---|---|
782 bool inheritsFrom(const AbstractMetaClass *other) const; | 782 bool inheritsFrom(const AbstractMetaClass *other) const; |
783 | 783 |
784 void setForceShellClass(bool on) { m_force_shell_class = on; } | 784 void setForceShellClass(bool on) { m_force_shell_class = on; } |
785 bool generateShellClass() const; | 785 bool generateShellClass() const; |
786 | 786 |
787 bool hasVirtualSlots() const { return m_has_virtual_slots; } | 787 bool hasVirtualSlots() const { return m_has_virtual_slots; } |
788 bool hasVirtualFunctions() const { return !isFinal() && (m_has_virtuals || hasVirtualDestructor()); } | 788 |
789 // returns true if this class has overridable virtual functions other than | |
790 // the virtual destructor if one exists. | |
791 bool hasVirtualFunctions() const { return !isFinal() && m_has_virtuals; } | |
792 | |
793 // returns true if this class or its base classes define a | |
794 // virtual destructor | |
789 bool hasVirtualDestructor() const { return m_has_virtual_destructor | 795 bool hasVirtualDestructor() const { return m_has_virtual_destructor |
790 || (m_base_class && m_base_class->hasVirtualDestructor()); } | 796 || m_base_class && m_base_class->hasVirtualDestructor(); } |
797 | |
798 // returns the uppermost base class having virtual functions | |
799 const AbstractMetaClass* polymorphicBase() const | |
800 { | |
801 const AbstractMetaClass* ret = this; | |
802 for (const AbstractMetaClass* base = this->m_base_class; base; base = base->m_base_class) | |
803 { | |
804 if (base->m_has_virtuals || base->m_has_virtual_destructor) | |
805 ret = base; | |
806 } | |
807 return ret; | |
808 } | |
809 | |
810 // returns true if this class or its base classes have any virtual functions | |
811 bool isPolymorphic() const { return m_has_virtuals | |
812 || m_has_virtual_destructor | |
813 || m_base_class && m_base_class->isPolymorphic(); | |
814 } | |
815 | |
816 // returns the uppermost base class with virtual destructors | |
817 const AbstractMetaClass* virtualDestructorBase() const | |
818 { | |
819 const AbstractMetaClass* ret = NULL; | |
820 for (const AbstractMetaClass* base = this; base; base = base->m_base_class) | |
821 { | |
822 if (base->m_has_virtual_destructor) | |
823 ret = base; | |
824 } | |
825 return ret; | |
826 } | |
827 | |
791 bool setHasVirtualDestructor(bool value) { m_has_virtual_destructor = value; } | 828 bool setHasVirtualDestructor(bool value) { m_has_virtual_destructor = value; } |
792 bool isPolymorphic() const { return typeEntry()->isObject() && (hasVirtualFunctions() || hasVirtualDestructor()); } | 829 |
793 bool hasProtectedFunctions() const; | 830 bool hasProtectedFunctions() const; |
794 | 831 |
795 QList<TypeEntry *> templateArguments() const { return m_template_args; } | 832 QList<TypeEntry *> templateArguments() const { return m_template_args; } |
796 void setTemplateArguments(const QList<TypeEntry *> &args) { m_template_args = args; } | 833 void setTemplateArguments(const QList<TypeEntry *> &args) { m_template_args = args; } |
797 | 834 |