File indexing completed on 2024-05-19 08:26:10
0001 /* 0002 SPDX-FileCopyrightText: 2014 Heinz Wiesinger <pprkut@liwjatan.at> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef TRAITMEMBERALIASDECLARATION_H 0008 #define TRAITMEMBERALIASDECLARATION_H 0009 0010 #include <language/duchain/classmemberdeclaration.h> 0011 #include <language/duchain/classmemberdeclarationdata.h> 0012 0013 #include "phpduchainexport.h" 0014 0015 namespace Php 0016 { 0017 0018 class KDEVPHPDUCHAIN_EXPORT TraitMemberAliasDeclarationData : public KDevelop::ClassMemberDeclarationData 0019 { 0020 public: 0021 TraitMemberAliasDeclarationData() 0022 : KDevelop::ClassMemberDeclarationData() {} 0023 0024 TraitMemberAliasDeclarationData( const TraitMemberAliasDeclarationData& rhs ) 0025 : KDevelop::ClassMemberDeclarationData(rhs) 0026 { 0027 m_aliasedDeclaration = rhs.m_aliasedDeclaration; 0028 } 0029 0030 KDevelop::IndexedDeclaration m_aliasedDeclaration; 0031 }; 0032 0033 /** 0034 * Represents a single class member definition in a definition-use chain. 0035 */ 0036 class KDEVPHPDUCHAIN_EXPORT TraitMemberAliasDeclaration : public KDevelop::ClassMemberDeclaration 0037 { 0038 public: 0039 TraitMemberAliasDeclaration(const TraitMemberAliasDeclaration& rhs); 0040 TraitMemberAliasDeclaration(const KDevelop::RangeInRevision& range, KDevelop::DUContext* context); 0041 TraitMemberAliasDeclaration(TraitMemberAliasDeclarationData& dd); 0042 ~TraitMemberAliasDeclaration() override; 0043 0044 QString toString() const override; 0045 0046 /** 0047 * Set the declaration that is aliased by this declaration. 0048 * 0049 * \param decl the declaration that this declaration references 0050 */ 0051 void setAliasedDeclaration(const KDevelop::IndexedDeclaration& decl); 0052 0053 /** 0054 * Access the declaration that is aliased by this declaration. 0055 * 0056 * \returns the aliased declaration 0057 */ 0058 KDevelop::IndexedDeclaration aliasedDeclaration() const; 0059 0060 enum { 0061 Identity = 130 0062 }; 0063 0064 protected: 0065 TraitMemberAliasDeclaration(TraitMemberAliasDeclarationData& dd, const KDevelop::RangeInRevision& range); 0066 0067 private: 0068 DUCHAIN_DECLARE_DATA(TraitMemberAliasDeclaration) 0069 KDevelop::Declaration* clonePrivate() const override; 0070 0071 }; 0072 } 0073 0074 #endif // TRAITMEMBERALIASDECLARATION_H 0075