File indexing completed on 2024-05-05 16:41:08

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