File indexing completed on 2024-06-23 04:34:45
0001 /* 0002 SPDX-FileCopyrightText: 2009 David Nolden <david.nolden.kdevelop@art-master.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #ifndef KDEVPLATFORM_TYPEALIASTYPE_H 0008 #define KDEVPLATFORM_TYPEALIASTYPE_H 0009 0010 #include "abstracttype.h" 0011 #include "identifiedtype.h" 0012 #include "typeregister.h" 0013 #include <language/languageexport.h> 0014 0015 namespace KDevelop { 0016 class TypeAliasTypeData; 0017 0018 using TypeAliasTypeBase = MergeIdentifiedType<AbstractType>; 0019 0020 class KDEVPLATFORMLANGUAGE_EXPORT TypeAliasType 0021 : public TypeAliasTypeBase 0022 { 0023 public: 0024 using Ptr = TypePtr<TypeAliasType>; 0025 0026 TypeAliasType(const TypeAliasType& rhs) : TypeAliasTypeBase(copyData<TypeAliasType>(*rhs.d_func())) 0027 { 0028 } 0029 0030 explicit TypeAliasType(TypeAliasTypeData& data) : TypeAliasTypeBase(data) 0031 { 0032 } 0033 0034 TypeAliasType() : TypeAliasTypeBase(createData<TypeAliasType>()) 0035 { 0036 } 0037 0038 TypeAliasType& operator=(const TypeAliasType& rhs) = delete; 0039 0040 KDevelop::AbstractType::Ptr type() const; 0041 void setType(const KDevelop::AbstractType::Ptr& type); 0042 0043 uint hash() const override; 0044 0045 QString toString() const override; 0046 0047 // virtual QString mangled() const; 0048 0049 void exchangeTypes(KDevelop::TypeExchanger* exchanger) override; 0050 0051 KDevelop::AbstractType* clone() const override; 0052 0053 bool equals(const KDevelop::AbstractType* rhs) const override; 0054 0055 KDevelop::AbstractType::WhichType whichType() const override; 0056 0057 enum { 0058 Identity = 9 0059 }; 0060 0061 using Data = TypeAliasTypeData; 0062 0063 protected: 0064 TYPE_DECLARE_DATA(TypeAliasType); 0065 0066 void accept0 (KDevelop::TypeVisitor* v) const override; 0067 }; 0068 } 0069 0070 #endif // KDEVPLATFORM_TYPEALIASTYPE_H